예제 #1
0
        /// <summary>
        ///     Adjusts the end subtick of timer.
        /// </summary>
        public void AdjustEndSubtick(LogicLevel level)
        {
            if (this._endTimestamp != -1)
            {
                int currentTime = LogicDataTables.GetGlobals().AdjustEndSubtickUseCurrentTime() ? level.GetGameMode().GetActiveTimestamp() : level.GetGameMode().GetCurrentTimestamp();

                if (currentTime != -1)
                {
                    int passedTime = this._endTimestamp - currentTime;
                    int clamp      = LogicDataTables.GetGlobals().GetClampLongTimeStampsToDays();

                    if (clamp * 86400 > 0)
                    {
                        if (passedTime > 86400 * clamp)
                        {
                            passedTime = 86400 * clamp;
                        }
                        else if (passedTime < -86400 * clamp)
                        {
                            passedTime = -86400 * clamp;
                        }
                    }

                    this._remainingTime = level.GetLogicTime() + (LogicDataTables.GetGlobals().MoreAccurateTime() ? (int)(1000L * passedTime / 16) : 60 * passedTime);
                }
            }
        }
예제 #2
0
        public override int Execute(LogicLevel level)
        {
            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

            if (level.GetVillageType() == 1)
            {
                LogicGameMode gameMode = level.GetGameMode();

                if (!gameMode.IsInAttackPreparationMode())
                {
                    if (gameMode.GetState() != 5)
                    {
                        return(-9);
                    }
                }

                if (this.m_oldUnitData != null && this.m_newUnitData != null && gameMode.GetCalendar().IsProductionEnabled(this.m_newUnitData))
                {
                    if (!this.m_newUnitData.IsUnlockedForBarrackLevel(playerAvatar.GetVillage2BarrackLevel()))
                    {
                        if (gameMode.GetState() != 7)
                        {
                            return(-7);
                        }
                    }

                    int oldUnitCount   = playerAvatar.GetUnitCountVillage2(this.m_oldUnitData);
                    int oldUnitsInCamp = this.m_oldUnitData.GetUnitsInCamp(playerAvatar.GetUnitUpgradeLevel(this.m_oldUnitData));

                    if (oldUnitCount >= oldUnitsInCamp)
                    {
                        int newUnitCount   = playerAvatar.GetUnitCountVillage2(this.m_newUnitData);
                        int newUnitsInCamp = this.m_newUnitData.GetUnitsInCamp(playerAvatar.GetUnitUpgradeLevel(this.m_newUnitData));

                        playerAvatar.SetUnitCountVillage2(this.m_oldUnitData, oldUnitCount - oldUnitsInCamp);
                        playerAvatar.SetUnitCountVillage2(this.m_newUnitData, newUnitCount + newUnitsInCamp);

                        LogicArrayList <LogicDataSlot> unitsNew = playerAvatar.GetUnitsNewVillage2();

                        for (int i = 0; i < unitsNew.Size(); i++)
                        {
                            LogicDataSlot slot = unitsNew[i];

                            if (slot.GetCount() > 0)
                            {
                                playerAvatar.CommodityCountChangeHelper(8, slot.GetData(), -slot.GetCount());
                            }
                        }

                        return(0);
                    }

                    return(-23);
                }

                return(-7);
            }

            return(-10);
        }
        public override int Execute(LogicLevel level)
        {
            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

            if (playerAvatar != null)
            {
                playerAvatar.SetLeagueType(this.m_leagueType);

                if (this.m_leagueType != 0)
                {
                    playerAvatar.SetLeagueInstanceId(this.m_leagueInstanceId.Clone());
                }
                else
                {
                    playerAvatar.SetLeagueInstanceId(null);
                    playerAvatar.SetAttackWinCount(0);
                    playerAvatar.SetAttackLoseCount(0);
                    playerAvatar.SetDefenseWinCount(0);
                    playerAvatar.SetDefenseLoseCount(0);
                }

                playerAvatar.GetChangeListener().LeagueChanged(this.m_leagueType, this.m_leagueInstanceId);
                return(0);
            }

            return(-1);
        }
