Ejemplo n.º 1
0
        public override int Execute(LogicLevel level)
        {
            LogicClientAvatar      playerAvatar       = level.GetPlayerAvatar();
            LogicGameObjectManager gameObjectManager  = level.GetGameObjectManager();
            LogicResourceData      repairResourceData = null;

            int repairCost = 0;

            for (int i = 0; i < this.m_gameObjectIds.Size(); i++)
            {
                LogicGameObject gameObject = gameObjectManager.GetGameObjectByID(this.m_gameObjectIds[i]);

                if (gameObject != null && gameObject.GetGameObjectType() == LogicGameObjectType.TRAP)
                {
                    LogicTrap trap = (LogicTrap)gameObject;

                    if (trap.IsDisarmed() && !trap.IsConstructing())
                    {
                        LogicTrapData data = trap.GetTrapData();

                        repairResourceData = data.GetBuildResource();
                        repairCost        += data.GetRearmCost(trap.GetUpgradeLevel());
                    }
                }
            }

            if (repairResourceData != null && repairCost != 0)
            {
                if (playerAvatar.HasEnoughResources(repairResourceData, repairCost, true, this, false))
                {
                    playerAvatar.CommodityCountChangeHelper(0, repairResourceData, -repairCost);

                    for (int i = 0; i < this.m_gameObjectIds.Size(); i++)
                    {
                        LogicGameObject gameObject = gameObjectManager.GetGameObjectByID(this.m_gameObjectIds[i]);

                        if (gameObject != null && gameObject.GetGameObjectType() == LogicGameObjectType.TRAP)
                        {
                            LogicTrap trap = (LogicTrap)gameObject;

                            if (trap.IsDisarmed() && !trap.IsConstructing())
                            {
                                trap.RepairTrap();
                            }
                        }
                    }

                    return(0);
                }

                return(-2);
            }

            return(-1);
        }
Ejemplo n.º 2
0
        public override int Execute(LogicLevel level)
        {
            if (level.GetVillageType() == 1)
            {
                if (this.m_gameObjectId != 0)
                {
                    LogicGameObjectManager gameObjectManager = level.GetGameObjectManagerAt(1);
                    LogicGameObject        gameObject        = gameObjectManager.GetGameObjectByID(this.m_gameObjectId);

                    if (gameObject != null && gameObject.GetGameObjectType() == LogicGameObjectType.BUILDING)
                    {
                        LogicBuilding building = (LogicBuilding)gameObject;

                        if (this.m_unitData != null && level.GetGameMode().GetCalendar().IsProductionEnabled(this.m_unitData))
                        {
                            if (this.m_unitData.GetVillageType() == 1)
                            {
                                LogicVillage2UnitComponent village2UnitComponent = building.GetVillage2UnitComponent();

                                if (village2UnitComponent != null)
                                {
                                    if (this.m_unitData.IsUnlockedForProductionHouseLevel(gameObjectManager.GetHighestBuildingLevel(this.m_unitData.GetProductionHouseData(), true))
                                        )
                                    {
                                        LogicClientAvatar playerAvatar  = level.GetPlayerAvatar();
                                        LogicResourceData trainResource = this.m_unitData.GetTrainingResource();
                                        int trainCost = this.m_unitData.GetTrainingCost(playerAvatar.GetUnitUpgradeLevel(this.m_unitData));

                                        if (playerAvatar.HasEnoughResources(trainResource, trainCost, true, this, false))
                                        {
                                            village2UnitComponent.TrainUnit(this.m_unitData);
                                            playerAvatar.CommodityCountChangeHelper(0, trainResource, -trainCost);
                                        }

                                        return(0);
                                    }

                                    return(-7);
                                }

                                return(-4);
                            }

                            return(-8);
                        }
                    }

                    return(-5);
                }

                return(-1);
            }

            return(-10);
        }
        public override void FastForwardTime(int time)
        {
            while (time > 0)
            {
                LogicGameObjectManager gameObjectManager = this.m_parent.GetGameObjectManager();

                for (int i = 0; i < this.m_spawned.Size(); i++)
                {
                    if (gameObjectManager.GetGameObjectByID(this.m_spawned[i]) == null)
                    {
                        this.m_spawned.Remove(i--);
                    }
                }

                if (this.m_lifeTimeSpawns < this.m_maxLifetimeSpawns && this.m_spawned.Size() < this.m_maxSpawned)
                {
                    if (this.m_timer == null)
                    {
                        this.m_timer = new LogicTimer();
                        this.m_timer.StartTimer(this.m_intervalSeconds, this.m_parent.GetLevel().GetLogicTime(), false, -1);
                    }

                    int remainingSeconds = this.m_timer.GetRemainingSeconds(this.m_parent.GetLevel().GetLogicTime());

                    if (time < remainingSeconds)
                    {
                        break;
                    }

                    this.m_timer.FastForward(remainingSeconds);
                    this.Spawn();
                    this.m_timer.StartTimer(this.m_intervalSeconds, this.m_parent.GetLevel().GetLogicTime(), false, -1);

                    time -= remainingSeconds;
                }
                else
                {
                    if (this.m_timer != null)
                    {
                        this.m_timer.Destruct();
                        this.m_timer = null;
                    }

                    break;
                }
            }
        }
Ejemplo n.º 4
0
        public override int Execute(LogicLevel level)
        {
            LogicGameObjectManager gameObjectManager = level.GetGameObjectManager();
            LogicGameObject        gameObject        = gameObjectManager.GetGameObjectByID(this.m_gameObjectId);

            if (gameObject != null && gameObject.GetGameObjectType() == LogicGameObjectType.BUILDING)
            {
                LogicBuilding building = (LogicBuilding)gameObject;
                LogicVillage2UnitComponent village2UnitComponent = building.GetVillage2UnitComponent();

                if (village2UnitComponent != null)
                {
                    LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

                    playerAvatar.CommodityCountChangeHelper(7, village2UnitComponent.GetUnitData(), -village2UnitComponent.GetUnitCount());
                    village2UnitComponent.RemoveUnits();

                    return(0);
                }
            }

            return(-1);
        }