/// <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); }
/// <summary> /// Gets the worker cost. /// </summary> public int GetWorkerCost(LogicLevel level) { int totalWorkers = level.GetWorkerManagerAt(level.GetVillageType()).GetTotalWorkers() + level.GetUnplacedObjectCount(LogicDataTables.GetWorkerData()); switch (totalWorkers) { case 1: return(this._workerCostSecondBuildCost); case 2: return(this._workerCostThirdBuildCost); case 3: return(this._workerCostFourthBuildCost); case 4: return(this._workerCostFifthBuildCost); default: return(this._workerCostFifthBuildCost); } }