彻底换一下

This commit is contained in:
tangbin
2025-07-18 22:28:40 +08:00
parent 66ed22e5e5
commit 95aec74d37
2275 changed files with 3034 additions and 140925 deletions

View File

@@ -6,7 +6,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIAudioTriggerItem : MonoBehaviour
public class UIAudioTriggerItem : UIBaseItem
{
public InputField txtPos; //<2F><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
public InputField txtRadius; //<2F>

View File

@@ -49,7 +49,7 @@ public class UIAudioTriggerPanel : MonoBehaviour
item.txtPos.text = $"{pos.x},{pos.y}";
item.txtRadius.text = radius.ToString();
item.txtName.text = name;
MapManager.Instance.CreateSpecialPoint(pos.x, pos.y, MapManager.EditCellType.AudioTrigger);
MapManager.Instance.CreateSpecialPoint(pos, item);
}
public void RemoveAll()

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static MapManager;
public class UIBaseItem : MonoBehaviour
{
public SceneArea sceneArea { get; set; }
public EditCellType editCellType { get; set; }
public virtual void SetItemPos(Vector2Int pos) {
}
internal virtual void SetSelectPosItem()
{
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ed1f933c66c6af746b6505845d26f827
guid: ae2e696246ef50f458dcc38070841e4d
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -7,7 +7,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIFuBenItem : MonoBehaviour
public class UIFuBenItem : UIBaseItem
{
public InputField txtOrder; //<2F><><EFBFBD><EFBFBD><EFB2A8>
public InputField txtID; //<2F><><EFBFBD><EFBFBD>ID

View File

@@ -58,7 +58,7 @@ public class UIFuBensPanel : MonoBehaviour
item.txtTime.text = monster.delayTime.ToString();
MapManager.Instance.SetCurFuBenCenterPoint(monster.order, monster.radius, monster.monsterId, monster.num);
MapManager.Instance.CreateSpecialPoint(monster.pos.x, monster.pos.y, MapManager.EditCellType.FuBenArea);
MapManager.Instance.CreateSpecialPoint(monster.pos, item);
}

View File

@@ -7,7 +7,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIJuBaoItem : MonoBehaviour
public class UIJuBaoItem : UIBaseItem
{
public InputField txtID; //<2F><><EFBFBD><EFBFBD>ID
public InputField txtKillCount; //<2F><>ɱ<EFBFBD><C9B1><EFBFBD><EFBFBD>

View File

@@ -59,7 +59,7 @@ public class UIJuBaoPanel : MonoBehaviour
MapManager.Instance.SetCurJuBaoCenterPoint(item.itemIdx, jubao.radius, jubao.id);
MapManager.Instance.CreateSpecialPoint(jubao.pos.x, jubao.pos.y, MapManager.EditCellType.JuBaoArea);
MapManager.Instance.CreateSpecialPoint(jubao.pos, item);
}

View File

@@ -2,13 +2,15 @@ using HxGame.Data;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using static HxGame.Data.MonstersConfig;
using static MapManager;
public class UIMonsterItem : MonoBehaviour
public class UIMonsterItem : UIBaseItem
{
public delegate void ClickItemEvent(UIMonsterItem item);
public ClickItemEvent OnClick;
@@ -57,31 +59,36 @@ public class UIMonsterItem : MonoBehaviour
return;
}
monster.pos = UtilityClass.GetVector2Pos(arg0);
MapManager.Instance.CreateSpecialPoint(monster.pos.x, monster.pos.y, MapManager.EditCellType.MonsterArea);
MapManager.Instance.CreateSpecialPoint(monster.pos, this);
}
//public void SetItem(int idx, MonstersConfig.MonsterConfig m)
public void SetItem(MonstersConfig.MonsterConfig m)
{
//itemIdx = idx;
txtID.text = m.itemIdx.ToString();
txtMonsterID.text = m.id.ToString();
txtName.text = m.id.ToString();
txtPos.text = m.pos.ToString();
paths = m.paths;
monster = m;
txtID.gameObject.SetActive(m.itemIdx != -1);
if (m.groupId > 0)
return;
MapManager.Instance.SetMonsterPoint(m.itemIdx, monster.radius, monster.id, monster.num);
MapManager.Instance.CreateSpecialPoint(monster.pos.x, monster.pos.y, MapManager.EditCellType.MonsterArea);
MapManager.Instance.SetCurMonsterPathIdx(pathIdx);
MapManager.Instance.CreateSpecialPoint(monster.pos, this);
}
public void RefreshPos(Vector2Int newPos)
internal override void SetSelectPosItem()
{
monster.pos = newPos;
txtPos.text = newPos.ToString() ;
base.SetSelectPosItem();
btnClickSelf.Select();
UIWindow.Instance.uiMonstersPanel.OnClickItem(this);
}
public override void SetItemPos(Vector2Int pos)
{
base.SetItemPos(pos);
monster.pos = pos;
txtPos.text = pos.ToString();
btnClickSelf.Select();
}
public void RefreshItem()
{
@@ -91,7 +98,7 @@ public class UIMonsterItem : MonoBehaviour
txtPos.text = monster.pos.ToString();
//ˢ<>³<EFBFBD><C2B3><EFBFBD><EFBFBD>еĶ<D0B5><C4B6><EFBFBD>
MapManager.Instance.SetMonsterPoint(monster.itemIdx, monster.radius, monster.id, monster.num);
MapManager.Instance.CreateSpecialPoint(monster.pos.x, monster.pos.y, EditCellType.MonsterArea);
MapManager.Instance.CreateSpecialPoint(monster.pos, this);
}
public void SetGroup(int group)
@@ -145,14 +152,28 @@ public class UIMonsterItem : MonoBehaviour
{
UIWindow.Instance.uiMonstersPanel.curActiveInput = data.selectedObject.GetComponent<InputField>();
UIWindow.Instance.uiMonstersPanel.curActiveList = paths;
MapManager.Instance.SetCurMonsterPathIdx(pathIdx);
MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterPath);
}
private void RemoveSelf()
{
DestroyImmediate(transform.parent.gameObject);
MapManager.Instance.RemoveMonsterPoint(monster.itemIdx);
UIWindow.Instance.uiMonstersPanel.monstersConfig.monsterConfigs.Remove(monster);
if (monster.itemIdx != -1)
{
UIWindow.Instance.uiMonstersPanel.RemoveAllGrop(monster);
}
}
public void DestoryGrop()
{
if (monster.itemIdx != -1) return;
UIWindow.Instance.uiMonstersPanel.monstersConfig.monsterConfigs.Remove(monster);
DestroyImmediate(transform.parent.gameObject);
}
private void OnDestroy()
{
if (sceneArea == null) return;
DestroyImmediate(sceneArea.gameObject);
}
public bool CheckValid()
@@ -242,8 +263,6 @@ public class UIMonsterItem : MonoBehaviour
{
if (OnCopyItem == null)
return;
//OnCopyItem(monster);
OnCopyItem(this);
}