예제 #4
0
        public override int Execute(LogicLevel level)
        {
            LogicGameObject gameObject = level.GetGameObjectManager().GetGameObjectByID(this.m_gameObjectId);

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

                if (this.m_unitData != null)
                {
                    LogicUnitUpgradeComponent unitUpgradeComponent = building.GetUnitUpgradeComponent();

                    if (unitUpgradeComponent != null && unitUpgradeComponent.CanStartUpgrading(this.m_unitData))
                    {
                        LogicClientAvatar playerAvatar = level.GetPlayerAvatar();
                        int upgradeLevel = playerAvatar.GetUnitUpgradeLevel(this.m_unitData);
                        int upgradeCost  = this.m_unitData.GetUpgradeCost(upgradeLevel);
                        LogicResourceData upgradeResourceData = this.m_unitData.GetUpgradeResource(upgradeLevel);

                        if (playerAvatar.HasEnoughResources(upgradeResourceData, upgradeCost, true, this, false))
                        {
                            playerAvatar.CommodityCountChangeHelper(0, upgradeResourceData, -upgradeCost);
                            unitUpgradeComponent.StartUpgrading(this.m_unitData);

                            return(0);
                        }
                    }
                }
            }

            return(-1);
        }
        public static void LoadDebugJSON(LogicLevel level, string json)
        {
            LogicJSONObject jsonObject = LogicJSONParser.ParseObject(json);

            if (jsonObject != null)
            {
                LogicArrayList <LogicComponent> unitStorageComponents = level.GetComponentManager().GetComponents(LogicComponentType.UNIT_STORAGE);

                for (int i = 0; i < unitStorageComponents.Size(); i++)
                {
                    ((LogicUnitStorageComponent)unitStorageComponents[i]).RemoveAllUnits();
                }

                level.SetLoadingVillageType(0);

                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("buildings"), LogicGameObjectType.BUILDING, 0);
                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("obstacles"), LogicGameObjectType.OBSTACLE, 0);
                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("traps"), LogicGameObjectType.TRAP, 0);
                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("decos"), LogicGameObjectType.DECO, 0);

                level.SetLoadingVillageType(1);

                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("buildings2"), LogicGameObjectType.BUILDING, 1);
                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("obstacles2"), LogicGameObjectType.OBSTACLE, 1);
                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("traps2"), LogicGameObjectType.TRAP, 1);
                LogicDebugUtil.LoadDebugJSONArray(level, jsonObject.GetJSONArray("decos2"), LogicGameObjectType.DECO, 1);

                level.SetLoadingVillageType(-1);
            }
        }
예제 #6
0
        /// <summary>
        ///     Destructs this instance.
        /// </summary>
        public void Destruct()
        {
            if (this._slots.Count != 0)
            {
                do
                {
                    this._slots[0].Destruct();
                    this._slots.Remove(0);
                } while (this._slots.Count != 0);
            }

            if (this._timer != null)
            {
                this._timer.Destruct();
                this._timer = null;
            }

            if (this._boostTimer != null)
            {
                this._boostTimer.Destruct();
                this._boostTimer = null;
            }

            this._level = null;
        }
예제 #7
0
        /// <summary>
        ///     Destructs this instance.
        /// </summary>
        public virtual void Destruct()
        {
            this._level.GetTileMap().RemoveGameObject(this);

            for (int i = 0; i < this._components.Count; i++)
            {
                if (this._components[i] != null)
                {
                    this._components[i].Destruct();
                    this._components[i].RemoveGameObjectReferences(this);
                }
            }

            if (this._position != null)
            {
                this._position.Destruct();
                this._position = null;
            }

            if (this._listener != null)
            {
                this._listener.Destruct();
                this._listener = null;
            }

            this._data  = null;
            this._level = null;
        }
