using System; using System.Collections.Generic; using EasyButtons; using UnityEngine; public class BuildingManager : MonoBehaviour { public static BuildingManager instance; public Building[] buildings; [Button] void GetAllBuildings(){ buildings = FindObjectsOfType(); } public override string ToString() { string output = ""; foreach(Building b in buildings){ output += b.ToString()+ "\n"; } return output; } void Start() { instance =this; // DBmanager.OnStateChanged.AddListener(UpdateBuildings); UpdateBuildings(); } public async void UpdateBuildings(){ //Add default buildings foreach (Building building in buildings){ if(!building.gameObject.activeSelf){ continue; } if(DBmanager.buildingStates.ContainsKey(building.buildingData.buildingName)){ Debug.Log(DBmanager.buildingStates[building.buildingData.buildingName]); building.curLevel = DBmanager.buildingStates[building.buildingData.buildingName].level; building.lastCollected = DBmanager.buildingStates[building.buildingData.buildingName].lastCollectedTimestamp; }else{ await DBmanager.AddBuilding(building.buildingData); building.curLevel = DBmanager.buildingStates[building.buildingData.buildingName].level; building.lastCollected = DBmanager.buildingStates[building.buildingData.buildingName].lastCollectedTimestamp; } } } public void OnClickBuyBuilding(BuildingData buildingData){ DBmanager.AddBuilding(buildingData); } public Building GetBuildingWithId(string id){ foreach(Building building in buildings){ if(building.buildingData.buildingName == id){ return building; } } return null; } public static string GetStatValue(Building building, string statName) => GetStatValue(building.buildingData, building.curLevel, statName); public static string GetStatValue(BuildingData buildingData, int curLevel, string statName){ foreach(BuildingStat stat in buildingData.levels[curLevel].stats){ if(stat.name == statName){ return stat.value; } } return ""; } }