架构重新设计

基本重做了所有物体和次级模块代码
This commit is contained in:
SoulliesOfficial
2025-02-08 02:31:39 -05:00
parent 752c9b73e3
commit 7ab738cb68
44 changed files with 1320 additions and 847 deletions

View File

@@ -6,24 +6,66 @@ using UnityEngine;
namespace Ichni.RhythmGame
{
public abstract class SubstantialObject : BaseElement
public abstract class SubstantialObject : GameElement, IHaveTransformSubmodule, IHaveTimeDurationSubmodule, IHaveColorSubmodule
{
public string themeBundleName, objectName;
public TransformSubmodule transformSubmodule { get; set; }
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
public ColorSubmodule colorSubmodule { get; set; }
public static SubstantialObject GenerateElement(string elementName, Guid id, List<string> tags,
string themeBundleName, string objectName, Vector3 position, Vector3 eulerAngles, Vector3 scale,
BaseElement parent, bool isFirstGenerated = true)
public static SubstantialObject GenerateElement(string elementName, Guid id, List<string> tags, bool isFirstGenerated,
string themeBundleName, string objectName, GameElement parent)
{
GameObject themeBundleObject = ThemeBundleManager.instance.GetObject<GameObject>(themeBundleName, objectName);
SubstantialObject substantialObject = Instantiate(themeBundleObject, parent.transform).GetComponent<SubstantialObject>();
substantialObject.Initialize(elementName, id, tags);
substantialObject.transformSubmodule = new TransformSubmodule(substantialObject, position, eulerAngles, scale);
substantialObject.timeDurationSubmodule = new TimeDurationSubmodule(substantialObject);
substantialObject.colorSubmodule = new ColorSubmodule(substantialObject);
substantialObject.Initialize(elementName, id, tags, isFirstGenerated);
substantialObject.SetParent(parent);
return substantialObject;
}
protected override void SetDefaultSubmodules()
{
transformSubmodule = new TransformSubmodule(this);
timeDurationSubmodule = new TimeDurationSubmodule(this);
colorSubmodule = new ColorSubmodule(this);
submoduleList.Add(transformSubmodule);
submoduleList.Add(timeDurationSubmodule);
submoduleList.Add(colorSubmodule);
}
}
namespace Beatmap
{
public class SubstantialObject_BM : GameElement_BM
{
public string themeBundleName;
public string objectName;
public SubstantialObject_BM()
{
}
public SubstantialObject_BM(string elementName, Guid elementGuid, List<string> tags, GameElement_BM attachedElement,
string themeBundleName, string objectName)
: base(elementName, elementGuid, tags, attachedElement)
{
this.themeBundleName = themeBundleName;
this.objectName = objectName;
}
public override void ExecuteBM()
{
throw new NotImplementedException();
}
public override GameElement DuplicateBM(GameElement attached)
{
throw new NotImplementedException();
}
}
}
}