예제 #8
0
        public int ChangeVillage(LogicLevel level, bool force)
        {
            if (this.m_villageType != 0 && !force)
            {
                LogicVillageObject ship = level.GetGameObjectManagerAt(0).GetShipyard();

                if (ship == null || ship.GetUpgradeLevel() <= 0)
                {
                    return(-23);
                }
            }

            if (level.GetGameObjectManagerAt(1).GetTownHall() != null)
            {
                level.SetVillageType(this.m_villageType);

                if (level.GetState() == 1)
                {
                    level.GetPlayerAvatar().SetVariableByName("VillageToGoTo", this.m_villageType);
                }

                level.GetGameObjectManager().RespawnObstacles();
            }

            return(0);
        }
        public static void ExecuteServerCommandsInOfflineMode(GameAvatar document)
        {
            if (document.ServerCommands.Size() != 0)
            {
                LogicGameMode logicGameMode = new LogicGameMode();
                LogicLevel    logicLevel    = logicGameMode.GetLevel();

                logicLevel.SetVisitorAvatar(document.LogicClientAvatar);

                try
                {
                    for (int i = 0; i < document.ServerCommands.Size(); i++)
                    {
                        int result = document.ServerCommands[i].Execute(logicLevel);

                        if (result == 0)
                        {
                            document.ServerCommands.Remove(i--);
                        }
                    }

                    GameAvatarManager.Save(document);
                }
                catch (Exception exception)
                {
                    Logging.Error("GameAvatarManager.executeServerCommandsInOfflineMode: server command execution in offline mode failed: " + exception);
                }
            }
        }
        public override int Execute(LogicLevel level)
        {
            if (level.GetVillageType() == 0)
            {
                LogicGameMode gameMode = level.GetGameMode();

                if (gameMode.GetShieldRemainingSeconds() <= 0)
                {
                    gameMode.SetShieldRemainingSeconds(0);
                    gameMode.SetGuardRemainingSeconds(0);

                    gameMode.GetLevel().GetHome().GetChangeListener().ShieldActivated(0, 0);
                }
                else
                {
                    int guardTime = gameMode.GetGuardRemainingSeconds();

                    gameMode.SetShieldRemainingSeconds(0);
                    gameMode.SetGuardRemainingSeconds(guardTime);
                    gameMode.SetPersonalBreakCooldownSeconds(LogicDataTables.GetGlobals().GetPersonalBreakLimitSeconds());

                    level.GetHome().GetChangeListener().ShieldActivated(0, guardTime);
                }

                return(0);
            }

            return(-32);
        }
        public override int Execute(LogicLevel level)
        {
            switch (this.m_popupType)
            {
            case 0:
                level.SetHelpOpened(this.m_seen);
                break;

            case 1:
                level.SetEditModeShown();
                break;

            case 2:
                level.SetShieldCostPopupShown(this.m_seen);
                break;

            case 3:
                break;

            default:
                return(-1);
            }

            return(0);
        }
        public void AdjustEndSubtick(LogicLevel level)
        {
            if (this.m_endTimestamp != -1)
            {
                int currentTime = LogicDataTables.GetGlobals().AdjustEndSubtickUseCurrentTime()
                    ? level.GetGameMode().GetServerTimeInSecondsSince1970()
                    : level.GetGameMode().GetStartTime();

                if (currentTime != -1)
                {
                    int remainingSecs = this.m_endTimestamp - currentTime;
                    int clamp         = LogicDataTables.GetGlobals().GetClampLongTimeStampsToDays();

                    if (clamp * 86400 > 0)
                    {
                        if (remainingSecs > 86400 * clamp)
                        {
                            remainingSecs = 86400 * clamp;
                        }
                        else if (remainingSecs < -86400 * clamp)
                        {
                            remainingSecs = -86400 * clamp;
                        }
                    }

                    this.m_remainingTime = level.GetLogicTime().GetTick() + LogicTime.GetSecondsInTicks(remainingSecs);
                }
            }
        }
        /// <summary>
        ///     Executes this command.
        /// </summary>
        public override int Execute(LogicLevel level)
        {
            if (LogicDataTables.GetGlobals().UseNewTraining())
            {
                if (level.GetVillageType() == 0)
                {
                    LogicClientAvatar   playerAvatar   = level.GetPlayerAvatar();
                    LogicUnitProduction unitProduction = this._productionType == 1
                        ? level.GetGameObjectManager().GetSpellProduction()
                        : level.GetGameObjectManager().GetUnitProduction();

                    if (unitProduction.CanBeBoosted())
                    {
                        int cost = unitProduction.GetBoostCost();

                        if (playerAvatar.HasEnoughDiamonds(cost, true, level))
                        {
                            playerAvatar.UseDiamonds(cost);
                            unitProduction.Boost();

                            return(0);
                        }

                        return(-2);
                    }

                    return(-1);
                }

                return(-32);
            }

            return(-99);
        }
예제 #14
0
        public override int Execute(LogicLevel level)
        {
            LogicAvatarAllianceRole allianceRole = level.GetHomeOwnerAvatar().GetAllianceRole();

            if (allianceRole == LogicAvatarAllianceRole.LEADER || allianceRole == LogicAvatarAllianceRole.CO_LEADER)
            {
                LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle();

                if (allianceCastle != null)
                {
                    LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent();

                    if (bunkerComponent != null && bunkerComponent.GetClanMailCooldownTime() == 0)
                    {
                        bunkerComponent.StartClanMailCooldownTime();
                        level.GetHomeOwnerAvatar().GetChangeListener().SendClanMail(this.m_message);

                        return(0);
                    }
                }

                return(-2);
            }

            return(-1);
        }
