134 lines
3.5 KiB
C#
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;
|
|
}
|
|
}
|