We are having the Three Thing Game thing auction next Monday. This is always a giggle. Teams bid "Bank of Thingland" money for things that they want to add to their games. This year all the things are student suggestions. What could possibly go wrong?
Anyhoo, one problem with the auction is that we need to get through over 120 lots in around half an hour, so the auction rate has to be frenetic. Last year I thought I'd solved the problem by fixing the auction length at 15 seconds and creating a countdown timer. Unfortunately, human nature being what it is, the result of this was that everyone sat waiting until the timer counted down and then tried to snipe with bids at the last minute.
So this time I'm trying something new. A random countdown timer that runs for between five and 15 seconds. Teams won't know when the auction is going to end, so they'd better get their bids in as soon as they can.
Of course this means I'll need a timer. I wrote one this evening and it took around half an hour. And for that I've got Windows Phone and Windows desktop versions.
These are the variables in the program. I use a DispatcherTimer to generate interrupts. I keep a flag to say whether or not the timer is ticking and I have a counter and a limit value which are used to manage the time outs.
This code sets up the timer. It ticks every second. The timer_Tick method is called each time the timer ticks. I also make a copy of the Foreground colour of the text so that I can put the timer digits back to the original colour when the timer is restarted.
This code sets the timer ticking. If the timer is already ticking the method returns straight away. Otherwise the timer is set up, the screen colour put back to normal, a random timeout between 5 and 15 seconds selected and the timer starts.
This is the third method. It runs each time the timer goes tick. If the timer is active we increment the counter and then display it. Next we check to see if we have hit our limit. If we have a sound effect is played and the counter text block is turned red. Then we stop the timer.
All this code is shared between the Windows Phone and Windows Desktop versions and it works a treat. Great stuff.