(client) feat:添加CharacterDef朝向结构读取方法

This commit is contained in:
m0_75251201
2025-07-14 08:55:06 +08:00
parent b7a12ce85b
commit ee1b5890d0

View File

@ -1,8 +1,23 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Xml.Linq; using System.Xml.Linq;
namespace Data namespace Data
{ {
public enum Orientation
{
Down,
Left,
Right,
Up
}
public enum DrawNodeType
{
Image,
Animation
}
public class CharacterDef : Define public class CharacterDef : Define
{ {
public DrawingOrderDef public DrawingOrderDef
@ -10,38 +25,76 @@ namespace Data
drawingOrder_up, drawingOrder_up,
drawingOrder_left, drawingOrder_left,
drawingOrder_right; 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 class DrawingOrderDef : Define
{ {
public List<DrawNodeDef> DrawNodes { get; set; } = new List<DrawNodeDef>(); public List<DrawNodeDef> drawNodes = new();
public override bool Init(XElement xmlDef) public override bool Init(XElement xmlDef)
{ {
base.Init(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); drawNode.Init(node);
DrawNodes.Add(drawNode); drawNodes.Add(drawNode);
} }
return true; return true;
} }
} }
public partial class DrawNodeDef : Define
public class DrawNodeDef : Define
{ {
public string NodeName { get; set; } public List<DrawNodeDef> children = new();
public List<DrawNodeDef> Children { get; set; } = new(); public DrawNodeType drawNodeType = DrawNodeType.Image;
public string nodeName;
public override bool Init(XElement xmlDef) public override bool Init(XElement xmlDef)
{ {
base.Init(xmlDef); base.Init(xmlDef);
NodeName = xmlDef.Attribute("name")?.Value; nodeName = xmlDef.Attribute("name")?.Value;
foreach (var childNode in xmlDef.Elements("DrawNode")) foreach (var childNode in xmlDef.Elements("DrawNodeDef"))
{ {
DrawNodeDef child = new DrawNodeDef(); var child = new DrawNodeDef();
child.Init(childNode); child.Init(childNode);
Children.Add(child); children.Add(child);
} }
return true; return true;
} }
} }