예제 #15
0
        public static void Deliver(LogicLevel level, LogicDeliverable deliverable)
        {
            Debugger.DoAssert(deliverable != null, "Deliverable is null!");

            if (deliverable.GetDeliverableType() == 5)
            {
                LogicDeliverableBundle bundle = (LogicDeliverableBundle)deliverable;

                for (int i = 0; i < bundle.GetDeliverableCount(); i++)
                {
                    LogicDeliveryHelper.Deliver(level, bundle.GetDeliverable(i));
                }
            }
            else if (!deliverable.Deliver(level))
            {
                LogicDeliverable compensation = deliverable.Compensate(level);

                if (compensation != null)
                {
                    if (!compensation.Deliver(level))
                    {
                        Debugger.Error("Delivery compensation failed!");
                    }
                }
            }
        }
예제 #16
0
        /// <summary>
        ///     Trains the unit with new training.
        /// </summary>
        public int NewTrainingUnit(LogicLevel level)
        {
            if (LogicDataTables.GetGlobals().UseNewTraining())
            {
                LogicUnitProduction unitProduction = this._spellProduction ? level.GetGameObjectManager().GetSpellProduction() : level.GetGameObjectManager().GetUnitProduction();
                LogicClientAvatar   playerAvatar   = level.GetPlayerAvatar();
                Int32 remainingSecs = unitProduction.GetTotalRemainingSeconds();
                Int32 speedUpCost   = LogicGamePlayUtil.GetSpeedUpCost(remainingSecs, this._spellProduction ? 1 : 4, level.GetVillageType());

                if (!level.GetMissionManager().IsTutorialFinished())
                {
                    if (speedUpCost > 0 && LogicDataTables.GetGlobals().GetTutorialTrainingSpeedUpCost() > 0)
                    {
                        speedUpCost = LogicDataTables.GetGlobals().GetTutorialTrainingSpeedUpCost();
                    }
                }

                if (playerAvatar.HasEnoughDiamonds(speedUpCost, true, level))
                {
                    playerAvatar.UseDiamonds(speedUpCost);
                    unitProduction.SpeedUp();

                    return(0);
                }

                return(-1);
            }

            return(-99);
        }
예제 #17
0
        public override LogicDeliverableBundle Compensate(LogicLevel level)
        {
            LogicDeliverableBundle logicDeliverableBundle = new LogicDeliverableBundle();

            logicDeliverableBundle.AddResources(this.m_decoData.GetBuildResource(), this.m_decoData.GetBuildCost());
            return(logicDeliverableBundle);
        }
        public override int Execute(LogicLevel level)
        {
            level.GetPlayerAvatar().SetAccountBound();
            level.GetAchievementManager().RefreshStatus();

            return(0);
        }
        public override int Execute(LogicLevel level)
        {
            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

            if (playerAvatar != null)
            {
                if (playerAvatar.IsInAlliance())
                {
                    if (playerAvatar.GetAllianceId().Equals(this.m_allianceId))
                    {
                        playerAvatar.SetAllianceId(null);
                        playerAvatar.SetAllianceName(null);
                        playerAvatar.SetAllianceBadgeId(-1);
                        playerAvatar.SetAllianceLevel(-1);
                        playerAvatar.GetChangeListener().AllianceLeft();
                    }
                }

                level.GetGameListener().AllianceLeft();

                return(0);
            }

            return(-1);
        }
