Camera flashes (bug associated with fullscreen)

This commit is contained in:
Braedon
2022-02-07 20:07:03 -05:00
parent 57b14c3f3e
commit 49ad157893
31 changed files with 2646 additions and 97 deletions

View File

@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using RhythmHeavenMania.Util;
@ -20,8 +22,13 @@ namespace RhythmHeavenMania
public int track;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float length;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valA;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valB;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valC;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public EasingFunction.Ease ease;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorA;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorB;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorC;
public string datamodel;
[JsonIgnore] public Editor.Track.TimelineEventObj eventObj;

View File

@ -73,6 +73,8 @@ namespace RhythmHeavenMania
}
GameManager.instance.SetCurrentEventToClosest(beat);
songPosBeat = beat;
songPositionInBeats = songPosBeat;
}
public void Play(float beat)

View File

@ -9,11 +9,8 @@ namespace RhythmHeavenMania
public class EventCaller : MonoBehaviour
{
public Transform GamesHolder;
public float currentBeat;
public float currentLength;
public float currentValA;
public Beatmap.Entity currentEntity = new Beatmap.Entity();
public string currentSwitchGame;
public int currentType;
public delegate void EventCallback();
@ -37,6 +34,8 @@ namespace RhythmHeavenMania
{
instance = this;
currentEntity = new Beatmap.Entity();
Minigames.Init(this);
List<Minigames.Minigame> minigamesInBeatmap = new List<Minigames.Minigame>();
@ -57,7 +56,7 @@ namespace RhythmHeavenMania
private void Update()
{
if (GameManager.instance.currentEvent >= 0 && GameManager.instance.currentEvent < GameManager.instance.Beatmap.entities.Count)
currentBeat = GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].beat;
currentEntity.beat = GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].beat;
}
public void CallEvent(string event_)
@ -67,9 +66,7 @@ namespace RhythmHeavenMania
try
{
currentLength = GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].length;
currentType = GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].type;
currentValA = GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].valA;
currentEntity = (Beatmap.Entity)GameManager.instance.Beatmap.entities[GameManager.instance.currentEvent].Clone();
if (details.Length > 2) currentSwitchGame = details[2];

View File

