怪物搞完
This commit is contained in:
@@ -45,4 +45,12 @@ public partial class MapManager : MonoBehaviour
|
||||
mapRealWidth = x;
|
||||
mapRealHeight = y;
|
||||
}
|
||||
|
||||
public void MoveToCamera(float x, float y)
|
||||
{
|
||||
Vector3 newPosition;
|
||||
newPosition.x = Mathf.Clamp(x, 0, mapRealWidth);
|
||||
newPosition.y = Mathf.Clamp(y, 0, mapRealHeight);
|
||||
Camera.main.transform.position = new Vector3(x, y, -10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ public class SceneArea : MonoBehaviour
|
||||
case EditCellType.MonsterArea:
|
||||
if (baseItem is UIMonsterItem monsterItem)
|
||||
{
|
||||
transform.Find("Name").GetComponent<TextMeshPro>().text = $"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{monsterItem.monster.id}";
|
||||
transform.Find("Name").GetComponent<TextMeshPro>().text = $"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{monsterItem.monster.itemIdx}";
|
||||
transform.Find("ID").GetComponent<TextMeshPro>().text = "ID:" + monsterItem.monster.id;
|
||||
transform.Find("Num").GetComponent<TextMeshPro>().text = "Num:" + monsterItem.monster.num;
|
||||
SetAreaSize(monsterItem.monster.radius);
|
||||
|
||||
@@ -16,4 +16,10 @@ public class UIBaseItem : MonoBehaviour
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public virtual void OnClickItemSelf()
|
||||
{
|
||||
if (sceneArea == null) return;
|
||||
MapManager.Instance.MoveToCamera(sceneArea.transform.position.x,sceneArea.transform.position.y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,10 +39,7 @@ public class UIMonsterItem : UIBaseItem
|
||||
void Awake()
|
||||
{
|
||||
groupId = -1;
|
||||
AddInputNameClickEvent(txtPos);
|
||||
//AddInputNameClickEvent(txtPath, true);
|
||||
btnDel.onClick.AddListener(RemoveSelf);
|
||||
//itemIdx = 0;
|
||||
paths = new List<string>();
|
||||
btnClickSelf.onClick.AddListener(OnClickSelf);
|
||||
btnCopy.onClick.AddListener(OnCopySelf);
|
||||
@@ -59,7 +56,8 @@ public class UIMonsterItem : UIBaseItem
|
||||
return;
|
||||
}
|
||||
monster.pos = UtilityClass.GetVector2Pos(arg0);
|
||||
MapManager.Instance.CreateSpecialPoint(monster.pos, this);
|
||||
sceneArea?.SetAreaPos(monster.pos);
|
||||
UIWindow.Instance.uiMonstersPanel.UpdateGroupInfo(this);
|
||||
}
|
||||
|
||||
//public void SetItem(int idx, MonstersConfig.MonsterConfig m)
|
||||
@@ -71,6 +69,7 @@ public class UIMonsterItem : UIBaseItem
|
||||
txtPos.text = m.pos.ToString();
|
||||
paths = m.paths;
|
||||
monster = m;
|
||||
txtPos.enabled = m.itemIdx != -1;
|
||||
txtID.gameObject.SetActive(m.itemIdx != -1);
|
||||
if (m.groupId > 0)
|
||||
return;
|
||||
@@ -82,6 +81,7 @@ public class UIMonsterItem : UIBaseItem
|
||||
base.SetSelectPosItem();
|
||||
btnClickSelf.Select();
|
||||
UIWindow.Instance.uiMonstersPanel.OnClickItem(this);
|
||||
|
||||
}
|
||||
public override void SetItemPos(Vector2Int pos)
|
||||
{
|
||||
@@ -89,6 +89,7 @@ public class UIMonsterItem : UIBaseItem
|
||||
monster.pos = pos;
|
||||
txtPos.text = pos.ToString();
|
||||
btnClickSelf.Select();
|
||||
UIWindow.Instance.uiMonstersPanel.UpdateGroupInfo(this);
|
||||
}
|
||||
public void RefreshItem()
|
||||
{
|
||||
@@ -97,8 +98,7 @@ public class UIMonsterItem : UIBaseItem
|
||||
paths = monster.paths;
|
||||
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, this);
|
||||
sceneArea?.RefSAreaInfo();
|
||||
}
|
||||
|
||||
public void SetGroup(int group)
|
||||
@@ -112,49 +112,6 @@ public class UIMonsterItem : UIBaseItem
|
||||
btnHide.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
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(txtMonsterID.text))
|
||||
return;
|
||||
|
||||
if (OnClick == null)
|
||||
return;
|
||||
|
||||
OnClick(this);
|
||||
|
||||
UIWindow.Instance.uiMonstersPanel.curActiveInput = data.selectedObject.GetComponent<InputField>();
|
||||
int radius = Convert.ToInt32(UIWindow.Instance.uiMonstersPanel.txtRadius.text);
|
||||
int count = Convert.ToInt32(UIWindow.Instance.uiMonstersPanel.txtCount.text);
|
||||
MapManager.Instance.SetMonsterPoint(monster.itemIdx, radius, Convert.ToInt32(txtMonsterID.text), count);
|
||||
MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterArea);
|
||||
}
|
||||
|
||||
|
||||
private void OnPathInputFieldClicked(BaseEventData data)
|
||||
{
|
||||
UIWindow.Instance.uiMonstersPanel.curActiveInput = data.selectedObject.GetComponent<InputField>();
|
||||
UIWindow.Instance.uiMonstersPanel.curActiveList = paths;
|
||||
MapManager.Instance.SetEditCellType(MapManager.EditCellType.MonsterPath);
|
||||
}
|
||||
|
||||
private void RemoveSelf()
|
||||
{
|
||||
DestroyImmediate(transform.parent.gameObject);
|
||||
@@ -188,66 +145,6 @@ public class UIMonsterItem : UIBaseItem
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -255,8 +152,8 @@ public class UIMonsterItem : UIBaseItem
|
||||
{
|
||||
if (OnClick == null)
|
||||
return;
|
||||
|
||||
OnClick(this);
|
||||
OnClickItemSelf();
|
||||
}
|
||||
|
||||
private void OnCopySelf()
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user