예제 #20
0
        /// <summary>
        ///     Executes this command.
        /// </summary>
        public override int Execute(LogicLevel level)
        {
            int villageType = level.GetVillageType();

            if (this._villageType != -1)
            {
                villageType = this._villageType;
            }

            int freeWorkers = level.GetWorkerManagerAt(villageType).GetFreeWorkers();

            if (freeWorkers == 0)
            {
                if (level.GetWorkerManagerAt(villageType).FinishTaskOfOneWorker())
                {
                    if (this._command != null)
                    {
                        int commandType = this._command.GetCommandType();

                        if (commandType < 1000)
                        {
                            if (commandType >= 500 && commandType < 700)
                            {
                                this._command.Execute(level);
                            }
                        }
                    }

                    return(0);
                }
            }

            return(-1);
        }
        public LogicAlliancePortal(LogicGameObjectData data, LogicLevel level, int villageType) : base(data, level, villageType)
        {
            LogicBunkerComponent bunkerComponent = new LogicBunkerComponent(this, 0);

            bunkerComponent.SetComponentMode(0);
            this.AddComponent(bunkerComponent);
        }
        /// <summary>
        ///     Executes this command.
        /// </summary>
        public override int Execute(LogicLevel level)
        {
            if (this._villageType <= 1)
            {
                if (level.GetGameObjectManagerAt(this._villageType) != null)
                {
                    LogicGameObject gameObject = level.GetGameObjectManagerAt(this._villageType).GetGameObjectByID(this._gameObjectId);

                    if (gameObject != null)
                    {
                        if (gameObject.GetGameObjectType() == 0)
                        {
                            return(((LogicBuilding)gameObject).SpeedUpConstruction() ? 0 : -1);
                        }
                        if (gameObject.GetGameObjectType() == 4)
                        {
                            return(((LogicTrap)gameObject).SpeedUpConstruction() ? 0 : -1);
                        }
                        if (gameObject.GetGameObjectType() == 8)
                        {
                            return(-1);
                        }
                    }
                }

                return(-3);
            }

            return(-3);
        }
        public override int Execute(LogicLevel level)
        {
            if (level.GetVillageType() == 0)
            {
                LogicUnitProduction unitProduction = null;

                switch (this.m_index)
                {
                case 1:
                    unitProduction = level.GetGameObjectManagerAt(0).GetUnitProduction();
                    break;

                case 2:
                    unitProduction = level.GetGameObjectManagerAt(0).GetSpellProduction();
                    break;
                }

                if (unitProduction == null)
                {
                    return(-1);
                }

                unitProduction.SetLocked(this.m_disabled);

                return(0);
            }

            return(-32);
        }
예제 #24
0
        public override int Execute(LogicLevel level)
        {
            LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle();

            if (allianceCastle != null)
            {
                LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent();

                if (bunkerComponent != null && bunkerComponent.GetRequestCooldownTime() == 0)
                {
                    LogicAvatar homeOwnerAvatar = level.GetHomeOwnerAvatar();

                    homeOwnerAvatar.GetChangeListener().RequestAllianceUnits(allianceCastle.GetUpgradeLevel(),
                                                                             bunkerComponent.GetUsedCapacity(),
                                                                             bunkerComponent.GetMaxCapacity(),
                                                                             homeOwnerAvatar.GetAllianceCastleUsedSpellCapacity(),
                                                                             homeOwnerAvatar.GetAllianceCastleTotalSpellCapacity(),
                                                                             this.m_message);

                    bunkerComponent.StartRequestCooldownTime();

                    return(0);
                }
            }

            return(-1);
        }
        public override int Execute(LogicLevel level)
        {
            LogicBuilding allianceCastle = level.GetGameObjectManagerAt(0).GetAllianceCastle();

            if (allianceCastle != null)
            {
                LogicBunkerComponent bunkerComponent = allianceCastle.GetBunkerComponent();

                if (bunkerComponent != null)
                {
                    if (bunkerComponent.GetReplayShareCooldownTime() == 0)
                    {
                        bunkerComponent.StartReplayShareCooldownTime();

                        if (this.m_duelReplay)
                        {
                            level.GetGameListener().DuelReplayShared(this.m_battleEntryId);
                            level.GetHomeOwnerAvatar().GetChangeListener().ShareDuelReplay(this.m_battleEntryId, this.m_message);
                        }
                        else
                        {
                            level.GetHomeOwnerAvatar().GetChangeListener().ShareReplay(this.m_battleEntryId, this.m_message);
                        }

                        return(0);
                    }
                }
            }

            return(-1);
        }
예제 #26
0
        public override void Save(LogicJSONObject jsonObject, int villageType)
        {
            LogicLevel level = this.m_parent.GetLevel();

            int activeLayout = this.m_parent.GetLevel().GetActiveLayout(villageType);

            for (int i = 0; i < 8; i++)
            {
                LogicVector2 pos = this.m_editModeLayoutPosition[i];

                if (pos.m_x != -1 && pos.m_y != -1)
                {
                    if (level.GetLayoutState(i, villageType) == 1)
                    {
                        jsonObject.Put(this.GetLayoutVariableNameX(i, true), new LogicJSONNumber(pos.m_x));
                        jsonObject.Put(this.GetLayoutVariableNameY(i, true), new LogicJSONNumber(pos.m_y));
                    }
                }
            }

            for (int i = 0; i < 8; i++)
            {
                if (i != activeLayout)
                {
                    LogicVector2 pos = this.m_layoutPosition[i];

                    if (pos.m_x != -1 && pos.m_y != -1)
                    {
                        jsonObject.Put(this.GetLayoutVariableNameX(i, false), new LogicJSONNumber(pos.m_x));
                        jsonObject.Put(this.GetLayoutVariableNameY(i, false), new LogicJSONNumber(pos.m_y));
                    }
                }
            }
        }
