示例#1
0
        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));
                }
            }
        }
示例#6
0
 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();
 }
示例#7
0
    private void Start()
    {
        BuildingQueue = new BuildingQueue(this);

        SetTool((int)BaseBuildingTool.Default);
    }