初次提交
This commit is contained in:
73
Script/Generate/PlayerGenerate.cs
Normal file
73
Script/Generate/PlayerGenerate.cs
Normal file
@ -0,0 +1,73 @@
|
||||
using Cosmobox.Def;
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Linq;
|
||||
namespace Cosmobox
|
||||
{
|
||||
public partial class PlayerGenerate : Node2D
|
||||
{
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
InitResource.instance.defines.TryGetValue("DrawingOrder", out var defines);
|
||||
if (defines != null)
|
||||
{
|
||||
GenerateNode(defines.First().Value as DrawingOrder,this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public bool GenerateNode(DrawingOrder drawingOrder, Node parentNode)
|
||||
{
|
||||
if (drawingOrder == null)
|
||||
{
|
||||
GD.PrintErr("DrawingOrder is null");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (parentNode == null)
|
||||
{
|
||||
GD.PrintErr("Parent node is null");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 遍历 DrawingOrder 的 DrawNodes 列表
|
||||
foreach (var drawNode in drawingOrder.DrawNodes)
|
||||
{
|
||||
if (!CreateNode(drawNode, parentNode))
|
||||
{
|
||||
GD.PrintErr($"Failed to create node: {drawNode.NodeName}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
private bool CreateNode(DrawNode drawNode, Node parentNode)
|
||||
{
|
||||
if (string.IsNullOrEmpty(drawNode.NodeName))
|
||||
{
|
||||
GD.PrintErr("NodeName is null or empty");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 创建新节点并添加到父节点
|
||||
var newNode = new ColorRect();
|
||||
newNode.Name = drawNode.NodeName;
|
||||
parentNode.AddChild(newNode);
|
||||
|
||||
// 如果存在子节点,递归创建
|
||||
foreach (var child in drawNode.Children)
|
||||
{
|
||||
if (!CreateNode(child, newNode))
|
||||
{
|
||||
GD.PrintErr($"Failed to create child node: {child.NodeName}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user