예제 #27
0
 /// <summary>
 ///     Destructs this instance.
 /// </summary>
 public void Destruct()
 {
     this._data            = null;
     this._level           = null;
     this._progress        = 0;
     this._requireProgress = 0;
 }
        public override int Execute(LogicLevel level)
        {
            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();

            if (playerAvatar != null && this.m_achievementData != null)
            {
                if (playerAvatar.IsAchievementCompleted(this.m_achievementData) && !playerAvatar.IsAchievementRewardClaimed(this.m_achievementData))
                {
                    playerAvatar.XpGainHelper(this.m_achievementData.GetExpReward());

                    if (this.m_achievementData.GetDiamondReward() > 0)
                    {
                        int diamondReward = this.m_achievementData.GetDiamondReward();

                        playerAvatar.SetDiamonds(playerAvatar.GetDiamonds() + diamondReward);
                        playerAvatar.SetFreeDiamonds(playerAvatar.GetFreeDiamonds() + diamondReward);
                        playerAvatar.GetChangeListener().FreeDiamondsAdded(diamondReward, 4);
                    }

                    playerAvatar.SetAchievementRewardClaimed(this.m_achievementData, true);
                    playerAvatar.GetChangeListener().CommodityCountChanged(1, this.m_achievementData, 1);

                    return(0);
                }
            }

            return(-1);
        }
예제 #29
0
        /// <summary>
        ///     Destructs this instance.
        /// </summary>
        public void Destruct()
        {
            if (this._level != null)
            {
                this._level.Destruct();
                this._level = null;
            }

            if (this._commandManager != null)
            {
                this._commandManager.Destruct();
                this._commandManager = null;
            }

            if (this._calendar != null)
            {
                this._calendar.Destruct();
                this._calendar = null;
            }

            if (this._battleTimer != null)
            {
                this._battleTimer.Destruct();
                this._battleTimer = null;
            }

            if (this._replay != null)
            {
                this._replay.Destruct();
                this._replay = null;
            }

            this._configuration = null;
        }
예제 #30
0
        public override int Execute(LogicLevel level)
        {
            LogicArrayList <LogicComponent> components = level.GetComponentManager().GetComponents(LogicComponentType.VILLAGE2_UNIT);
            int remainingSecs = 0;

            for (int i = 0; i < components.Size(); i++)
            {
                remainingSecs += ((LogicVillage2UnitComponent)components[i]).GetRemainingSecs();
            }

            LogicClientAvatar playerAvatar = level.GetPlayerAvatar();
            int speedUpCost = LogicGamePlayUtil.GetSpeedUpCost(remainingSecs, 4, 1);

            if (!playerAvatar.HasEnoughDiamonds(speedUpCost, true, level))
            {
                return(-1);
            }

            playerAvatar.UseDiamonds(speedUpCost);

            for (int i = 0; i < components.Size(); i++)
            {
                LogicVillage2UnitComponent component = (LogicVillage2UnitComponent)components[i];

                if (component.GetCurrentlyTrainedUnit() != null && component.GetRemainingSecs() > 0)
                {
                    component.ProductionCompleted();
                }
            }

            playerAvatar.GetChangeListener().DiamondPurchaseMade(16, 0, 0, speedUpCost, 1);

            return(0);
        }
예제 #31
0
 public PredefinedList()
 {
     LogicLevel = new LogicLevel(6);
 }
예제 #32
0
 public Single()
 {
     LogicLevel = new LogicLevel(5);
 }
예제 #33
0
 public MultiGrid()
 {
     LogicLevel = new LogicLevel(2);
 }
예제 #34
0
 public Empty()
 {
     LogicLevel = new LogicLevel();
 }
예제 #35
0
 public Answer()
 {
     LogicLevel = new LogicLevel(7);
 }
예제 #36
0
 public Root()
 {
     LogicLevel = new LogicLevel(0);
 }
예제 #37
0
 public OpenTextInfo()
 {
     LogicLevel = new LogicLevel(5);
 }
예제 #38
0
 public Grid3D()
 {
     LogicLevel = new LogicLevel(1);
 }