コード例 #1
0
        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);
        }
コード例 #2
0
        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());
                        }
                    }
                }
            }
        }
コード例 #3
0
ファイル: UnitUpgradeComponent.cs プロジェクト: skwbr/UCS-2
        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);
        }
コード例 #4
0
ファイル: HeroBaseComponent.cs プロジェクト: skwbr/UCS-2
        public bool IsMaxLevel()
        {
            ClientAvatar ca           = GetParent().GetLevel().GetPlayerAvatar();
            int          currentLevel = ca.GetUnitUpgradeLevel(m_vHeroData);
            int          maxLevel     = m_vHeroData.GetUpgradeLevelCount() - 1;

            return(currentLevel >= maxLevel);
        }
コード例 #5
0
ファイル: UnitUpgradeComponent.cs プロジェクト: skwbr/UCS-2
 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;
 }
コード例 #6
0
ファイル: HeroBaseComponent.cs プロジェクト: skwbr/UCS-2
        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;
        }
コード例 #7
0
ファイル: UnitUpgradeComponent.cs プロジェクト: skwbr/UCS-2
        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);
        }
コード例 #8
0
 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());
         }
     }
 }
コード例 #9
0
        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());
        }