怪物搞完

This commit is contained in:
2025-07-19 01:21:40 +08:00
parent 95aec74d37
commit a84a4e56b6
7 changed files with 100 additions and 452 deletions

View File

@@ -1,13 +1,10 @@
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;
/*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
@@ -41,21 +38,39 @@ public class UIMonsterPanel : MonoBehaviour
public ScrollRect svMonsters;
public Transform itemParent;
public int itemIdx;
public int itemIdx = 0;
private UIMonsterItem _curMonsterItem;
public MonstersConfig monstersConfig = new();
private void Awake()
{
itemIdx = 0;
btnClose.onClick.AddListener(OnClickClose);
btnAddGroup.onClick.AddListener(OnAddGroup);
txtMonsterID.onEndEdit.AddListener(OnEditorMonsterId);
txtName.onEndEdit.AddListener(OnEditorMonsterName);
txtRadius.onEndEdit.AddListener(OnEditorMonsterRadius);
txtCount.onEndEdit.AddListener(OnEditorMonsterCount);
}
txtRefreshTime.onEndEdit.AddListener(OnEditorRefTime);
dropRefreshType.onValueChanged.AddListener(OnEditorRefType);
}
private void OnEditorRefType(int arg0)
{
if (_curMonsterItem == null) return;
_curMonsterItem.monster.createMode = (CreateMonsterMode)arg0;
}
private void OnEditorRefTime(string arg0)
{
if (_curMonsterItem == null) return;
if (!int.TryParse(arg0, out var intValue))
{
UIWindow.Instance.ShowMessage("<22><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ");
return;
}
_curMonsterItem.monster.delayTime = intValue;
}
private void OnEditorMonsterCount(string arg0)
{
if (!int.TryParse(arg0, out var intValue))
@@ -63,12 +78,14 @@ public class UIMonsterPanel : MonoBehaviour
UIWindow.Instance.ShowMessage("<22><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ");
return;
}
_curMonsterItem.monster.id = intValue;
_curMonsterItem.monster.num = intValue;
_curMonsterItem.RefreshItem();
}
private void OnEditorMonsterRadius(string arg0)
{
if (_curMonsterItem == null || _curMonsterItem.monster.itemIdx == -1)
return;
if (!int.TryParse(arg0, out var intValue))
{
UIWindow.Instance.ShowMessage("<22><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ");
@@ -141,8 +158,11 @@ public class UIMonsterPanel : MonoBehaviour
MonstersConfig.MonsterConfig monster = new MonstersConfig.MonsterConfig();
monster.itemIdx = ++itemIdx;
monster.groupId = -1;
monster.radius = 10;
monster.pos = new Vector2Int(MapManager.Instance.map.selector.horizontalNumber / 2, MapManager.Instance.map.selector.verticalNumber / 2);
monstersConfig.monsterConfigs.Insert(0, monster);
AddItem(monster);
var createItem = AddItem(monster);
OnClickItem(createItem);
}
public void LoadMonsterConfig(int mapId)
@@ -200,6 +220,7 @@ public class UIMonsterPanel : MonoBehaviour
txtCount.text = monster.num.ToString();
txtRadius.text = monster.radius.ToString();
dropPatrol.value = (int)monster.patrolMode;
ScrollToTarget(item);
}
public void OnCopyItem(UIMonsterItem item)
{
@@ -219,9 +240,11 @@ public class UIMonsterPanel : MonoBehaviour
AddItem(newmonster);
}
else {
var grops = monstersConfig.monsterConfigs.FindAll((tt) => tt.groupId == item.monster.itemIdx);
int inserIndex = index + grops.Count + 1;
//<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);
monstersConfig.monsterConfigs.Insert(inserIndex, newmonster);
foreach (var prop in typeof(MonsterConfig).GetFields())
{
prop.SetValue(newmonster, prop.GetValue(item.monster));
@@ -229,16 +252,16 @@ public class UIMonsterPanel : MonoBehaviour
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);
monstersConfig.monsterConfigs.Insert(++inserIndex, config);
foreach (var prop in typeof(MonsterConfig).GetFields())
{
prop.SetValue(config, prop.GetValue(gropItem));
}
config.groupId = gropItem.itemIdx;
config.groupId = newmonster.itemIdx;
config.itemIdx = -1;
AddItem(config);
}
@@ -247,9 +270,8 @@ public class UIMonsterPanel : MonoBehaviour
public void SaveMonsterConfig()
{
MonstersConfig mc = new MonstersConfig();
int mapId = MapManager.Instance._curOpenMapId;
mc.SaveXML(mapId);
monstersConfig.SaveXML(mapId);
}
public void RemoveAllGrop(MonsterConfig config)
@@ -264,8 +286,35 @@ public class UIMonsterPanel : MonoBehaviour
item.DestoryGrop();
}
}
}
public void ScrollToTarget(UIMonsterItem target)
{
var index = monstersConfig.monsterConfigs.IndexOf(target.monster);
if (index != -1)
{
svMonsters.verticalNormalizedPosition = 1 - (float)index / (monstersConfig.monsterConfigs.Count - 1);
}
}
public void UpdateGroupInfo(UIMonsterItem target)
{
if (target.monster.itemIdx != -1)
{
var allitems = monstersConfig.monsterConfigs.FindAll((item) => item.groupId == target.monster.itemIdx);
foreach (var item in allitems)
{
item.pos = target.monster.pos;
item.radius = target.monster.radius;
}
foreach (Transform child in svMonsters.content)
{
UIMonsterItem item = child.GetComponentInChildren<UIMonsterItem>();
if (item != null && item.monster.groupId == target.monster.itemIdx)
{
item.RefreshItem();
}
}
}
}
public void RemoveAll()
{
int size = itemParent.childCount;
@@ -273,6 +322,5 @@ public class UIMonsterPanel : MonoBehaviour
{
DestroyImmediate(itemParent.GetChild(0).gameObject);
}
itemIdx = 0;
}
}