팀과 앱 Class의 기초 코드를 완성, 팀 빌딩을 위한 인터페이스 제작에 들어갔다.
대부분의 인터페이스 관련 코드는 UiManager에서 관리하므로, 그쪽 코드를 작성하였다.
UiManager 코드:
using UnityEngine;
using TMPro;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
using UnityEditor.Rendering;
using Unity.VisualScripting;
using System.Linq;
using System.Collections;
using System.Net.Sockets;
public class UiManager : MonoBehaviour
{
[SerializeField] private GameManager gameManager;
[SerializeField] private TextManager textManager;
[SerializeField] private ButtonManager buttonManager;
[SerializeField] private GameObject upgradeScrollPanel;
[SerializeField] private GameObject stockScrollPanel;
[SerializeField] private GameObject hirePanel;
[SerializeField] private GameObject infoPanel;
[SerializeField] private GameObject storePanel;
[SerializeField] private GameObject gachaPanel;
[SerializeField] private GameObject teamBuildingPanel;
[SerializeField] private GameObject teamPanel;
[SerializeField] private GameObject selectedEmployeesPanel;
[SerializeField] private GameObject employeeScrollPanel;
[SerializeField] private GameObject teamMakePanel;
[SerializeField] private GameObject menuPanel;
[SerializeField] private GameObject backPanel;
[SerializeField] private GameObject hpBar;
private int selectedJobType;
void Awake()
{
OffMenuPanel();
SetGachaPanel();
OffGachaPanel();
SetTeamBuildingPanel();
SetUpgradeScrollPanel();
SetStockScrollPanel();
SetHpBar();
OffBackPanel();
selectedJobType = 3;
}
void Start()
{
SetGachaInfo();
}
public void OffMenuPanel()
{
upgradeScrollPanel.SetActive(false);
hirePanel.SetActive(false);
infoPanel.SetActive(false);
storePanel.SetActive(false);
teamBuildingPanel.SetActive(false);
backPanel.SetActive(false);
OffEmployeeScrollPanel();
OffSelectedEmployeesPanel();
OffStockScrollPanel();
OffTeamBuildPanel();
}
public void SetMenuPanel(GameObject obj)
{
if (obj.activeSelf == true) OffMenuPanel();
else
{
OffMenuPanel();
obj.SetActive(true);
if (obj == teamBuildingPanel) SetTeamInfo();
// if (obj == employeeScrollPanel) gameManager.ShowEmploy(employeeScrollPanel.GetComponent<ScrollRect>().content);
if (obj == stockScrollPanel) gameManager.ShowStock(stockScrollPanel.GetComponent<ScrollRect>().content);
}
}
public void OffTeamBuildPanel()
{
OffEmployeeScrollPanel();
OffSelectedEmployeesPanel();
gameManager.OffEmployeeSelected();
}
public void SetSelectedJobType(int jobType)
{
selectedJobType = jobType;
}
public void SetTeamInfo()
{
List<Employee> employees = new List<Employee>();
if (selectedJobType == 3)
{
for (int i = 0; i < 3; i++)
{
List<Employee> filteredEmployees = gameManager.GetFilteredEmployees(i, gameManager.GetEmployees());
employees.AddRange(filteredEmployees);
}
}
else
{
employees.AddRange(gameManager.GetFilteredEmployees(selectedJobType, gameManager.GetEmployees()));
}
employees = gameManager.GetSortedEmployees(employees);
gameManager.ShowEmployWithToggle(employeeScrollPanel.GetComponent<ScrollRect>().content, employees);
SetSelectedEmployeesPanel();
}
public void SetSelectedEmployeesPanel()
{
OffSelectedEmployeesPanel();
List<Employee> selectedEmployees = gameManager.GetSelectedEmployees();
List<Employee> employees = new List<Employee>();
if (selectedJobType == 3)
{
for (int i = 0; i < 3; i++)
{
List<Employee> filteredEmployees = gameManager.GetFilteredEmployees(i, selectedEmployees);
employees.AddRange(filteredEmployees);
}
}
else
{
employees.AddRange(gameManager.GetFilteredEmployees(selectedJobType, selectedEmployees));
}
employees = gameManager.GetSortedEmployees(employees);
gameManager.ShowEmployWithNoToggle(selectedEmployeesPanel.GetComponent<GridLayoutGroup>().transform, employees);
}
public List<Employee> GetSeclectedEmployee()
{
List<Employee> selectedEmployees = new List<Employee>();
foreach (Transform child in employeeScrollPanel.GetComponent<ScrollRect>().content)
{
Employee employee = child.GetComponent<Employee>();
}
return selectedEmployees;
}
private void SetGachaPanel()
{
RectTransform rt = gachaPanel.GetComponent<RectTransform>();
GridLayoutGroup grid = gachaPanel.GetComponent<GridLayoutGroup>();
float side = Math.Min(rt.rect.width / 3 - 3, rt.rect.height / 2 - 3);
grid.cellSize = new Vector2(side, side);
}
public GameObject GetGachaPanel()
{
return gachaPanel;
}
public GameObject GetStockPanel()
{
return stockScrollPanel;
}
public void OnBackPanel()
{
backPanel.SetActive(true);
}
public void OffBackPanel()
{
backPanel.SetActive(false);
}
public void OnGachaPanel()
{
gachaPanel.SetActive(true);
}
public void OffGachaPanel()
{
foreach (Transform child in gachaPanel.GetComponent<Transform>())
{
Destroy(child.gameObject);
}
gachaPanel.SetActive(false);
}
private void SetTeamBuildingPanel()
{
RectTransform content = employeeScrollPanel.GetComponent<ScrollRect>().content;
GridLayoutGroup grid = content.GetComponent<GridLayoutGroup>();
float side = content.rect.width / 4;
// float side = menuPanel.GetComponent<RectTransform>().rect.width / 4;
grid.cellSize = new Vector2(side, side);
}
private void SetUpgradeScrollPanel()
{
RectTransform content = upgradeScrollPanel.GetComponent<ScrollRect>().content;
GridLayoutGroup grid = content.GetComponent<GridLayoutGroup>();
float side = menuPanel.GetComponent<RectTransform>().rect.height / 4;
grid.cellSize = new Vector2(content.rect.width, side);
}
private void SetStockScrollPanel()
{
// stockScrollPanel.SetActive(true);
RectTransform content = stockScrollPanel.GetComponent<ScrollRect>().content;
GridLayoutGroup grid = content.GetComponent<GridLayoutGroup>();
float side = menuPanel.GetComponent<RectTransform>().rect.height / 4;
grid.cellSize = new Vector2(content.rect.width, side);
// stockScrollPanel.SetActive(false);
}
public void SetGachaInfo()
{
textManager.SetGachaLevelText(hirePanel.transform.Find("DeveloperHireButton"), "Developer Hire", 0);
textManager.SetGachaLevelText(hirePanel.transform.Find("DesignerHireButton"), "Designer Hire", 1);
textManager.SetGachaLevelText(hirePanel.transform.Find("PlannerHireButton"), "Planner Hire", 2);
}
public void OnEmployeeScrollPanel()
{
}
public void OffEmployeeScrollPanel()
{
foreach (Transform child in employeeScrollPanel.GetComponent<ScrollRect>().content)
{
Destroy(child.gameObject);
}
// employeeScrollPanel.SetActive(false);
}
public void OffStockScrollPanel()
{
foreach (Transform child in stockScrollPanel.GetComponent<ScrollRect>().content)
{
Destroy(child.gameObject);
}
stockScrollPanel.SetActive(false);
}
public void OffSelectedEmployeesPanel()
{
foreach (Transform child in selectedEmployeesPanel.GetComponent<GridLayoutGroup>().transform)
{
Destroy(child.gameObject);
}
// employeeScrollPanel.SetActive(false);
}
//이거 왜 참조 0개임
public void RefreshStockPanel()
{
foreach (Transform child in stockScrollPanel.GetComponent<ScrollRect>().content)
Destroy(child.gameObject);
gameManager.ShowStock(stockScrollPanel.GetComponent<ScrollRect>().content);
}
public void SetHpBar()
{
GameObject currentHpBar = hpBar.transform.Find("Current").gameObject;
// Debug.Log(currentHpBar.GetComponent<Image>());
currentHpBar.GetComponent<Image>().fillAmount = gameManager.GetPlayer().GetCurHp() / (float)gameManager.GetPlayer().GetMaxHp();
// Debug.Log("Fill Amount : " + gameManager.GetPlayer().GetCurHp() / (float)gameManager.GetPlayer().GetMaxHp());
textManager.SetHpInfoText(gameManager.GetPlayer().GetCurHp(), gameManager.GetPlayer().GetMaxHp(), gameManager.GetPlayer().GetRecoverHpPersecond());
}
public void TogglePanel(GameObject obj)
{
if (obj.activeSelf == true) obj.SetActive(false);
else obj.SetActive(true);
}
public void OnPanel(GameObject obj)
{
obj.SetActive(true);
}
public void OffPanel(GameObject obj)
{
obj.SetActive(false);
}
public void OffTeamMakePanel()
{
teamMakePanel.SetActive(false);
}
IEnumerator SetSet()
{
yield return new WaitForEndOfFrame();
SetStockScrollPanel();
// stockScrollPanel.SetActive(false);
Debug.Log("coru");
}
}
구현한 팀 빌딩 화면: