修noteprefab和submodule
This commit is contained in:
@@ -45,9 +45,12 @@ namespace Ichni.RhythmGame
|
||||
|
||||
this.baseColorDirtyMark = false;
|
||||
this.emissionColorDirtyMark = false;
|
||||
|
||||
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
|
||||
(attachedGameElement as IHaveColorSubmodule).SetColorObserver();
|
||||
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
|
||||
(attachedGameElement as IHaveColorSubmodule).SetColorObserver();
|
||||
}
|
||||
}
|
||||
|
||||
public ColorSubmodule(GameElement attachedGameElement, Color originalBaseColor) : base(attachedGameElement)
|
||||
@@ -64,8 +67,11 @@ namespace Ichni.RhythmGame
|
||||
this.baseColorDirtyMark = false;
|
||||
this.emissionColorDirtyMark = false;
|
||||
|
||||
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
|
||||
(attachedGameElement as IHaveColorSubmodule).SetColorObserver();
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
|
||||
(attachedGameElement as IHaveColorSubmodule).SetColorObserver();
|
||||
}
|
||||
}
|
||||
|
||||
public ColorSubmodule(GameElement attachedGameElement, Color originalBaseColor, bool emissionEnabled,
|
||||
@@ -83,8 +89,11 @@ namespace Ichni.RhythmGame
|
||||
this.baseColorDirtyMark = false;
|
||||
this.emissionColorDirtyMark = false;
|
||||
|
||||
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
|
||||
(attachedGameElement as IHaveColorSubmodule).SetColorObserver();
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
|
||||
(attachedGameElement as IHaveColorSubmodule).SetColorObserver();
|
||||
}
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
|
||||
@@ -37,14 +37,17 @@ namespace Ichni.RhythmGame
|
||||
effectCollection.Add("Miss", new List<EffectBase>());
|
||||
effectCollection.Add("AfterJudge", new List<EffectBase>());
|
||||
}
|
||||
|
||||
(attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this;
|
||||
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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>();
|
||||
@@ -62,10 +65,14 @@ namespace Ichni.RhythmGame
|
||||
effectList.Add(effectBM.ConvertToGameType(attachedGameElement));
|
||||
}
|
||||
}
|
||||
|
||||
effectCollection.Add(effect.Key, effectList);
|
||||
}
|
||||
|
||||
(attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this;
|
||||
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,11 @@ namespace Ichni.RhythmGame
|
||||
public NoteJudgeTriggerSubmodule(GameElement attachedGameElement) : base(attachedGameElement)
|
||||
{
|
||||
connectedNotes = new List<NoteBase>();
|
||||
(attachedGameElement as IHaveNoteJudgeTriggerSubmodule).noteJudgeTriggerSubmodule = this;
|
||||
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveNoteJudgeTriggerSubmodule).noteJudgeTriggerSubmodule = this;
|
||||
}
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
|
||||
@@ -13,18 +13,24 @@ namespace Ichni.RhythmGame
|
||||
public GameElement attachedGameElement;
|
||||
|
||||
public BaseElement_BM matchedBM { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 在生成时检测是否已经有重复的submodule
|
||||
/// </summary>
|
||||
public bool HaveSameSubmodule { get; set; }
|
||||
|
||||
public SubmoduleBase(GameElement attachedGameElement)
|
||||
{
|
||||
this.attachedGameElement = attachedGameElement;
|
||||
HaveSameSubmodule = attachedGameElement.submoduleList.Any(x => x.GetType() == this.GetType());
|
||||
|
||||
if (attachedGameElement.submoduleList.Any(x => x.GetType() == this.GetType()))
|
||||
if (HaveSameSubmodule)
|
||||
{
|
||||
Debug.LogWarning("存在重复的Submodule");
|
||||
LogWindow.Log($"There are repeated submodule on Game Element {attachedGameElement.elementName}", Color.yellow);
|
||||
Debug.LogAssertion($"存在重复的Submodule: {GetType()},此操作无效");
|
||||
LogWindow.Log($"There are repeated submodule {GetType()} on Game Element {attachedGameElement.elementName}", Color.red);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
this.attachedGameElement.submoduleList.Add(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,19 +16,26 @@ namespace Ichni.RhythmGame
|
||||
public TimeDurationSubmodule(GameElement attachedGameElement) : base(attachedGameElement)
|
||||
{
|
||||
isOverridingDuration = false;
|
||||
startTime = -32767;//TODO: 换为-delay
|
||||
endTime = 32767;//TODO: 换为songLength
|
||||
startTime = -32767; //TODO: 换为-delay
|
||||
endTime = 32767; //TODO: 换为songLength
|
||||
|
||||
(attachedGameElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = this;
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = this;
|
||||
}
|
||||
}
|
||||
|
||||
public TimeDurationSubmodule(GameElement attachedGameElement, bool isOverridingDuration, float startTime, float endTime) : base(attachedGameElement)
|
||||
public TimeDurationSubmodule(GameElement attachedGameElement, bool isOverridingDuration, float startTime, float endTime) :
|
||||
base(attachedGameElement)
|
||||
{
|
||||
this.isOverridingDuration = isOverridingDuration;
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
|
||||
(attachedGameElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = this;
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = this;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckTimeInDuration(float time, float offset = 0.2f)
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace Ichni.RhythmGame
|
||||
public bool scaleDirtyMark;
|
||||
|
||||
public bool eulerAnglesOffsetLock;
|
||||
|
||||
|
||||
public TransformSubmodule(GameElement attachedGameElement) : base(attachedGameElement)
|
||||
{
|
||||
this.originalPosition = Vector3.zero;
|
||||
@@ -51,8 +51,11 @@ namespace Ichni.RhythmGame
|
||||
|
||||
eulerAnglesOffsetLock = false;
|
||||
|
||||
(attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this;
|
||||
(attachedGameElement as IHaveTransformSubmodule).SetTransformObserver();
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this;
|
||||
(attachedGameElement as IHaveTransformSubmodule).SetTransformObserver();
|
||||
}
|
||||
}
|
||||
|
||||
public TransformSubmodule(GameElement attachedGameElement,
|
||||
@@ -75,13 +78,16 @@ namespace Ichni.RhythmGame
|
||||
scaleDirtyMark = true;
|
||||
|
||||
eulerAnglesOffsetLock = false;
|
||||
|
||||
|
||||
attachedGameElement.transform.localScale = currentScale;
|
||||
attachedGameElement.transform.localEulerAngles = currentEulerAngles;
|
||||
attachedGameElement.transform.localPosition = currentPosition;
|
||||
|
||||
(attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this;
|
||||
(attachedGameElement as IHaveTransformSubmodule).SetTransformObserver();
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
(attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this;
|
||||
(attachedGameElement as IHaveTransformSubmodule).SetTransformObserver();
|
||||
}
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
|
||||
Reference in New Issue
Block a user