Files
gmtk-2024/Assets/Scripts/GameManager.cs
2024-08-18 22:36:00 +02:00

138 lines
3.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public enum Resource
{
ROCK,
SAND,
CLAY,
BRICK,
TILE,
GLASS,
HOUSE,
WORKER,
TOTAL_WORKER
}
public class GameManager : MonoBehaviour
{
private int currentView = 0;
private Dictionary<Resource, int> committedResources = new Dictionary<Resource, int>()
{
{ Resource.BRICK, 0 },
{ Resource.TILE, 0 },
{ Resource.GLASS, 0 }
};
private Dictionary<Resource, int> resources = new Dictionary<Resource, int>()
{
{ Resource.ROCK, 0 },
{ Resource.SAND, 0 },
{ Resource.CLAY, 0 },
{ Resource.BRICK, 0 },
{ Resource.TILE, 0 },
{ Resource.GLASS, 0 },
{ Resource.HOUSE, 0 },
{ Resource.WORKER, 0 },
{ Resource.TOTAL_WORKER, 0 }
};
public TMPro.TMP_Text debugText;
[SerializeField]
private TMPro.TMP_Text resourceLabel;
[SerializeField]
private TMPro.TMP_Text housingLabel;
[Header("Map View")]
[SerializeField]
private Transform worldMapCameraPos;
[SerializeField]
private GameObject mainViewBtn, commitBtn;
[Header("Main View")]
[SerializeField]
private Transform mainCameraPos;
[SerializeField]
private GameObject mapViewBtn;
private MonumentManager monumentManager;
// Start is called before the first frame update
void Start()
{
Camera.main.transform.position = mainCameraPos.position;
monumentManager = GameObject.Find("MonumentManager").GetComponent<MonumentManager>();
}
// Update is called once per frame
void Update()
{
debugText.text = "";
foreach (var item in resources)
{
debugText.text += item.ToString();
}
housingLabel.text = $"{resources[Resource.HOUSE]} Houses\n" +
$"{resources[Resource.WORKER]}/{resources[Resource.TOTAL_WORKER]} Workers";
resourceLabel.text = $"Resources:\n" +
$"Storage: Bricks {resources[Resource.BRICK]} | Tiles {resources[Resource.TILE]} | Glass {resources[Resource.GLASS]}\n" +
$"Comitted: Bricks {committedResources[Resource.BRICK]} | Tiles {committedResources[Resource.TILE]} | Glass {committedResources[Resource.GLASS]}";
}
public void CommitResources()
{
List<Resource> resourceList = new List<Resource>(committedResources.Keys);
foreach (Resource resource in resourceList)
{
committedResources[resource] += GetResourceCount(resource);
RemoveResource(resource, GetResourceCount(resource));
}
monumentManager.UpdateUnlocks();
}
public void AddResource(Resource res, int amt)
{
resources[res] += amt;
}
public void RemoveResource(Resource res, int amt)
{
resources[res] -= amt;
}
public int GetResourceCount(Resource res)
{
return resources[res];
}
public Dictionary<Resource, int> GetCommitedResources()
{
return new Dictionary<Resource, int>(committedResources);
}
public void SetView(int view)
{
switch (view)
{
case 0: //Main view
Camera.main.transform.position = mainCameraPos.position;
mainViewBtn.SetActive(false);
mapViewBtn.SetActive(true);
commitBtn.SetActive(false);
break;
case 1: //Map View
Camera.main.transform.position = worldMapCameraPos.position;
mainViewBtn.SetActive(true);
mapViewBtn.SetActive(false);
commitBtn.SetActive(true);
break;
default:
break;
}
}
}