You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.0 KiB
130 lines
5.0 KiB
4 years ago
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
using AX.NetworkSystem;
|
||
|
using System.IO;
|
||
|
|
||
|
public class MapItem : MonoBehaviour {
|
||
|
|
||
|
public MapType mapType = new MapType();
|
||
|
|
||
|
private Toggle toggle;
|
||
|
private GameObject disasterContent;
|
||
|
private Texture2D texture;
|
||
|
public GameObject disasterItem;
|
||
|
// Use this for initialization
|
||
|
void Start () {
|
||
|
toggle = transform.Find("Dept").GetComponent<Toggle>();
|
||
|
toggle.onValueChanged.AddListener(RefreshDisasters);
|
||
|
|
||
|
disasterContent = GameObject.Find("DisasterList/Body/Viewport/Content");
|
||
|
|
||
|
texture = (Texture2D)Resources.Load("Common/" + mapType.unit.ToString());
|
||
|
|
||
|
if (GameSettings.disasterSetting.mapType != null)
|
||
|
{
|
||
|
toggle.isOn = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnDestroy()
|
||
|
{
|
||
|
toggle.onValueChanged.RemoveListener(RefreshDisasters);
|
||
|
}
|
||
|
|
||
|
private void RefreshDisasters(bool flag)
|
||
|
{
|
||
|
if (flag)
|
||
|
{
|
||
|
if (GameSettings.othersSettings.mode == Mode.Practice)
|
||
|
{//练习模式下才可选择自定义灾情
|
||
|
disasterContent.transform.Find("DisasterCustom").gameObject.SetActive(true);
|
||
|
disasterContent.transform.Find("DisasterCustom").GetComponent<DisasterItem>().mapType = mapType;
|
||
|
|
||
|
disasterContent.transform.Find("DisasterCustom/Toggle/Background").GetComponent<Image>().sprite
|
||
|
= Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* 练习模式,演习模式,创建灾情库都需要
|
||
|
* TODO:向服务器请求所选中地图(单位)下的所有灾情的元数据
|
||
|
* 调用CreateDisaters()生成所有灾情的灾情项
|
||
|
*/
|
||
|
NetworkManager.Default.SendRequestAsync("GET_DISASTER_METADATA_REQUEST");
|
||
|
|
||
|
if (GameSettings.othersSettings.mode == Mode.DisasterManagement)
|
||
|
{
|
||
|
GameObject.Find("CreateDisasterBtn").GetComponent<CreateDisasterBtn>().mapType = mapType;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
disasterContent.transform.Find("DisasterCustom").gameObject.SetActive(false);
|
||
|
|
||
|
/*
|
||
|
* 练习模式,演习模式,创建灾情库都需要
|
||
|
* TODO:清空其他动态创建的灾情项,除自定义灾情项
|
||
|
*/
|
||
|
ClearDisaters();
|
||
|
|
||
|
if (GameSettings.othersSettings.mode == Mode.DisasterManagement)
|
||
|
{
|
||
|
GameObject.Find("CreateDisasterBtn").GetComponent<CreateDisasterBtn>().mapType = null;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void CreateDisaters(List<DisasterLibrary> disasterMetaData)
|
||
|
{
|
||
|
for (int i = disasterMetaData.Count - 1; i >= 0; i--)
|
||
|
{
|
||
|
//筛选场景类型跟建筑名称,然后只显示该场景的灾情库
|
||
|
if (disasterMetaData[i].SceneType==GameSettings.othersSettings.SceneType.ToString()&& disasterMetaData[i].UnitName == GameSettings.othersSettings.mapname)
|
||
|
{
|
||
|
GameObject obj = Instantiate(disasterItem, disasterContent.transform) as GameObject;
|
||
|
|
||
|
obj.transform.Find("Toggle").GetComponent<Toggle>().group = disasterContent.GetComponent<ToggleGroup>();
|
||
|
|
||
|
if (File.Exists(Application.streamingAssetsPath + "/DisasterLibrary/" + disasterMetaData[i].Id + ".disaster"))
|
||
|
{
|
||
|
obj.transform.Find("NotLoad").gameObject.SetActive(false);
|
||
|
obj.transform.Find("Button").gameObject.SetActive(false);
|
||
|
obj.GetComponent<DisasterItem>().myPath = Application.streamingAssetsPath + "/DisasterLibrary/" + disasterMetaData[i].Id + ".disaster";
|
||
|
obj.GetComponent<DisasterItem>().mapType = mapType;
|
||
|
obj.GetComponent<DisasterItem>().disasterMetaDataId = disasterMetaData[i].Id;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
obj.GetComponent<DisasterItem>().mapType = mapType;
|
||
|
obj.GetComponent<DisasterItem>().fullName = "DisasterLibrary/" + disasterMetaData[i].Id + ".disaster";
|
||
|
obj.GetComponent<DisasterItem>().disasterMetaDataId = disasterMetaData[i].Id;
|
||
|
}
|
||
|
|
||
|
obj.transform.Find("Toggle/Background").GetComponent<Image>().sprite
|
||
|
= Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
|
||
|
String DisasterName = disasterMetaData[i].DisasterName.Substring(GameSettings.othersSettings.mapname.Length);
|
||
|
obj.transform.Find("Text").GetComponent<Text>().text = "灾情名称:" + DisasterName;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void ClearDisaters()
|
||
|
{
|
||
|
foreach (Transform item in disasterContent.transform)
|
||
|
{
|
||
|
if (!item.name.Contains("Custom"))
|
||
|
{
|
||
|
Destroy(item.gameObject);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Update is called once per frame
|
||
|
void Update () {
|
||
|
|
||
|
}
|
||
|
}
|