222 lines
8.4 KiB
C#
222 lines
8.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System.IO;
|
|
using System;
|
|
using XFramework;
|
|
using XFramework.Objects;
|
|
|
|
public class Subject1EditorCtrl : SubjectEditorBase
|
|
{
|
|
const string panelName = "Panel_subjects1Editor";
|
|
List<EquipIconCtrl> selectionEquip = new List<EquipIconCtrl>();
|
|
List<PersonIconCtrl> selectionPerson = new List<PersonIconCtrl>();
|
|
List<TuFaInstanceIconCtrl> seletionTuFa = new List<TuFaInstanceIconCtrl>();
|
|
|
|
string personPath = Application.streamingAssetsPath + "/Config/人员库.txt";
|
|
|
|
GameObject tufaInstancePrefab;
|
|
string tufaInstancePrefabName = "Image_tufaInstance";
|
|
EditorContentCtrl equipContent;
|
|
EditorContentCtrl personContent;
|
|
EditorContentCtrl tufaContent;
|
|
SubRecordClass recordClass;
|
|
|
|
public Subject1EditorCtrl() : base(panelName)
|
|
{
|
|
|
|
}
|
|
|
|
protected override void InitEvent()
|
|
{
|
|
base.InitEvent();
|
|
|
|
tufaInstancePrefab = Resources.Load<GameObject>(ResourcesManager.GetPath(tufaInstancePrefabName));
|
|
|
|
equipContent = ActivePanel.FindChildTrans("Content_equip").GetComponent<EditorContentCtrl>();
|
|
personContent = ActivePanel.FindChildTrans("Content_person").GetComponent<EditorContentCtrl>();
|
|
tufaContent = ActivePanel.FindChildTrans("Content_tufa").GetComponent<EditorContentCtrl>();
|
|
|
|
|
|
string[] carsName = DBManager.Instance.GetABNames(ABType.装备);//File.ReadAllLines(equipPath);
|
|
equipContent.CreatChildren(carsName, EquipIconCreatOver);
|
|
|
|
string[] personNames = File.ReadAllLines(personPath);
|
|
personContent.CreatChildren(personNames);
|
|
|
|
List<string> tufaNames = new List<string>();
|
|
foreach (string name in Enum.GetNames(typeof(TuFaEnum)))
|
|
{
|
|
tufaNames.Add(name);
|
|
}
|
|
//string[] tufaNames = new string[] { "敌机侦察", "敌机打击", "化学沾染地带", "越过染毒地带", "小股敌人袭扰", "道路阻断", "友邻装备轻度损伤" , "友邻装备重度损伤" };
|
|
tufaContent.CreatChildren(tufaNames.ToArray());
|
|
}
|
|
|
|
public override void SaveFile()
|
|
{
|
|
base.SaveFile();
|
|
recordClass = new SubRecordClass();
|
|
recordClass.TerrainName = dropdown_Terrain.options[dropdown_Terrain.value].text;
|
|
recordClass.taskIntr = input_TaskIntr.text;
|
|
recordClass.fileIntr = input_FileIntr.text;
|
|
recordClass.usedEquips.Clear();
|
|
for (int i = 0; i < selectionEquip.Count; i++)
|
|
{
|
|
string currentName = selectionEquip[i].text_IconName.text;
|
|
recordClass.usedEquips.Add(new EquipIconData(currentName, float.Parse(selectionEquip[i].input_Speed.text), int.Parse(selectionEquip[i].input_Count.text), true));
|
|
}
|
|
recordClass.usedPersons.Clear();
|
|
for (int i = 0; i < selectionPerson.Count; i++)
|
|
{
|
|
recordClass.usedPersons.Add(selectionPerson[i].text_IconName.text);
|
|
}
|
|
for (int i = 0; i < seletionTuFa.Count; i++)
|
|
{
|
|
recordClass.tuFaDatas.Add(new TuFaData((TuFaEnum)Enum.Parse(typeof(TuFaEnum), seletionTuFa[i].text_IconName.text), seletionTuFa[i].GetComponent<RectTransform>().anchoredPosition));
|
|
}
|
|
string path = $"{Application.streamingAssetsPath}/XML/编队行军/编队行军科目{DateTime.Now.ToString().Replace('/', '_').Replace(':', ' ')}.xml";
|
|
bool result = XmlHelper.SerializeObjectXML(recordClass, typeof(SubRecordClass), path);
|
|
|
|
if (result)
|
|
{
|
|
Push(new PromptWindows()).Change(new PromptWindowInitData("想定文件生成成功!文件路径为:{0}", new object[] { path }, null));
|
|
}
|
|
}
|
|
|
|
|
|
TuFaInstanceIconCtrl tempIcon;//记录生成后尚未定位的突发事件图标
|
|
public void CreatTuFaInstance(IconBase iconSp)
|
|
{
|
|
if (tempIcon != null) return;
|
|
tempIcon = ObjectPool.Instance.Instantiate(tufaInstancePrefab, image_Map.transform).GetComponent<TuFaInstanceIconCtrl>();
|
|
tempIcon.SetName(iconSp.text_IconName.text);
|
|
tempIcon.SetSprite(iconSp.image_Icon.sprite);
|
|
}
|
|
|
|
public override void OnStart()
|
|
{
|
|
base.OnStart();
|
|
EventCenter.Instance.AddEventListener<EquipIconCtrl, bool>("SelectEquipEditor", SelectEquip);
|
|
EventCenter.Instance.AddEventListener<PersonIconCtrl, bool>("SelectPersonEditor", SelectPerson);
|
|
EventCenter.Instance.AddEventListener<TuFaInstanceIconCtrl, bool>("SelectTuFaEditor", SelectTuFa);
|
|
EventCenter.Instance.AddEventListener<IconBase>("CreatTuFa", CreatTuFaInstance);
|
|
EventCenter.Instance.AddEventListener<TuFaInstanceIconCtrl>("DestoryTuFaIcon", DsetoryCurrentIcon);
|
|
|
|
|
|
}
|
|
|
|
//删除一个从未添加过的突发事件
|
|
private void DsetoryCurrentIcon(TuFaInstanceIconCtrl destory)
|
|
{
|
|
if (destory == tempIcon)
|
|
tempIcon = null;
|
|
}
|
|
|
|
public void SelectTuFa(TuFaInstanceIconCtrl iconCtrl, bool isOn)
|
|
{
|
|
if (isOn)
|
|
seletionTuFa.Add(iconCtrl);
|
|
else
|
|
seletionTuFa.Remove(iconCtrl);
|
|
if (iconCtrl == tempIcon)
|
|
tempIcon = null;
|
|
}
|
|
|
|
public void SelectEquip(EquipIconCtrl iconCtrl, bool isOn)
|
|
{
|
|
if (isOn)
|
|
selectionEquip.Add(iconCtrl);
|
|
else
|
|
selectionEquip.Remove(iconCtrl);
|
|
}
|
|
|
|
public void SelectPerson(PersonIconCtrl iconCtrl, bool isOn)
|
|
{
|
|
if (isOn)
|
|
selectionPerson.Add(iconCtrl);
|
|
else
|
|
selectionPerson.Remove(iconCtrl);
|
|
}
|
|
|
|
|
|
bool loadedOver = false;
|
|
/// <summary>
|
|
/// 图标资源加载完成后创建想定文件中记录的车辆 仅首次加载本界面时触发
|
|
/// </summary>
|
|
void EquipIconCreatOver()
|
|
{
|
|
loadedOver = true;
|
|
if (recordClass != null)
|
|
{
|
|
InitCarIcon();
|
|
}
|
|
}
|
|
|
|
public override void Change(object newData)
|
|
{
|
|
recordClass = newData as SubRecordClass;
|
|
if (recordClass != null)
|
|
{
|
|
//根据科目初始化选择车辆信息 首次加载时需等待资源加载完成
|
|
if (loadedOver)
|
|
InitCarIcon();
|
|
//根据科目初始化选择人员信息
|
|
Dictionary<string, bool> selectPerson = new Dictionary<string, bool>();
|
|
for (int i = 0; i < recordClass.usedPersons.Count; i++)
|
|
{
|
|
selectPerson[recordClass.usedPersons[i]] = true;
|
|
}
|
|
personContent.SetInitMsg(selectPerson);
|
|
|
|
for (int i = 0; i < recordClass.tuFaDatas.Count; i++)
|
|
{
|
|
TuFaData tuFaData = recordClass.tuFaDatas[i];
|
|
TuFaInstanceIconCtrl newIcon = ObjectPool.Instance.Instantiate(tufaInstancePrefab, image_Map.transform).GetComponent<TuFaInstanceIconCtrl>();
|
|
newIcon.SetName(tuFaData.name.ToString());
|
|
newIcon.SetFixedAnchoredPos(new Vector2(tuFaData.posX, tuFaData.posY));
|
|
SelectTuFa(newIcon, true);
|
|
}
|
|
input_FileIntr.text = recordClass.fileIntr;
|
|
input_TaskIntr.text = recordClass.taskIntr;
|
|
}
|
|
}
|
|
|
|
private void InitCarIcon()
|
|
{
|
|
Dictionary<string, EquipIconData> selectCars = new Dictionary<string, EquipIconData>();
|
|
for (int i = 0; i < recordClass.usedEquips.Count; i++)
|
|
{
|
|
selectCars[recordClass.usedEquips[i].name] = recordClass.usedEquips[i];
|
|
}
|
|
equipContent.SetInitMsg(selectCars);
|
|
}
|
|
|
|
//关闭界面时初始化界面
|
|
public override void OnDestroy(bool isDestroy = false)
|
|
{
|
|
base.OnDestroy(isDestroy);
|
|
EventCenter.Instance.RemoveEnvetListener<EquipIconCtrl, bool>("SelectEquipEditor", SelectEquip);
|
|
EventCenter.Instance.RemoveEnvetListener<PersonIconCtrl, bool>("SelectPersonEditor", SelectPerson);
|
|
EventCenter.Instance.RemoveEnvetListener<TuFaInstanceIconCtrl, bool>("SelectTuFaEditor", SelectTuFa);
|
|
EventCenter.Instance.RemoveEnvetListener<IconBase>("CreatTuFa", CreatTuFaInstance);
|
|
for (int i = 0; i < seletionTuFa.Count; i++)
|
|
{
|
|
ObjectPool.Instance.Destroy(seletionTuFa[i].gameObject);
|
|
}
|
|
|
|
for (int i = 0; i < selectionEquip.Count; i++)
|
|
{
|
|
selectionEquip[i].SetUpdateIconMsg(null, "RestValue");
|
|
}
|
|
|
|
for (int i = 0; i < selectionPerson.Count; i++)
|
|
{
|
|
selectionPerson[i].SetUpdateIconMsg(null, "RestValue");
|
|
}
|
|
seletionTuFa.Clear();
|
|
selectionEquip.Clear();
|
|
selectionPerson.Clear();
|
|
}
|
|
}
|