diff --git a/Client/Assets/Scripts/Data/CharacterDefine.cs b/Client/Assets/Scripts/Data/CharacterDefine.cs index c80679d..8a60037 100644 --- a/Client/Assets/Scripts/Data/CharacterDefine.cs +++ b/Client/Assets/Scripts/Data/CharacterDefine.cs @@ -1,8 +1,23 @@ +using System; using System.Collections.Generic; using System.Xml.Linq; namespace Data { + public enum Orientation + { + Down, + Left, + Right, + Up + } + + public enum DrawNodeType + { + Image, + Animation + } + public class CharacterDef : Define { public DrawingOrderDef @@ -10,38 +25,76 @@ namespace Data drawingOrder_up, drawingOrder_left, drawingOrder_right; + + public DrawingOrderDef GetDrawingOrder(Orientation orientation) + { + // 定义一个临时变量用于存储结果 + DrawingOrderDef result = null; + + // 根据传入的 Orientation 获取对应的 DrawingOrderDef + switch (orientation) + { + case Orientation.Down: + result = drawingOrder_down; + break; + case Orientation.Up: + result = drawingOrder_up; + break; + case Orientation.Left: + result = drawingOrder_left; + break; + case Orientation.Right: + result = drawingOrder_right; + break; + default: + throw new ArgumentException("Invalid orientation value."); + } + + // 如果当前方向的结果为空,则尝试用 drawingOrder_down 填充 + if (result == null) result = drawingOrder_down; + + // 如果 drawingOrder_down 仍然为空,则尝试用其他非空方向填充 + if (result == null) result = drawingOrder_up ?? drawingOrder_left ?? drawingOrder_right; + + return result; + } } public class DrawingOrderDef : Define { - public List DrawNodes { get; set; } = new List(); + public List drawNodes = new(); public override bool Init(XElement xmlDef) { base.Init(xmlDef); - foreach (var node in xmlDef.Elements("DrawNodes")) + foreach (var node in xmlDef.Elements("DrawNodeDef")) { - DrawNodeDef drawNode = new DrawNodeDef(); + var drawNode = new DrawNodeDef(); drawNode.Init(node); - DrawNodes.Add(drawNode); + drawNodes.Add(drawNode); } + return true; } } - public partial class DrawNodeDef : Define + + public class DrawNodeDef : Define { - public string NodeName { get; set; } - public List Children { get; set; } = new(); + public List children = new(); + public DrawNodeType drawNodeType = DrawNodeType.Image; + public string nodeName; + public override bool Init(XElement xmlDef) { base.Init(xmlDef); - NodeName = xmlDef.Attribute("name")?.Value; - foreach (var childNode in xmlDef.Elements("DrawNode")) + nodeName = xmlDef.Attribute("name")?.Value; + foreach (var childNode in xmlDef.Elements("DrawNodeDef")) { - DrawNodeDef child = new DrawNodeDef(); + var child = new DrawNodeDef(); child.Init(childNode); - Children.Add(child); + children.Add(child); } + return true; } }