コード例 #1
0
    private IEnumerator ConstructAfterTime()
    {
        StartedBuilding = DateTime.Now;

        ItemBuilding = GetNextItemInBuildQueue();
        ref_GameController.GameData.Storage.TakeResources(ItemBuilding.DataObject.CostToBuild);

        EndBuilding = StartedBuilding.AddSeconds((int)ItemBuilding.DataObject.TimeToBuild);
        if (building)
        {
            yield break;
        }

        building = true;

        yield return(new WaitForSeconds((int)ItemBuilding.DataObject.TimeToBuild));

        if (ItemBuilding.DataObject is SO_Machine)
        {
            BuiltMachine = ((SO_Machine)ItemBuilding.DataObject).PrefabForMachine;
        }
        else
        {
            ref_GameController.GameData.Storage.AddResources(new CL_Resource(ItemBuilding.DataObject));
        }

        ItemBuilding = null;
        building     = false;
    }
コード例 #2
0
 public void RemoveFromQueue(CL_BuildQueue itemToRemove)
 {
     if (MachineGenerator != null)
     {
         MachineGenerator.RemoveFromQueue(itemToRemove);
     }
 }
コード例 #3
0
    public void RemoveFromQueue(CL_BuildQueue itemToRemove)
    {
        CL_BuildQueue ItemFound = BuildQueue.Find(f => f.DataObject.ResourceName == itemToRemove.DataObject.ResourceName);

        if (ItemFound != null)
        {
            ItemFound.Quantity = ItemFound.Quantity - 1;
            if (ItemFound.Quantity <= 0)
            {
                BuildQueue.Remove(ItemFound);
            }
        }
    }
コード例 #4
0
 public CL_BuildQueue GetNextItemInBuildQueue()
 {
     if (BuildQueue.Count > 0)
     {
         CL_BuildQueue BuildQueueToReturn = new CL_BuildQueue(BuildQueue[0].DataObject, 1);
         BuildQueue[0].Quantity -= 1;
         if (BuildQueue[0].Quantity <= 0)
         {
             BuildQueue.RemoveAt(0);
         }
         return(BuildQueueToReturn);
     }
     return(null);
 }
コード例 #5
0
    public void AddToQueue(CL_ItemConstructable ItemToAdd)
    {
        if (BuildQueue != null)
        {
            CL_BuildQueue ItemFound = BuildQueue.Find(f => f.DataObject.ResourceName == ItemToAdd.ResourceName);

            if (ItemFound != null)
            {
                ItemFound.Quantity += 1;
            }
            else
            {
                BuildQueue.Add(new CL_BuildQueue(ItemToAdd, 1));
            }
        }
    }
コード例 #6
0
    public void SetItem(CL_BuildQueue resourcePass, S_InGameMenuBase ToPassBackToPass)
    {
        ToPassBackTo = ToPassBackToPass;
        Data         = resourcePass;
        if (m_IconBuildQueueItem != null)
        {
            if (Data.DataObject != null)
            {
                m_IconBuildQueueItem.sprite = Data.DataObject.Sprite != null ? Data.DataObject.Sprite : null;
            }
        }

        if (m_ButtonBuildQueue != null)
        {
            m_ButtonBuildQueue.onClick.AddListener(RemoveItemFromQueue);
        }
    }
コード例 #7
0
 public void SetData(CL_BuildQueue BuildDataPass)
 {
     Data = BuildDataPass;
     if (Data != null)
     {
         if (Data.DataObject != null)
         {
             if (m_TextCurrentBuilding != null)
             {
                 m_TextCurrentBuilding.SetText(BuildDataPass.DataObject.ResourceName.ToString());
             }
             if (m_TextCurrentBuildingQuantity != null)
             {
                 m_TextCurrentBuildingQuantity.SetText(BuildDataPass.DataObject.Quantity.ToString());
             }
             if (m_ImageCurrentBuilding != null)
             {
                 m_ImageCurrentBuilding.sprite = BuildDataPass.DataObject.Sprite;
             }
         }
     }
 }
コード例 #8
0
 public CL_BuildQueue(CL_BuildQueue dataPass)
 {
     DataObject = dataPass.DataObject;
     Quantity   = dataPass.Quantity;
 }