Add project files.

This commit is contained in:
2022-09-30 17:32:21 +08:00
parent df69e65c88
commit e8e36b83bd
561 changed files with 40626 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Cryville.Common;
using Cryville.Crtr.Components;
using Cryville.Crtr.Event;
namespace Cryville.Crtr {
public class StampedEvent : IComparable<StampedEvent> {
public float Time;
public ChartEvent Unstamped;
public EventContainer Container;
public StampedEvent Origin;
public List<StampedEvent> Subevents = new List<StampedEvent>();
private StampedEvent attev = null;
private StampedEvent relev = null;
public float Duration {
get {
if (Unstamped == null) return 0;
if (Unstamped.IsLong)
return ReleaseEvent.Time - Time;
else return 0;
}
}
public virtual int Priority {
get {
if (Unstamped != null) return Unstamped.Priority;
throw new NotImplementedException();
}
}
public class PlaySound : StampedEvent {
public new Chart.Sound Unstamped;
public override int Priority {
get { return 0; }
}
}
public class Judge : StampedEvent {
public float NoteTime;
public JudgeDefinition TargetJudge;
public Judge StartEvent;
public bool IsEndJudge;
public override int Priority {
get { return StartEvent == null ? 4 : 6; }
}
protected override int cmpExtra(StampedEvent other) {
return Equals(StartEvent, other) ? 1 : 0;
}
}
public StampedEvent AttackEvent {
get {
if (attev == null) attev = Subevents.FirstOrDefault(ev => ev.Time == this.Time);
return attev;
}
}
public StampedEvent ReleaseEvent {
get {
if (relev == null) relev = Subevents.FirstOrDefault(ev => ((InstantEvent)ev.Unstamped).IsRelease);
return relev;
}
}
public override string ToString() {
if (Unstamped == null)
return string.Format("stmpev at {0} {1}", Time, this.GetType().Name);
return string.Format("stmpev at {0} {1}", Time, Unstamped.GetType().Name);
}
public int CompareTo(StampedEvent other) {
int u = this.Time.CompareTo(other.Time);
if (u != 0) return u;
u = this.Priority.CompareTo(other.Priority);
if (u != 0) return u;
u = this.Duration.CompareTo(other.Duration);
if (u != 0) return u;
u = cmpExtra(other);
if (u != 0) return u;
/*if (this.Event != null && other.Event != null)
if (table.ContainsKey(this.Event) && table.ContainsKey(other.Event)) {
u = table[this.Event].Depth.CompareTo(table[other.Event].Depth);
if (u != 0) return u;
}*/
return GetHashCode().CompareTo(other.GetHashCode());
}
protected virtual int cmpExtra(StampedEvent other) {
return 0;
}
}
}