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; LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent != null && (uint)this.m_mode <= 1) { return(heroBaseComponent.SetHeroMode(this.m_mode) ? 0 : -2); } } 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; LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent != null) { heroBaseComponent.CancelUpgrade(); return(0); } } return(-1); }
public override int Execute(LogicLevel level) { LogicGameObject gameObject = this.m_villageType <= 1 && level.GetGameObjectManagerAt(this.m_villageType) != null ? level.GetGameObjectManagerAt(this.m_villageType).GetGameObjectByID(this.m_gameObjectId) : level.GetGameObjectManager().GetGameObjectByID(this.m_gameObjectId); if (gameObject != null && gameObject.GetGameObjectType() == LogicGameObjectType.BUILDING) { LogicBuilding building = (LogicBuilding)gameObject; LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent != null) { return(heroBaseComponent.SpeedUp() ? 0 : -2); } } return(-1); }
public override int Execute(LogicLevel level) { LogicBuilding building = (LogicBuilding)level.GetGameObjectManager().GetGameObjectByID(this.m_gameObjectId); if (!building.IsLocked()) { if (building.GetBuildingData().GetVillageType() == level.GetVillageType()) { LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent != null && heroBaseComponent.CanStartUpgrading(true)) { LogicClientAvatar playerAvatar = level.GetPlayerAvatar(); LogicHeroData heroData = building.GetBuildingData().GetHeroData(); int upgLevel = playerAvatar.GetUnitUpgradeLevel(heroData); int upgradeCost = heroData.GetUpgradeCost(upgLevel); LogicResourceData upgradeResourceData = heroData.GetUpgradeResource(upgLevel); if (playerAvatar.HasEnoughResources(upgradeResourceData, upgradeCost, true, this, false)) { if (level.HasFreeWorkers(this, -1)) { playerAvatar.CommodityCountChangeHelper(0, upgradeResourceData, -upgradeCost); heroBaseComponent.StartUpgrading(); return(0); } } } return(-1); } return(-32); } return(-23); }
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; LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent != null) { if (!heroBaseComponent.GetHeroData().HasNoDefence()) { return(heroBaseComponent.SetSleep(this.m_enabled) ? 0 : -2); } return(-3); } return(-4); } return(-1); }
/// <summary> /// Gets the shortest task. /// </summary> public LogicGameObject GetShortestTaskGO() { LogicGameObject gameObject = null; for (int i = 0, minRemaining = -1, tmpRemaining = 0; i < this._constructions.Count; i++, tmpRemaining = 0) { LogicGameObject tmp = this._constructions[i]; switch (this._constructions[i].GetGameObjectType()) { case 0: LogicBuilding building = (LogicBuilding)tmp; if (building.IsConstructing()) { tmpRemaining = building.GetRemainingConstructionTime(); } else { LogicHeroBaseComponent heroBaseComponent = building.GetHeroBaseComponent(); if (heroBaseComponent == null) { Debugger.Warning("LogicWorkerManager - Worker allocated to altar/herobase without hero upgrading"); } else { if (heroBaseComponent.IsUpgrading()) { tmpRemaining = heroBaseComponent.GetRemainingUpgradeSeconds(); } else { Debugger.Warning("LogicWorkerManager - Worker allocated to building with remaining construction time 0"); } } } break; case 3: LogicObstacle obstacle = (LogicObstacle)tmp; if (obstacle.IsClearingOnGoing()) { tmpRemaining = obstacle.GetRemainingClearingTime(); } else { Debugger.Warning("LogicWorkerManager - Worker allocated to obstacle with remaining clearing time 0"); } break; case 4: LogicTrap trap = (LogicTrap)tmp; if (trap.IsConstructing()) { tmpRemaining = trap.GetRemainingConstructionTime(); } else { Debugger.Warning("LogicWorkerManager - Worker allocated to trap with remaining construction time 0"); } break; case 8: break; } if (gameObject == null || minRemaining > tmpRemaining) { gameObject = tmp; minRemaining = tmpRemaining; } } return(gameObject); }