Files
TaiWan/Assets/ZX/ZX6/Scripts/ZX6Controller.cs

112 lines
4.2 KiB
C#
Raw Normal View History

2025-10-31 15:20:38 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ZX6Controller : MonoBehaviour
{
public GameObject familyNameIndexPrefab;
public Transform familyNameIndexsContainer;
public Text familyNameText1;
public Text familyNameText2;
public Text countyNameText;
public Text familyNameDes1Text;
public Text familyNameDes2Text;
public Button backToIndexButton;
public Button backToAreaButton;
public Button closeButton;
public GameObject familyNameAreaPrefab;
public Transform familyNameAreasContainer;
public Transform CounyContainer;
public Text logsText;
private Animator animator;
private string basePath;
private List<FamilyNameIndexData> familyNameIndexDataList;
private FamilyNameData familyNameData;
void Start()
{
familyNameIndexDataList = new List<FamilyNameIndexData>();
animator = this.GetComponent<Animator>();
basePath = CommonData.DataServer + "/ZX6/Data/";
if (backToIndexButton != null)
backToIndexButton.onClick.AddListener(onBackToIndexButtonClick);
if (backToAreaButton != null)
backToAreaButton.onClick.AddListener(onBackToAreaButtonClick);
if (closeButton != null)
closeButton.onClick.AddListener(onCloseButtonClick);
StartCoroutine(JsonLoader.LoadJSON(basePath + "FamilyNameIndexs.json", onFamilyNameIndexDataReceived));
}
private void onFamilyNameIndexDataReceived(string data) {
familyNameIndexDataList = JsonTools.ListFromJson<FamilyNameIndexData>(data);
familyNameIndexsContainer.DetachChildren();
foreach (var familyNameIndexData in familyNameIndexDataList)
{
GameObject familyNameIndexItem = Instantiate(familyNameIndexPrefab, familyNameIndexsContainer);
FamilyNameIndex familyNameIndex = familyNameIndexItem.GetComponent<FamilyNameIndex>();
familyNameIndex.setData(familyNameIndexData);
familyNameIndex.onFamilyNameSelected.AddListener(onFamilyNameSelected);
}
}
private void onFamilyNameDataReceived(string data)
{
familyNameData = JsonTools.ObjectFromJson<FamilyNameData>(data);
familyNameDes1Text.text = familyNameData.des1 + "\n" + familyNameData.des2;
familyNameDes2Text.text = familyNameData.des2;
familyNameAreasContainer.DetachChildren();
foreach (var familyNameAreaData in familyNameData.areas)
{
GameObject familyNameAreaItem = Instantiate(familyNameAreaPrefab, familyNameAreasContainer);
FamilyNameArea familyNameArea = familyNameAreaItem.GetComponent<FamilyNameArea>();
familyNameArea.setData(familyNameAreaData);
familyNameArea.onFamilyNameCountySelected.AddListener(onFamilyNameCountySelected);
}
animator.SetBool("showFamilyName", true);
}
private void onFamilyNameSelected(FamilyName familyName)
{
this.familyNameText1.text = familyName.nameText.text;
this.familyNameText2.text = familyNameText1.text;
StartCoroutine( JsonLoader.LoadJSON(basePath + familyName.nameText.text + ".json", onFamilyNameDataReceived));
}
private void onFamilyNameCountySelected(FamilyNameCounty familyNameCounty)
{
this.countyNameText.text = familyNameCounty.data.countyName;
logsText.text = "";
foreach (var str in familyNameCounty.data.logs)
{
logsText.text += str + "\r\n";
}
animator.SetBool("showArea", false);
}
private void onBackToIndexButtonClick()
{
animator.SetBool("showFamilyName", false);
animator.SetBool("showArea", true);
// familyNameIndexsContainer.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
familyNameAreasContainer.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
}
private void onBackToAreaButtonClick()
{
animator.SetBool("showArea", true);
familyNameAreasContainer.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
}
private void onCloseButtonClick()
{
BaseController.HideView();
Destroy(gameObject.transform.parent.gameObject);
}
}