架构重新设计

基本重做了所有物体和次级模块代码
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

@@ -1,6 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Ichni.RhythmGame.Beatmap;
using Unity.Mathematics;
using UnityEngine;
@@ -11,14 +12,14 @@ namespace Ichni.RhythmGame
public bool isOverridingDuration; //是否手动设置了时间区间,开启时,子物体的时间区间将被忽略
public float startTime, endTime; //起止时间
public TimeDurationSubmodule(BaseElement attachedElement) : base(attachedElement)
public TimeDurationSubmodule(GameElement attachedGameElement) : base(attachedGameElement)
{
isOverridingDuration = false;
startTime = -999;//TODO: 换为-delay
endTime = 999;//TODO: 换为songLength
startTime = -32767;//TODO: 换为-delay
endTime = 32767;//TODO: 换为songLength
}
public TimeDurationSubmodule(BaseElement attachedElement, bool isOverridingDuration, float startTime, float endTime) : base(attachedElement)
public TimeDurationSubmodule(GameElement attachedGameElement, bool isOverridingDuration, float startTime, float endTime) : base(attachedGameElement)
{
this.isOverridingDuration = isOverridingDuration;
this.startTime = startTime;
@@ -34,6 +35,7 @@ namespace Ichni.RhythmGame
{
this.startTime = startTime;
this.endTime = endTime;
this.isOverridingDuration = true;
}
public void SetDuration(params FlexibleFloat[] flexibleFloats)
@@ -76,10 +78,15 @@ namespace Ichni.RhythmGame
public override void SaveBM()
{
matchedBM = new Beatmap.TimeDurationSubmodule_BM(attachedElement, this);
matchedBM = new TimeDurationSubmodule_BM(attachedGameElement);
}
}
public interface IHaveTimeDurationSubmodule
{
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
}
namespace Beatmap
{
public class TimeDurationSubmodule_BM : Submodule_BM
@@ -92,8 +99,9 @@ namespace Ichni.RhythmGame
}
public TimeDurationSubmodule_BM(BaseElement attachedElement, TimeDurationSubmodule timeDurationSubmodule) : base(attachedElement)
public TimeDurationSubmodule_BM(GameElement attachedElement) : base(attachedElement)
{
TimeDurationSubmodule timeDurationSubmodule = (attachedElement as IHaveTimeDurationSubmodule).timeDurationSubmodule;
isOverridingDuration = timeDurationSubmodule.isOverridingDuration;
startTime = timeDurationSubmodule.startTime;
endTime = timeDurationSubmodule.endTime;
@@ -101,13 +109,15 @@ namespace Ichni.RhythmGame
public override void ExecuteBM()
{
attachedElement = GetElement(attachedElementGuid);
attachedElement.timeDurationSubmodule = new TimeDurationSubmodule(attachedElement, isOverridingDuration, startTime, endTime);
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as IHaveTimeDurationSubmodule).timeDurationSubmodule =
new TimeDurationSubmodule(attachedElement, isOverridingDuration, startTime, endTime);
}
public override void DuplicateBM(BaseElement attached)
public override void DuplicateBM(GameElement attached)
{
attached.timeDurationSubmodule = new TimeDurationSubmodule(attached, isOverridingDuration, startTime, endTime);
(attachedElement as IHaveTimeDurationSubmodule).timeDurationSubmodule =
new TimeDurationSubmodule(attached, isOverridingDuration, startTime, endTime);
}
}
}