diff --git a/Client/Assets/Scripts/Data/Define.cs b/Client/Assets/Scripts/Data/Define.cs
index db15281..11940b5 100644
--- a/Client/Assets/Scripts/Data/Define.cs
+++ b/Client/Assets/Scripts/Data/Define.cs
@@ -8,13 +8,15 @@ using System.Xml.Linq;
namespace Data
{
- public abstract class Define
+ public class Define
{
public string defName;
public string description;
public string label;
public string packID;
+ public bool isReferene=false;
+
///
/// 初始化方法,根据传入的 XML 元素 () 进行处理。
///
@@ -112,18 +114,5 @@ namespace Data
return string.Join(Environment.NewLine, text.Split('\n').Select(line => prefix + line));
}
}
-
- public class DefineReference : Define
- {
- public Define def;
- public string className;
- public string fieldName;
-
- public DefineReference(string className, string defName, string fieldName)
- {
- this.defName = defName;
- this.className = className;
- this.fieldName = fieldName;
- }
- }
+
}
\ No newline at end of file
diff --git a/Client/Assets/Scripts/Data/DefinePack.cs b/Client/Assets/Scripts/Data/DefinePack.cs
index b729adf..0e8e11e 100644
--- a/Client/Assets/Scripts/Data/DefinePack.cs
+++ b/Client/Assets/Scripts/Data/DefinePack.cs
@@ -262,8 +262,12 @@ namespace Data
}
else
{
- value = new DefineReference(field.FieldType.Name, element.Value, field.Name);
-
+ var reference = (Define)Activator.CreateInstance(field.FieldType);
+ reference.isReferene = true;
+ reference.description=field.FieldType.Name;
+ reference.label = field.Name;
+ reference.defName = element.Value;
+ value = reference;
}
}
else
diff --git a/Client/Assets/Scripts/Data/MapDefine.cs b/Client/Assets/Scripts/Data/MapDefine.cs
index 2cedc51..b49f370 100644
--- a/Client/Assets/Scripts/Data/MapDefine.cs
+++ b/Client/Assets/Scripts/Data/MapDefine.cs
@@ -8,7 +8,7 @@ namespace Data
{
public class TileDef : Define
{
- public string texturePath = "";
+ public ImageDef texture;
public string name = "";
public override bool Init(XElement xmlDef)
@@ -45,6 +45,12 @@ namespace Data
return true;
}
}
-
+
+ public class ImageDef : Define
+ {
+ public string path;
+ public int wCount;
+ public int hCount;
+ }
}
\ No newline at end of file
diff --git a/Client/Assets/Scripts/Entity/Monster.cs b/Client/Assets/Scripts/Entity/Monster.cs
index 33af0b8..59be189 100644
--- a/Client/Assets/Scripts/Entity/Monster.cs
+++ b/Client/Assets/Scripts/Entity/Monster.cs
@@ -2,7 +2,11 @@ namespace Entity
{
public class Monster
{
-
+ public Protocol.MonsterPack ToPack()
+ {
+ var pack= new Protocol.MonsterPack();
+ return pack;
+ }
}
public class MonsterAttributes
diff --git a/Client/Assets/Scripts/Managers/DefineManager.cs b/Client/Assets/Scripts/Managers/DefineManager.cs
index 7af89ce..a9f3bce 100644
--- a/Client/Assets/Scripts/Managers/DefineManager.cs
+++ b/Client/Assets/Scripts/Managers/DefineManager.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
+using System.Reflection;
using Data;
using UnityEngine;
using Utils;
@@ -30,52 +32,53 @@ namespace Managers
var pack = new DefinePack();
if (pack.LoadPack(folder)) packs.Add(pack.packID, pack);
}
- List> defineRefs = new();
+
+ Dictionary fieldCache = new();
+ //不优化到循环里面是因为要先建立索引再链接
+ List> defineCache = new();
+
foreach (var pack in packs)
{
foreach (var define in pack.Value.defines)
{
- var typeName=define.Key;
- var defList=define.Value;
+ var typeName = define.Key;
+ var defList = define.Value;
+
if (!defines.ContainsKey(typeName))
defines[typeName] = new Dictionary();
+
foreach (var def in defList)
{
defines[typeName][def.defName] = def;
- if (def is DefineReference reference)
+
+ // 如果字段信息已经缓存,则直接使用缓存
+ if (!fieldCache.TryGetValue(def.GetType(), out var defineFields))
{
- defineRefs.Add(new(def,reference));
+ // 获取所有字段类型为 Define 或其派生类型的字段
+ defineFields = def.GetType()
+ .GetFields(BindingFlags.Public | BindingFlags.Instance)
+ .Where(field => typeof(Define).IsAssignableFrom(field.FieldType))
+ .ToArray();
+ // 缓存字段信息
+ fieldCache[def.GetType()] = defineFields;
+ }
+
+ foreach (var defineField in defineFields)
+ {
+ var defRef=(Define)defineField.GetValue(def);
+ if (defRef==null || !defRef.isReferene)
+ continue;
+ defineCache.Add(new(def, defineField, defRef));
}
}
}
}
- foreach (var defineRef in defineRefs)
+ foreach (var defRef in defineCache)
{
- var define = defineRef.Item1;
- var reference = defineRef.Item2;
- var referenceDef=FindDefine(reference.className,define.defName);
-
- var property = define.GetType().GetProperty(reference.fieldName);
- if (property != null && property.CanWrite)
- {
- property.SetValue(define, referenceDef);
- }
- else
- {
- // 如果是字段而不是属性
- var field = define.GetType().GetField(reference.fieldName);
- if (field != null)
- {
- field.SetValue(define, referenceDef);
- }
- else
- {
- // 处理找不到成员的情况
- Debug.LogError($"Could not find field or property '{reference.fieldName}' in type {define.GetType().Name}");
- }
- }
+ defRef.Item2.SetValue(defRef.Item1, FindDefine(defRef.Item3.description, defRef.Item3.defName));
}
+
}
///
/// 查找指定定义类型的定义名对应的 Define 对象。
diff --git a/Client/Assets/Scripts/Map/DoubleMap.cs b/Client/Assets/Scripts/Map/DoubleMap.cs
index 2d88a58..4816ef1 100644
--- a/Client/Assets/Scripts/Map/DoubleMap.cs
+++ b/Client/Assets/Scripts/Map/DoubleMap.cs
@@ -7,26 +7,29 @@ namespace Map
{
public class DoubleMap : MonoBehaviour
{
- public Tilemap dataLevel;
+ public List> mapData = new();
+ // public Tilemap dataLevel;
public Tilemap textureLevel;
public Dictionary tileDict = new();
void Start()
{
- tileDict = Configs.ConfigProcessor.LoadResources("TileMap");
- var tile= tileDict.Values;
- for (int i = 0; i < 100; i++)
- {
- for (int j = 0; j < 100; j++)
- {
- textureLevel.SetTile(new(i,j),tile.First());
- }
- }
+ TileManager.Instance.Init();
}
- }
- public class TileMappingTable:Utils.Singleton
- {
+ public void UpdateTexture()
+ {
+
+ }
}
+
+ public class TileManager:Utils.Singleton
+ {
+ Dictionary tileDict = new();
+ public void Init()
+ {
+
+ }
+ }
}
diff --git a/Client/Data/Core/Define/Map/Map.xml b/Client/Data/Core/Define/Map/Map.xml
index 2c9384d..b73c6fd 100644
--- a/Client/Data/Core/Define/Map/Map.xml
+++ b/Client/Data/Core/Define/Map/Map.xml
@@ -1,5 +1,18 @@
+
+ GrassDirtTexture
+ Map\GrassSoild.png
+ 4
+ 4
+
+
+
+ GrassDirtTiles
+ GrassDirtTexture
+ GrassDirt
+
+
GrassDirtTable
diff --git a/Client/Data/Core/Define/Player/CatGirl.xml b/Client/Data/Core/Define/Player/CatGirl.xml
index 5516c08..41b6a56 100644
--- a/Client/Data/Core/Define/Player/CatGirl.xml
+++ b/Client/Data/Core/Define/Player/CatGirl.xml
@@ -3,7 +3,7 @@
CatGirl
100
- 1.2
+ 2
diff --git a/Client/Data/Core/Resource/Character/CatGirl/body/east.png b/Client/Data/Core/Resources/Character/CatGirl/body/east.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/body/east.png
rename to Client/Data/Core/Resources/Character/CatGirl/body/east.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/body/north.png b/Client/Data/Core/Resources/Character/CatGirl/body/north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/body/north.png
rename to Client/Data/Core/Resources/Character/CatGirl/body/north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/body/south.png b/Client/Data/Core/Resources/Character/CatGirl/body/south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/body/south.png
rename to Client/Data/Core/Resources/Character/CatGirl/body/south.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/clothing/east.png b/Client/Data/Core/Resources/Character/CatGirl/clothing/east.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/clothing/east.png
rename to Client/Data/Core/Resources/Character/CatGirl/clothing/east.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/clothing/north.png b/Client/Data/Core/Resources/Character/CatGirl/clothing/north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/clothing/north.png
rename to Client/Data/Core/Resources/Character/CatGirl/clothing/north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/clothing/south.png b/Client/Data/Core/Resources/Character/CatGirl/clothing/south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/clothing/south.png
rename to Client/Data/Core/Resources/Character/CatGirl/clothing/south.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_east.png b/Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_east.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_east.png
rename to Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_east.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_north.png b/Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_north.png
rename to Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_south.png b/Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_south.png
rename to Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_south.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_east.png b/Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_east.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_east.png
rename to Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_east.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_north.png b/Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_north.png
rename to Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_south.png b/Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_south.png
rename to Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_south.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_north.png b/Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_north.png
rename to Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_south.png b/Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_south.png
rename to Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_south.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_west.png b/Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_west.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_west.png
rename to Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_west.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_north.png b/Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_north.png
rename to Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_south.png b/Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_south.png
rename to Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_south.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_west.png b/Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_west.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_west.png
rename to Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_west.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_east.png b/Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_east.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_east.png
rename to Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_east.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_north.png b/Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_north.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_north.png
rename to Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_north.png
diff --git a/Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_south.png b/Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_south.png
similarity index 100%
rename from Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_south.png
rename to Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_south.png
diff --git a/Client/Data/Core/Resources/Map/GrassDirtDirtWater.png b/Client/Data/Core/Resources/Map/GrassDirtDirtWater.png
new file mode 100644
index 0000000..8362102
Binary files /dev/null and b/Client/Data/Core/Resources/Map/GrassDirtDirtWater.png differ
diff --git a/Client/Data/Core/Resources/Map/GrassDirtWaterWater.png b/Client/Data/Core/Resources/Map/GrassDirtWaterWater.png
new file mode 100644
index 0000000..7dbbc5d
Binary files /dev/null and b/Client/Data/Core/Resources/Map/GrassDirtWaterWater.png differ
diff --git a/Client/Data/Core/Resources/Map/GrassGrassDirtWater.png b/Client/Data/Core/Resources/Map/GrassGrassDirtWater.png
new file mode 100644
index 0000000..b12f6be
Binary files /dev/null and b/Client/Data/Core/Resources/Map/GrassGrassDirtWater.png differ
diff --git a/Client/Data/Core/Resources/Map/GrassSoild.png b/Client/Data/Core/Resources/Map/GrassSoild.png
new file mode 100644
index 0000000..a821096
Binary files /dev/null and b/Client/Data/Core/Resources/Map/GrassSoild.png differ
diff --git a/Client/Data/Core/Resources/Map/GrassWater.png b/Client/Data/Core/Resources/Map/GrassWater.png
new file mode 100644
index 0000000..f5feaae
Binary files /dev/null and b/Client/Data/Core/Resources/Map/GrassWater.png differ
diff --git a/Client/Data/Core/Resources/Map/SoildWater.png b/Client/Data/Core/Resources/Map/SoildWater.png
new file mode 100644
index 0000000..aa721a9
Binary files /dev/null and b/Client/Data/Core/Resources/Map/SoildWater.png differ