using System; using EasyButtons; using UnityEngine; public class BuildingManager : MonoBehaviour { public static BuildingManager instance; public Building[] buildings; [Button] void GetAllBuildings(){ buildings = FindObjectsOfType(); } 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; } bool buildingExists = false; foreach (BuildingState buildingState in DBmanager.buildingStates){ if(buildingState.id == building.buildingData.buildingName){ buildingExists =true; } } if(!buildingExists){ building.lastCollected = DateTime.Now.Subtract(TimeSpan.FromDays(1)); await DBmanager.AddBuilding(building.buildingData); } } foreach (Building building in buildings){ bool buildingExists = false; foreach (BuildingState buildingState in DBmanager.buildingStates){ if(buildingState.id == building.buildingData.buildingName){ buildingExists =true; building.curLevel = buildingState.level; // building.transform.position = (buildingState.position != Vector3.zero) ? buildingState.position : building.transform.position; building.lastCollected = buildingState.lastCollectedTimestamp; Debug.Log(building.lastCollected); break; } } // building.gameObject.SetActive(buildingExists); } } 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 ""; } }