80 lines
2.5 KiB
C#
Executable File
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 "";
|
|
}
|
|
}
|