@ -23,6 +23,7 @@ namespace RhythmHeavenMania
public Camera GameCamera, CursorCam;
public CircleCursor CircleCursor;
[HideInInspector] public GameObject GamesHolder;
public Games.Global.Flash fade;
[Header("Games")]
public string currentGame;
@ -35,6 +36,9 @@ namespace RhythmHeavenMania
public float startBeat;
private GameObject currentGameO;
public bool autoplay;
public event Action<float> onBeatChanged;
public int BeatmapEntities()
{
return Beatmap.entities.Count + Beatmap.tempoChanges.Count;
@ -57,7 +61,10 @@ namespace RhythmHeavenMania
sp.color = Color.black;
sp.sprite = Resources.Load<Sprite>("Sprites/GeneralPurpose/Square");
sp.sortingOrder = 30000;
// this.gameObject.layer = 3;
this.gameObject.layer = 3;
GameObject fade = new GameObject();
this.fade = fade.AddComponent<Games.Global.Flash>();
if (txt != null)
{
@ -177,6 +184,7 @@ namespace RhythmHeavenMania
public void Play(float beat)
{
StartCoroutine(PlayCo(beat));
onBeatChanged?.Invoke(beat);
}
private IEnumerator PlayCo(float beat)
@ -204,6 +212,7 @@ namespace RhythmHeavenMania
{
Conductor.instance.Stop(beat);
SetCurrentEventToClosest(beat);
onBeatChanged?.Invoke(beat);
}
#endregion
@ -219,6 +228,7 @@ namespace RhythmHeavenMania
public void SetCurrentEventToClosest(float beat)
{
SortEventsList();
onBeatChanged?.Invoke(beat);
if (Beatmap.entities.Count > 0)
{
List<float> entities = Beatmap.entities.Select(c => c.beat).ToList();

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2a3d05dfe6f7cf84398844e087744cd0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,116 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using RhythmHeavenMania.Util;
using System.Linq;
namespace RhythmHeavenMania.Games.Global
{
public class Flash : MonoBehaviour
{
public float startBeat;
public float length;
public Color startColor;
public Color endColor;
public EasingFunction.Ease ease;
private EasingFunction.Function func;
private SpriteRenderer spriteRenderer;
[SerializeField] private Color currentCol;
private List<Beatmap.Entity> allFadeEvents = new List<Beatmap.Entity>();
private void Start()
{
this.gameObject.transform.SetParent(GameManager.instance.gameObject.transform);
this.gameObject.layer = 3;
this.gameObject.transform.localScale = new Vector3(1, 1);
spriteRenderer = this.gameObject.AddComponent<SpriteRenderer>();
spriteRenderer.color = startColor;
spriteRenderer.sortingOrder = 30001;
spriteRenderer.sprite = Resources.Load<Sprite>("Sprites/GeneralPurpose/Square");
func = EasingFunction.GetEasingFunction(EasingFunction.Ease.Linear);
GameManager.instance.onBeatChanged += OnBeatChanged;
}
public void OnBeatChanged(float beat)
{
// I really need to create a class for objects that are constant like the Spaceball Camera
// startColor = new Color(1, 1, 1, 0);
// endColor = new Color(1, 1, 1, 0);
allFadeEvents = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "flash" });
Test(beat);
}
private void Test(float beat)
{
Color startCol = Color.white;
Color endCol = Color.white;
bool override_ = false;
if (allFadeEvents.Count > 0)
{
Beatmap.Entity startEntity = null;
for (int i = 0; i < allFadeEvents.Count; i++)
{
if (allFadeEvents[i].beat <= beat)
{
startEntity = allFadeEvents[i];
}
else if (i == 0 && allFadeEvents[i].beat > beat)
{
startEntity = allFadeEvents[i];
override_ = true;
startCol = new Color(1, 1, 1, 0);
endCol = new Color(1, 1, 1, 0);
}
}
if (startEntity != null)
{
if (!override_)
{
Color colA = startEntity.colorA;
Color colB = startEntity.colorB;
startCol = new Color(colA.r, colA.g, colA.b, startEntity.valA);
endCol = new Color(colB.r, colB.g, colB.b, startEntity.valB);
}
SetFade(startEntity.beat, startEntity.length, startCol, endCol, startEntity.ease);
}
}
}
public void SetFade(float beat, float length, Color startCol, Color endCol, EasingFunction.Ease ease)
{
this.startBeat = beat;
this.length = length;
this.startColor = startCol;
this.endColor = endCol;
this.ease = ease;
func = EasingFunction.GetEasingFunction(ease);
}
private void Update()
{
Test(Conductor.instance.songPositionInBeats);
float normalizedBeat = Conductor.instance.GetPositionFromBeat(startBeat, length);
// normalizedBeat = Mathf.Clamp01(normalizedBeat);
currentCol = new Color(func(startColor.r, endColor.r, normalizedBeat), func(startColor.g, endColor.g, normalizedBeat), func(startColor.b, endColor.b, normalizedBeat), func(startColor.a, endColor.a, normalizedBeat));
spriteRenderer.color = currentCol;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 16a839834af94a042a3feb7a4762bafd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -97,7 +97,6 @@ namespace RhythmHeavenMania.Games.Spaceball
}
else
{
EasingFunction.Ease ease = EasingFunction.Ease.EaseInOutCirc;
EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEase);
float newPosZ = func(lastCamDistance, currentZoomCamDistance, normalizedBeat);

View File

@ -146,7 +146,7 @@ namespace RhythmHeavenMania.Editor
private void SelectEvents()
{
if (!Input.GetKey(KeyCode.LeftShift) && !Timeline.instance.InteractingWithEvents() && !Timeline.instance.MouseInRectTransform(Editor.instance.eventSelectorBG)) Selections.instance.DeselectAll();
if (!Input.GetKey(KeyCode.LeftShift) && !Timeline.instance.InteractingWithEvents() && Editor.instance.canSelect) Selections.instance.DeselectAll();
int selected = 0;

View File

@ -0,0 +1,25 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
namespace RhythmHeavenMania.Editor
{
public class DisableSelectOnHover : MonoBehaviour
{
public EventParameterManager eventParameterManager;
// this is fucking retarded
private void LateUpdate()
{
eventParameterManager.canDisable = true;
for (int i = 0; i < transform.childCount; i++)
{
if (Editor.MouseInRectTransform(transform.GetChild(i).GetComponent<RectTransform>()))
{
eventParameterManager.canDisable = false;
}
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c29b4f68c2b2e3849af4ab850c275cea
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -56,6 +56,7 @@ namespace RhythmHeavenMania.Editor
private string remixName = "";
private bool fullscreen;
public bool discordDuringTesting = false;
public bool canSelect = true;
public static Editor instance { get; private set; }
@ -63,6 +64,7 @@ namespace RhythmHeavenMania.Editor
{
instance = this;
Initializer = GetComponent<Initializer>();
canSelect = true;
}
public void Init()
@ -134,7 +136,7 @@ namespace RhythmHeavenMania.Editor
}
}
if (Timeline.instance.timelineState.selected)
if (Timeline.instance.timelineState.selected && Editor.instance.canSelect)
{
if (Input.GetMouseButtonUp(0))
{
@ -408,5 +410,10 @@ namespace RhythmHeavenMania.Editor
{
GameEventSelectorTitle.text = txt;
}
public static bool MouseInRectTransform(RectTransform rectTransform)
{
return (rectTransform.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(rectTransform, Input.mousePosition, Editor.instance.EditorCamera));
}
}
}

View File

@ -16,6 +16,7 @@ namespace RhythmHeavenMania.Editor
[SerializeField] private GameObject IntegerP;
[SerializeField] private GameObject FloatP;
[SerializeField] private GameObject DropdownP;
[SerializeField] private GameObject ColorP;
public Beatmap.Entity entity;
@ -23,6 +24,8 @@ namespace RhythmHeavenMania.Editor
private int childCountAtStart;
public bool canDisable = true;
public static EventParameterManager instance { get; set; }
private void Awake()
@ -39,7 +42,7 @@ namespace RhythmHeavenMania.Editor
{
if (Input.GetMouseButtonDown(0))
{
if (!Timeline.instance.MouseInRectTransform(Editor.instance.eventSelectorBG) && active)
if (canDisable && active)
{
Disable();
}
@ -107,6 +110,10 @@ namespace RhythmHeavenMania.Editor
{
prefab = DropdownP;
}
else if (objType == typeof(Color))
{
prefab = ColorP;
}
GameObject input = Instantiate(prefab);
input.transform.SetParent(this.gameObject.transform);

View File

@ -4,6 +4,7 @@ using UnityEngine;
using UnityEngine.UI;
using TMPro;
using Starpelly;
using RhythmHeavenMania.Util;
@ -23,8 +24,14 @@ namespace RhythmHeavenMania.Editor
[Space(10)]
public TMP_Dropdown dropdown;
private string propertyName;
[Header("Color")]
[Space(10)]
public Button ColorBTN;
public RectTransform ColorTable;
public bool colorTableActive;
public ColorPreview colorPreview;
private string propertyName;
public void SetProperties(string propertyName, object type, string caption)
{
@ -97,6 +104,40 @@ namespace RhythmHeavenMania.Editor
parameterManager.entity[propertyName] = (EasingFunction.Ease)dropdown.value;
});
}
else if (objType == typeof(Color))
{
colorPreview.colorPicker.onColorChanged += delegate
{
parameterManager.entity[propertyName] = (Color)colorPreview.colorPicker.color;
};
Color paramCol = (Color)parameterManager.entity[propertyName];
ColorBTN.onClick.AddListener(delegate
{
ColorTable.gameObject.SetActive(true);
colorTableActive = true;
colorPreview.ChangeColor(paramCol);
});
colorPreview.ChangeColor(paramCol);
ColorTable.gameObject.SetActive(false);
}
}
private void Update()
{
if (colorTableActive)
{
if (!Editor.MouseInRectTransform(ColorTable))
{
if (Input.GetMouseButtonDown(0))
{
ColorTable.gameObject.SetActive(false);
colorTableActive = false;
}
}
}
}
}
}

View File

@ -244,7 +244,7 @@ namespace RhythmHeavenMania.Editor.Track
}
if (Input.GetMouseButton(1) && !Conductor.instance.isPlaying && MouseInRectTransform(TimelineGridSelect))
if (Input.GetMouseButton(1) && !Conductor.instance.isPlaying && Editor.MouseInRectTransform(TimelineGridSelect))
{
movingPlayback = true;
}
@ -429,11 +429,6 @@ namespace RhythmHeavenMania.Editor.Track
{
return (this.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(TimelineContent.transform.parent.gameObject.GetComponent<RectTransform>(), Input.mousePosition, Editor.instance.EditorCamera));
}
public bool MouseInRectTransform(RectTransform rectTransform)
{
return (rectTransform.gameObject.activeSelf && RectTransformUtility.RectangleContainsScreenPoint(rectTransform, Input.mousePosition, Editor.instance.EditorCamera));
}
#endregion
#region Functions

View File

@ -80,83 +80,112 @@ namespace RhythmHeavenMania
new GameAction("switchGame", delegate { GameManager.instance.SwitchGame(eventCaller.currentSwitchGame); }, 0.5f),
new GameAction("end", delegate { Debug.Log("end"); }),
new GameAction("skill star", delegate { }, 1f, true),
new GameAction("flash", delegate
{
/*Color colA = eventCaller.currentEntity.colorA;
Color colB = eventCaller.currentEntity.colorB;
Color startCol = new Color(colA.r, colA.g, colA.b, eventCaller.currentEntity.valA);
Color endCol = new Color(colB.r, colB.g, colB.b, eventCaller.currentEntity.valB);
GameManager.instance.fade.SetFade(eventCaller.currentEntity.beat, eventCaller.currentEntity.length, startCol, endCol, eventCaller.currentEntity.ease);*/
}, 1f, true, new List<Param>()
{
new Param("colorA", Color.white, "Start Color"),
new Param("colorB", Color.white, "End Color"),
new Param("valA", new EntityTypes.Float(0, 1, 1), "Start Opacity"),
new Param("valB", new EntityTypes.Float(0, 1, 0), "End Opacity"),
new Param("ease", EasingFunction.Ease.Linear, "Ease")
} ),
}),
new Minigame("countIn", "Count-Ins", "", false, true, new List<GameAction>()
{
new GameAction("cowbell", delegate { Jukebox.PlayOneShot("count-ins/cowbell"); }, 1f),
new GameAction("one", delegate { Jukebox.PlayOneShot("count-ins/one1"); }, 1f),
new GameAction("one (alt)", delegate { Jukebox.PlayOneShot("count-ins/one2"); }, 1f),
new GameAction("two", delegate { Jukebox.PlayOneShot("count-ins/two1"); }, 1f),
new GameAction("two (alt)", delegate { Jukebox.PlayOneShot("count-ins/two2"); }, 1f),
new GameAction("three", delegate { Jukebox.PlayOneShot("count-ins/three1"); }, 1f),
new GameAction("three (alt)", delegate { Jukebox.PlayOneShot("count-ins/three2"); }, 1f),
new GameAction("four", delegate { Jukebox.PlayOneShot("count-ins/four1"); }, 1f),
new GameAction("four (alt)", delegate { Jukebox.PlayOneShot("count-ins/four2"); }, 1f),
new GameAction("and", delegate { Jukebox.PlayOneShot("count-ins/and"); }, 0.5f),
new GameAction("go!", delegate { Jukebox.PlayOneShot("count-ins/go1"); }, 1f),
new GameAction("go! (alt)", delegate { Jukebox.PlayOneShot("count-ins/go2"); }, 1f),
new GameAction("ready!", delegate
{
new GameAction("one", delegate { Jukebox.PlayOneShot("count-ins/one1"); }, 1f),
new GameAction("one (alt)", delegate { Jukebox.PlayOneShot("count-ins/one2"); }, 1f),
new GameAction("two", delegate { Jukebox.PlayOneShot("count-ins/two1"); }, 1f),
new GameAction("two (alt)", delegate { Jukebox.PlayOneShot("count-ins/two2"); }, 1f),
new GameAction("three", delegate { Jukebox.PlayOneShot("count-ins/three1"); }, 1f),
new GameAction("three (alt)", delegate { Jukebox.PlayOneShot("count-ins/three2"); }, 1f),
new GameAction("four", delegate { Jukebox.PlayOneShot("count-ins/four1"); }, 1f),
new GameAction("four (alt)", delegate { Jukebox.PlayOneShot("count-ins/four2"); }, 1f),
new GameAction("and", delegate { Jukebox.PlayOneShot("count-ins/and"); }, 0.5f),
new GameAction("go!", delegate { Jukebox.PlayOneShot("count-ins/go1"); }, 1f),
new GameAction("go! (alt)", delegate { Jukebox.PlayOneShot("count-ins/go2"); }, 1f),
new GameAction("ready!", delegate
{
MultiSound.Play(new MultiSound.Sound[]
{
new MultiSound.Sound("count-ins/ready1", eventCaller.currentBeat),
new MultiSound.Sound("count-ins/ready2", eventCaller.currentBeat + 1f),
new MultiSound.Sound("count-ins/ready1", eventCaller.currentEntity.beat),
new MultiSound.Sound("count-ins/ready2", eventCaller.currentEntity.beat + 1f),
}, false);
}, 2f),
}),
new Minigame("forkLifter", "Fork Lifter", "FFFFFF", false, false, new List<GameAction>()
{
new GameAction("pea", delegate { ForkLifter.instance.Flick(eventCaller.currentBeat, 0); }, 3),
new GameAction("topbun", delegate { ForkLifter.instance.Flick(eventCaller.currentBeat, 1); }, 3),
new GameAction("burger", delegate { ForkLifter.instance.Flick(eventCaller.currentBeat, 2); }, 3),
new GameAction("bottombun", delegate { ForkLifter.instance.Flick(eventCaller.currentBeat, 3); }, 3),
new GameAction("pea", delegate { ForkLifter.instance.Flick(eventCaller.currentEntity.beat, 0); }, 3),
new GameAction("topbun", delegate { ForkLifter.instance.Flick(eventCaller.currentEntity.beat, 1); }, 3),
new GameAction("burger", delegate { ForkLifter.instance.Flick(eventCaller.currentEntity.beat, 2); }, 3),
new GameAction("bottombun", delegate { ForkLifter.instance.Flick(eventCaller.currentEntity.beat, 3); }, 3),
new GameAction("prepare", delegate { ForkLifter.instance.ForkLifterHand.Prepare(); }, 0.5f),
new GameAction("gulp", delegate { ForkLifterPlayer.instance.Eat(); }),
new GameAction("sigh", delegate { Jukebox.PlayOneShot("sigh"); })
}),
new Minigame("clappyTrio", "The Clappy Trio", "29E7FF", false, false, new List<GameAction>()
{
new GameAction("clap", delegate { ClappyTrio.instance.Clap(eventCaller.currentBeat, eventCaller.currentLength); }, 3, true),
new GameAction("bop", delegate { ClappyTrio.instance.Bop(eventCaller.currentBeat); } ),
new GameAction("clap", delegate { ClappyTrio.instance.Clap(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, 3, true),
new GameAction("bop", delegate { ClappyTrio.instance.Bop(eventCaller.currentEntity.beat); } ),
new GameAction("prepare", delegate { ClappyTrio.instance.Prepare(0); } ),
new GameAction("prepare_alt", delegate { ClappyTrio.instance.Prepare(3); } ),
}),
new Minigame("spaceball", "Spaceball", "00A518", false, false, new List<GameAction>()
{
new GameAction("shoot", delegate { Spaceball.instance.Shoot(eventCaller.currentBeat, false, eventCaller.currentType); }, 2, false),
new GameAction("shootHigh", delegate { Spaceball.instance.Shoot(eventCaller.currentBeat, true, eventCaller.currentType); }, 3),
new GameAction("costume", delegate { Spaceball.instance.Costume(eventCaller.currentType); }, 1f, false, new List<Param>() { new Param("type", new EntityTypes.Integer(0, 2), "type") } ),
new GameAction("alien", delegate { Spaceball.instance.alien.Show(eventCaller.currentBeat); } ),
new GameAction("camera", delegate { Spaceball.instance.OverrideCurrentZoom(); }, 4, true, new List<Param>() { new Param("valA", new EntityTypes.Integer(1, 320, 10), "zoom"), new Param("ease", EasingFunction.Ease.Linear, "ease") } ),
new GameAction("shoot", delegate { Spaceball.instance.Shoot(eventCaller.currentEntity.beat, false, eventCaller.currentEntity.type); }, 2, false),
new GameAction("shootHigh", delegate { Spaceball.instance.Shoot(eventCaller.currentEntity.beat, true, eventCaller.currentEntity.type); }, 3),
new GameAction("costume", delegate { Spaceball.instance.Costume(eventCaller.currentEntity.type); }, 1f, false, new List<Param>()
{
new Param("type", new EntityTypes.Integer(0, 2), "Type")
} ),
new GameAction("alien", delegate { Spaceball.instance.alien.Show(eventCaller.currentEntity.beat); } ),
new GameAction("camera", delegate { Spaceball.instance.OverrideCurrentZoom(); }, 4, true, new List<Param>()
{
new Param("valA", new EntityTypes.Integer(1, 320, 10), "Zoom"),
new Param("ease", EasingFunction.Ease.Linear, "Ease")
} ),
new GameAction("prepare dispenser", delegate { Spaceball.instance.PrepareDispenser(); }, 1 ),
}),
new Minigame("karateman", "Karate Man", "70A8D8", false, false, new List<GameAction>()
{
new GameAction("bop", delegate { KarateMan.instance.Bop(eventCaller.currentBeat, eventCaller.currentLength); }, 0.5f, true),
new GameAction("pot", delegate { KarateMan.instance.Shoot(eventCaller.currentBeat, 0); }, 2),
new GameAction("bulb", delegate { KarateMan.instance.Shoot(eventCaller.currentBeat, 1); }, 2),
new GameAction("rock", delegate { KarateMan.instance.Shoot(eventCaller.currentBeat, 2); }, 2),
new GameAction("ball", delegate { KarateMan.instance.Shoot(eventCaller.currentBeat, 3); }, 2),
new GameAction("kick", delegate { KarateMan.instance.Shoot(eventCaller.currentBeat, 4); }, 4.5f),
new GameAction("combo", delegate { KarateMan.instance.Combo(eventCaller.currentBeat); }, 4f),
new GameAction("hit3", delegate { KarateMan.instance.Hit3(eventCaller.currentBeat); }),
new GameAction("hit4", delegate { KarateMan.instance.Hit4(eventCaller.currentBeat); }),
new GameAction("prepare", delegate { KarateMan.instance.Prepare(eventCaller.currentBeat, eventCaller.currentLength); }, 1f, true),
new GameAction("bop", delegate { KarateMan.instance.Bop(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, 0.5f, true),
new GameAction("pot", delegate { KarateMan.instance.Shoot(eventCaller.currentEntity.beat, 0); }, 2),
new GameAction("bulb", delegate { KarateMan.instance.Shoot(eventCaller.currentEntity.beat, 1); }, 2),
new GameAction("rock", delegate { KarateMan.instance.Shoot(eventCaller.currentEntity.beat, 2); }, 2),
new GameAction("ball", delegate { KarateMan.instance.Shoot(eventCaller.currentEntity.beat, 3); }, 2),
new GameAction("kick", delegate { KarateMan.instance.Shoot(eventCaller.currentEntity.beat, 4); }, 4.5f),
new GameAction("combo", delegate { KarateMan.instance.Combo(eventCaller.currentEntity.beat); }, 4f),
new GameAction("hit3", delegate { KarateMan.instance.Hit3(eventCaller.currentEntity.beat); }),
new GameAction("hit4", delegate { KarateMan.instance.Hit4(eventCaller.currentEntity.beat); }),
new GameAction("prepare", delegate { KarateMan.instance.Prepare(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, 1f, true),
new GameAction("bgfxon", delegate { KarateMan.instance.BGFXOn(); } ),
new GameAction("bgfxoff", delegate { KarateMan.instance.BGFXOff(); }),
new GameAction("tacobell", delegate { KarateMan.instance.Shoot(eventCaller.currentBeat, 6); }, 2),
new GameAction("tacobell", delegate { KarateMan.instance.Shoot(eventCaller.currentEntity.beat, 6); }, 2),
}),
new Minigame("spaceSoccer", "Space Soccer", "B888F8", false, false, new List<GameAction>()
{
new GameAction("ball dispense", delegate { SpaceSoccer.instance.Dispense(eventCaller.currentBeat); }, 2f),
new GameAction("ball dispense", delegate { SpaceSoccer.instance.Dispense(eventCaller.currentEntity.beat); }, 2f),
new GameAction("keep-up", delegate { }, 4f, true),
new GameAction("high kick-toe!", delegate { }, 3f, false, new List<Param>() { new Param("valA", new EntityTypes.Float(0, 1), "swing") }),
new GameAction("high kick-toe!", delegate { }, 3f, false, new List<Param>()
{
new Param("valA", new EntityTypes.Float(0, 1), "Swing")
}),
}),
new Minigame("djSchool", "DJ School \n<color=#eb5454>[Non-Playable]</color>", "008c97", false, false, new List<GameAction>()
{
new GameAction("bop", delegate { DJSchool.instance.Bop(eventCaller.currentBeat, eventCaller.currentLength); }, 0.5f, true),
new GameAction("break c'mon ooh", delegate { DJSchool.instance.BreakCmon(eventCaller.currentBeat); }, 3f),
new GameAction("scratch-o hey", delegate { DJSchool.instance.ScratchoHey(eventCaller.currentBeat); }, 3f),
new GameAction("bop", delegate { DJSchool.instance.Bop(eventCaller.currentEntity.beat, eventCaller.currentEntity.length); }, 0.5f, true),
new GameAction("break c'mon ooh", delegate { DJSchool.instance.BreakCmon(eventCaller.currentEntity.beat); }, 3f),
new GameAction("scratch-o hey", delegate { DJSchool.instance.ScratchoHey(eventCaller.currentEntity.beat); }, 3f),
}),
/*new Minigame("rhythmRally", "Rhythm Rally", "B888F8", true, false, new List<GameAction>()
{