Another week has passed. Let's have a look what I accomplished.
Hero select almost complete
This is now an updated version of the character/hero select screen I showed in the previous dev update:
I managed to fit in the coins and the buttons at the bottom of the screen. I was also wondering if the hero names should be visible prior to unlocking them?
When you have decided on your hero of choice, you have an option to increase the hero's life hearts before game start. The "PLAY!" button becomes available at this stage.
Improvements under the hood
In the course of ongoing improvements to the game code, I restructured my hero class and the magical part where level transitions happen. These improvements can be time consuming tasks that are not visible to the player, but they are necessary from the developer's point of view as they help code maintainability, ease of expansion and so on.
Initially the hero class was pretty dumb and acted as a container for hero's basic data. Then I added a feature to unlock heroes by collecting a number of items in the game, and this had to be included in the class. With each unlock a hero specific item becomes available for collecting in order to unlock even more heroes later in the game. At this stage the item drop system got involved in the process. So it expands pretty quickly.
Levels are divided into different themes like forest, desert or winter. I have a counter which is incremented after each level and when that counter reaches a pre-determined value, the game progresses into the next theme in order. Transition from level to level (or area to area, depends on what you want to call them) happens normally by scrolling, or in situations where scrolling does not really make sense (entering buildings or a dungeon), by fadeout/fadein sequence.
This worked perfectly fine. However, the theme shift did not have its own transition and relied on the logic built around level to level transitions: scroll or fade. I felt that scrolling from, let's say, forest to desert was too harsh because of the different graphics/tiles, so the level change engine (sounds fancy) now always forces a fadeout/fadein transition in these situations. Works like a charm!
The system still has one issue that I'll need to tackle. More on that soon.