/// <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); } } }
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); }
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); } }
/// <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; }
/// <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; }
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); }
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); }
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!"); } } } }
/// <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); }
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); }
/// <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); }
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); }
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)); } } } }
/// <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); }
/// <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; }
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); }
public PredefinedList() { LogicLevel = new LogicLevel(6); }
public Single() { LogicLevel = new LogicLevel(5); }
public MultiGrid() { LogicLevel = new LogicLevel(2); }
public Empty() { LogicLevel = new LogicLevel(); }
public Answer() { LogicLevel = new LogicLevel(7); }
public Root() { LogicLevel = new LogicLevel(0); }
public OpenTextInfo() { LogicLevel = new LogicLevel(5); }
public Grid3D() { LogicLevel = new LogicLevel(1); }