diff --git a/Assets/Scripts/Games/KarateMan/KarateMan.cs b/Assets/Scripts/Games/KarateMan/KarateMan.cs index 1dd925bd5..b2a055c20 100644 --- a/Assets/Scripts/Games/KarateMan/KarateMan.cs +++ b/Assets/Scripts/Games/KarateMan/KarateMan.cs @@ -16,6 +16,23 @@ namespace HeavenStudio.Games.Loaders { public static Minigame AddGame(EventCaller eventCaller) { + RiqEntity GameModsUpdater(string datamodel, RiqEntity e) + { + if (datamodel == "karateman/set gameplay modifiers" && e.version < 1) + { + if (e["toggle"] == null) return null; + + bool comboEnable = (bool)e["toggle"]; + e.CreateProperty("combo", (int)(comboEnable ? KarateMan.ComboMode.Normal : KarateMan.ComboMode.Disabled)); + e.dynamicData.Remove("toggle"); + e.version = 1; + + return e; + } + return null; + } + RiqBeatmap.OnUpdateEntity += GameModsUpdater; + RiqEntity WarningUpdater(string datamodel, RiqEntity e) { if (datamodel == "karateman/hitX") @@ -243,17 +260,17 @@ namespace HeavenStudio.Games.Loaders { function = delegate { var e = eventCaller.currentEntity; - KarateMan.instance.SetGameplayMods(e.beat, e["fxType"], e["type"], e["toggle"]); + KarateMan.instance.SetGameplayMods(e.beat, e["fxType"], e["type"], e["combo"]); }, defaultLength = 0.5f, parameters = new List() { new Param("fxType", KarateMan.BackgroundFXType.None, "FX Type", "Set the background effect to be displayed."), new Param("type", KarateMan.NoriMode.None, "Flow Bar", "Set the type of Flow bar to use."), - // new Param("hitsPerHeart", new EntityTypes.Float(0f, 20f, 0f), "Hits Per Heart", "How many hits it will take for each heart to light up (0 will do it automatically.)"), - new Param("toggle", true, "Enable Combos", "Toggle if Karate Joe will be able to perform combos. This will not affect Touch Style controls."), + new Param("combo", KarateMan.ComboMode.Normal, "Enable Combos", "Toggle if Karate Joe will be able to perform combos, and the type of combo used."), // new Param("toggle2", true, "Enable Kicks", "Allow the player to kick? (Contextual kicks will still be allowed even when off)"), }, + defaultVersion = 1, }, new GameAction("background appearance", "Background Appearance") { @@ -298,28 +315,6 @@ namespace HeavenStudio.Games.Loaders new Param("endTexture", new Color(), "End Texture Color", "Set the color at the end of the event."), }, }, - // new GameAction("set background effects", "Background Appearance (OLD)") - // { - // function = delegate { - // var e = eventCaller.currentEntity; - // KarateMan.instance.SetBgAndShadowCol(e.beat, e.length, e["type"], e["type2"], e["colorA"], e["colorB"], e["type3"]); - // KarateMan.instance.SetBgFx(e["type4"], e["type5"], e["colorC"], e["colorD"]); - // }, - // defaultLength = 0.5f, - // resizable = true, - // parameters = new List() - // { - // new Param("type", KarateMan.BackgroundType.Yellow, "Background Type", "The preset background type"), - // new Param("type2", KarateMan.ShadowType.Tinted, "Shadow Type", "The shadow type. If Tinted doesn't work with your background color try Custom"), - // new Param("colorA", new Color(), "Custom Background Color", "The background color to use when background type is set to Custom"), - // new Param("colorB", new Color(), "Custom Shadow Color", "The shadow color to use when shadow type is set to Custom. When fading the background colour shadows fade to this color"), - // new Param("type3", KarateMan.BackgroundFXType.None, "FX Type", "The background effect to be displayed. Fade uses the entity length to determine colour fading speed"), - // new Param("type4", KarateMan.BackgroundTextureType.Plain, "Texture", "The type of background texture to use"), - // new Param("type5", KarateMan.ShadowType.Tinted, "Color Filter Type", "The method used to apply colour to the texture"), - // new Param("colorC", new Color(), "Custom Filter Color", "The filter color to use when color filter type is set to Custom"), - // new Param("colorD", new Color(), "Fading Filter Color", "When using the Fade background effect, make filter colour fade to this colour"), - // }, - // }, new GameAction("set object colors", "Object Appearance") { function = delegate { @@ -513,10 +508,16 @@ namespace HeavenStudio.Games Mania, ManiaHorizontal, } + + public enum ComboMode + { + Disabled, + Normal, + Jump, + } #endregion - // static List queuedCues = new(); - public static bool IsComboEnable = true; //only stops Out combo inputs, this basically makes combo contextual + public static ComboMode IsComboEnable = ComboMode.Normal; //only stops Out combo inputs, this basically makes combo contextual // public static bool IsKickEnable = true; //same as above, except with kick inputs public bool IsNoriActive { get { return Nori.MaxNori > 0; } } public float NoriPerformance { get { if (IsNoriActive) return Nori.Nori / Nori.MaxNori; else return 1f; } } @@ -1120,12 +1121,12 @@ namespace HeavenStudio.Games } } - public void SetGameplayMods(double beat, int fxType, int mode, bool combo) + public void SetGameplayMods(double beat, int fxType, int mode, int combo) { NoriGO.SetActive(true); Nori.SetNoriMode(beat, mode); currentBgEffect = fxType; - IsComboEnable = combo; + IsComboEnable = (ComboMode)comb; // IsKickEnable = kick; }