Army

Armies are one of the key components of Mega-Risk. In short, they move around the map, defending and capturing territories.

Detailed Description and Abilities
Armies are actors spawned during main gameplay that inhabit territories. When spawned, they take a number of troops from their territory and use them as their troop amount. They can also deposit a number of troops back into the garrison of their territory.

Armies are mainly used to attack an enemy's assets. They can attack any enemy territory adjacent to their own territory, or any enemy armies stationed in those adjacent territories. Armies can also be attacked by enemy armies.

If an army's troop count ever reaches zero, it is automatically deleted.

Full Ability List

 * Used during Main Gameplay
 * Spawned by territories
 * Inhabit territories
 * Holds number of troops
 * Transfers troops between self, home territory, and other friendly armies
 * Can 'dissolve' back into inhabited territory's garrison
 * Can attack enemy territories/armies
 * Can defend against attacking armies
 * Can change teams

Properties and Variables

 * int32 teamNum : the id of the army's Team. DEPRECATED as teams no longer use ids.  Replaced by 'team'.  UProperty
 * int32 troops: the number of troops the army currently has. UProperty
 * bool isGeneral: determines if the army has a General applied to it. NOT YET IMPLEMENTED.  UProperty
 * bool isMarshal: determines if the army has a Marshal applied to it. NOT YET IMPLEMENTED.  UProperty
 * ATerritory* homeTerr: pointer to the Territory the army is currently residing in. UProperty
 * UTeamObj* team: pointer to the army's team-object. UProperty
 * TArray Meshes: list of possible meshes an army can use (depending on what team it's on). NOT YET IMPLEMENTED.
 * UGameInstance* gameInstance: pointer to the current Game Instance
 * AGameState* gameState: pointer to the current Game State
 * AGameMode* gameMode: pointer to the current Game Mode
 * AController* controller: pointer to the Player/AI Controller that owns the army
 * UStaticMeshComponent* armyMesh: the army's mesh. Currently not working.  UProperty
 * UTextRenderComponent* troopText: the army's troop number, displayed above the army. Currently not working.  UProperty

Functions

 * void Move(ATerritory* newTerr): moves the army from one territory to another. UFunction.
 * newTerr: pointer to the territory that the army will be moving to
 * void ChangeOwner(UPARAM(ref) UTeamObj* &newOwner): transfers the army to a different team. UFunction
 * newOwner: pointer to the army's new team-object.
 * void UpdateText: updates troopText to show the correct number of troops. UFunction.  NOT YET IMPLEMENTED.
 * void  UpdateMesh  (int32 newTeamNum) : updates the army's mesh when it changes teams. UFunction.  DEPRECATED as this can be done in 'ChangeOwner'.
 * void  UpdateTroops : i don't even know what this does. It's probable DEPRECATED.