コード例 #1
0
    /**
     *	Finish active building for gold, or speed up activity if its already built.
     *
     *  Returns true if successful.
     */
    virtual public bool SpeedUp()
    {
        if (ActiveBuilding == null)
        {
            Debug.LogError("Active Building was NULL");
            return(false);
        }
        if (ActiveBuilding.CurrentActivity == null)
        {
            Debug.LogError("Current activity was NULL");
            return(false);
        }
        int cost = ((int)Mathf.Max(1, (float)(ActiveBuilding.CurrentActivity.RemainingTime.TotalSeconds + 1) / (float)BuildingManager.GOLD_TO_SECONDS_RATIO));

        if (ResourceManager.Instance.Gold >= cost)
        {
            ResourceManager.Instance.RemoveGold(cost);
            if (ActiveBuilding.CurrentActivity.Type == ActivityType.BUILD)
            {
                ActiveBuilding.CompleteBuild();
                AcknowledgeBuilding(ActiveBuilding);
            }
            else
            {
                ActiveBuilding.SpeedUp();
            }
        }
        else
        {
            return(false);
        }
        return(true);
    }
コード例 #2
0
 /**
  *	Move active building on the grid.
  *
  *  Returns true if successful.
  */
 virtual public bool MoveBuilding()
 {
     BuildingModeGrid.GetInstance().RemoveObject(ActiveBuilding);
     ActiveBuilding.Position = ActiveBuilding.MovePosition;
     BuildingModeGrid.GetInstance().AddObjectAtPosition(ActiveBuilding, ActiveBuilding.Position);
     ActiveBuilding.FinishMoving();
     if ((int)saveMode < (int)SaveMode.SAVE_NEVER)
     {
         PersistenceManager.GetInstance().Save();
     }
     return(true);
 }
コード例 #3
0
 /**
  *	Place active building on the grid.
  *
  * Returns true if successful.
  */
 virtual public bool PlaceBuilding()
 {
     if (CanBuildBuilding(ActiveBuilding))
     {
         ActiveBuilding.Place();
         buildingsInProgress.Add(ActiveBuilding);
         BuildingModeGrid.GetInstance().AddObjectAtPosition(ActiveBuilding, ActiveBuilding.Position);
         ActiveBuilding = null;
         if ((int)saveMode < (int)SaveMode.SAVE_NEVER)
         {
             PersistenceManager.GetInstance().Save();
         }
         return(true);
     }
     return(false);
 }
コード例 #4
0
 public AB_State_ProductionCycle(ActiveBuilding activeBuilding)
 {
     Building = activeBuilding;
 }
コード例 #5
0
 public void Initialize(ActiveBuilding building)
 {
     currentBuilding = building;
 }