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 roomsData; List roomTogs = new List(); List personTogs = new List(); 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 = 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 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 = 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; } }