I’m currently undergoing the tedious process of writing a turn-based battle system in Unity. My biggest concern is having a way for the main system to look up the stats for the different enemies that it may encounter.
For example:
In the battle controller, theres temporary variables for the enemy name, HP, etc. to use during battle. By default theyre all null, but when the battle starts, I would like it so that, depending on the enemy encountered on the map, its stats get loaded into the variables in the battle controller.
So basically:
Battle Controller->enemyHP=-1;
Player encounters a slime on the map.
Before battle, Battle Controller looks up slime in database, sees slime’s have 10HP, sets enemyHP to 10.
Try splitting it up a little- make a ‘currentEnemy’ class, that includes all the relevant stats (HP, damage, etc.), and keep a list of these ‘currentEnemy’ objects in some empty object.
Then, on your battleController, keep a temporary variable of type ‘currentEnemy’ which gets assigned to whenever you encounter something. This way, you only have to assign one variable, instead of different variables for each stat. To refer to the enemies, you could either manage it the simplest way, which would be to refer to them by index, or you could do something clever, like put them in a dictionary keyed by string, which would allow you to refer to them by name instead.