public int GetTotalRemainingSeconds() { int result = 0; bool firstUnit = true; if (m_vUnits.Count > 0) { foreach (var ds in m_vUnits) { CombatItemData cd = (CombatItemData)ds.Data; if (cd != null) { int count = ds.Value; if (count >= 1) { if (firstUnit) { if (m_vTimer != null) { result += m_vTimer.GetRemainingSeconds(GetParent().GetLevel().GetTime()); } count--; firstUnit = false; } ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); result += count * cd.GetTrainingTime(ca.GetUnitUpgradeLevel(cd)); } } } } return(result); }
public void RemoveUnit(CombatItemData cd) { int index = -1; if (GetSlotCount() >= 1) { for (int i = 0; i < GetSlotCount(); i++) { if (m_vUnits[i].Data == cd) { index = i; } } } if (index != -1) { if (m_vUnits[index].Value >= 1) { m_vUnits[index].Value--; if (m_vUnits[index].Value == 0) { m_vUnits.RemoveAt(index); if (GetSlotCount() >= 1) { DataSlot ds = m_vUnits[0]; CombatItemData newcd = (CombatItemData)m_vUnits[0].Data; ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); m_vTimer = new Timer(); int trainingTime = newcd.GetTrainingTime(ca.GetUnitUpgradeLevel(newcd)); m_vTimer.StartTimer(trainingTime, GetParent().GetLevel().GetTime()); } } } } }
public bool CanStartUpgrading(CombatItemData cid) { bool result = false; if (m_vCurrentlyUpgradedUnit == null) { Building b = (Building)GetParent(); ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); ComponentManager cm = GetParent().GetLevel().GetComponentManager(); int maxProductionBuildingLevel; if (cid.GetCombatItemType() == 1) { maxProductionBuildingLevel = cm.GetMaxSpellForgeLevel(); } else { maxProductionBuildingLevel = cm.GetMaxBarrackLevel(); } if (ca.GetUnitUpgradeLevel(cid) < cid.GetUpgradeLevelCount() - 1) { if (maxProductionBuildingLevel >= cid.GetRequiredProductionHouseLevel() - 1) { result = (b.GetUpgradeLevel() >= (cid.GetRequiredLaboratoryLevel(ca.GetUnitUpgradeLevel(cid) + 1)) - 1); } } } return(result); }
public bool IsMaxLevel() { ClientAvatar ca = GetParent().GetLevel().GetPlayerAvatar(); int currentLevel = ca.GetUnitUpgradeLevel(m_vHeroData); int maxLevel = m_vHeroData.GetUpgradeLevelCount() - 1; return(currentLevel >= maxLevel); }
public void FinishUpgrading() { if (m_vCurrentlyUpgradedUnit != null) { ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); int level = ca.GetUnitUpgradeLevel(m_vCurrentlyUpgradedUnit); ca.SetUnitUpgradeLevel(m_vCurrentlyUpgradedUnit, level + 1); } m_vTimer = null; m_vCurrentlyUpgradedUnit = null; }
public void FinishUpgrading() { ClientAvatar ca = GetParent().GetLevel().GetPlayerAvatar(); int currentLevel = ca.GetUnitUpgradeLevel(m_vHeroData); ca.SetUnitUpgradeLevel(m_vHeroData, currentLevel + 1); //(*(*v3 + 160))(v3, 1, *(v1 + 16), 1); GetParent().GetLevel().WorkerManager.DeallocateWorker(GetParent()); //SetHeroState (*(*v3 + 224))(v3, *(v1 + 16), 3); m_vTimer = null; }
public int GetTotalSeconds() { int result = 0; if (m_vCurrentlyUpgradedUnit != null) { ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); int level = ca.GetUnitUpgradeLevel(m_vCurrentlyUpgradedUnit); result = m_vCurrentlyUpgradedUnit.GetUpgradeTime(level); } return(result); }
public void AddUnitToProductionQueue(CombatItemData cd) { if (CanAddUnitToQueue(cd)) { for (int i = 0; i < GetSlotCount(); i++) { if ((CombatItemData)m_vUnits[i].Data == cd) { m_vUnits[i].Value++; return; } } DataSlot ds = new DataSlot(cd, 1); m_vUnits.Add(ds); if (m_vTimer == null) { ClientAvatar ca = GetParent().GetLevel().GetHomeOwnerAvatar(); m_vTimer = new Timer(); int trainingTime = cd.GetTrainingTime(ca.GetUnitUpgradeLevel(cd)); m_vTimer.StartTimer(trainingTime, GetParent().GetLevel().GetTime()); } } }
public void AddUnitToProductionQueue(CombatItemData cd) { if (!CanAddUnitToQueue(cd)) { return; } for (int index = 0; index < GetSlotCount(); ++index) { if ((CombatItemData)m_vUnits[index].Data == cd) { ++m_vUnits[index].Value; return; } } m_vUnits.Add(new DataSlot((Data)cd, 1)); if (m_vTimer != null) { return; } ClientAvatar avatar = GetParent().GetLevel().GetHomeOwnerAvatar(); m_vTimer = new Timer(); m_vTimer.StartTimer(cd.GetTrainingTime(avatar.GetUnitUpgradeLevel(cd)), GetParent().GetLevel().GetTime()); }