This has been a frustrating week trying to implement the environmental and card modifiers. I have also been running into issues with the state transitions between the player and opponent, i.e. whose turn it is. Some of the previous framework had to be re-done since I did not account for some dependencies between objects within the scene, as well as trying to keep the number of visual objects I am instantiating within the scene to a reasonable amount.
Day 1: I began my week by opening up the handy dandy spiral notebook and writing out a truth table for my state transitions, felt like I was back in Comp-232. The table, as seen below, took me from a slightly horrifying amount of nested if/else statements, I believe I got to 4 layers deep with around 15+ comparisons, to a reasonable 2 layers with 9 comparisons. After untangling that knot, I spent time trying to come up with a logic, and structure, for the scene to load the modifiers framework I had come up with.
Day 2: After bashing my head into my desk enough from day 1, I let my subconscious chew on the problem of having the modifiers actually load, with the correct information and visuals, when a board is selected. After sleeping on it I came up with a structure that would track all the parts of the modifier, as far as I have been able to tell, which is comprised of quite a few parts. A modifier/ability have a symbol that represents it’s actions when active, examples of card and environment symbols shown below, name, description, and token (in the case of environmental, since the token for cards is incorporated into the card itself). Getting the visual portions of this loading process took a few hours of coding, but where I am still running into issues is implementing the actual abilities into gameplay. So far, I have determined that I have 2 cases of abilities: point modifier, where the power value of the cards on the field have been changed, and destructive, where cards are removed from the board due to the ability.
Day 3: I let the abilities conundrum continue percolating and instead moved on to implementing the next feature on my list, letting the player choose which of their three decks to use. I came up with a layout that interacts with the previous modifier display, so that the player has an idea what major environmental modifier they will be playing under and can make a decision with this information.
This is now the first thing that a player will see after pressing the play button from the main menu, or ready in management. Beyond just seeing what modifier they will be playing under, the player will be able to see each of their decks, and whichever one is currently displayed will be the one dealt from.
My plan for this coming week is to complete the actual abilities behavior within the game, and, since variety is the spice of life, I will start the grunt work of completing the second set of faction cards.