Everything in this milestone is related and interdependent. The best plan of attack seems to be to break it apart into three separate phases like so:
- Phase 1: Validation and handling of the Actions Menu
- Requirement statements 1.1 and 1.2
- The menu already exists but has no validation rules and no way to represent unavailable actions. This will require new logic, graphics, data structures, and possibly some architectural modifications.
- Correction: Requirement 1.1 should have said "character" instead of "player". The validation rules are based on a character's state, not the player's.
- Phase 2: The Attack Directions UI
- Requirement statement 1.3
- This is a significant design challenge if implemented the way it's described in the GDD because it shows not only the directions, but also labels them with the name of the target in each direction.
- Phase 3: Selecting a token for the attack
- Requirement statements 1.4, 1.5, and 1.6
- This requires heavy modification of the existing inventory screen as well as parameterized initialization of it.
So this is how it's going to go. Milestone 1, Phase 1 begins now!
Milestone 1: Combat Initiation
|1.1||The system shall perform a pre-validation of actions available to a character when it is that character’s turn.||None.|
|1.2||The system shall construct a UI (the Actions Menu) which allows the selection of an available action based on validation results.||1.1|
|1.3||If the Attack action is available and is selected from the Actions Menu, the system shall display the directions in which an attack is possible and allow selection of one of these directions.||1.2|
|1.4||The system shall provide an Auto Attack option that players may select if they would rather have the game select their tokens for them automatically after issuing the Attack command.||1.3|
|1.5||After the player has selected a direction for attack, the system shall display the offensive combat tokens from the player’s inventory and allow the selection of a token to spend IFF the Auto Attack option is turned off.||1.4|
|1.6||AI players shall be able to issue Attack commands that are subject to the same validation rules as the human players.||1.4|