Country System
Purpose:
Manage each country’s data like name, army count, position on the map.
Responsibilities:
Store country name and current army count
Know its position on the map (Vector3)
Provide methods to add or remove soldiers (army count)
Optionally store neighboring countries for pathfinding/valid moves
- Soldier System
Purpose:
Represent a soldier unit traveling between countries.
Responsibilities:
Hold reference to soldier prefab/model
Move smoothly from origin country to target country
Notify when it arrives (to update army counts)
Destroy itself or return to pool after arrival
- Movement System
Purpose:
Handle the actual soldier movement logic and animation.
Responsibilities:
Move soldiers along a path (straight line between countries or more complex paths)
Support multiple simultaneous soldier movements
Handle timing/speed of soldier travel
Use coroutines or Update loops for smooth movement
- GameManager / Controller System
Purpose:
Central control to handle game logic and user commands.
Responsibilities:
Command soldiers to move from one country to another
Decrease army count in origin country and initiate soldier movement
Increase army count in destination country when soldiers arrive
Manage spawning of soldier GameObjects (from prefabs in your assets folder)
Handle player input or AI to select countries and send soldiers
- UI System (Optional but Recommended)
Purpose:
Show army counts, selected countries, and soldier movement status.
Responsibilities:
Display army counts on or near countries
Highlight selected country
Show feedback on soldier movements (maybe lines/arrows or soldier icons)
- Data Initialization System
Purpose:
Load countries, army counts, and soldier prefabs into the game at start-up.
Responsibilities:
Find country Game Objects in the scene or from Map folder
Load soldier prefab references
Initialize army counts (maybe from saved data or default values)