darozak / Advolition

1 stars 0 forks source link

Increase game refresh rate to allow for animated effects #27

Closed darozak closed 7 months ago

darozak commented 7 months ago

I want to be able to have animated effects that provide clues to viewers when different events are taking place. For example, if a robot uses a specific item, looses power, or takes damage, the corresponding text on the display will briefly flash a certain color and then fade.

I think I can do this by increasing the rate at which I call the game method and then having cooldown timers for different animations which fade from one color to another every time they are called.

darozak commented 7 months ago

I can make a class that generates and tracks an evaporating damage number that appears over the robot when it takes damage. The class will be used to create specific objects and put them in an array. Every time they're called from the array they'll progress through their animation until complete.

At the end of a round, which will consist of multiple refreshes, the animation stack will be cleared and new animation objects will be created.

I can use this same technique to animate changes to the written stats that occur beneath the scan maps.

It might also be possible to animate robots as they slide between tiles or rescan areas by using a similar technique.

For the radar scans, consider drawing only those tiles that are a growing distance from the robot after each refresh. This will create an expanding scan disc, which can fade over time.

darozak commented 7 months ago

Rather than placing all display objects into an array, I'll need to assign some to a specific variable that can be called upon or redefined by name.

darozak commented 7 months ago

Done. I created a basic animation infrastructure that will allow me to animate text and graphics while the game is running (https://github.com/darozak/Advolition/commit/50372e2c516add2185cf71883908962b888db25c). As described above the system creates separate graphics objects that track their own frame cycles and modify the graphics according to their own animation sequence every time that they're called.