diff --git a/Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Game Title.mat b/Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Game Title.mat new file mode 100644 index 000000000..2b92e42c6 --- /dev/null +++ b/Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Game Title.mat @@ -0,0 +1,107 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: FOT-Rodin Pro B SDF Game Title + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: -6916996860123676527, guid: 4810e200fa0cb24438bac52343d7674b, type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0.5 + - _FaceDilate: 0.71 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 10 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 1 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.47430828 + - _ScaleRatioB: 0.092250064 + - _ScaleRatioC: 0.092250064 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} + m_BuildTextureStacks: [] diff --git a/Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Game Title.mat.meta b/Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Game Title.mat.meta new file mode 100644 index 000000000..8d81f58b7 --- /dev/null +++ b/Assets/Resources/Fonts/rodin/FOT-Rodin Pro B SDF Game Title.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 17640bfdd8e085c43ad7e657ba4e5903 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Editor.unity b/Assets/Scenes/Editor.unity index 1f4328239..e3f596a66 100644 --- a/Assets/Scenes/Editor.unity +++ b/Assets/Scenes/Editor.unity @@ -414,9 +414,9 @@ RectTransform: m_Father: {fileID: 574002313} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -21} m_SizeDelta: {x: 32, y: 32} m_Pivot: {x: 0, y: 0.5} --- !u!114 &9435782 @@ -4092,9 +4092,9 @@ RectTransform: m_Father: {fileID: 539838476} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 32, y: -21} m_SizeDelta: {x: 32, y: 32} m_Pivot: {x: 1, y: 0.5} --- !u!114 &121871281 @@ -4328,9 +4328,9 @@ RectTransform: m_Father: {fileID: 539838476} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 72, y: -21} m_SizeDelta: {x: 32, y: 32} m_Pivot: {x: 1, y: 0.5} --- !u!114 &129013734 @@ -4541,9 +4541,9 @@ RectTransform: m_Father: {fileID: 539838476} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 112, y: -21} m_SizeDelta: {x: 32, y: 32} m_Pivot: {x: 1, y: 0.5} --- !u!114 &151246938 @@ -5044,7 +5044,7 @@ MonoBehaviour: m_Top: 0 m_Bottom: 0 m_ChildAlignment: 4 - m_Spacing: 0 + m_Spacing: -10 m_ChildForceExpandWidth: 1 m_ChildForceExpandHeight: 1 m_ChildControlWidth: 0 @@ -6991,7 +6991,7 @@ MonoBehaviour: m_text: Title m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 4810e200fa0cb24438bac52343d7674b, type: 2} - m_sharedMaterial: {fileID: 8580487687356851718, guid: 4810e200fa0cb24438bac52343d7674b, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 17640bfdd8e085c43ad7e657ba4e5903, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] @@ -7018,9 +7018,9 @@ MonoBehaviour: m_fontSize: 28 m_fontSizeBase: 28 m_fontWeight: 400 - m_enableAutoSizing: 0 + m_enableAutoSizing: 1 m_fontSizeMin: 8 - m_fontSizeMax: 24.3 + m_fontSizeMax: 28 m_fontStyle: 1 m_HorizontalAlignment: 2 m_VerticalAlignment: 512 @@ -7429,7 +7429,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 656.00006, y: -25} + m_AnchoredPosition: {x: 656.0001, y: -25} m_SizeDelta: {x: 1288.0001, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &278632245 @@ -8731,7 +8731,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 172.05, y: 28} + m_SizeDelta: {x: 169.39, y: 28} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &320483642 MonoBehaviour: @@ -9859,9 +9859,85 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 3.4253845, y: 0} + m_AnchoredPosition: {x: 3.425354, y: 0} m_SizeDelta: {x: -6.8507814, y: 36} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &360512139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 360512140} + - component: {fileID: 360512142} + - component: {fileID: 360512141} + m_Layer: 8 + m_Name: DimEvents + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &360512140 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360512139} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1050802356} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -8, y: 0} + m_SizeDelta: {x: 760, y: 444.12} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &360512141 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360512139} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.50980395} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &360512142 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 360512139} + m_CullTransparentMesh: 1 --- !u!1 &365187977 GameObject: m_ObjectHideFlags: 0 @@ -14605,8 +14681,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -25.350006} - m_SizeDelta: {x: 0, y: -54.69} + m_AnchoredPosition: {x: 0, y: -23.20501} + m_SizeDelta: {x: 0, y: -50.39} m_Pivot: {x: 0, y: 0.5} --- !u!114 &546272878 MonoBehaviour: @@ -17546,7 +17622,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -2, y: -51.1} + m_AnchoredPosition: {x: -2, y: -48.399994} m_SizeDelta: {x: -36, y: 2} m_Pivot: {x: 0.5, y: 0} --- !u!114 &643814084 @@ -23663,7 +23739,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.000038146973} + m_AnchoredPosition: {x: 0, y: -0.000030517578} m_SizeDelta: {x: -14.000054, y: 0} m_Pivot: {x: 0, y: 1} --- !u!114 &830452353 @@ -29439,6 +29515,7 @@ RectTransform: - {fileID: 246861489} - {fileID: 643814083} - {fileID: 546272877} + - {fileID: 360512140} - {fileID: 1056099132} m_Father: {fileID: 374760605} m_RootOrder: 2 @@ -29650,12 +29727,12 @@ RectTransform: m_Children: - {fileID: 590210126} m_Father: {fileID: 1050802356} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -25.050003} - m_SizeDelta: {x: 0, y: -54.1} + m_AnchoredPosition: {x: 0, y: -23.200005} + m_SizeDelta: {x: 0, y: -50.4} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1056099133 MonoBehaviour: @@ -31462,7 +31539,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 1, y: 0.5} - m_AnchoredPosition: {x: 0, y: 124.9388} + m_AnchoredPosition: {x: 0, y: 122.897575} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 1} --- !u!222 &1154875945 @@ -31509,13 +31586,15 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d9d826be8d1e71d4c971f5ed377ee873, type: 3} m_Name: m_EditorClassIdentifier: + GameEventSelectorCanScroll: {fileID: 110654310} + GameEventHolder: {fileID: 590210126} + tabsManager: {fileID: 0} SelectedGameIcon: {fileID: 0} GameEventSelector: {fileID: 1056099131} EventRef: {fileID: 1149103344} CurrentSelected: {fileID: 841081095} Scrollbar: {fileID: 910102826} GameSelectionRect: {fileID: 1183003086} - GameEventSelectorCanScroll: {fileID: 110654310} SearchBar: {fileID: 320483642} currentEventIndex: 0 Square: {fileID: 2800000, guid: ef2fa2a75dc283e40b9d4fe1f20dc6fb, type: 3} @@ -35849,9 +35928,9 @@ RectTransform: m_Father: {fileID: 574002313} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 40, y: -21} m_SizeDelta: {x: 32, y: 32} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1345846031 @@ -41416,8 +41495,8 @@ MonoBehaviour: m_TargetGraphic: {fileID: 1220118245} m_HandleRect: {fileID: 1220118244} m_Direction: 2 - m_Value: 0.9999995 - m_Size: 0.6203498 + m_Value: 1.0000002 + m_Size: 0.60344017 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: @@ -43226,7 +43305,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 0.000061035156, y: 0.000061035156} + m_AnchoredPosition: {x: 0.000061035156, y: -0.000030517578} m_SizeDelta: {x: 100, y: 350} m_Pivot: {x: 0, y: 1} --- !u!114 &1702073032 @@ -44985,9 +45064,9 @@ RectTransform: m_Father: {fileID: 574002313} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 80, y: -21} m_SizeDelta: {x: 32, y: 32} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1783491359 @@ -48664,7 +48743,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} m_AnchorMin: {x: 0.5, y: 1} m_AnchorMax: {x: 0.5, y: 1} - m_AnchoredPosition: {x: 0, y: 0.30000305} + m_AnchoredPosition: {x: 0, y: 0.2999878} m_SizeDelta: {x: 18.8, y: 18.8} m_Pivot: {x: 0.5, y: 0} --- !u!114 &1928361020 @@ -54136,11 +54215,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4198503453639850605, guid: e66ea59167e0edc41ad445d9226040a7, type: 3} propertyPath: m_AnchoredPosition.x - value: -557.2 + value: -557.1998 objectReference: {fileID: 0} - target: {fileID: 4198503453639850605, guid: e66ea59167e0edc41ad445d9226040a7, type: 3} propertyPath: m_AnchoredPosition.y - value: -303.1 + value: -303.09998 objectReference: {fileID: 0} - target: {fileID: 4198503453639850605, guid: e66ea59167e0edc41ad445d9226040a7, type: 3} propertyPath: m_LocalEulerAnglesHint.x diff --git a/Assets/Scripts/InputSystem/ControllerTypes/InputKeyboard.cs b/Assets/Scripts/InputSystem/ControllerTypes/InputKeyboard.cs index b8aa51bdd..c59fa9abb 100644 --- a/Assets/Scripts/InputSystem/ControllerTypes/InputKeyboard.cs +++ b/Assets/Scripts/InputSystem/ControllerTypes/InputKeyboard.cs @@ -33,6 +33,11 @@ namespace HeavenStudio.InputSystem { public class InputKeyboard : InputController { +#if UNITY_STANDALONE_OSX + public const KeyCode MODIFIER = KeyCode.LeftCommand; +#else + public const KeyCode MODIFIER = KeyCode.LeftControl; +#endif private static readonly KeyCode[] keyCodes = Enum.GetValues(typeof(KeyCode)) .Cast() .Where(k => ((int)k < (int)KeyCode.Mouse0)) diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs index d85ad599d..81b834101 100644 --- a/Assets/Scripts/LevelEditor/Editor.cs +++ b/Assets/Scripts/LevelEditor/Editor.cs @@ -16,6 +16,7 @@ using Jukebox; using UnityEditor; using System.Linq; using BurstLinq; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor { @@ -178,7 +179,7 @@ namespace HeavenStudio.Editor CommandManager.Instance.AddCommand(new Commands.Delete(Selections.instance.eventsSelected.Select(c => c.entity.guid).ToList())); } - if (Input.GetKey(KeyCode.LeftControl) && !fullscreen) + if (Input.GetKey(InputKeyboard.MODIFIER) && !fullscreen) { if (Input.GetKeyDown(KeyCode.Z)) { @@ -201,7 +202,7 @@ namespace HeavenStudio.Editor } } - if (Input.GetKey(KeyCode.LeftControl)) + if (Input.GetKey(InputKeyboard.MODIFIER)) { if (Input.GetKeyDown(KeyCode.N)) { diff --git a/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs b/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs index d251af959..6a881efde 100644 --- a/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs +++ b/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs @@ -95,8 +95,7 @@ namespace HeavenStudio.Editor { string[] split = entity.datamodel.Split('/'); var minigame = EventCaller.instance.GetMinigame(split[0]); - int actionIndex = minigame.actions.IndexOf(minigame.actions.Find(c => c.actionName == split[1])); - Minigames.GameAction action = minigame.actions[actionIndex]; + Minigames.GameAction action = minigame.actions.Find(c => c.actionName == split[1]); if (action.parameters != null) { @@ -111,7 +110,13 @@ namespace HeavenStudio.Editor 4 => EditorTheme.theme.properties.Layer5Col, _ => EditorTheme.theme.properties.Layer1Col }; - Editor.instance.SetGameEventTitle($"Properties for {action.displayName} on Beat {entity.beat.ToString("F2")} on Track {(int)entity["track"] + 1}"); + string gameName = action.displayName; + const int cutOff = 20; + if (gameName.Length > (cutOff + 3)) { + gameName = gameName[..cutOff] + "..."; + } + + Editor.instance.SetGameEventTitle($"{gameName} at ♪ {entity.beat:F2} on Track {(int)entity["track"] + 1}"); DestroyParams(); diff --git a/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs index 2710c7a37..8ba8c5def 100644 --- a/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs +++ b/Assets/Scripts/LevelEditor/EventSelector/GridGameSelector.cs @@ -12,6 +12,8 @@ using HeavenStudio.Util; using HeavenStudio.Editor.Track; using System.Text; using System.Configuration; +using System; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor { @@ -163,7 +165,7 @@ namespace HeavenStudio.Editor UpdateIndex(index, false); // Editor.instance?.SetGameEventTitle($"Select game event for {SelectedMinigame.displayName.Replace("\n", "")}"); - Editor.instance?.SetGameEventTitle(SelectedMinigame.displayName.Replace("\n", "")); + if (Editor.instance != null) Editor.instance.SetGameEventTitle(SelectedMinigame.displayName.Replace("\n", "")); } private void AddEvents(int index = 0) @@ -173,7 +175,9 @@ namespace HeavenStudio.Editor GameObject sg = Instantiate(EventRef, eventsParent); sg.GetComponentInChildren().text = "Switch Game"; sg.SetActive(true); - if (index == 0) sg.GetComponentInChildren().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB(); + if (index == 0) { + sg.GetComponentInChildren().color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB(); + } } else { index++; if (SelectedMinigame.name == "gameManager") index++; @@ -195,7 +199,6 @@ namespace HeavenStudio.Editor label.color = EditorTheme.theme.properties.EventSelectedCol.Hex2RGB(); g.SetActive(true); - } } @@ -236,28 +239,24 @@ namespace HeavenStudio.Editor } } - // TODO: find the equation to get the sizes automatically, nobody's been able to figure one out yet (might have to be manual?) public void Zoom() { - if (!Input.GetKey(KeyCode.LeftControl)) return; + if (!Input.GetKey(InputKeyboard.MODIFIER)) return; var glg = GetComponent(); - var sizes = new List() { - 309.9f, // 1 - 152.6f, // 2 - 100.0f, // 3 - 73.8f, // 4 - 58.1f, // 5 - 48.6f, // 6 - 40.1f, // 7 - 34.5f, // 8 - 30.0f, // 9 - 26.5f, // 10 - }; + int max = 20; // arbitrary - if (glg.constraintCount + 1 > sizes.Count && Input.GetAxisRaw("Mouse ScrollWheel") < 0) return; + if (glg.constraintCount + 1 > max && Input.mouseScrollDelta.y < 0) return; - glg.constraintCount += (Input.GetAxisRaw("Mouse ScrollWheel") > 0) ? -1 : 1; - glg.cellSize = Vector2.one * sizes[glg.constraintCount - 1]; + glg.constraintCount += (Input.mouseScrollDelta.y > 0) ? -1 : 1; + + // thanks to blank3times (tri) for helping me with this + var size = (1 / (0.00317 * glg.constraintCount)) - 4.75248; + + // this, however, doesn't work + // var totalWidth = Editor.instance.GridGameSelectorRect.rect.width; + // var size = (totalWidth - glg.padding.right) * (glg.constraintCount + 1) / glg.constraintCount; + + glg.cellSize = Vector2.one * (float)size; } // method called when clicking the sort button in the editor, skips sorting fx only "games" @@ -267,21 +266,14 @@ namespace HeavenStudio.Editor List mgsSort = mgsActive; mgsSort.Sort((x, y) => string.Compare(x.name, y.name)); - switch (type) - { - case "favorites": - SortFavorites(mgsSort); - break; - case "chronologic": - SortChronologic(mgsSort); - break; - case "usage": - SortUsage(mgsSort); - break; - default: // "alphabet" - SortAlphabet(mgsSort); - break; - } + Action> action = type switch { + "favorites" => SortFavorites, + "chronologic" => SortChronologic, + "usage" => SortUsage, + _ => SortAlphabet + }; + + action.Invoke(mgsSort); } void SortAlphabet(List mgs) @@ -295,7 +287,7 @@ namespace HeavenStudio.Editor string AlphabetSortKey(RectTransform minigame) { Minigames.Minigame mg = EventCaller.instance.GetMinigame(minigame.name); - if (mg.displayName.StartsWith("the ", System.StringComparison.InvariantCultureIgnoreCase)) + if (mg.displayName.StartsWith("the ", StringComparison.InvariantCultureIgnoreCase)) return mg.displayName[4..]; else return mg.displayName; @@ -413,7 +405,13 @@ namespace HeavenStudio.Editor public void Drag() { - if (Conductor.instance.NotStopped() || Editor.instance.inAuthorativeMenu) return; + Debug.Log("Hmmm"); + if (Conductor.instance.NotStopped() || Editor.instance.inAuthorativeMenu) { + if (Conductor.instance.isPaused) { + Debug.Log("it's fuckin paused dude"); + } + return; + } if (Timeline.instance.MouseInTimeline && dragTimes < 1) { diff --git a/Assets/Scripts/LevelEditor/Selections.cs b/Assets/Scripts/LevelEditor/Selections.cs index ab4837273..f023a20be 100644 --- a/Assets/Scripts/LevelEditor/Selections.cs +++ b/Assets/Scripts/LevelEditor/Selections.cs @@ -4,6 +4,7 @@ using System.Linq; using UnityEngine; using HeavenStudio.Editor.Track; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor { @@ -31,7 +32,7 @@ namespace HeavenStudio.Editor */ if (Editor.instance.isShortcutsEnabled) { - if (Input.GetKey(KeyCode.LeftControl)) + if (Input.GetKey(InputKeyboard.MODIFIER)) if (Input.GetKeyDown(KeyCode.A)) SelectAll(); } diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs index e04971361..04da2cefd 100644 --- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs @@ -9,6 +9,7 @@ using HeavenStudio.Util; using TMPro; using Jukebox; using Jukebox.Legacy; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor.Track { @@ -155,7 +156,7 @@ namespace HeavenStudio.Editor.Track { lastTempo *= 2f; } - else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) + else if (Input.GetKey(InputKeyboard.MODIFIER) || Input.GetKey(KeyCode.RightCommand)) { lastTempo /= 2f; } diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs index e327263d2..32f3099e4 100644 --- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs +++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs @@ -7,6 +7,7 @@ using TMPro; using DG.Tweening; using Jukebox; using Jukebox.Legacy; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor.Track { @@ -30,8 +31,9 @@ namespace HeavenStudio.Editor.Track if (Input.GetKey(KeyCode.LeftShift)) newTempo *= 5f; - if (Input.GetKey(KeyCode.LeftControl)) + if (Input.GetKey(InputKeyboard.MODIFIER)) { newTempo *= 0.01f; + } if (newTempo != 0) { diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/VolumeTimelineObj.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/VolumeTimelineObj.cs index 90f5fb837..49b2f5fbe 100644 --- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/VolumeTimelineObj.cs +++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/VolumeTimelineObj.cs @@ -7,6 +7,7 @@ using TMPro; using DG.Tweening; using Jukebox; using Jukebox.Legacy; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor.Track { @@ -30,9 +31,9 @@ namespace HeavenStudio.Editor.Track if (Input.GetKey(KeyCode.LeftShift)) newVolume *= 5f; - if (Input.GetKey(KeyCode.LeftControl)) + if (Input.GetKey(InputKeyboard.MODIFIER)) { newVolume *= 0.01f; - + } if (newVolume != 0) { SetVolume(chartEntity["volume"] + newVolume); diff --git a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs index c5cb5a5a4..48b05c16c 100644 --- a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs @@ -12,6 +12,7 @@ using System.Linq; using BurstLinq; using HeavenStudio.Util; +using HeavenStudio.InputSystem; namespace HeavenStudio.Editor.Track { @@ -474,11 +475,11 @@ namespace HeavenStudio.Editor.Track float moveSpeed = 750; if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) moveSpeed *= 6; - if (Input.GetKey(KeyCode.LeftArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A))) + if (Input.GetKey(InputKeyboard.MODIFIER) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A))) { RealTimelineContent.transform.localPosition += new Vector3(moveSpeed * Time.deltaTime, 0); } - else if (Input.GetKey(KeyCode.RightArrow) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D))) + else if (Input.GetKey(InputKeyboard.MODIFIER) || (!Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D))) { RealTimelineContent.transform.localPosition += new Vector3(-moveSpeed * Time.deltaTime, 0); } diff --git a/Assets/Scripts/LevelEditor/Timeline/TimelineZoom.cs b/Assets/Scripts/LevelEditor/Timeline/TimelineZoom.cs index 1dd298031..32bfe2657 100644 --- a/Assets/Scripts/LevelEditor/Timeline/TimelineZoom.cs +++ b/Assets/Scripts/LevelEditor/Timeline/TimelineZoom.cs @@ -1,3 +1,4 @@ +using HeavenStudio.InputSystem; using UnityEngine; using UnityEngine.EventSystems; @@ -49,13 +50,13 @@ namespace HeavenStudio.Editor.Track } if (scrollDeltaY > 0) { - if (Input.GetKey(KeyCode.LeftControl)) { + if (Input.GetKey(InputKeyboard.MODIFIER)) { ZoomInVertical(); } else { ZoomInHorizontal(); } } else if (scrollDeltaY < 0) { - if (Input.GetKey(KeyCode.LeftControl)) { + if (Input.GetKey(InputKeyboard.MODIFIER)) { ZoomOutVertical(); } else { ZoomOutHorizontal(); diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs index dce38946e..2dbfd6f26 100644 --- a/Assets/Scripts/Minigames.cs +++ b/Assets/Scripts/Minigames.cs @@ -197,9 +197,9 @@ namespace HeavenStudio public static RiqBeatmapData? PreProcessBeatmap(string version, RiqBeatmapData data) { Debug.Log("Preprocessing beatmap..."); - Minigames.Minigame game; - Minigames.GameAction action; - System.Type type, pType; + Minigame game; + GameAction action; + Type type, pType; if (EventCaller.instance != null) { string[] split; @@ -212,7 +212,7 @@ namespace HeavenStudio if (game == null) { Debug.LogWarning($"Unknown game {gameName} found in remix.json! Adding game..."); - game = new Minigames.Minigame(gameName, gameName.DisplayName() + " \n[inferred from remix.json]", "", false, false, new List(), inferred: true); + game = new Minigame(gameName, gameName.DisplayName() + " \n[inferred from remix.json]", "", false, false, new List(), inferred: true); EventCaller.instance.minigames.Add(gameName, game); if (Editor.Editor.instance != null) Editor.Editor.instance.AddIcon(game); @@ -221,7 +221,7 @@ namespace HeavenStudio if (action == null) { Debug.LogWarning($"Unknown action {gameName}/{actionName} found in remix.json! Adding action..."); - var parameters = new List(); + var parameters = new List(); foreach (var item in e.dynamicData) { Debug.Log($"k: {item.Key}, v: {item.Value}"); @@ -234,9 +234,9 @@ namespace HeavenStudio value = new EntityTypes.Integer(int.MinValue, int.MaxValue, (int)value); else if (value.GetType() == typeof(double)) value = new EntityTypes.Float(float.NegativeInfinity, float.PositiveInfinity, (float)value); - parameters.Add(new Minigames.Param(item.Key, value, item.Key.DisplayName(), "[inferred from remix.json]")); + parameters.Add(new Param(item.Key, value, item.Key.DisplayName(), "[inferred from remix.json]")); } - action = new Minigames.GameAction(actionName, actionName.DisplayName(), e.length, true, parameters); + action = new GameAction(actionName, actionName.DisplayName(), "Events", e.length, true, parameters); game.actions.Add(action); } @@ -250,12 +250,14 @@ namespace HeavenStudio if (!e.dynamicData.ContainsKey(param.propertyName)) { Debug.LogWarning($"Property {param.propertyName} does not exist in the entity's dynamic data! Adding..."); - if (type == typeof(EntityTypes.Integer)) - e.dynamicData.Add(param.propertyName, ((EntityTypes.Integer)param.parameter).val); - else if (type == typeof(EntityTypes.Float)) - e.dynamicData.Add(param.propertyName, ((EntityTypes.Float)param.parameter).val); - else if (type == typeof(EntityTypes.Note)) - e.dynamicData.Add(param.propertyName, ((EntityTypes.Note)param.parameter).val); + if (param.parameter is EntityTypes.Integer intParam) + e.dynamicData.Add(param.propertyName, intParam.val); + if (param.parameter is EntityTypes.Float floatParam) + e.dynamicData.Add(param.propertyName, floatParam.val); + if (param.parameter is EntityTypes.Dropdown ddParam) + e.dynamicData.Add(param.propertyName, new EntityTypes.DropdownObj(ddParam)); + if (param.parameter is EntityTypes.Note noteParam) + e.dynamicData.Add(param.propertyName, noteParam.val); else if (type.IsEnum) e.dynamicData.Add(param.propertyName, (int)param.parameter); else @@ -657,6 +659,7 @@ namespace HeavenStudio { public string actionName; public string displayName; + public string tabName; public EventCallback function = delegate { }; public float defaultLength = 1; public bool resizable = false; @@ -682,11 +685,12 @@ namespace HeavenStudio /// What the block does when the GameManager seeks to this cue for pre-scheduling. /// Prevents the block from being shown in the game list. Block will still function normally if it is in the timeline. /// Priority of this event. Higher priority events will be run first. - public GameAction(string actionName, string displayName, float defaultLength = 1, bool resizable = false, List parameters = null, EventCallback function = null, EventCallback inactiveFunction = null, EventCallback preFunction = null, bool hidden = false, int priority = 0, float preFunctionLength = 2.0f) + public GameAction(string actionName, string displayName, string tabName, float defaultLength = 1, bool resizable = false, List parameters = null, EventCallback function = null, EventCallback inactiveFunction = null, EventCallback preFunction = null, bool hidden = false, int priority = 0, float preFunctionLength = 2.0f) { this.actionName = actionName; - if (displayName == String.Empty) this.displayName = actionName; - else this.displayName = displayName; + this.displayName = string.IsNullOrEmpty(displayName) ? actionName : displayName; + this.tabName = string.IsNullOrEmpty(tabName) ? "Events" : tabName; + this.defaultLength = defaultLength; this.resizable = resizable; this.parameters = parameters; @@ -704,11 +708,12 @@ namespace HeavenStudio /// /// Entity model name /// Name of the block used in the UI - public GameAction(string actionName, string displayName) + /// Name of the tab to be under when spawning events + public GameAction(string actionName, string displayName, string tabName = "") { this.actionName = actionName; - if (displayName == String.Empty) this.displayName = actionName; - else this.displayName = displayName; + this.displayName = string.IsNullOrEmpty(displayName) ? actionName : displayName; + this.tabName = tabName == string.Empty ? "Events" : tabName; // keep it null if it's null } } @@ -762,7 +767,7 @@ namespace HeavenStudio { new Minigame("gameManager", "Game Manager", "", false, true, new List() { - new GameAction("switchGame", "Switch Game", 0.5f, false, + new GameAction("switchGame", "Switch Game", null, 0.5f, false, function: delegate { var e = eventCaller.currentEntity; GameManager.instance.SwitchGame(eventCaller.currentSwitchGame, eventCaller.currentEntity.beat, e["toggle"]); }, parameters: new List() { @@ -770,7 +775,7 @@ namespace HeavenStudio }, inactiveFunction: delegate { var e = eventCaller.currentEntity; GameManager.instance.SwitchGame(eventCaller.currentSwitchGame, eventCaller.currentEntity.beat, e["toggle"]); } ), - new GameAction("end", "End Remix", + new GameAction("end", "End Remix", "", function: delegate { Debug.Log("end"); if (Timeline.instance != null) @@ -779,7 +784,7 @@ namespace HeavenStudio GameManager.instance.Stop(eventCaller.currentEntity.beat); } ), - new GameAction("skill star", "Skill Star", 1f, true) + new GameAction("skill star", "Skill Star", "", 1f, true) { //temp for testing function = delegate { @@ -787,7 +792,7 @@ namespace HeavenStudio Common.SkillStarManager.instance.DoStarIn(e.beat, e.length); } }, - new GameAction("toggle inputs", "Toggle Inputs", 0.5f, true, + new GameAction("toggle inputs", "Toggle Inputs", "", 0.5f, true, new List() { new Param("toggle", true, "Allow Inputs", "Toggle if the player is able to input. Any missed cues while this is disabled will not be counted as a miss and will not break a perfect.") @@ -801,7 +806,7 @@ namespace HeavenStudio new Minigame("countIn", "Count-Ins", "", false, true, new List() { - new GameAction("count-in", "Count-In", 4f, true, + new GameAction("count-in", "Count-In", "Built", 4f, true, new List() { new Param("alt", false, "Alt", "Set the type of sounds to use for the count-in."), @@ -812,7 +817,7 @@ namespace HeavenStudio SoundEffects.CountIn(e.beat, e.length, e["alt"], e["go"]); } ), - new GameAction("4 beat count-in", "4 Beat Count-In", 4f, true, + new GameAction("4 beat count-in", "4 Beat Count-In", "Built", 4f, true, new List() { new Param("type", SoundEffects.CountInType.Normal, "Type", "Set the type of sounds to use for the count-in.") @@ -822,7 +827,7 @@ namespace HeavenStudio SoundEffects.FourBeatCountIn(e.beat, e.length / 4f, e["type"]); } ), - new GameAction("8 beat count-in", "8 Beat Count-In", 8f, true, + new GameAction("8 beat count-in", "8 Beat Count-In", "Built", 8f, true, new List() { new Param("type", SoundEffects.CountInType.Normal, "Type", "Set the type of sounds to use for the count-in.") @@ -832,7 +837,7 @@ namespace HeavenStudio SoundEffects.EightBeatCountIn(e.beat, e.length / 8f, e["type"]); } ), - new GameAction("count", "Count", 1f, false, + new GameAction("count", "Count", "Single", 1f, false, new List() { new Param("type", SoundEffects.CountNumbers.One, "Type", "Set the number to say."), @@ -843,16 +848,16 @@ namespace HeavenStudio SoundEffects.Count(e["type"], e["toggle"]); } ), - new GameAction("cowbell", "Cowbell", + new GameAction("cowbell", "Cowbell", "Single", function: delegate { SoundEffects.Cowbell(); } ), - new GameAction("ready!", "Ready!", 2f, true, + new GameAction("ready!", "Ready!", "Single", 2f, true, function: delegate { var e = eventCaller.currentEntity; SoundEffects.Ready(e.beat, (e.length / 2f)); } ), - new GameAction("and", "And", 0.5f, + new GameAction("and", "And", "Single", 0.5f, function: delegate { SoundEffects.And(); } ), - new GameAction("go!", "Go!", 1f, false, + new GameAction("go!", "Go!", "Single", 1f, false, new List() { new Param("toggle", false, "Alt", "Toggle if the alternate version of this voice line should be used.") @@ -860,26 +865,26 @@ namespace HeavenStudio function: delegate { SoundEffects.Go(eventCaller.currentEntity["toggle"]); } ), - // These are still here for backwards-compatibility but are hidden in the editor - new GameAction("4 beat count-in (alt)", "", 4f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.FourBeatCountIn(e.beat, e.length, 1); }, hidden: true), - new GameAction("4 beat count-in (cowbell)", "", 4f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.FourBeatCountIn(e.beat, e.length, 2); }, hidden: true), - new GameAction("8 beat count-in (alt)", "", 8f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.EightBeatCountIn(e.beat, e.length, 1); }, hidden: true), - new GameAction("8 beat count-in (cowbell)", "", 8f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.EightBeatCountIn(e.beat, e.length, 2); }, hidden: true), + // // These are still here for backwards-compatibility but are hidden in the editor + // new GameAction("4 beat count-in (alt)", "", 4f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.FourBeatCountIn(e.beat, e.length, 1); }, hidden: true), + // new GameAction("4 beat count-in (cowbell)", "", 4f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.FourBeatCountIn(e.beat, e.length, 2); }, hidden: true), + // new GameAction("8 beat count-in (alt)", "", 8f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.EightBeatCountIn(e.beat, e.length, 1); }, hidden: true), + // new GameAction("8 beat count-in (cowbell)", "", 8f, function: delegate { var e = eventCaller.currentEntity; SoundEffects.EightBeatCountIn(e.beat, e.length, 2); }, hidden: true), - new GameAction("one", "", function: delegate { SoundEffects.Count(0, false); }, hidden: true), - new GameAction("two", "", function: delegate { SoundEffects.Count(1, false); }, hidden: true), - new GameAction("three", "", function: delegate { SoundEffects.Count(2, false); }, hidden: true), - new GameAction("four", "", function: delegate { SoundEffects.Count(3, false); }, hidden: true), - new GameAction("one (alt)", "", function: delegate { SoundEffects.Count(0, true); }, hidden: true), - new GameAction("two (alt)", "", function: delegate { SoundEffects.Count(1, true); }, hidden: true), - new GameAction("three (alt)", "", function: delegate { SoundEffects.Count(2, true); }, hidden: true), - new GameAction("four (alt)", "", function: delegate { SoundEffects.Count(3, true); }, hidden: true), - new GameAction("go! (alt)", "", function: delegate { SoundEffects.Go(true); }, hidden: true), + // new GameAction("one", "", function: delegate { SoundEffects.Count(0, false); }, hidden: true), + // new GameAction("two", "", function: delegate { SoundEffects.Count(1, false); }, hidden: true), + // new GameAction("three", "", function: delegate { SoundEffects.Count(2, false); }, hidden: true), + // new GameAction("four", "", function: delegate { SoundEffects.Count(3, false); }, hidden: true), + // new GameAction("one (alt)", "", function: delegate { SoundEffects.Count(0, true); }, hidden: true), + // new GameAction("two (alt)", "", function: delegate { SoundEffects.Count(1, true); }, hidden: true), + // new GameAction("three (alt)", "", function: delegate { SoundEffects.Count(2, true); }, hidden: true), + // new GameAction("four (alt)", "", function: delegate { SoundEffects.Count(3, true); }, hidden: true), + // new GameAction("go! (alt)", "", function: delegate { SoundEffects.Go(true); }, hidden: true), }), new Minigame("vfx", "Visual Effects", "", false, true, new List() { - new GameAction("flash", "Flash/Fade", 1f, true, + new GameAction("flash", "Flash/Fade", "VFX", 1f, true, new List() { new Param("colorA", Color.white, "Start Color", "Set the color at the start of the event."), @@ -892,7 +897,7 @@ namespace HeavenStudio }) } ), - new GameAction("filter", "Filter", 1f, true, + new GameAction("filter", "Filter", "VFX", 1f, true, new List() { new Param("filter", Games.Global.Filter.FilterType.grayscale, "Type", "Set the type of filter to use."), @@ -912,7 +917,7 @@ namespace HeavenStudio }), } ), - new GameAction("move camera", "Move Camera", 1f, true, new List() + new GameAction("move camera", "Move Camera", "Camera", 1f, true, new List() { new Param("valA", new EntityTypes.Float(-50, 50, 0), "Right / Left", "Set the position on the X axis."), new Param("valB", new EntityTypes.Float(-50, 50, 0), "Up / Down", "Set the position on the Y axis."), @@ -921,7 +926,7 @@ namespace HeavenStudio new Param("axis", GameCamera.CameraAxis.All, "Axis", "Set if only a specific axis should be modified." ) } ), - new GameAction("rotate camera", "Rotate Camera", 1f, true, new List() + new GameAction("rotate camera", "Rotate Camera", "Camera", 1f, true, new List() { new Param("valA", new EntityTypes.Integer(-360, 360, 0), "Pitch", "Set the up/down rotation."), new Param("valB", new EntityTypes.Integer(-360, 360, 0), "Yaw", "Set the left/right rotation."), @@ -930,7 +935,7 @@ namespace HeavenStudio new Param("axis", GameCamera.CameraAxis.All, "Axis", "Set if only a specific axis should be modified." ) } ), - new GameAction("pan view", "Pan Viewport", 1f, true, new List() + new GameAction("pan view", "Pan Viewport", "Camera", 1f, true, new List() { new Param("valA", new EntityTypes.Float(-50, 50, 0), "Right / Left", "Set the position on the X axis."), new Param("valB", new EntityTypes.Float(-50, 50, 0), "Up / Down", "Set the position on the Y axis."), @@ -938,13 +943,13 @@ namespace HeavenStudio new Param("axis", StaticCamera.ViewAxis.All, "Axis", "Set if only a specific axis should be modified." ) } ), - new GameAction("rotate view", "Rotate Viewport", 1f, true, new List() + new GameAction("rotate view", "Rotate Viewport", "Camera", 1f, true, new List() { new Param("valA", new EntityTypes.Float(-360, 360, 0), "Rotation", "Set the clockwise/counterclockwise rotation."), new Param("ease", Util.EasingFunction.Ease.Linear, "Ease", "Set the easing of the action."), } ), - new GameAction("scale view", "Scale Viewport", 1f, true, new List() + new GameAction("scale view", "Scale Viewport", "Camera", 1f, true, new List() { new Param("valA", new EntityTypes.Float(-50f, 50, 1), "Width", "Set the width of the viewport."), new Param("valB", new EntityTypes.Float(-50f, 50, 1), "Height", "Set the height of the viewport."), @@ -952,7 +957,7 @@ namespace HeavenStudio new Param("axis", StaticCamera.ViewAxis.All, "Axis", "Set if only a specific axis should be modified." ) } ), - new("stretch camera", "Stretch Camera") + new("stretch camera", "Stretch Camera", "Camera") { resizable = true, parameters = new() @@ -968,7 +973,7 @@ namespace HeavenStudio new Param("axis", GameCamera.CameraAxis.All, "Axis", "Set if only a specific axis should be modified.") } }, - new GameAction("fitScreen", "Force Game Stretching To Window") + new GameAction("fitScreen", "Force Game Stretching To Window", "Camera") { defaultLength = 0.5f, parameters = new() @@ -976,7 +981,7 @@ namespace HeavenStudio new("enable", true, "Enabled", "Toggle if the game should be forced to stretch to the window size, removing the letterbox.") } }, - new GameAction("screen shake", "Screen Shake", 1f, true, + new GameAction("screen shake", "Screen Shake", "Camera", 1f, true, new List() { new Param("easedA", new EntityTypes.Float(0, 10, 0), "Start Horizontal Intensity", "Set the horizontal intensity of the screen shake at the start of the event."), @@ -989,7 +994,7 @@ namespace HeavenStudio }), } ), - new GameAction("display textbox", "Display Textbox", 1f, true, new List() + new GameAction("display textbox", "Display Textbox", "Text", 1f, true, new List() { new Param("text1", "", "Text", "Set the text to display in the textbox. Rich text is supported."), new Param("type", Games.Global.Textbox.TextboxAnchor.TopMiddle, "Anchor", "Set where to anchor the textbox."), @@ -997,7 +1002,7 @@ namespace HeavenStudio new Param("valB", new EntityTypes.Float(0.5f, 8, 1), "Height", "Set the height of the textbox.") } ), - new GameAction("display open captions", "Display Open Captions", 1f, true, + new GameAction("display open captions", "Display Open Captions", "Text", 1f, true, new List() { new Param("text1", "", "Text", "Set the text to display in the captions. Rich text is supported."), @@ -1006,7 +1011,7 @@ namespace HeavenStudio new Param("valB", new EntityTypes.Float(0.5f, 8, 1), "Height", "Set the height of the captions.") } ), - new GameAction("display closed captions", "Display Closed Captions", 1f, true, + new GameAction("display closed captions", "Display Closed Captions", "Text", 1f, true, new List() { new Param("text1", "", "Text", "Set the text to display in the captions. Rich text is supported."), @@ -1014,7 +1019,7 @@ namespace HeavenStudio new Param("valA", new EntityTypes.Float(0.5f, 4, 1), "Height", "Set the height of the captions.") } ), - new GameAction("display song artist", "Display Song Info", 1f, true, + new GameAction("display song artist", "Display Song Info", "Text", 1f, true, new List() { new Param("text1", "", "Title", "Set the text to display in the upper label. Rich text is supported."), @@ -1023,7 +1028,7 @@ namespace HeavenStudio new Param("instantOff", false, "Instant Hide", "Toggle if the slide-out animation should be skipped."), } ), - new GameAction("camera background color", "Camera Background Color", 1, true, new List() + new GameAction("camera background color", "Camera Background Color", "Camera", 1, true, new List() { new Param("color", Color.black, "Start Color", "Set the color at the start of the event."), new Param("color2", Color.black, "End Color", "Set the color at the end of the event."), @@ -1032,7 +1037,7 @@ namespace HeavenStudio ), // Post Processing VFX - new GameAction("vignette", "Vignette") + new GameAction("vignette", "Vignette", "VFX") { resizable = true, parameters = new() @@ -1056,7 +1061,7 @@ namespace HeavenStudio }), } }, - new GameAction("cabb", "Chromatic Aberration") + new GameAction("cabb", "Chromatic Aberration", "VFX") { resizable = true, parameters = new() @@ -1069,7 +1074,7 @@ namespace HeavenStudio }), } }, - new GameAction("bloom", "Bloom") + new GameAction("bloom", "Bloom", "VFX") { resizable = true, parameters = new() @@ -1095,7 +1100,7 @@ namespace HeavenStudio }), } }, - new GameAction("lensD", "Lens Distortion") + new GameAction("lensD", "Lens Distortion", "VFX") { resizable = true, parameters = new() @@ -1114,7 +1119,7 @@ namespace HeavenStudio }), } }, - new GameAction("grain", "Grain") + new GameAction("grain", "Grain", "VFX") { resizable = true, parameters = new() @@ -1134,7 +1139,7 @@ namespace HeavenStudio } }, - new GameAction("colorGrading", "Color Grading") + new GameAction("colorGrading", "Color Grading", "VFX") { resizable = true, parameters = new() @@ -1167,7 +1172,7 @@ namespace HeavenStudio } }, - new GameAction("gaussBlur", "Gaussian Blur") + new GameAction("gaussBlur", "Gaussian Blur", "VFX") { resizable = true, parameters = new() @@ -1182,7 +1187,7 @@ namespace HeavenStudio } }, - new GameAction("retroTv", "Retro TV") + new GameAction("retroTv", "Retro TV", "VFX") { resizable = true, parameters = new() @@ -1206,7 +1211,7 @@ namespace HeavenStudio } }, - new GameAction("scanJitter", "Scan Line Jitter") + new GameAction("scanJitter", "Scan Line Jitter", "VFX") { resizable = true, parameters = new() @@ -1221,7 +1226,7 @@ namespace HeavenStudio } }, - new GameAction("analogNoise", "Analog Noise") + new GameAction("analogNoise", "Analog Noise", "VFX") { resizable = true, parameters = new() @@ -1242,7 +1247,7 @@ namespace HeavenStudio } }, - new GameAction("screenJump", "Screen Jump") + new GameAction("screenJump", "Screen Jump", "VFX") { resizable = true, parameters = new() @@ -1257,7 +1262,7 @@ namespace HeavenStudio } }, - new GameAction("sobelNeon", "Neon") + new GameAction("sobelNeon", "Neon", "VFX") { resizable = true, parameters = new() @@ -1284,7 +1289,7 @@ namespace HeavenStudio }, - new GameAction("screenTiling", "Tile Screen") + new GameAction("screenTiling", "Tile Screen", "VFX") { resizable = true, parameters = new() @@ -1300,7 +1305,7 @@ namespace HeavenStudio }), } }, - new GameAction("scrollTiles", "Scroll Tiles") + new GameAction("scrollTiles", "Scroll Tiles", "VFX") { resizable = true, parameters = new() @@ -1322,7 +1327,7 @@ namespace HeavenStudio new Minigame("advanced", "Advanced", "", false, true, new List() { - new GameAction("play animation", "Play Animation", 0.5f, false, + new GameAction("play animation", "Play Animation", "Play", 0.5f, false, new List() { new Param("getAnimators", new EntityTypes.Button("No Game", e => { @@ -1377,7 +1382,7 @@ namespace HeavenStudio GameManager.instance.PlayAnimationArbitrary(e["animator"].CurrentValue, e["animation"].CurrentValue, e["scale"]); } ), - new GameAction("play sfx", "Play SFX", 0.5f, true, + new GameAction("play sfx", "Play SFX", "Play", 0.5f, true, new List() { new Param("game", new EntityTypes.Dropdown(), "Which Game", "Specify the game's sfx to play. An empty input will play global sfx."),