View File

@@ -1,158 +0,0 @@
using HxGame.Data;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIMonsterItem_old : MonoBehaviour
{
public InputField txtID; //<2F><><EFBFBD><EFBFBD>ID
public Dropdown dropType; //ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public InputField txtPos; //<2F><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
public InputField txtRadius; //<2F>
public InputField txtNum; //ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public InputField txtTime; //ˢ<><CBA2>ʱ<EFBFBD><EFBFBD><E4A3A8><EFBFBD>
public Dropdown dropPatrol; //Ѳ<><D1B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public InputField txtPath; //NPC·<43><C2B7>
public Button btnDel; //ɾ<><C9BE>
public List<string> paths;
public int itemIdx;
public int pathIdx;
// Start is called before the first frame update
void Awake()
{
AddInputNameClickEvent(txtPos);
AddInputNameClickEvent(txtPath, true);
btnDel.onClick.AddListener(RemoveSelf);
itemIdx = 0;
paths = new List<string>();
}
private void AddInputNameClickEvent(InputField input, bool isPath = false) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Awake<6B>е<EFBFBD><D0B5><EFBFBD>
{
var eventTrigger = input.gameObject.AddComponent<EventTrigger>();
UnityAction<BaseEventData> selectEvent = null;
if (isPath)
selectEvent = OnPathInputFieldClicked;
else
selectEvent = OnInputFieldClicked;
EventTrigger.Entry onClick = new EventTrigger.Entry()
{
eventID = EventTriggerType.PointerClick
};
onClick.callback.AddListener(selectEvent);
eventTrigger.triggers.Add(onClick);
}
private void OnInputFieldClicked(BaseEventData data)
{
if (string.IsNullOrEmpty(txtID.text))
return;
if (string.IsNullOrEmpty(txtRadius.text))
return;
if (string.IsNullOrEmpty(txtNum.text))
return;
//UIWindow.Instance.uiMonstersPanel_old.curActiveInput = data.selectedObject.GetComponent<InputField>();
MapManager.Instance.SetMonsterPoint(itemIdx, Convert.ToInt32(txtRadius.text), Convert.ToInt32(txtID.text), Convert.ToInt32(txtNum.text));
MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterArea);
}
private void OnPathInputFieldClicked(BaseEventData data)
{
//UIWindow.Instance.uiMonstersPanel_old.curActiveInput = data.selectedObject.GetComponent<InputField>();
//UIWindow.Instance.uiMonstersPanel_old.curActiveList = paths;
MapManager.Instance.SetCurMonsterPathIdx(pathIdx);
MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterPath);
}
private void RemoveSelf()
{
DestroyImmediate(gameObject);
MapManager.Instance.RemoveMonsterPoint(itemIdx);
}
public bool CheckValid()
{
if (string.IsNullOrEmpty(txtID.text))
{
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ID");
return false;
}
if (string.IsNullOrEmpty(txtPos.text))
{
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD>дˢ<D0B4><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return false;
}
if (string.IsNullOrEmpty(txtRadius.text))
{
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD>дˢ<D0B4>ְ뾶");
return false;
}
if (string.IsNullOrEmpty(txtNum.text))
{
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD>дˢ<D0B4><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return false;
}
if (string.IsNullOrEmpty(txtTime.text))
{
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD>дˢ<D0B4><CBA2>ʱ<EFBFBD><CAB1>");
return false;
}
if (dropType.value == (int)CreateMonsterMode.Death)
{
if(!APIs.IsUInt(txtTime.text))
{
UIWindow.Instance.ShowMessage(<><CBA2>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return false;
}
}
else if(dropType.value == (int)CreateMonsterMode.FixedTime)
{
string[] tmp = txtTime.text.Split(',');
if (tmp.Length != 2)
{
UIWindow.Instance.ShowMessage(<><CBA2>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>");
return false;
}
if(!APIs.IsUInt(tmp[0]))
{
UIWindow.Instance.ShowMessage(<><CBA2>ʱ<EFBFBD><CAB1>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
return false;
}
string[] strTime = tmp[1].Split(':');
if (strTime.Length != 2)
{
UIWindow.Instance.ShowMessage(<><CBA2>ʱ<EFBFBD><CAB1><><CAB1><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>");
return false;
}
for (int i = 0; i < strTime.Length; i++)
{
if (!APIs.IsUInt(strTime[i]))
{
UIWindow.Instance.ShowMessage(<><CBA2>ʱ<EFBFBD><CAB1><><CAB1><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>");
return false;
}
}
}
return true;
}
}

View File

@@ -2,9 +2,11 @@ using HxGame.Data;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;
using static HxGame.Data.MonstersConfig;
using static System.Net.Mime.MediaTypeNames;
/*
@@ -40,18 +42,14 @@ public class UIMonsterPanel : MonoBehaviour
public ScrollRect svMonsters;
public Transform itemParent;
public int itemIdx;
private UIMonsterItem _curMonsterItem;
//private Dictionary<int, List<UIMonsterItem>> _dicGroupItem;
private Dictionary<int, UIMonsterItem> _dicGroupItem = new(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>item
private Dictionary<int, UIMonsterItem> _dicAllItem = new(); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>item
public MonstersConfig monstersConfig = new();
private void Awake()
{
itemIdx = 0;
btnClose.onClick.AddListener(OnClickClose);
btnAddGroup.onClick.AddListener(OnAddGroup);
btnDeleteGroup.onClick.AddListener(OnDeleteGroup);
txtMonsterID.onEndEdit.AddListener(OnEditorMonsterId);
txtName.onEndEdit.AddListener(OnEditorMonsterName);
txtRadius.onEndEdit.AddListener(OnEditorMonsterRadius);
@@ -124,190 +122,73 @@ public class UIMonsterPanel : MonoBehaviour
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)
var gropcfg = monstersConfig.monsterConfigs.Find((monster) => monster.itemIdx == _curMonsterItem.monster.itemIdx);
if (gropcfg == null) return;
int index = monstersConfig.monsterConfigs.IndexOf(gropcfg);
MonstersConfig.MonsterConfig newmonster = new MonstersConfig.MonsterConfig();
monstersConfig.monsterConfigs.Insert(index + 1, newmonster);
foreach (var prop in typeof(MonsterConfig).GetFields())
{
UIWindow.Instance.ShowMessage("monsterSubItem.prefabʧ<62><CAA7>");
return;
prop.SetValue(newmonster, prop.GetValue(gropcfg));
}
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);
newmonster.itemIdx = -1;
newmonster.groupId = gropcfg.itemIdx;
AddItem(newmonster);
}
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);
MapManager.Instance.RemoveMonsterPoint(_curMonsterItem.monster.itemIdx);
_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;
monster.radius = 1;
monster.id = 0;
monster.num = 0;
monster.pos = MapManager.Instance.map.selector.getMapGrid(Camera.main.transform.position);
item.SetItem(monster);
item.OnClick = OnClickItem;
item.OnCopyItem = OnCopyItem;
_curMonsterItem = item;
item.btnClickSelf.Select();
_dicAllItem.Add(monster.itemIdx, item);
monster.groupId = -1;
monstersConfig.monsterConfigs.Insert(0, monster);
AddItem(monster);
}
public void LoadMonsterConfig(int mapId)
{
MonstersConfig mc = new MonstersConfig();
if (!mc.LoadXML(mapId))
monstersConfig.ClearAll();
if (!monstersConfig.LoadXML(mapId))
return;
//<2F><><EFBFBD><EFBFBD>
for (int i = 0; i < mc.monsterConfigs.Count; i++)
for (int i = 0; i < monstersConfig.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);
MonstersConfig.MonsterConfig monster = monstersConfig.monsterConfigs[i];
if (monster.itemIdx == -1) continue;
var itemMonster = AddItem(monster);
if (itemMonster == null) continue;
var groupList = monstersConfig.monsterConfigs.Where(item => item.groupId == monster.itemIdx).ToList();
foreach (var item in groupList)
{
AddItem(item);
}
}
}
public void AddItem(MonstersConfig.MonsterConfig monster)
public UIMonsterItem AddItem(MonstersConfig.MonsterConfig monster)
{
UnityEngine.Object obj = Resources.Load("Prefabs/monsterItem");
if (obj == null)
{
UIWindow.Instance.ShowMessage("monsterItem.prefabʧ<62><CAA7>");
return;
return null;
}
if (monster.itemIdx < 0)
monster.itemIdx = itemIdx++;
else
itemIdx = monster.itemIdx;
var cfgindex = monstersConfig.monsterConfigs.IndexOf(monster);
itemIdx = Math.Max(monster.itemIdx, itemIdx);
GameObject go = Instantiate(obj) as GameObject; ;
go.transform.SetParent(itemParent, false);
go.transform.SetSiblingIndex(cfgindex);
UIMonsterItem item = go.transform.Find("monsterSubItem").GetComponent<UIMonsterItem>();
//item.SetItem(itemIdx++, monster);
item.editCellType = MapManager.EditCellType.MonsterArea;
item.SetItem(monster);
item.OnClick = OnClickItem;
item.OnCopyItem = OnCopyItem;
_curMonsterItem = item;
_dicAllItem.Add(monster.itemIdx, item);
return item;
}
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();
@@ -319,117 +200,70 @@ public class UIMonsterPanel : MonoBehaviour
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 gropcfg = monstersConfig.monsterConfigs.Find((monster) => monster.itemIdx == item.monster.itemIdx);
if (gropcfg == null) return;
int index = monstersConfig.monsterConfigs.IndexOf(gropcfg);
if (item.monster.itemIdx == -1)
{
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);
MonstersConfig.MonsterConfig newmonster = new MonstersConfig.MonsterConfig();
monstersConfig.monsterConfigs.Insert(index + 1, newmonster);
foreach (var prop in typeof(MonsterConfig).GetFields())
{
prop.SetValue(newmonster, prop.GetValue(gropcfg));
}
newmonster.itemIdx = -1;
newmonster.groupId = gropcfg.itemIdx;
AddItem(newmonster);
}
else {
//<2F>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MonstersConfig.MonsterConfig newmonster = new MonstersConfig.MonsterConfig();
monstersConfig.monsterConfigs.Insert(index,newmonster);
foreach (var prop in typeof(MonsterConfig).GetFields())
{
prop.SetValue(newmonster, prop.GetValue(item.monster));
}
newmonster.itemIdx = ++itemIdx;
newmonster.groupId = -1;
AddItem(newmonster);
var grops = monstersConfig.monsterConfigs.FindAll((tt) => tt.groupId == item.monster.itemIdx);
foreach (var gropItem in grops)
{
MonsterConfig config = new MonsterConfig();
monstersConfig.monsterConfigs.Insert(++index, config);
foreach (var prop in typeof(MonsterConfig).GetFields())
{
prop.SetValue(config, prop.GetValue(gropItem));
}
config.groupId = gropItem.itemIdx;
config.itemIdx = -1;
AddItem(config);
}
}
}
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);
}
}
int mapId = MapManager.Instance._curOpenMapId;
mc.SaveXML(mapId);
}
private void AddGroupMap(int groupId, UIMonsterItem item)
public void RemoveAllGrop(MonsterConfig config)
{
if (_dicGroupItem.ContainsKey(groupId))
if (config.itemIdx == -1)
return;
_dicGroupItem.Add(groupId, item);
foreach (Transform child in svMonsters.content)
{
UIMonsterItem item = child.GetComponentInChildren<UIMonsterItem>();
if (item != null && item.monster.groupId == config.itemIdx)
{
item.DestoryGrop();
}
}
}
public void RemoveAll()
@@ -439,24 +273,6 @@ public class UIMonsterPanel : MonoBehaviour
{
DestroyImmediate(itemParent.GetChild(0).gameObject);
}
_dicGroupItem?.Clear();
_dicAllItem?.Clear();
itemIdx = 0;
}
public void SelectMonsterPos(int Idx)
{
if (_dicAllItem.TryGetValue(Idx, out var monsterItem))
{
monsterItem.btnClickSelf.Select();
OnClickItem(monsterItem);
}
}
public void UpdateMonsterPos(int Idx, Vector2Int newPos)
{
if (_dicAllItem.TryGetValue(Idx, out var monsterItem))
{
monsterItem.RefreshPos(newPos);
monsterItem.btnClickSelf.Select();
}
}
}

View File

@@ -6,7 +6,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UINpcItem : MonoBehaviour
public class UINpcItem : UIBaseItem
{
public InputField txtPos; //NPC<50><43><EFBFBD><EFBFBD>
public InputField txtID; //NPCID
@@ -58,15 +58,17 @@ public class UINpcItem : MonoBehaviour
{
UIWindow.Instance.uiNpcsPanel.curActiveInput = data.selectedObject.GetComponent<InputField>();
UIWindow.Instance.uiNpcsPanel.curActiveList = paths;
MapManager.Instance.SetCurNpcPathIdx(pathIdx);
MapManager.Instance.SetEditCellType(MapManager.EditCellType.NpcPath);
}
public override void SetItemPos(Vector2Int pos)
{
base.SetItemPos(pos);
txtPos.text = pos.ToString();
}
private void RemoveSelf()
{
DestroyImmediate(gameObject);
MapManager.Instance.RemoveNpcPointSize(itemIdx);
}
public bool CheckValid()

View File

@@ -58,19 +58,9 @@ public class UINpcsPanel : MonoBehaviour
item.txtPos.text = $"{nc.pos.x},{nc.pos.y}";
item.dropDir.value = (int)nc.dir - 1;
item.paths = nc.paths;
MapManager.Instance.CreateSpecialPoint(nc.pos.x, nc.pos.y, MapManager.EditCellType.NpcCell);
MapManager.Instance.SetCurNpcPathIdx(item.pathIdx);
for (int i=0; i<item.paths.Count; i++)
{
string[] pos = item.paths[i].Split('_');
int x = Convert.ToInt32(pos[0]);
int y = Convert.ToInt32(pos[1]);
item.txtPath.text += $"[{item.paths[i].Replace('_', ',')}]";
MapManager.Instance.AddNpcPathSize();
MapManager.Instance.CreateSpecialPoint(x, y, MapManager.EditCellType.NpcPath);
}
item.editCellType = MapManager.EditCellType.NpcCell;
MapManager.Instance.SetNpcPoint(item.itemIdx,nc.id,(int)nc.dir);
MapManager.Instance.CreateSpecialPoint(nc.pos, item);
}

View File

@@ -6,7 +6,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UIReliveItem : MonoBehaviour
public class UIReliveItem : UIBaseItem
{
public Dropdown dropType;
public InputField txtMapId; //<2F><>ͼID

View File

@@ -54,7 +54,7 @@ public class UIRelivesPanel : MonoBehaviour
return;
MapManager.Instance.SetReliveCenterPoint(item.reliveIdx, radius);
MapManager.Instance.CreateSpecialPoint(pos.x, pos.y, MapManager.EditCellType.ReliveCell);
MapManager.Instance.CreateSpecialPoint(pos, item);
}
public void RemoveAll()

View File

@@ -6,7 +6,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UISellAreaItem : MonoBehaviour
public class UISellAreaItem : UIBaseItem
{
public InputField txtPos; //<2F><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
public InputField txtRadius; //<2F>

View File

@@ -48,7 +48,7 @@ public class UISellAreasPanel : MonoBehaviour
MapManager.Instance.SetCurSellCenterPoint(item.itemIdx, radius);
item.txtPos.text = $"{pos.x},{pos.y}";
item.txtRadius.text = radius.ToString();
MapManager.Instance.CreateSpecialPoint(pos.x, pos.y, MapManager.EditCellType.SellArea);
MapManager.Instance.CreateSpecialPoint(pos, item);
}
public void RemoveAll()

View File

@@ -5,7 +5,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UITeleportItem : MonoBehaviour
public class UITeleportItem : UIBaseItem
{
public InputField txtPos; //<2F><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
public InputField txtNextMapID; //<2F>¼<EFBFBD><C2BC><EFBFBD>ͼID

View File

@@ -1,8 +1,5 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using static UnityEditor.PlayerSettings;
public class UITeleportPanel : MonoBehaviour
{
@@ -34,7 +31,7 @@ public class UITeleportPanel : MonoBehaviour
UITeleportItem item = go.GetComponent<UITeleportItem>();
item.itemIdx = size;
var gridPos = MapManager.Instance.map.selector.getMapGrid(Camera.main.transform.position);
MapManager.Instance.CreateSpecialPoint(gridPos.x, gridPos.y, MapManager.EditCellType.TeleportCell);
MapManager.Instance.CreateSpecialPoint(gridPos, item);
}
public void AddItem(Vector2Int pos, int nextMapId, Vector2Int newMapPos)
@@ -55,7 +52,7 @@ public class UITeleportPanel : MonoBehaviour
item.txtPos.text = $"{pos.x},{pos.y}";
item.txtNextMapID.text = nextMapId.ToString();
item.txtNextMapPos.text = $"{newMapPos.x},{newMapPos.y}";
MapManager.Instance.CreateSpecialPoint(pos.x, pos.y, MapManager.EditCellType.TeleportCell);
MapManager.Instance.CreateSpecialPoint(pos, item);
}
public void RemoveAll()

View File

@@ -7,7 +7,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UITriggerItem : MonoBehaviour
public class UITriggerItem : UIBaseItem
{
public InputField txtPos; //<2F><><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
public InputField txtRadius; //<2F>

View File

@@ -53,7 +53,7 @@ public class UITriggerPanel : MonoBehaviour
item.txtRadius.text = t.radius.ToString();
item.txtEvent.text = t.eventId.ToString();
item.dropMode.value = (int)t.mode;
MapManager.Instance.CreateSpecialPoint(t.pos.x, t.pos.y, MapManager.EditCellType.TriggerCell);
MapManager.Instance.CreateSpecialPoint(t.pos, item);
}
public void SaveTriggersConfig()