示例#1
0
    /// <summary>
    /// Change build cost of buildings.
    /// </summary>
    /// <param name="building"></param>
    /// <param name="newCost"></param>
    public void ChangeBuildCost(Building building, Resource newCost)
    {
        BuildForSaleInfo info = availableBuildings[building];

        info.buildCost = newCost;
        availableBuildings[building] = info;
    }
示例#2
0
    /// <summary>
    /// Change the remaining amount of buildings.
    /// </summary>
    /// <param name="building"></param>
    /// <param name="value"></param>
    public void ChangeRemainingAmount(Building building, int value)
    {
        BuildForSaleInfo info = availableBuildings[building];

        info.remaining = value;
        availableBuildings[building] = info;
    }
示例#3
0
 public void OnClick()
 {
     BuildForSaleInfo info = SessionManager.availableBuildings[building];
     ResourcesManager.instance.GetTotalResources().SpendResource(info.buildCost);
     BuildingManager.instance.Build(building);
     GameViewManager.instance.SetBuildMenuViewActive(false);
 }
示例#4
0
 /// <summary>
 /// Load available building information from database.
 /// </summary>
 void LoadAvailableBuildings()
 {
     availableBuildings = new Dictionary <Building, BuildForSaleInfo>();
     foreach (var item in DatabaseManager.instance.buildingObjects)
     {
         BuildForSaleInfo info = new BuildForSaleInfo()
         {
             buildCost = item.data.buildCost,
             remaining = item.data.maxAmount
         };
         availableBuildings.Add(item, info);
     }
 }
示例#5
0
    void RenderTexts()
    {
        BuildForSaleInfo info = SessionManager.availableBuildings[building];
        if (info.buildCost.wood > 0)
            woodText.text = string.Format("x{0} Wood", info.buildCost.wood);
        else
            woodText.gameObject.SetActive(false);

        if (info.buildCost.rock > 0)
            rockText.text = string.Format("x{0} Rock", info.buildCost.rock);
        else
            rockText.gameObject.SetActive(false);

        if (info.buildCost.coin > 0)
            coinText.text = string.Format("x{0} Coin", info.buildCost.coin);
        else
            coinText.gameObject.SetActive(false);

        if (info.remaining > 0)
            remainingAmountText.text = string.Format("{0} more remaining", info.remaining);
        else
            remainingAmountText.text = "You can not build anymore of this building.";
    }
示例#6
0
    /// <summary>
    /// Loads last session. If Load fails, Loads default data.
    /// </summary>
    void LoadSession()
    {
        print("Load in progress...");
        var filePath = Path.Combine(Application.persistentDataPath, "game.session");

        if (!File.Exists(filePath))
        {
            LoadDefault();
            PlayerPrefs.SetInt("SESSION_AVAILABLE", 0);
            return;
        }
        var formatter = new BinaryFormatter();
        var file      = File.Open(filePath, FileMode.Open);

        if (file.Length == 0)
        {
            LoadDefault();
            PlayerPrefs.SetInt("SESSION_AVAILABLE", 0);
            return;
        }
        data = (SessionData)formatter.Deserialize(file);
        file.Close();

        instancedBuildings = new Dictionary <int, Building>();

        foreach (var item in data.savedBuildingCoordinates)
        {
            var building = DatabaseManager.instance.FindBuildingObject(item.Value);
            if (building)
            {
                BuildingManager.instance.Build(building, item.Key);
            }
        }

        availableBuildings = new Dictionary <Building, BuildForSaleInfo>();
        foreach (var item in DatabaseManager.instance.buildingObjects)
        {
            BuildForSaleInfo info = new BuildForSaleInfo();
            foreach (var infoItem in data.savedBuildingSaleInfos)
            {
                if (infoItem.Key == item.dataId)
                {
                    info = infoItem.Value;
                    break;
                }
                else
                {
                    info.buildCost = item.data.buildCost;
                    info.remaining = item.data.maxAmount;
                }
            }
            availableBuildings.Add(item, info);
        }

        buildingCounts = new Dictionary <BuildingCategory, int>();
        foreach (var item in data.savedBuildingCounts)
        {
            buildingCounts.Add((BuildingCategory)item.Key, item.Value);
        }

        ResourcesManager.instance.SetTotalResources(data.savedResources);

        print("Session Loaded.");
    }
示例#7
0
 bool CheckForRemaining()
 {
     BuildForSaleInfo info = SessionManager.availableBuildings[building];
     return info.remaining > 0;
 }
示例#8
0
 bool CheckForCost()
 {
     var currentResources = ResourcesManager.instance.GetTotalResources();
     BuildForSaleInfo info = SessionManager.availableBuildings[building];
     return (info.buildCost.wood <= currentResources.wood && info.buildCost.rock <= currentResources.rock && info.buildCost.coin <= currentResources.coin);
 }