public async Task InitBuildingQueue(string userId) { _buildingQueue = await _viewService.GetBuildingQueueById(userId); _buildingQueue.Queue.Sort((x, y) => DateTime.Compare(x.FinishTime, y.FinishTime)); QueueData previousItem = null; foreach (var item in _buildingQueue.Queue) { TimeSpan tmp; if (previousItem != null) { tmp = item.FinishTime - previousItem.FinishTime; } else { tmp = item.FinishTime - DateTime.Now; } item.UpgradeTime = new TimeSpan(tmp.Hours, tmp.Minutes, tmp.Seconds); previousItem = item; } NotifyStateChanged(); }
/// <summary> /// Sets next object from building queue to building /// </summary> private void SetBuildingNextObject() { if (BuildingQueue.Count == 0) { throw new Exception("There is no object to build in building queue"); } BuildingObject = BuildingQueue[0]; BuildingQueue.RemoveAt(0); }
/// <summary> /// Removes object from building queue /// </summary> /// <param name="objectToBuild">Object to build</param> public void RemoveFromBuildingQueue(MyObjectToBuild objectToBuild) { int indexOfLastObjectToBuild = BuildingQueue.FindLastIndex(x => x == objectToBuild); if (indexOfLastObjectToBuild >= 0) { BuildingQueue.RemoveAt(indexOfLastObjectToBuild); } ChangeInventoryItemsAmount(false, MyFoundationFactoryConstants.RETURN_AMOUNT_RATIO, objectToBuild); }
/// <summary> /// Adds object to building queue /// </summary> /// <param name="objectToBuild">Object to build</param> public void AddToBuildingQueue(MyObjectToBuild objectToBuild) { if (!objectToBuild.BuildingSpecification.CanBuild(this)) { throw new Exception("You can't build this!"); } BuildingQueue.Add(objectToBuild); ChangeInventoryItemsAmount(true, 1f, objectToBuild); if (!IsBuilding) { StartBuilding(); } }
protected override void InitPrefab(string displayName, Vector3 relativePosition, Matrix localOrientation, MyMwcObjectBuilder_PrefabBase objectBuilder, MyPrefabConfiguration prefabConfig) { MyMwcObjectBuilder_PrefabFoundationFactory objectBuilderFF = objectBuilder as MyMwcObjectBuilder_PrefabFoundationFactory; IsBuilding = objectBuilderFF.IsBuilding; m_buildingTimeFromStart = objectBuilderFF.BuildingTimeFromStart; if (objectBuilderFF.BuildingObject != null) { BuildingObject = MyObjectToBuild.CreateFromObjectBuilder(objectBuilderFF.BuildingObject.ObjectBuilder, objectBuilderFF.BuildingObject.Amount); } if (objectBuilderFF.BuildingQueue != null) { foreach (MyMwcObjectBuilder_ObjectToBuild buildingQueue in objectBuilderFF.BuildingQueue) { BuildingQueue.Add(MyObjectToBuild.CreateFromObjectBuilder(buildingQueue.ObjectBuilder, buildingQueue.Amount)); } } }
public BaseControllerData(int teamID, BaseBuildingTool currentTool, Vector3 teleporterExit, Vector3 teleporterEntrance, BuildingQueue buildingQueue, Transform transform, GameResources gameResources) { TeamID = teamID; CurrentTool = currentTool; TeleporterExitX = teleporterExit.x; TeleporterExitY = teleporterExit.y; TeleporterExitZ = teleporterExit.z; TeleporterEntranceX = teleporterEntrance.x; TeleporterEntranceY = teleporterEntrance.y; TeleporterEntranceZ = teleporterEntrance.z; queueData = buildingQueue.GetData(); foreach (Transform myTransform in transform) { if (myTransform.GetComponent <BaseTile>() != null) { BaseTileData.Add(myTransform.GetComponent <BaseTile>().GetData()); } } GameResources = gameResources.GetData(); }
private void Start() { BuildingQueue = new BuildingQueue(this); SetTool((int)BaseBuildingTool.Default); }