架构重新设计

基本重做了所有物体和次级模块代码
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,25 +1,65 @@
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
namespace Ichni.RhythmGame
{
public class EffectSubmodule : SubmoduleBase
public partial class EffectSubmodule : SubmoduleBase
{
public List<EffectBase> effectList;
public Dictionary<string, List<EffectBase>> effectCollection;
public EffectSubmodule(BaseElement attachedElement) : base(attachedElement)
public EffectSubmodule(GameElement attachedGameElement, EffectSubmodulePreset preset = EffectSubmodulePreset.Default)
: base(attachedGameElement)
{
effectList = new List<EffectBase>();
effectCollection = new Dictionary<string, List<EffectBase>>();
if (preset == EffectSubmodulePreset.Default)
{
effectCollection.Add("Default", new List<EffectBase>());
}
else if (preset == EffectSubmodulePreset.Note)
{
effectCollection.Add("Generate", new List<EffectBase>());
effectCollection.Add("GeneralJudge", new List<EffectBase>());
effectCollection.Add("Perfect", new List<EffectBase>());
effectCollection.Add("Good", new List<EffectBase>());
effectCollection.Add("Bad", new List<EffectBase>());
effectCollection.Add("Miss", new List<EffectBase>());
}
}
public EffectSubmodule(GameElement attachedGameElement, Dictionary<string, List<EffectBase_BM>> effectList_BM) : base(attachedGameElement)
{
effectCollection = new Dictionary<string, List<EffectBase>>();
foreach (var effect in effectList_BM)
{
List<EffectBase> effectList = new List<EffectBase>();
foreach (var effectBM in effect.Value)
{
effectList.Add(effectBM.ConvertToGameType());
}
effectCollection.Add(effect.Key, effectList);
}
}
public override void SaveBM()
{
matchedBM = new Beatmap.EffectSubmodule_BM(attachedElement);
matchedBM = new EffectSubmodule_BM(attachedGameElement);
}
}
public partial class EffectSubmodule
{
public enum EffectSubmodulePreset
{
Default,
Note,
}
}
public interface IHaveEffect
public interface IHaveEffectSubmodule
{
public EffectSubmodule effectSubmodule { get; set; }
}
@@ -28,27 +68,38 @@ namespace Ichni.RhythmGame
{
public class EffectSubmodule_BM : Submodule_BM
{
public List<EffectBase> effectList;
public Dictionary<string, List<EffectBase_BM>> effectCollection;
public EffectSubmodule_BM()
{
}
public EffectSubmodule_BM(BaseElement attachedElement) : base(attachedElement)
public EffectSubmodule_BM(GameElement attachedElement) : base(attachedElement)
{
effectList = new List<EffectBase>();
effectCollection = new Dictionary<string, List<EffectBase_BM>>();
IHaveEffectSubmodule element = attachedElement as IHaveEffectSubmodule;
foreach (var effect in element.effectSubmodule.effectCollection)
{
List<EffectBase_BM> effectList = new List<EffectBase_BM>();
foreach (var effectBase in effect.Value)
{
effectList.Add(effectBase.ConvertToBM());
}
effectCollection.Add(effect.Key, effectList);
}
}
public override void ExecuteBM()
{
attachedElement = GetElement(attachedElementGuid);
(attachedElement as IHaveEffect).effectSubmodule = new EffectSubmodule(attachedElement);
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
(attachedElement as IHaveEffectSubmodule).effectSubmodule = new EffectSubmodule(attachedElement);
}
public override void DuplicateBM(BaseElement attached)
public override void DuplicateBM(GameElement attached)
{
(attached as IHaveEffect).effectSubmodule = new EffectSubmodule(attached);
(attached as IHaveEffectSubmodule).effectSubmodule = new EffectSubmodule(attached);
}
}
}
@@ -140,5 +191,31 @@ namespace Ichni.RhythmGame
{
}
/// <summary>
/// 转换为存档类
/// </summary>
/// <returns></returns>
public abstract EffectBase_BM ConvertToBM();
}
namespace Beatmap
{
public abstract class EffectBase_BM
{
public float effectTime;
public EffectBase_BM()
{
}
public EffectBase_BM(float effectTime)
{
this.effectTime = effectTime;
}
public abstract EffectBase ConvertToGameType();
}
}
}