2025-06-14 13:46:24 +08:00
|
|
|
|
using HxGame.Data;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
2025-06-22 18:23:47 +08:00
|
|
|
|
using System.Threading;
|
2025-06-14 13:46:24 +08:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using UnityEngine.UI;
|
2025-06-22 15:21:25 +08:00
|
|
|
|
using static System.Net.Mime.MediaTypeNames;
|
2025-06-14 13:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ
|
|
|
|
|
|
*
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
public class UIMonsterPanel : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
[HideInInspector]
|
|
|
|
|
|
public InputField curActiveInput;
|
|
|
|
|
|
|
|
|
|
|
|
[HideInInspector]
|
|
|
|
|
|
public List<string> curActiveList;
|
|
|
|
|
|
|
|
|
|
|
|
public Button btnClose;
|
|
|
|
|
|
public Button btnAddMonster;
|
|
|
|
|
|
public Button btnAddGroup;
|
|
|
|
|
|
public Button btnDeleteGroup;
|
|
|
|
|
|
|
|
|
|
|
|
#region MonsterInfo
|
|
|
|
|
|
public InputField txtMonsterID; //<2F><><EFBFBD><EFBFBD>ID
|
|
|
|
|
|
public InputField txtName; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public Dropdown dropRefreshType; //ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public InputField txtRefreshTime; //ˢ<><CBA2>ʱ<EFBFBD>䣨<EFBFBD><E4A3A8><EFBFBD>룩
|
|
|
|
|
|
public InputField txtCount; //ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public InputField txtRadius; //ˢ<>ַ<EFBFBD>Χ
|
|
|
|
|
|
public Dropdown dropPatrol; //Ѳ<><D1B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public InputField txtPath; //Ѳ<><D1B2>·<EFBFBD><C2B7>
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
public ScrollRect svMonsters;
|
|
|
|
|
|
public Transform itemParent;
|
|
|
|
|
|
public int itemIdx;
|
|
|
|
|
|
|
|
|
|
|
|
private UIMonsterItem _curMonsterItem;
|
|
|
|
|
|
//private Dictionary<int, List<UIMonsterItem>> _dicGroupItem;
|
2025-06-22 18:23:47 +08:00
|
|
|
|
private Dictionary<int, UIMonsterItem> _dicGroupItem = new(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>item
|
2025-06-14 13:46:24 +08:00
|
|
|
|
|
2025-06-22 18:23:47 +08:00
|
|
|
|
private Dictionary<int, UIMonsterItem> _dicAllItem = new(); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>item
|
2025-06-14 13:46:24 +08:00
|
|
|
|
private void Awake()
|
|
|
|
|
|
{
|
|
|
|
|
|
itemIdx = 0;
|
|
|
|
|
|
btnClose.onClick.AddListener(OnClickClose);
|
|
|
|
|
|
btnAddGroup.onClick.AddListener(OnAddGroup);
|
|
|
|
|
|
btnDeleteGroup.onClick.AddListener(OnDeleteGroup);
|
2025-06-22 15:21:25 +08:00
|
|
|
|
txtMonsterID.onEndEdit.AddListener(OnEditorMonsterId);
|
|
|
|
|
|
txtName.onEndEdit.AddListener(OnEditorMonsterName);
|
|
|
|
|
|
txtRadius.onEndEdit.AddListener(OnEditorMonsterRadius);
|
|
|
|
|
|
txtCount.onEndEdit.AddListener(OnEditorMonsterCount);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnEditorMonsterCount(string arg0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!int.TryParse(arg0, out var intValue))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
_curMonsterItem.monster.id = intValue;
|
|
|
|
|
|
_curMonsterItem.RefreshItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnEditorMonsterRadius(string arg0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!int.TryParse(arg0, out var intValue))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
_curMonsterItem.monster.radius = intValue;
|
|
|
|
|
|
_curMonsterItem.RefreshItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnEditorMonsterName(string arg0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curMonsterItem == null) return;
|
|
|
|
|
|
_curMonsterItem.RefreshItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnEditorMonsterId(string arg0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curMonsterItem == null) return;
|
|
|
|
|
|
if (!int.TryParse(arg0, out var intValue))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
_curMonsterItem.monster.id = intValue;
|
|
|
|
|
|
_curMonsterItem.RefreshItem();
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnClickClose()
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.uiEditMapConfig.togEditMonsters.isOn = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Cleanup()
|
|
|
|
|
|
{
|
|
|
|
|
|
txtMonsterID.text = string.Empty;
|
|
|
|
|
|
txtName.text = string.Empty;
|
|
|
|
|
|
txtRefreshTime.text = string.Empty;
|
|
|
|
|
|
txtCount.text = string.Empty;
|
|
|
|
|
|
txtRadius.text = string.Empty;
|
|
|
|
|
|
txtPath.text = string.Empty;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ӷ<EFBFBD><D3B7>飬<EFBFBD><E9A3AC>item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
|
|
|
|
|
|
private void OnAddGroup()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curMonsterItem == null)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if(_curMonsterItem.groupId > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD>ҳ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>ҳ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem.transform.parent.GetComponent<RectTransform>().sizeDelta += Vector2Int.up * 30;
|
|
|
|
|
|
|
|
|
|
|
|
UnityEngine.Object obj = Resources.Load("Prefabs/monsterSubItem");
|
|
|
|
|
|
if (obj == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("monsterSubItem.prefabʧ<62><CAA7>");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GameObject go = Instantiate(obj) as GameObject; ;
|
|
|
|
|
|
go.transform.SetParent(_curMonsterItem.transform.parent, false);
|
|
|
|
|
|
UIMonsterItem item = go.GetComponent<UIMonsterItem>();
|
|
|
|
|
|
item.SetGroup(_curMonsterItem.monster.itemIdx); //<2F><>item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪgroupId
|
|
|
|
|
|
MonstersConfig.MonsterConfig monster = new MonstersConfig.MonsterConfig();
|
|
|
|
|
|
monster.groupId = _curMonsterItem.monster.itemIdx;
|
|
|
|
|
|
monster.itemIdx = -1;
|
|
|
|
|
|
item.SetItem(monster);
|
|
|
|
|
|
item.OnClick = OnClickItem;
|
|
|
|
|
|
item.OnCopyItem = OnCopyItem;
|
|
|
|
|
|
item.btnClickSelf.Select();
|
|
|
|
|
|
AddGroupMap(_curMonsterItem.monster.itemIdx, _curMonsterItem);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnAddGroup(MonstersConfig.MonsterConfig monster)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curMonsterItem == null)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem.transform.parent.GetComponent<RectTransform>().sizeDelta += Vector2Int.up * 30;
|
|
|
|
|
|
|
|
|
|
|
|
UnityEngine.Object obj = Resources.Load("Prefabs/monsterSubItem");
|
|
|
|
|
|
if (obj == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("monsterSubItem.prefabʧ<62><CAA7>");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GameObject go = Instantiate(obj) as GameObject; ;
|
|
|
|
|
|
go.transform.SetParent(_curMonsterItem.transform.parent, false);
|
|
|
|
|
|
UIMonsterItem item = go.GetComponent<UIMonsterItem>();
|
|
|
|
|
|
item.SetGroup(_curMonsterItem.monster.itemIdx); //<2F><>item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪgroupId
|
|
|
|
|
|
monster.groupId = _curMonsterItem.monster.itemIdx;
|
|
|
|
|
|
item.SetItem(monster);
|
|
|
|
|
|
item.OnClick = OnClickItem;
|
|
|
|
|
|
item.OnCopyItem = OnCopyItem;
|
|
|
|
|
|
|
|
|
|
|
|
AddGroupMap(_curMonsterItem.monster.itemIdx, _curMonsterItem);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnDeleteGroup()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curMonsterItem == null)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem.transform.parent.GetComponent<RectTransform>().sizeDelta -= Vector2Int.up * 30;
|
|
|
|
|
|
|
|
|
|
|
|
DestroyImmediate(_curMonsterItem.gameObject);
|
2025-06-22 18:23:47 +08:00
|
|
|
|
MapManager.Instance.RemoveMonsterPoint(_curMonsterItem.monster.itemIdx);
|
2025-06-14 13:46:24 +08:00
|
|
|
|
_curMonsterItem = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void AddItem()
|
|
|
|
|
|
{
|
|
|
|
|
|
Cleanup();
|
|
|
|
|
|
UnityEngine.Object obj = Resources.Load("Prefabs/monsterItem");
|
|
|
|
|
|
if (obj == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("monsterItem.prefabʧ<62><CAA7>");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
GameObject go = Instantiate(obj) as GameObject; ;
|
|
|
|
|
|
go.transform.SetParent(itemParent, false);
|
|
|
|
|
|
UIMonsterItem item = go.transform.Find("monsterSubItem").GetComponent<UIMonsterItem>();
|
|
|
|
|
|
|
|
|
|
|
|
MonstersConfig.MonsterConfig monster = new MonstersConfig.MonsterConfig();
|
|
|
|
|
|
monster.itemIdx = ++itemIdx;
|
2025-06-22 15:21:25 +08:00
|
|
|
|
monster.radius = 1;
|
|
|
|
|
|
monster.id = 0;
|
|
|
|
|
|
monster.num = 0;
|
|
|
|
|
|
monster.pos = MapManager.Instance.map.selector.getMapGrid(Camera.main.transform.position);
|
2025-06-14 13:46:24 +08:00
|
|
|
|
item.SetItem(monster);
|
|
|
|
|
|
item.OnClick = OnClickItem;
|
|
|
|
|
|
item.OnCopyItem = OnCopyItem;
|
|
|
|
|
|
_curMonsterItem = item;
|
|
|
|
|
|
item.btnClickSelf.Select();
|
2025-06-22 18:23:47 +08:00
|
|
|
|
_dicAllItem.Add(monster.itemIdx, item);
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void LoadMonsterConfig(int mapId)
|
|
|
|
|
|
{
|
|
|
|
|
|
MonstersConfig mc = new MonstersConfig();
|
|
|
|
|
|
if (!mc.LoadXML(mapId))
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
for (int i = 0; i < mc.monsterConfigs.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
MonstersConfig.MonsterConfig monster = mc.monsterConfigs[i];
|
|
|
|
|
|
if (_curMonsterItem != null && monster.groupId >= 0 && monster.groupId == _curMonsterItem.monster.itemIdx)
|
|
|
|
|
|
OnAddGroup(monster);
|
|
|
|
|
|
else
|
|
|
|
|
|
AddItem(monster);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void AddItem(MonstersConfig.MonsterConfig monster)
|
|
|
|
|
|
{
|
|
|
|
|
|
UnityEngine.Object obj = Resources.Load("Prefabs/monsterItem");
|
|
|
|
|
|
if (obj == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("monsterItem.prefabʧ<62><CAA7>");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (monster.itemIdx < 0)
|
|
|
|
|
|
monster.itemIdx = itemIdx++;
|
|
|
|
|
|
else
|
|
|
|
|
|
itemIdx = monster.itemIdx;
|
|
|
|
|
|
|
|
|
|
|
|
GameObject go = Instantiate(obj) as GameObject; ;
|
|
|
|
|
|
go.transform.SetParent(itemParent, false);
|
|
|
|
|
|
UIMonsterItem item = go.transform.Find("monsterSubItem").GetComponent<UIMonsterItem>();
|
|
|
|
|
|
//item.SetItem(itemIdx++, monster);
|
|
|
|
|
|
item.SetItem(monster);
|
|
|
|
|
|
item.OnClick = OnClickItem;
|
|
|
|
|
|
item.OnCopyItem = OnCopyItem;
|
|
|
|
|
|
_curMonsterItem = item;
|
2025-06-22 18:23:47 +08:00
|
|
|
|
_dicAllItem.Add(monster.itemIdx, item);
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SaveItem()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_curMonsterItem == null)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(txtMonsterID.text))
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
if(_curMonsterItem.groupId < 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] tmp = _curMonsterItem.txtPos.text.Split(',');
|
|
|
|
|
|
if (tmp.Length != 2)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
int x = Convert.ToInt32(tmp[0]);
|
|
|
|
|
|
int y = Convert.ToInt32(tmp[1]);
|
|
|
|
|
|
_curMonsterItem.monster.pos = new Vector2Int(x, y);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if(_dicGroupItem.ContainsKey(_curMonsterItem.groupId))
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] tmp = _dicGroupItem[_curMonsterItem.groupId].txtPos.text.Split(',');
|
|
|
|
|
|
if (tmp.Length != 2)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
int x = Convert.ToInt32(tmp[0]);
|
|
|
|
|
|
int y = Convert.ToInt32(tmp[1]);
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem.monster.pos = new Vector2Int(x, y);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem.monster.id = Convert.ToInt32(txtMonsterID.text);
|
|
|
|
|
|
_curMonsterItem.monster.createMode = (CreateMonsterMode)dropRefreshType.value;
|
|
|
|
|
|
if (_curMonsterItem.monster.createMode == CreateMonsterMode.Death)
|
|
|
|
|
|
_curMonsterItem.monster.delayTime = Convert.ToInt32(txtRefreshTime.text);
|
|
|
|
|
|
else
|
|
|
|
|
|
_curMonsterItem.monster.strTime = txtRefreshTime.text;
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem.monster.num = Convert.ToInt32(txtCount.text);
|
|
|
|
|
|
_curMonsterItem.monster.radius = Convert.ToInt32(txtRadius.text);
|
|
|
|
|
|
_curMonsterItem.monster.patrolMode = (PatrolMode)dropPatrol.value;
|
|
|
|
|
|
_curMonsterItem.RefreshItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void OnClickItem(UIMonsterItem item)
|
|
|
|
|
|
{
|
|
|
|
|
|
//<2F>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
SaveItem();
|
|
|
|
|
|
Cleanup();
|
|
|
|
|
|
|
|
|
|
|
|
_curMonsterItem = item;
|
|
|
|
|
|
MonstersConfig.MonsterConfig monster = _curMonsterItem.monster;
|
|
|
|
|
|
txtMonsterID.text = monster.id.ToString();
|
|
|
|
|
|
dropRefreshType.value = (int)monster.createMode;
|
|
|
|
|
|
if (monster.createMode == CreateMonsterMode.Death)
|
|
|
|
|
|
txtRefreshTime.text = monster.delayTime.ToString();
|
|
|
|
|
|
else
|
|
|
|
|
|
txtRefreshTime.text = monster.strTime;
|
|
|
|
|
|
txtCount.text = monster.num.ToString();
|
|
|
|
|
|
txtRadius.text = monster.radius.ToString();
|
|
|
|
|
|
dropPatrol.value = (int)monster.patrolMode;
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < monster.paths.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] pos = monster.paths[i].Split('_');
|
|
|
|
|
|
int x = Convert.ToInt32(pos[0]);
|
|
|
|
|
|
int y = Convert.ToInt32(pos[1]);
|
|
|
|
|
|
txtPath.text += $"[{monster.paths[i].Replace('_', ',')}]";
|
|
|
|
|
|
MapManager.Instance.AddMonsterPathSize();
|
|
|
|
|
|
MapManager.Instance.CreateSpecialPoint(x, y, MapManager.EditCellType.MonsterPath);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void CopyItem(MonstersConfig.MonsterConfig monster)
|
|
|
|
|
|
{
|
|
|
|
|
|
MonstersConfig.MonsterConfig m = new MonstersConfig.MonsterConfig();
|
|
|
|
|
|
m.itemIdx = ++itemIdx;
|
|
|
|
|
|
m.id = monster.id;
|
|
|
|
|
|
m.num = monster.num;
|
|
|
|
|
|
m.radius = monster.radius;
|
|
|
|
|
|
m.pos = monster.pos;
|
|
|
|
|
|
m.createMode = monster.createMode;
|
|
|
|
|
|
m.delayTime = monster.delayTime;
|
|
|
|
|
|
m.strTime = monster.strTime;
|
|
|
|
|
|
m.patrolMode = monster.patrolMode;
|
|
|
|
|
|
m.paths = monster.paths;
|
|
|
|
|
|
AddItem(m);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//public void OnCopyItem(MonstersConfig.MonsterConfig monster)
|
|
|
|
|
|
public void OnCopyItem(UIMonsterItem item)
|
|
|
|
|
|
{
|
|
|
|
|
|
SaveItem();
|
|
|
|
|
|
CopyItem(item.monster);
|
|
|
|
|
|
|
|
|
|
|
|
if (!_dicGroupItem.ContainsKey(item.monster.itemIdx))
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
var count = item.transform.parent.childCount;
|
|
|
|
|
|
if (count == 1)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ե<EFBFBD>һ<EFBFBD><D2BB>
|
|
|
|
|
|
for (int i = 1; i < count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
var tf = item.transform.parent.GetChild(i);
|
|
|
|
|
|
UIMonsterItem item_new = tf.GetComponent<UIMonsterItem>();
|
|
|
|
|
|
MonstersConfig.MonsterConfig m = new MonstersConfig.MonsterConfig();
|
|
|
|
|
|
m.itemIdx = -1;
|
|
|
|
|
|
m.id = item_new.monster.id;
|
|
|
|
|
|
m.num = item_new.monster.num;
|
|
|
|
|
|
m.radius = item_new.monster.radius;
|
|
|
|
|
|
m.pos = item_new.monster.pos;
|
|
|
|
|
|
m.createMode = item_new.monster.createMode;
|
|
|
|
|
|
m.delayTime = item_new.monster.delayTime;
|
|
|
|
|
|
m.strTime = item_new.monster.strTime;
|
|
|
|
|
|
m.patrolMode = item_new.monster.patrolMode;
|
|
|
|
|
|
m.paths = item_new.monster.paths;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
OnAddGroup(m);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SaveMonsterConfig()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(_curMonsterItem != null)
|
|
|
|
|
|
OnClickItem(_curMonsterItem);
|
|
|
|
|
|
|
|
|
|
|
|
//ˢ<><CBA2>
|
|
|
|
|
|
int x, y;
|
|
|
|
|
|
MonstersConfig mc = new MonstersConfig();
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < itemParent.childCount; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
var tf = itemParent.GetChild(i);
|
|
|
|
|
|
for(int j=0; j<tf.childCount; j++)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIMonsterItem item = tf.GetChild(j).GetComponent<UIMonsterItem>();
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>item<65><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pos
|
|
|
|
|
|
if(item.groupId > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_dicGroupItem.ContainsKey(item.groupId))
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] tmp = _dicGroupItem[item.groupId].txtPos.text.Split(',');
|
|
|
|
|
|
if (tmp.Length != 2)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
x = Convert.ToInt32(tmp[0]);
|
|
|
|
|
|
y = Convert.ToInt32(tmp[1]);
|
|
|
|
|
|
|
|
|
|
|
|
item.monster.pos = new Vector2Int(x, y);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
mc.monsterConfigs.Add(item.monster);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-16 00:15:41 +08:00
|
|
|
|
int mapId = MapManager.Instance._curOpenMapId;
|
2025-06-14 13:46:24 +08:00
|
|
|
|
mc.SaveXML(mapId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void AddGroupMap(int groupId, UIMonsterItem item)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_dicGroupItem.ContainsKey(groupId))
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
_dicGroupItem.Add(groupId, item);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void RemoveAll()
|
|
|
|
|
|
{
|
|
|
|
|
|
int size = itemParent.childCount;
|
|
|
|
|
|
for (int i=0; i<size; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
DestroyImmediate(itemParent.GetChild(0).gameObject);
|
|
|
|
|
|
}
|
2025-06-17 00:23:38 +08:00
|
|
|
|
_dicGroupItem?.Clear();
|
2025-06-22 18:23:47 +08:00
|
|
|
|
_dicAllItem?.Clear();
|
2025-06-14 13:46:24 +08:00
|
|
|
|
itemIdx = 0;
|
|
|
|
|
|
}
|
2025-06-22 18:23:47 +08:00
|
|
|
|
public void SelectMonsterPos(int Idx)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_dicAllItem.TryGetValue(Idx, out var monsterItem))
|
|
|
|
|
|
{
|
|
|
|
|
|
monsterItem.btnClickSelf.Select();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void UpdateMonsterPos(int Idx, Vector2Int newPos)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_dicAllItem.TryGetValue(Idx, out var monsterItem))
|
|
|
|
|
|
{
|
|
|
|
|
|
monsterItem.RefreshPos(newPos);
|
|
|
|
|
|
monsterItem.btnClickSelf.Select();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|