Refactor ReleaseEvent.
This commit is contained in:
@@ -130,11 +130,11 @@ namespace Cryville.Crtr {
|
|||||||
get { return Duration > 0; }
|
get { return Duration > 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private InstantEvent relev = null;
|
private ReleaseEvent relev = null;
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public InstantEvent ReleaseEvent {
|
public ReleaseEvent ReleaseEvent {
|
||||||
get {
|
get {
|
||||||
if (relev == null) relev = new InstantEvent(this, true);
|
if (relev == null) relev = new ReleaseEvent(this);
|
||||||
return relev;
|
return relev;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -161,18 +161,12 @@ namespace Cryville.Crtr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InstantEvent : ChartEvent {
|
public class ReleaseEvent : ChartEvent {
|
||||||
public readonly ChartEvent Original;
|
public readonly ChartEvent Original;
|
||||||
public bool IsRelease;
|
|
||||||
|
|
||||||
public InstantEvent(ChartEvent orig, bool release = false) {
|
public ReleaseEvent(ChartEvent orig) {
|
||||||
IsRelease = release;
|
|
||||||
if (orig != null) {
|
|
||||||
Original = orig;
|
Original = orig;
|
||||||
time = orig.time;
|
time = orig.endtime;
|
||||||
if (IsRelease)
|
|
||||||
BeatOffset = orig.Duration;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int Priority {
|
public override int Priority {
|
||||||
|
@@ -87,9 +87,11 @@ namespace Cryville.Crtr.Event {
|
|||||||
stateMap[(EventContainer)ev].StampedContainer = sev;
|
stateMap[(EventContainer)ev].StampedContainer = sev;
|
||||||
}
|
}
|
||||||
if (ev is InstantEvent) {
|
if (ev is InstantEvent) {
|
||||||
var tev = (InstantEvent)ev;
|
if (ev is ReleaseEvent) {
|
||||||
var pev = map[tev.Original];
|
var tev = (ReleaseEvent)ev;
|
||||||
pev.Subevents.Add(sev);
|
var oev = tev.Original;
|
||||||
|
var pev = map[oev];
|
||||||
|
pev.ReleaseEvent = sev;
|
||||||
sev.Origin = pev;
|
sev.Origin = pev;
|
||||||
}
|
}
|
||||||
if (con != null && coevents.Contains(ev)) {
|
if (con != null && coevents.Contains(ev)) {
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using CAnchor = Cryville.Crtr.Anchor;
|
using CAnchor = Cryville.Crtr.Anchor;
|
||||||
|
|
||||||
namespace Cryville.Crtr {
|
namespace Cryville.Crtr {
|
||||||
@@ -9,9 +8,7 @@ namespace Cryville.Crtr {
|
|||||||
public ChartEvent Unstamped;
|
public ChartEvent Unstamped;
|
||||||
public EventContainer Container;
|
public EventContainer Container;
|
||||||
public StampedEvent Origin;
|
public StampedEvent Origin;
|
||||||
public List<StampedEvent> Subevents = new List<StampedEvent>();
|
|
||||||
public List<StampedEvent> Coevents;
|
public List<StampedEvent> Coevents;
|
||||||
private StampedEvent relev = null;
|
|
||||||
|
|
||||||
public double Duration {
|
public double Duration {
|
||||||
get {
|
get {
|
||||||
@@ -47,10 +44,12 @@ namespace Cryville.Crtr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StampedEvent relev = null;
|
||||||
public StampedEvent ReleaseEvent {
|
public StampedEvent ReleaseEvent {
|
||||||
get {
|
get { return relev; }
|
||||||
if (relev == null) relev = Subevents.FirstOrDefault(ev => ((InstantEvent)ev.Unstamped).IsRelease);
|
set {
|
||||||
return relev;
|
if (relev != null) throw new InvalidOperationException("Release event already set");
|
||||||
|
relev = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user