架构重新设计
基本重做了所有物体和次级模块代码
This commit is contained in:
@@ -7,7 +7,7 @@ using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public abstract partial class NoteBase : BaseElement
|
||||
public abstract partial class NoteBase : GameElement, IHaveTransformSubmodule, IHaveTimeDurationSubmodule, IHaveEffectSubmodule
|
||||
{
|
||||
[Title("Basic Info")]
|
||||
public float exactJudgeTime;
|
||||
@@ -20,39 +20,16 @@ namespace Ichni.RhythmGame
|
||||
[Title("NoteVisual")]
|
||||
public NoteVisualBase noteVisual;
|
||||
|
||||
[Title("NoteEffect")]
|
||||
[Tooltip("生成Note时的特效")]
|
||||
public EffectSubmodule generateEffects;
|
||||
[Tooltip("Note被判定时的特效,不包括Miss")]
|
||||
public EffectSubmodule generalJudgeEffects;
|
||||
[Tooltip("Note被Perfect判定时的特效")]
|
||||
public EffectSubmodule perfectJudgeEffects;
|
||||
[Tooltip("Note被Good判定时的特效")]
|
||||
public EffectSubmodule goodJudgeEffects;
|
||||
[Tooltip("Note被Bad判定时的特效")]
|
||||
public EffectSubmodule badJudgeEffects;
|
||||
[Tooltip("Note未被判定时的特效,即Miss")]
|
||||
public EffectSubmodule missJudgeEffects;
|
||||
|
||||
[Title("Judge Info")]
|
||||
public NoteJudgeSubmodule noteJudgeSubmodule;
|
||||
[Title("Submodules")]
|
||||
public TransformSubmodule transformSubmodule { get; set; }
|
||||
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
|
||||
public EffectSubmodule effectSubmodule { get; set; }
|
||||
public NoteJudgeSubmodule noteJudgeSubmodule { get; set; }
|
||||
|
||||
[Title("In-Game Info")]
|
||||
public Vector2 noteScreenPosition;
|
||||
public bool isJudged;
|
||||
|
||||
public override void Initialize(string name, Guid id, List<string> tags)
|
||||
{
|
||||
base.Initialize(name, id, tags);
|
||||
generateEffects = new EffectSubmodule(this);
|
||||
generalJudgeEffects = new EffectSubmodule(this);
|
||||
perfectJudgeEffects = new EffectSubmodule(this);
|
||||
goodJudgeEffects = new EffectSubmodule(this);
|
||||
badJudgeEffects = new EffectSubmodule(this);
|
||||
missJudgeEffects = new EffectSubmodule(this);
|
||||
noteJudgeSubmodule = new NoteJudgeSubmodule(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在MovableTrack上更新Note的位置,注意HoldNote需要重写这个方法
|
||||
/// </summary>
|
||||
@@ -78,24 +55,19 @@ namespace Ichni.RhythmGame
|
||||
trackPositioner.SetPercent(1 - percent);
|
||||
}
|
||||
|
||||
public override void AfterInitialize()
|
||||
protected override void SetDefaultSubmodules()
|
||||
{
|
||||
base.AfterInitialize();
|
||||
submoduleList.Add(generateEffects);
|
||||
submoduleList.Add(generalJudgeEffects);
|
||||
submoduleList.Add(perfectJudgeEffects);
|
||||
submoduleList.Add(goodJudgeEffects);
|
||||
submoduleList.Add(badJudgeEffects);
|
||||
submoduleList.Add(missJudgeEffects);
|
||||
transformSubmodule = new TransformSubmodule(this);
|
||||
timeDurationSubmodule = new TimeDurationSubmodule(this);
|
||||
effectSubmodule = new EffectSubmodule(this, EffectSubmodule.EffectSubmodulePreset.Note);
|
||||
noteJudgeSubmodule = new NoteJudgeSubmodule(this);
|
||||
|
||||
generateEffects.effectList.ForEach(e => e.Recover());
|
||||
generalJudgeEffects.effectList.ForEach(e => e.Recover());
|
||||
perfectJudgeEffects.effectList.ForEach(e => e.Recover());
|
||||
goodJudgeEffects.effectList.ForEach(e => e.Recover());
|
||||
badJudgeEffects.effectList.ForEach(e => e.Recover());
|
||||
missJudgeEffects.effectList.ForEach(e => e.Recover());
|
||||
submoduleList.Add(transformSubmodule);
|
||||
submoduleList.Add(timeDurationSubmodule);
|
||||
submoduleList.Add(effectSubmodule);
|
||||
submoduleList.Add(noteJudgeSubmodule);
|
||||
}
|
||||
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (isOnTrack)
|
||||
@@ -122,21 +94,22 @@ namespace Ichni.RhythmGame
|
||||
}
|
||||
}
|
||||
|
||||
generateEffects.effectList.ForEach(e => e.UpdateEffect());
|
||||
|
||||
effectSubmodule.effectCollection["Generate"].ForEach(e => e.UpdateEffect());
|
||||
effectSubmodule.effectCollection["GeneralJudge"].ForEach(e => e.UpdateEffect());
|
||||
|
||||
switch (EditorManager.instance.currentJudgeType)
|
||||
{
|
||||
case NoteJudgeType.Perfect:
|
||||
perfectJudgeEffects.effectList.ForEach(e => e.UpdateEffect());
|
||||
effectSubmodule.effectCollection["Perfect"].ForEach(e => e.UpdateEffect());
|
||||
break;
|
||||
case NoteJudgeType.Good:
|
||||
goodJudgeEffects.effectList.ForEach(e => e.UpdateEffect());
|
||||
effectSubmodule.effectCollection["Good"].ForEach(e => e.UpdateEffect());
|
||||
break;
|
||||
case NoteJudgeType.Bad:
|
||||
badJudgeEffects.effectList.ForEach(e => e.UpdateEffect());
|
||||
effectSubmodule.effectCollection["Bad"].ForEach(e => e.UpdateEffect());
|
||||
break;
|
||||
case NoteJudgeType.Miss:
|
||||
missJudgeEffects.effectList.ForEach(e => e.UpdateEffect());
|
||||
effectSubmodule.effectCollection["Miss"].ForEach(e => e.UpdateEffect());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -172,4 +145,33 @@ namespace Ichni.RhythmGame
|
||||
Miss
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
{
|
||||
public abstract class NoteBase_BM : GameElement_BM
|
||||
{
|
||||
public float exactJudgeTime;
|
||||
|
||||
public NoteBase_BM()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public NoteBase_BM(string elementName, Guid elementGuid, List<string> tags, GameElement_BM attachedElement, float exactJudgeTime)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
this.exactJudgeTime = exactJudgeTime;
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user