public void SetArmy(BaseArmy army)
 {
     if (army.soldiers.Count > 0)
     {
         this.army = army;
         CreateArmy();
         int y = 0;
         for (int p = 0; p < numbersOfSoldiersButtons.Count; p++)
         {
             numbersOfSoldiersButtons[p].mainRec.Y = (textPos + 180 + ((y / 2) * 25));
             y++;
         }
         regiment = new Regiment();
         regiment.AppointSoldier(army.soldiers[0]);
     }
 }
        public void Update(MouseState mousestate, MouseState oldMosueState, string path)
        {
            if (state == EquipmentState.equipment)
            {
                if (equipmentbuttonHandler.Update(mousestate, oldMosueState, regiment.ReturnType()))
                {
                    if (equipmentbuttonHandler.RemoveItem())
                    {
                        regiment.RemoveEquipment(equipmentbuttonHandler.GetEquipment());
                    }
                    else
                    {
                        regiment.SetEquipment(equipmentbuttonHandler.GetEquipment());
                    }
                    equipmentbuttonHandler.UpdateShow(regiment.GetEquipment(), regiment.GetSoldier());
                    regiment.SetCost((regiment.ReturnType().GetCost() * regiment.GetNumberOfSoldiers()) + regiment.ReturnType().GetOneTimeCost() + regiment.ReturnType().GetArcherPlatformCost(regiment.GetNumberOfSoldiers()));
                }
                for (int i = 0; i < armiesButtons.Count; i++)
                {
                    armiesButtons[i].Update(mousestate, oldMosueState);
                    if (armiesButtons[i].pressed == true)
                    {
                        if (armies[i].soldiers.Count > 0)
                        {
                            army = armies[i];
                            CreateArmy();
                            int y = 0;
                            for (int p = 0; p < numbersOfSoldiersButtons.Count; p++)
                            {
                                if (p >= numbersOfSoldiersButtons.Count / 2)
                                {
                                    y = 1;
                                }
                                numbersOfSoldiersButtons[p].mainRec.Y = (textPos + 200 + (y * 25));
                            }
                            equipmentbuttonHandler.CheckCanSee(army.soldiers[0]);
                        }
                        else
                        {
                            army = armies[i];
                            CreateArmy();
                            int y = 0;
                            for (int p = 0; p < numbersOfSoldiersButtons.Count; p++)
                            {
                                numbersOfSoldiersButtons[p].mainRec.Y = (textPos + 190 + (y * 25));
                                if (p >= numbersOfSoldiersButtons.Count / 2)
                                {
                                    y = 1;
                                }
                            }
                            equipmentbuttonHandler.CheckCanSee(army.soldiers[0]);
                        }
                        regiment.SetCost((regiment.ReturnType().GetCost() * regiment.GetNumberOfSoldiers()) + regiment.ReturnType().GetOneTimeCost() + regiment.ReturnType().GetArcherPlatformCost(regiment.GetNumberOfSoldiers()));
                    }
                }
            }
            else if (state == EquipmentState.spells)
            {
                spellHandler.Update(mousestate, oldMosueState);
                if (spellHandler.Pressed())
                {
                    regiment.AddSpell(spellHandler.GetSpells());
                    spellHandler.reset(regiment.GetSpellList());
                }
            }
            if (regiment.ReturnType() is BaseUnit)
            {
                endTheThing.Update(mousestate, oldMosueState);
                if (state == EquipmentState.equipment)
                {
                    if (regiment.ReturnType().IsSpellcaster())
                    {
                        spellBTN.Update(mousestate, oldMosueState);
                        if (spellBTN.pressed)
                        {
                            state = EquipmentState.spells;
                        }
                    }
                }
                else if (state == EquipmentState.spells)
                {
                    equipmentBTN.Update(mousestate, oldMosueState);
                    if (equipmentBTN.pressed)
                    {
                        state = EquipmentState.equipment;
                    }
                }
            }

            UpdateButton(typeOfUnitButtons, mousestate, oldMosueState);
            for (int i = 0; i < typeOfUnitButtons.Count; i++)
            {
                if (typeOfUnitButtons[i].pressed == true)
                {
                    if (army.soldiers.Count > 0)
                    {
                        typeOfUnitButtons[i].Sound();
                        regiment.AppointSoldier(army.ChosenSoldier(i));
                        equipmentbuttonHandler.ChangeLeaderType(regiment.ReturnType());
                        //equipmentbuttonHandler.startOver(regiment.ReturnType());
                    }
                    else
                    {
                        typeOfUnitButtons[i].Sound();
                        regiment.AppointSoldier(army.ChosenSoldier(i));
                        equipmentbuttonHandler.ChangeLeaderType(regiment.ReturnType());
                        //equipmentbuttonHandler.startOver(regiment.ReturnType());
                    }
                    regiment.SetCost((regiment.ReturnType().GetCost() * regiment.GetNumberOfSoldiers()) + regiment.ReturnType().GetOneTimeCost() + regiment.ReturnType().GetArcherPlatformCost(regiment.GetNumberOfSoldiers()));
                }
            }
            if (regiment.GetSoldier() != null)
            {
                ChosenUnit = texthandler.NameText(regiment.GetSoldier(), regiment.GetNumberOfSoldiers(), font, regiment.GetEndCost());
                //regiment.SetCost(texthandler.ReturnEndpoints());
                if (!regiment.GetSoldier().loner)
                {
                    for (int i = 0; i < numbersOfSoldiersButtons.Count; i++)
                    {
                        numbersOfSoldiersButtons[i].Update(mousestate, oldMosueState, 0);
                        if (numbersOfSoldiersButtons[i].pressed)
                        {
                            if (numbersOfSoldiersButtons[i] is RoundUpNumberOfSoldierButton)
                            {
                                regiment.ChangeNumberOfSoldiers((numbersOfSoldiersButtons[i] as RoundUpNumberOfSoldierButton).Rounding(regiment.GetNumberOfSoldiers()));
                            }
                            else
                            {
                                regiment.ChangeNumberOfSoldiers(numbersOfSoldiersButtons[i].NumberOfSoldiers());
                            }
                            regiment.SetCost((regiment.ReturnType().GetCost() * regiment.GetNumberOfSoldiers()) + regiment.ReturnType().GetOneTimeCost() + regiment.ReturnType().GetArcherPlatformCost(regiment.GetNumberOfSoldiers()));
                        }
                    }
                }
            }
        }