/// <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; }
/// <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; }
public void OnClick() { BuildForSaleInfo info = SessionManager.availableBuildings[building]; ResourcesManager.instance.GetTotalResources().SpendResource(info.buildCost); BuildingManager.instance.Build(building); GameViewManager.instance.SetBuildMenuViewActive(false); }
/// <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); } }
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."; }
/// <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."); }
bool CheckForRemaining() { BuildForSaleInfo info = SessionManager.availableBuildings[building]; return info.remaining > 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); }