UPF/Assets/Game/Scripts/BuildingManager.cs
2022-11-03 14:55:22 +05:30

82 lines
2.6 KiB
C#

using System;
using EasyButtons;
using UnityEngine;
public class BuildingManager : MonoBehaviour
{
public static BuildingManager instance;
public Building[] buildings;
[Button]
void GetAllBuildings(){
buildings = FindObjectsOfType<Building>();
}
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){
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;
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 "";
}
}