I localized my WPF application using xaml markup extension (something like this). For each language one resx file is required. This was difficult to support many resx files syncronised, so I made a little VBA script for an excel file containing all translations. Now it is much easier to maintain strings – just modify excel file and save – resx files will be generated when file is saved.
First column contains ids of text strings, other columns contains translations. Here is this useful macros: Strings

Binding to double property of some object with UpdateSourceTrigger set to PropertyChanged allows dynamically update ViewModel while user enters the number. Application become more responsive and user friendly.

Unfortuntely simple binding has frustrating editing behaviors – portion of the text are automatically erased in some cases (usually decimal separator and leading or trailing zeroes) – “cleaning up of the input”.

As an example I made a small application, converting millimeters to inches. This is how the problem looks like (please note I have German keyboard layout, decimal separator is comma):

The reason of this is quite simple as soon as string is converted into a double value and it is assigned to ViewModel dependency property, ViewModel notifies performed update, and double value transformed back to string without “unneded” separators and zeroes. This is very annoying while entering text, so decided to fix it.

The solution is quite simple – own converter which saves user input string and returns it instead of rebuilding it every time. Something like this:

Unfortunately this will not work in all cases – in example, if bound value of ViewModel will be changed from some other place of the application (in my example – changed from the other TextBox), converter will continue delivering old string value. So when TextBox looses its focus, it makes sense to set user_string to null. Also on lost focus we can format output string – clean it up (actually the same behavior which we had at the beginning, but only on Lost Focus). To do so, an attached property is introduced:

Here is the complete source code of the project: StringConversionTest. Note that ProxyConverter is extended with Scale Dependency property to implement conversion of input value from inches to millimeters.

Well, meanwhile Arcade Monsterball was uploaded and is waiting for review. That was quite a hard task to complete, but it finally over.

Here is my completed TODO list (what a nightmare to complete):

+ Make screenshots
+ (iOS) check for leaks
+ (iOS) iPhoneLayout
+ background of menus: flying shadows of spaceships
+ sync player as well in network game (when sending hit information)
+ (iOS) handle pause events in iOS
+ Points shall be assigned even if lost
+ (iOS) enlarge touch area to whole screen
+ (iOS) invitation of a player
+ (iOS) achivements for keeping locked players
+ bugfix – achievment and point number at the same time
+ achievements icons
+ (iOS) leaderbords: points overall and points in the single match
+ (iOS) shift upper UI elements if iAd is dsplayed
+ points of network player shall come from network player (?)
+ use bitmap fonts instead of TTF
+ help screen content
+ game win menu: add collected points submenu + unlocked players menu.
+ save selected player and position into the file
+ when creating stars: with very small probability a planet should be created (probably rotating)
+ move shadow to separate class
+ play network with AI
+ help screen:
+ should show 2-3 screens with instructions (made from single texture)
+ cleanup texture cache
+ all balls shall use the same texture
+ load different balls each serve
+ skin ball
+ different ball types
+ game data management (available players, points, etc.)
+ multiply achivement of the game on number of hits
+ skin menus in GameLayer
+ fire on enemy select screen
+ indcator for ball hits in upper region
+ player type shall be sent for network game
+ (iOS) iad advertisement
+ two fires (jump and normal) for firing monsters
+ add music to runtime
+ select enemy screen
+ different player models
+ icon
+ MainMenu UI for iPhone shall be ~20% larger than usuall scale (0.3125 -> 0.4, 0.2 for non-HD version)
+ atmosphere for the moon
+ fix problem with “Return from the othr side”
+ sky texture shall have 100 px width
+ particle systems: dust and fire
+ animated background – asteroids, space ships, asteroids collisions, Earth, etc.
+ remove bouncing around a point (see TODO in PositionPlayerControl)
+ skin for iphone/ipad “control pad”
+ finish touch player control
+ render shadows using physix (renderer) body information
+ shake ground when ball hits it
+ (iOS) vertical alignment on iPhone and iPod
+ particles
+ stars and rockets on the background
+ stars moving altogether
+ fix problems with resolution
+ Shadow of the players and the ball
+ change controls (use mouse joint)
+ use client – server architecture (including test environement)
+ Load level from json
+ Load players and a ball from json
+ introduce game state
+ the ball shall be alive a little after the score
+ the ball shall stay in air until the first touch
+ keyboard for windows
+ named walls
+ ai
++ basic ai
++ advanced ai
++ best position calculation is done not at once, but certain amount of tests each update.
++ parametrized ai
++ ai shall get tired -> more stupid after with time
+ sound
+ game menu
+ animated players (move_forward, move_backward, jump)
+ match
+ ESCAPE button for windows version
+ network game for win version
+ keyborad fix: only process if current window is active
+ pause screen during network game
+ network game timeout (no messages during N ticks) – “Player disconnected”
+ network game/single game – show current player
+ game ui: pause shall be a 2 buttons names “pause” – left and right to score
+ game ui: icons in the corner: type of the player (local, remote, AI)
+ game ui: ball picture for serving
+ game ui: hit count (for tests)
+ game ui: points
+ points for: game win (x rest hit counts), single touch (x2, x3, etc.), back wall hit (x2, x3, etc.), 2 games in a row (x3, x4, etc.)
+ menu structure design
+ points for “flawless victory”

During the project I learned quite a lot about cocos2d, box2d, R.U.B.E. and inkscape. The other fancy tool I discovered is an online bitmap font generator: http://kvazars.com/littera/. Brilliant thing.

I noticed that in some cases after addSpriteFramesWithFile function is called, the loaded frames are displayed for 1 frame. This was is quite disturbing and exists both in Windows implemenation and on iOS devices.

I do not really know what is the reason for this (might be details of addSpriteFramesWithFile implementation), but the solution was simple: after addSpriteFramesWithFile is done, I call visit() of the current scene, and nothing unusual appears on the screen.

I tried to draw a solid cicle in cocos2dx. It was quite terrible to modify ccDrawCircle for this. My app crashed with openGL errors which I was not able to handle. Few days later (after I left this idea and used spites instead) I realized that I should use ccDrawSolidPoly. What a shame

Recently I installed a new version of the iOS. First impression could be probably described as “what the hell is this”. But quite soon I get used to it. It is definitely a step forward, it is modern, it has good new ideas. UI is also a bit buggy, but this is totally OK for a beta release. Nasty thing is that a man has to do quite some job to make an app (especially an app which uses custom stuff like icons, buttons or gradients) look OK for the iOS 7.

Quite often I create simple or test apps using native Win32 project (WINAPI). This time I wanted an output of Box2D world. No ready-to-copypaste implementation was found in the Net, so I had to make my own, and now I can share it