ISAP/Assets/Scripts/UI/UISimulation.cs

134 lines
3.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class UISimulation : UIBase
{
public Button save;
public Transform roomContent;
public Transform personContent;
public Toggle roomItem;
public Toggle personItem;
public ToggleGroup roomGroup;
public ToggleGroup personGroup;
public List<RoomDataItem> roomsData;
List<Toggle> roomTogs = new List<Toggle>();
List<Toggle> personTogs = new List<Toggle>();
private void Awake()
{
save.onClick.AddListener(OnSaveRoomInfo);
roomsData = DataManager.Instance.roomsData;
for (int i = 0; i < roomsData.Count; i++)
{
var room = roomsData[i];
var go = GameObject.Instantiate(roomItem, roomContent);
go.group = roomGroup;
go.gameObject.SetActive(true);
go.name = room.id.ToString();
go.transform.Find("Label").GetComponent<Text>().text = room.code;
go.isOn = false;
go.onValueChanged.AddListener(ShowPerson);
roomTogs.Add(go);
}
}
private void ShowPerson(bool arg0)
{
if (arg0)
{
roomGroup.allowSwitchOff = false;
var room = FindRoomSelect();
if (room != null)
{
RefreshPersonList(room.persons);
}
}
}
void RefreshPersonList(List<RoomPersonsItem> persons)
{
for (int i = 0; i < personTogs.Count; i++)
{
Destroy(personTogs[i].gameObject);
}
personTogs.Clear();
for (int i = 0; i < persons.Count; i++)
{
var person = persons[i];
var go = GameObject.Instantiate(personItem, personContent);
go.group = personGroup;
go.gameObject.SetActive(true);
go.name = person.id.ToString();
go.transform.Find("Label").GetComponent<Text>().text = person.name;
go.isOn = false;
personTogs.Add(go);
}
}
private void OnSaveRoomInfo()
{
var room = FindRoomSelect();
var person = FindPersonSelect();
if (room != null && person != null)
{
DataManager.Instance.roomItem = room;
DataManager.Instance.RoomPersonsItem = person;
EventCenter.dispatcher.SendMessage(MsgType.OnSetRoom, null);
}
UIManager.Instance.CloseUI(UIType.UISimulation);
}
RoomDataItem FindRoomSelect()
{
for (int i = 0; i < roomTogs.Count; i++)
{
if (roomTogs[i].isOn)
{
int id = int.Parse(roomTogs[i].name);
for (int j = 0; j < roomsData.Count; j++)
{
if (roomsData[j].id == id)
{
return roomsData[j];
}
}
}
}
return null;
}
RoomPersonsItem FindPersonSelect()
{
var room = FindRoomSelect();
for (int i = 0; i < personTogs.Count; i++)
{
if (personTogs[i].isOn)
{
int id = int.Parse(personTogs[i].name);
for (int j = 0; j < room.persons.Count; j++)
{
if (room.persons[j].id == id)
{
return room.persons[j];
}
}
}
}
return null;
}
}