UPF/Assets/Game/Scripts/BuildingManager.cs
2023-02-24 22:14:55 +05:30

80 lines
2.5 KiB
C#
Executable File

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<Building>();
}
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 "";
}
}