From 54de98b0fa97ed7f8be10cae94a88090bace97f1 Mon Sep 17 00:00:00 2001 From: SoulliesOfficial <77235731+SoulliesOfficial@users.noreply.github.com> Date: Thu, 20 Mar 2025 19:30:42 -0400 Subject: [PATCH] =?UTF-8?q?=E5=8F=98=E9=87=8F=E6=A8=A1=E5=9D=97=EF=BC=9BEl?= =?UTF-8?q?ement=E5=90=AF=E7=94=A8=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Prefabs/BasePrefabsCollection.asset | 2 + .../Elements/Composite/InputFieldUnit.prefab | 2 +- .../Composite/StringIntPairUnit.prefab | 1344 +++++++++++++++++ .../Composite/StringIntPairUnit.prefab.meta | 7 + .../Composite/DynamicUIInputFieldUnit.cs | 1 - .../Composite/DynamicUIStringIntPairUnit.cs | 35 + .../DynamicUIStringIntPairUnit.cs.meta | 11 + .../Inspector/CompositeParameterWindow.cs | 48 +- .../DynamicUI/Inspector/IHaveInspection.cs | 5 +- Assets/Scripts/DynamicUI/MovableWindow.cs | 2 + .../Base/GeneralSubmodules/EffectSubmodule.cs | 11 +- .../GeneralEffects/EnableControlEffect.cs | 124 ++ .../EnableControlEffect.cs.meta | 11 + .../GeneralEffects/SetIntegerEffect.cs | 87 ++ .../GeneralEffects/SetIntegerEffect.cs.meta | 11 + .../GeneralEffects/TimeEffectsCollection.cs | 1 + .../GameElements/GlobalElements.meta | 8 + .../BackgroundSetter.cs | 94 +- .../BackgroundSetter.cs.meta | 0 .../GlobalElements/VariablesContainer.cs | 111 ++ .../GlobalElements/VariablesContainer.cs.meta | 11 + .../Notes/NoteObjects/NoteBase.cs | 2 + .../Scripts/Manager/BasePrefabsCollection.cs | 1 + Assets/Scripts/Manager/EditorManager.cs | 9 + Assets/Scripts/Manager/OperationManager.cs | 8 +- .../Projects/Terminal/Beatmap.json | 74 + 26 files changed, 1976 insertions(+), 44 deletions(-) create mode 100644 Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab create mode 100644 Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab.meta create mode 100644 Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs create mode 100644 Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs.meta create mode 100644 Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs create mode 100644 Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs.meta create mode 100644 Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs create mode 100644 Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs.meta create mode 100644 Assets/Scripts/EditorGame/GameElements/GlobalElements.meta rename Assets/Scripts/EditorGame/GameElements/{EnvironmentObjects => GlobalElements}/BackgroundSetter.cs (63%) rename Assets/Scripts/EditorGame/GameElements/{EnvironmentObjects => GlobalElements}/BackgroundSetter.cs.meta (100%) create mode 100644 Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs create mode 100644 Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs.meta diff --git a/Assets/Prefabs/BasePrefabsCollection.asset b/Assets/Prefabs/BasePrefabsCollection.asset index 0a251338..e781ee38 100644 --- a/Assets/Prefabs/BasePrefabsCollection.asset +++ b/Assets/Prefabs/BasePrefabsCollection.asset @@ -100,6 +100,8 @@ MonoBehaviour: type: 3} customCurveWrapModeUnit: {fileID: 4259592601424320053, guid: 46049d3ff4dad4821bedf56d617ca43d, type: 3} + stringIntPairUnit: {fileID: 4259592601424320053, guid: 242457327b3d44e9db4ad431bca454c6, + type: 3} graphicalFlexibleFloatWindow: {fileID: 976582014086353606, guid: 6a0b7de67a0025a44977db34773ec53c, type: 3} defaultBackground: {fileID: 21300000, guid: fc6c02e75b66345c29e8a25e2e2bda9c, type: 3} diff --git a/Assets/Prefabs/DynamicUI/Elements/Composite/InputFieldUnit.prefab b/Assets/Prefabs/DynamicUI/Elements/Composite/InputFieldUnit.prefab index 652a8108..962644f1 100644 --- a/Assets/Prefabs/DynamicUI/Elements/Composite/InputFieldUnit.prefab +++ b/Assets/Prefabs/DynamicUI/Elements/Composite/InputFieldUnit.prefab @@ -516,7 +516,7 @@ MonoBehaviour: m_EditorClassIdentifier: compositeParameterWindow: {fileID: 0} removeButton: {fileID: 912609835647631034} - stringInputField: {fileID: 2944176489136536419} + inputField: {fileID: 2944176489136536419} --- !u!1 &4421562747241209883 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab b/Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab new file mode 100644 index 00000000..94ce5d4f --- /dev/null +++ b/Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab @@ -0,0 +1,1344 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &212014556473450237 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5609799793774807629} + - component: {fileID: 5344402362771977772} + - component: {fileID: 871011837536797899} + - component: {fileID: 5782493454778412628} + m_Layer: 5 + m_Name: InputField (TMP) (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5609799793774807629 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212014556473450237} + 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: + - {fileID: 354551466666157161} + m_Father: {fileID: 3293741353593090497} + 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: 100, y: 0} + m_SizeDelta: {x: 100, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5344402362771977772 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212014556473450237} + m_CullTransparentMesh: 1 +--- !u!114 &871011837536797899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212014556473450237} + 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: 1, g: 1, b: 1, a: 1} + 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: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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!114 &5782493454778412628 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212014556473450237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 871011837536797899} + m_TextViewport: {fileID: 354551466666157161} + m_TextComponent: {fileID: 8449855526810682095} + m_Placeholder: {fileID: 9075724505701020271} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &2711967451113446164 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7714908464223831977} + - component: {fileID: 5145023756108790107} + - component: {fileID: 5967472751040280357} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7714908464223831977 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2711967451113446164} + 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: 8170277298609262468} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5145023756108790107 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2711967451113446164} + m_CullTransparentMesh: 1 +--- !u!114 &5967472751040280357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2711967451113446164} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Del + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2717030685201888368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1869355374050028639} + - component: {fileID: 8514023445642076534} + - component: {fileID: 9075724505701020271} + - component: {fileID: 30001522610211603} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1869355374050028639 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2717030685201888368} + 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: 354551466666157161} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8514023445642076534 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2717030685201888368} + m_CullTransparentMesh: 1 +--- !u!114 &9075724505701020271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2717030685201888368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter text... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &30001522610211603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2717030685201888368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &3551056828837948860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2047969805760758725} + - component: {fileID: 93384146751404154} + - component: {fileID: 4332982135153255073} + - component: {fileID: 2944176489136536419} + m_Layer: 5 + m_Name: InputField (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2047969805760758725 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3551056828837948860} + 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: + - {fileID: 3394599716781288918} + m_Father: {fileID: 3293741353593090497} + 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: -119.99999, y: 0} + m_SizeDelta: {x: 240, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &93384146751404154 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3551056828837948860} + m_CullTransparentMesh: 1 +--- !u!114 &4332982135153255073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3551056828837948860} + 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: 1, g: 1, b: 1, a: 1} + 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: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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!114 &2944176489136536419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3551056828837948860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4332982135153255073} + m_TextViewport: {fileID: 3394599716781288918} + m_TextComponent: {fileID: 7690171638868425400} + m_Placeholder: {fileID: 8625122601240492421} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!1 &3901728204246151022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1334193276192568318} + - component: {fileID: 6546938958927478753} + - component: {fileID: 8625122601240492421} + - component: {fileID: 6217558024793849739} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1334193276192568318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901728204246151022} + 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: 3394599716781288918} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6546938958927478753 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901728204246151022} + m_CullTransparentMesh: 1 +--- !u!114 &8625122601240492421 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901728204246151022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter text... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24.15 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &6217558024793849739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3901728204246151022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &3992682784278731230 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5030466365138004664} + - component: {fileID: 6727852922299981386} + - component: {fileID: 8449855526810682095} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5030466365138004664 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3992682784278731230} + 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: 354551466666157161} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6727852922299981386 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3992682784278731230} + m_CullTransparentMesh: 1 +--- !u!114 &8449855526810682095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3992682784278731230} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4259592601424320053 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3293741353593090497} + - component: {fileID: 7729236586028906151} + m_Layer: 5 + m_Name: StringIntPairUnit + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3293741353593090497 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4259592601424320053} + 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: + - {fileID: 2047969805760758725} + - {fileID: 5609799793774807629} + - {fileID: 8170277298609262468} + m_Father: {fileID: 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_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &7729236586028906151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4259592601424320053} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c25331c63f94545888c2f71a36d239ec, type: 3} + m_Name: + m_EditorClassIdentifier: + compositeParameterWindow: {fileID: 0} + removeButton: {fileID: 912609835647631034} + keyInputField: {fileID: 2944176489136536419} + valueInputField: {fileID: 5782493454778412628} +--- !u!1 &4421562747241209883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8836011024305959625} + - component: {fileID: 5074318044607185102} + - component: {fileID: 7690171638868425400} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8836011024305959625 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4421562747241209883} + 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: 3394599716781288918} + 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5074318044607185102 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4421562747241209883} + m_CullTransparentMesh: 1 +--- !u!114 &7690171638868425400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4421562747241209883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 72 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &4547045404086189632 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 354551466666157161} + - component: {fileID: 6665551763869936365} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &354551466666157161 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4547045404086189632} + 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: + - {fileID: 1869355374050028639} + - {fileID: 5030466365138004664} + m_Father: {fileID: 5609799793774807629} + 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: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6665551763869936365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4547045404086189632} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &5574127344164461865 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3394599716781288918} + - component: {fileID: 1627351685873884114} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3394599716781288918 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5574127344164461865} + 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: + - {fileID: 1334193276192568318} + - {fileID: 8836011024305959625} + m_Father: {fileID: 2047969805760758725} + 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: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1627351685873884114 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5574127344164461865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} +--- !u!1 &7364243904719608872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8170277298609262468} + - component: {fileID: 4224620927663903161} + - component: {fileID: 3183801560891420552} + - component: {fileID: 912609835647631034} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8170277298609262468 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7364243904719608872} + 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: + - {fileID: 7714908464223831977} + m_Father: {fileID: 3293741353593090497} + 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: 225, y: 0.000022888} + m_SizeDelta: {x: 40, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4224620927663903161 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7364243904719608872} + m_CullTransparentMesh: 1 +--- !u!114 &3183801560891420552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7364243904719608872} + 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: 1, g: 1, b: 1, a: 1} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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!114 &912609835647631034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7364243904719608872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3183801560891420552} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab.meta b/Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab.meta new file mode 100644 index 00000000..ed838312 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/Elements/Composite/StringIntPairUnit.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 242457327b3d44e9db4ad431bca454c6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIInputFieldUnit.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIInputFieldUnit.cs index bd14a215..c8643d03 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIInputFieldUnit.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIInputFieldUnit.cs @@ -10,7 +10,6 @@ namespace Ichni.Editor { public class DynamicUIInputFieldUnit : DynamicUICompositeUnit { - [FormerlySerializedAs("stringInputField")] public TMP_InputField inputField; public override void SetUnit(CompositeParameterWindow window, object itemContent) diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs new file mode 100644 index 00000000..bd0dc205 --- /dev/null +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +namespace Ichni.Editor +{ + public class DynamicUIStringIntPairUnit : DynamicUICompositeUnit + { + public TMP_InputField keyInputField, valueInputField; + + public override void SetUnit(CompositeParameterWindow window, object itemContent) + { + var pair = (KeyValuePair) itemContent; + compositeParameterWindow = window; + + keyInputField.text = pair.Key; + valueInputField.text = pair.Value.ToString(); + + keyInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters()); + valueInputField.onEndEdit.AddListener(_ => compositeParameterWindow.ApplyParameters()); + + removeButton.onClick.AddListener(() => + { + compositeParameterWindow.RemoveUnit(this); + compositeParameterWindow.ApplyParameters(); + }); + } + + public KeyValuePair GetValue() + { + return new KeyValuePair(keyInputField.text, int.Parse(valueInputField.text)); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs.meta b/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs.meta new file mode 100644 index 00000000..b1728635 --- /dev/null +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Composite/DynamicUIStringIntPairUnit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c25331c63f94545888c2f71a36d239ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs b/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs index e0f189df..5e2cbecd 100644 --- a/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs +++ b/Assets/Scripts/DynamicUI/Inspector/CompositeParameterWindow.cs @@ -34,6 +34,11 @@ namespace Ichni.Editor unitList.Remove(unit); Destroy(unit.gameObject); } + + public void AddListenerFunction(UnityAction action) + { + onQuit = action; + } } public partial class CompositeParameterWindow @@ -254,12 +259,45 @@ namespace Ichni.Editor connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, newCurve); }; } - - public void Quit() + + public void SetAsStringIntDictionary() { - ApplyParameters(); - //StartCoroutine(WindowAnim.HidePanel(gameObject, true)); - Destroy(gameObject); + //生成Unit + void GenerateUnit(KeyValuePair content) + { + DynamicUIStringIntPairUnit unit = Instantiate(unitPrefab, windowRect).GetComponent(); + unitList.Add(unit); + unit.SetUnit(this, content); + } + + unitPrefab = EditorManager.instance.basePrefabs.stringIntPairUnit; + + Dictionary dictionary = connectedBaseElement.GetType().GetField(parameterName).GetValue(connectedBaseElement) as Dictionary; + foreach (var pair in dictionary) + { + GenerateUnit(pair); + } + + addNewUnitButton.GetComponent().SetAsLastSibling(); + + //为添加新的Unit的按钮设置点击事件 + addNewUnitButton.onClick.AddListener(() => + { + GenerateUnit(new KeyValuePair("New Variable", 0)); + addNewUnitButton.GetComponent().SetAsLastSibling(); + }); + + //将当前所有Unit的值应用到对应的变量中 + ApplyParameters = () => + { + Dictionary dictionaryList = new Dictionary(); + foreach (var unit in unitList) + { + KeyValuePair pair = (unit as DynamicUIStringIntPairUnit).GetValue(); + dictionaryList.Add(pair.Key, pair.Value); + } + connectedBaseElement.GetType().GetField(parameterName).SetValue(connectedBaseElement, dictionaryList); + }; } } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs b/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs index 58cde76c..fb7ead80 100644 --- a/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs +++ b/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using Ichni; @@ -5,6 +6,7 @@ using Ichni.Editor; using Ichni.RhythmGame; using UnityEngine; using UnityEngine.Events; +using Object = UnityEngine.Object; namespace Ichni.Editor { @@ -154,8 +156,7 @@ namespace Ichni.Editor return hintText; } - public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, - System.Func action) + public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, Func action) { DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect) .GetComponent(); diff --git a/Assets/Scripts/DynamicUI/MovableWindow.cs b/Assets/Scripts/DynamicUI/MovableWindow.cs index e380b8e6..9746d6ff 100644 --- a/Assets/Scripts/DynamicUI/MovableWindow.cs +++ b/Assets/Scripts/DynamicUI/MovableWindow.cs @@ -14,6 +14,7 @@ namespace Ichni.Editor public Button closeButton; public TMP_Text title; public UnityAction onCloseWindow; + public UnityAction onQuit; protected void InitializeWindow(string titleText, UnityAction closeAction = null) { @@ -22,6 +23,7 @@ namespace Ichni.Editor closeButton.onClick.AddListener(() => { onCloseWindow?.Invoke(); + onQuit?.Invoke(); Destroy(gameObject); }); } diff --git a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs index e66ae164..ea0d6fff 100644 --- a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/EffectSubmodule.cs @@ -20,9 +20,11 @@ namespace Ichni.RhythmGame { effectCollection = new Dictionary>(); - if (preset == EffectSubmodulePreset.Default) //对于默认的效果次级模块,只有Default效果集合 + if (preset == EffectSubmodulePreset.Default) //对于默认的效果次级模块,有Prior、Default、Late三个效果集合 { + effectCollection.Add("Prior", new List()); effectCollection.Add("Default", new List()); + effectCollection.Add("Late", new List()); } else if (preset == EffectSubmodulePreset.Note) //对于Note的效果次级模块,在Note的不同状态下有独立的效果集合 { @@ -33,6 +35,7 @@ namespace Ichni.RhythmGame effectCollection.Add("Good", new List()); effectCollection.Add("Bad", new List()); effectCollection.Add("Miss", new List()); + effectCollection.Add("AfterJudge", new List()); } (attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this; @@ -79,7 +82,7 @@ namespace Ichni.RhythmGame var effectNameInputField = inspector.GenerateInputField(container, "Effect Name"); var addEffectButton = inspector.GenerateButton(this, container, "Add Effect", () => { - if (EffectSubmodule.EffectCollection.TryGetValue(effectNameInputField.GetValue(), out var newEffect)) + if (EffectCollection.TryGetValue(effectNameInputField.GetValue(), out var newEffect)) { effectCollection[effect.Key].Add(newEffect); inspectorMain.SetInspector(attachedGameElement); @@ -107,7 +110,9 @@ namespace Ichni.RhythmGame { "Bloom", new BloomEffect(1, 2, CustomCurvePresets.Parabolic(1,0,2)) }, { "CameraShake", new CameraShakeEffect(1, 50, 1, 1, 1) }, { "ChromaticAberration", new ChromaticAberrationEffect(1, 1, CustomCurvePresets.Parabolic(1,0,1)) }, - { "Vignette", new VignetteEffect(1, 1, 0.4f, Color.black, CustomCurvePresets.Parabolic(1,0,1)) } + { "Vignette", new VignetteEffect(1, 1, 0.4f, Color.black, CustomCurvePresets.Parabolic(1,0,1)) }, + { "SetInteger", new SetIntegerEffect("New Variable", 0, false, 0, 1) }, + { "EnableControl", new EnableControlEffect(null, "New Variable", 0, false, "") }, }; } diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs new file mode 100644 index 00000000..eda39b9d --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Ichni.Editor; +using Ichni.RhythmGame.Beatmap; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public class EnableControlEffect : EffectBase + { + public GameElement connectedGameElement; + public string connectedVariableName; + public int enableValue; + + public bool useExpression; + public string expression; + + public EnableControlEffect(GameElement connectedGameElement, string connectedVariableName, + int enableValue, bool useExpression, string expression) + { + this.effectTime = 0; + this.connectedGameElement = connectedGameElement; + this.connectedVariableName = connectedVariableName; + this.enableValue = enableValue; + this.useExpression = useExpression; + this.expression = expression; + } + + public override void Recover() + { + if (connectedGameElement == null) return; + + connectedGameElement.gameObject.SetActive(false); + } + + public override void Adjust() + { + if (connectedGameElement == null) return; + + if (!useExpression) + { + int value = EditorManager.instance.variablesContainer.GetVariable(connectedVariableName); + connectedGameElement.gameObject.SetActive(value == enableValue); + } + else + { + + } + } + + public override EffectBase_BM ConvertToBM() + { + return new EnableControlEffect_BM(connectedGameElement.elementGuid, + connectedVariableName, enableValue, useExpression, expression); + } + + public override void SetUpInspector() + { + IHaveInspection inspector = EditorManager.instance.uiManager.inspector; + Inspector inspectorMain = EditorManager.instance.uiManager.inspector; + + var container = inspector.GenerateContainer("Enable Control"); + var connectedGameElementInputField = inspector.GenerateInputField(container, "Game Element Name"); + var connectGameElementButton = inspector.GenerateButton(this, container, "Connect Game Element", () => + { + connectedGameElement = EditorManager.instance.beatmapContainer.gameElementList + .First(e => e.elementName == connectedGameElementInputField.GetValue()); + + if (connectedGameElement == null) + { + LogWindow.Log("Game Element not found.", Color.red); + } + + inspectorMain.SetInspector(EditorManager.instance.operationManager.currentSelectedElement); + }); + + string ShowConnection() => connectedGameElement == null ? "No Game Element Connected" : "Connected With: " + connectedGameElement.elementName; + var connectHintText = inspector.GenerateHintText(this, container, ShowConnection); + + var connectedVariableNameInputField = inspector.GenerateInputField(this, container, "Connected Variable Name", nameof(connectedVariableName)); + var enableValueInputField = inspector.GenerateInputField(this, container, "Enable Value", nameof(enableValue)); + + var useExpressionToggle = inspector.GenerateToggle(this, container, "Use Expression", nameof(useExpression)); + useExpressionToggle.toggle.interactable = false; + var expressionInputField = inspector.GenerateInputField(this, container, "Expression", nameof(expression)); + expressionInputField.inputField.interactable = false; + } + } + + namespace Beatmap + { + public class EnableControlEffect_BM : EffectBase_BM + { + public Guid connectedGameElementGuid; + public string connectedVariableName; + public int enableValue; + public bool useExpression; + public string expression; + + public EnableControlEffect_BM() + { + + } + + public EnableControlEffect_BM(Guid connectedGameElementGuid, string connectedVariableName, + int enableValue, bool useExpression, string expression) + { + this.connectedGameElementGuid = connectedGameElementGuid; + this.connectedVariableName = connectedVariableName; + this.enableValue = enableValue; + this.useExpression = useExpression; + this.expression = expression; + } + + public override EffectBase ConvertToGameType(GameElement attachedGameElement) + { + return new EnableControlEffect(GameElement_BM.GetElement(connectedGameElementGuid), connectedVariableName, + enableValue, useExpression, expression); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs.meta new file mode 100644 index 00000000..d5b5726c --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/EnableControlEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1117b38637ccd4eae86b05caa2160ab5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs new file mode 100644 index 00000000..9d60299d --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs @@ -0,0 +1,87 @@ +using System.Collections; +using System.Collections.Generic; +using Ichni.Editor; +using Ichni.RhythmGame.Beatmap; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public class SetIntegerEffect : EffectBase + { + public string targetVariableName; + + public int targetValue; + + public bool isRandom; + public int minValue; + public int maxValue; + + public SetIntegerEffect(string targetVariableName, int targetValue, bool isRandom, int minValue, int maxValue) + { + this.effectTime = 0; + this.targetVariableName = targetVariableName; + this.targetValue = targetValue; + this.isRandom = isRandom; + this.minValue = minValue; + this.maxValue = maxValue; + } + + public override void Recover() + { + EditorManager.instance.variablesContainer.RevertVariable(targetVariableName); + } + + public override void Adjust() + { + EditorManager.instance.variablesContainer.SetVariable(targetVariableName, isRandom ? Random.Range(minValue, maxValue + 1) : targetValue); + } + + public override EffectBase_BM ConvertToBM() + { + return new SetIntegerEffect_BM(targetVariableName, targetValue, isRandom, minValue, maxValue); + } + + public override void SetUpInspector() + { + IHaveInspection inspector = EditorManager.instance.uiManager.inspector; + var container = inspector.GenerateContainer("Set Integer"); + var targetVariableNameInputField = inspector.GenerateInputField(this, container, "Target Variable Name", nameof(targetVariableName)); + var targetValueInputField = inspector.GenerateInputField(this, container, "Target Value", nameof(targetValue)); + var isRandomToggle = inspector.GenerateToggle(this, container, "Is Random", nameof(isRandom)); + var minValueInputField = inspector.GenerateInputField(this, container, "Min Value", nameof(minValue)); + var maxValueInputField = inspector.GenerateInputField(this, container, "Max Value", nameof(maxValue)); + } + } + + namespace Beatmap + { + public class SetIntegerEffect_BM : EffectBase_BM + { + public string targetVariableName; + public int targetValue; + public bool isRandom; + public int minValue; + public int maxValue; + + public SetIntegerEffect_BM() + { + + } + + public SetIntegerEffect_BM(string targetVariableName, int targetValue, bool isRandom, int minValue, int maxValue) + { + this.effectTime = 0; + this.targetVariableName = targetVariableName; + this.targetValue = targetValue; + this.isRandom = isRandom; + this.minValue = minValue; + this.maxValue = maxValue; + } + + public override EffectBase ConvertToGameType(GameElement attachedGameElement) + { + return new SetIntegerEffect(targetVariableName, targetValue, isRandom, minValue, maxValue); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs.meta b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs.meta new file mode 100644 index 00000000..e7cb39cc --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/SetIntegerEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3abb71bdf6fc94cd982379ef2f5161fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs index 9eac6cce..cf2bac99 100644 --- a/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs +++ b/Assets/Scripts/EditorGame/GameElements/GeneralEffects/TimeEffectsCollection.cs @@ -30,6 +30,7 @@ namespace Ichni.RhythmGame private void Update() { + effectSubmodule.effectCollection["Prior"].ForEach(effect => effect.UpdateEffect(time)); effectSubmodule.effectCollection["Default"].ForEach(effect => effect.UpdateEffect(time)); } } diff --git a/Assets/Scripts/EditorGame/GameElements/GlobalElements.meta b/Assets/Scripts/EditorGame/GameElements/GlobalElements.meta new file mode 100644 index 00000000..7720e677 --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GlobalElements.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 635b0c6a4e50f4b83beb64c5e13ef0c2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundSetter.cs b/Assets/Scripts/EditorGame/GameElements/GlobalElements/BackgroundSetter.cs similarity index 63% rename from Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundSetter.cs rename to Assets/Scripts/EditorGame/GameElements/GlobalElements/BackgroundSetter.cs index 4e376d27..fb04c228 100644 --- a/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundSetter.cs +++ b/Assets/Scripts/EditorGame/GameElements/GlobalElements/BackgroundSetter.cs @@ -1,11 +1,11 @@ using System; using System.Collections; using System.Collections.Generic; -using Ichni.RhythmGame; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using UnityEngine; -namespace Ichni.Editor +namespace Ichni.RhythmGame { public partial class BackgroundSetter : GameElement { @@ -20,8 +20,15 @@ namespace Ichni.Editor bool isFirstGenerated, GameElement parentElement, bool useSkybox, string skyboxThemeBundleName, string skyboxMaterialName, string backgroundSpriteName) { + if (EditorManager.instance.backgroundSetter != null) + { + LogWindow.Log("There is already a Background Setter in the scene.", Color.red); + return null; + } + BackgroundSetter backgroundSetter = Instantiate(EditorManager.instance.basePrefabs.emptyObject) .AddComponent(); + EditorManager.instance.backgroundSetter = backgroundSetter; backgroundSetter.Initialize(elementName, id, tags, isFirstGenerated, parentElement); backgroundSetter.useSkybox = useSkybox; backgroundSetter.skyboxThemeBundleName = skyboxThemeBundleName; @@ -29,26 +36,26 @@ namespace Ichni.Editor backgroundSetter.backgroundSpriteName = backgroundSpriteName; return backgroundSetter; } - - public void SetSkybox(string themeBundleName, string materialName) + public override void Refresh() { - skyboxThemeBundleName = themeBundleName; - skyboxMaterialName = materialName; - skyboxMaterial = ThemeBundleManager.instance.GetObject(themeBundleName, materialName); - if (skyboxMaterial == null) skyboxMaterial = EditorManager.instance.basePrefabs.defaultSkyboxMaterial; - EditorManager.instance.backgroundController.SetSkybox(skyboxMaterial); + EditorManager.instance.backgroundController.EnableBackground(!useSkybox); + if (useSkybox) + { + SetSkybox(skyboxThemeBundleName, skyboxMaterialName); + } + else + { + SetBackgroundSprite(backgroundSpriteName); + } } + } - public void SetBackgroundSprite(string backgroundSpriteName) + public partial class BackgroundSetter + { + public override void SaveBM() { - string path = EditorManager.instance.projectInformation.projectPath + "/Sprites/" + backgroundSpriteName + ".png"; - backgroundSprite = ES3.FileExists(path) ? ES3.Load(path) : EditorManager.instance.basePrefabs.defaultBackground; - EditorManager.instance.backgroundController.SetBackground(backgroundSprite); - } - - public override void SetDefaultSubmodules() - { - + matchedBM = new BackgroundSetter_BM(elementName, elementGuid, tags, null, + useSkybox, skyboxThemeBundleName, skyboxMaterialName, backgroundSpriteName); } public override void SetUpInspector() @@ -73,34 +80,61 @@ namespace Ichni.Editor useSkyboxToggle.AddListenerFunction(() => EditorManager.instance.backgroundController.EnableBackground(!useSkybox)); useSkyboxToggle.AddListenerFunction(() => SetInputFields(useSkybox)); } + } - public override void Refresh() + public partial class BackgroundSetter + { + private void SetSkybox(string themeBundleName, string materialName) { + skyboxThemeBundleName = themeBundleName; + skyboxMaterialName = materialName; + skyboxMaterial = ThemeBundleManager.instance.GetObject(themeBundleName, materialName); + if (skyboxMaterial == null) skyboxMaterial = EditorManager.instance.basePrefabs.defaultSkyboxMaterial; + EditorManager.instance.backgroundController.SetSkybox(skyboxMaterial); + } - EditorManager.instance.backgroundController.EnableBackground(!useSkybox); - if (useSkybox) - { - SetSkybox(skyboxThemeBundleName, skyboxMaterialName); - } - else - { - SetBackgroundSprite(backgroundSpriteName); - } + private void SetBackgroundSprite(string spriteName) + { + string path = EditorManager.instance.projectInformation.projectPath + "/Sprites/" + spriteName + ".png"; + backgroundSprite = ES3.FileExists(path) ? ES3.Load(path) : EditorManager.instance.basePrefabs.defaultBackground; + EditorManager.instance.backgroundController.SetBackground(backgroundSprite); } } namespace Beatmap { - public class BackgroundSetter_BM : BaseElement_BM + public class BackgroundSetter_BM : GameElement_BM { + public bool useSkybox; + public string skyboxThemeBundleName; + public string skyboxMaterialName; + public string backgroundSpriteName; + public BackgroundSetter_BM() { } + public BackgroundSetter_BM(string elementName, Guid elementGuid, List tags, GameElement_BM attachedElement, + bool useSkybox, string skyboxThemeBundleName, string skyboxMaterialName, string backgroundSpriteName) + : base(elementName, elementGuid, tags, attachedElement) + { + this.useSkybox = useSkybox; + this.skyboxThemeBundleName = skyboxThemeBundleName; + this.skyboxMaterialName = skyboxMaterialName; + this.backgroundSpriteName = backgroundSpriteName; + } + public override void ExecuteBM() { - throw new System.NotImplementedException(); + matchedElement = BackgroundSetter.GenerateElement(elementName, elementGuid, tags, false, + GetElement(attachedElementGuid), useSkybox, skyboxThemeBundleName, skyboxMaterialName, backgroundSpriteName); + } + + public override GameElement DuplicateBM(GameElement attached) + { + return BackgroundSetter.GenerateElement(elementName, Guid.NewGuid(), tags, false, attached, + useSkybox, skyboxThemeBundleName, skyboxMaterialName, backgroundSpriteName); } } } diff --git a/Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundSetter.cs.meta b/Assets/Scripts/EditorGame/GameElements/GlobalElements/BackgroundSetter.cs.meta similarity index 100% rename from Assets/Scripts/EditorGame/GameElements/EnvironmentObjects/BackgroundSetter.cs.meta rename to Assets/Scripts/EditorGame/GameElements/GlobalElements/BackgroundSetter.cs.meta diff --git a/Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs b/Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs new file mode 100644 index 00000000..156e29b8 --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Ichni.Editor; +using Ichni.RhythmGame.Beatmap; +using Unity.VisualScripting; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public partial class VariablesContainer : GameElement + { + public Dictionary originalVariables; + public Dictionary currentVariables; + + public static VariablesContainer GenerateElement(string elementName, Guid id, List tags, bool isFirstGenerated, + GameElement parentElement, Dictionary variables) + { + if (EditorManager.instance.variablesContainer != null) + { + LogWindow.Log("There is already a Variables Container in the scene.", Color.red); + return null; + } + + VariablesContainer variablesContainer = + Instantiate(EditorManager.instance.basePrefabs.emptyObject).AddComponent(); + + EditorManager.instance.variablesContainer = variablesContainer; + variablesContainer.Initialize(elementName, id, tags, isFirstGenerated, parentElement); + variablesContainer.originalVariables = new Dictionary(variables); + variablesContainer.currentVariables = new Dictionary(variables); + + return variablesContainer; + } + + public void SetVariable(string variableName, int value) + { + currentVariables[variableName] = value; + } + + public int GetVariable(string variableName) + { + return currentVariables[variableName]; + } + + public void RevertVariable(string variableName) + { + currentVariables[variableName] = originalVariables[variableName]; + } + + public void RevertAllVariables() + { + currentVariables = new Dictionary(originalVariables); + } + } + + public partial class VariablesContainer + { + public override void SaveBM() + { + matchedBM = new VariablesContainer_BM(elementName, elementGuid, tags, null, originalVariables); + } + + public override void SetUpInspector() + { + IHaveInspection inspector = EditorManager.instance.uiManager.inspector; + var container = inspector.GenerateContainer("Variables Container"); + var originalVariablesButton = inspector.GenerateButton(this, container, "Original Variables", () => + { + var ov = inspector.GenerateCompositeParameterWindow(this, "Original Variables List", nameof(originalVariables)); + ov.SetAsStringIntDictionary(); + ov.AddListenerFunction(RevertAllVariables); + }); + + var currentVariablesButton = inspector.GenerateButton(this, container, "Current Variables", () => + { + inspector.GenerateCompositeParameterWindow(this, "Current Variables List", nameof(currentVariables)).SetAsStringIntDictionary(); + }); + } + } + + namespace Beatmap + { + public class VariablesContainer_BM : GameElement_BM + { + public Dictionary originalVariables; + + public VariablesContainer_BM() + { + + } + + public VariablesContainer_BM(string elementName, Guid elementGuid, List tags, GameElement_BM parentElement, + Dictionary originalVariables) : base(elementName, elementGuid, tags, parentElement) + { + this.originalVariables = new Dictionary(originalVariables); + } + + public override void ExecuteBM() + { + matchedElement = VariablesContainer.GenerateElement(elementName, elementGuid, tags, false, + GetElement(attachedElementGuid), originalVariables); + } + + public override GameElement DuplicateBM(GameElement attached) + { + return VariablesContainer.GenerateElement(elementName, Guid.NewGuid(), tags, false, attached, originalVariables); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs.meta b/Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs.meta new file mode 100644 index 00000000..0ab4c591 --- /dev/null +++ b/Assets/Scripts/EditorGame/GameElements/GlobalElements/VariablesContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3635ae4e7b31f4ae7a942151377c59f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs index 5b7253c0..795cb18d 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs @@ -118,6 +118,8 @@ namespace Ichni.RhythmGame noteVisual.effectSubmodule.effectCollection["Miss"].ForEach(e => e.UpdateEffect(exactJudgeTime)); break; } + + noteVisual.effectSubmodule.effectCollection["AfterJudge"].ForEach(e => e.UpdateEffect(exactJudgeTime)); if (EditorManager.instance.cameraManager.haveGameCamera) { diff --git a/Assets/Scripts/Manager/BasePrefabsCollection.cs b/Assets/Scripts/Manager/BasePrefabsCollection.cs index d2a7d94e..142e8306 100644 --- a/Assets/Scripts/Manager/BasePrefabsCollection.cs +++ b/Assets/Scripts/Manager/BasePrefabsCollection.cs @@ -63,6 +63,7 @@ public class BasePrefabsCollection : SerializedScriptableObject public GameObject animatedBoolUnit; public GameObject customCurveKeyframeUnit; public GameObject customCurveWrapModeUnit; + public GameObject stringIntPairUnit; [Title("图形化动画编辑器")] public GameObject graphicalFlexibleFloatWindow; diff --git a/Assets/Scripts/Manager/EditorManager.cs b/Assets/Scripts/Manager/EditorManager.cs index 43d0e690..bdbf320c 100644 --- a/Assets/Scripts/Manager/EditorManager.cs +++ b/Assets/Scripts/Manager/EditorManager.cs @@ -36,6 +36,10 @@ namespace Ichni public NoteBase.NoteJudgeType currentJudgeType; public BasePrefabsCollection basePrefabs; + + [Title("Runtime Global Elements")] + public VariablesContainer variablesContainer; + public BackgroundSetter backgroundSetter; private void Awake() { @@ -109,6 +113,11 @@ namespace Ichni new List(), true, null, false, "basic", "Skybox", "Background")); + var generateVariablesContainerButton = + inspector.GenerateButton(this, container, "Generate Variables Container", + () => VariablesContainer.GenerateElement("Variables Container", Guid.NewGuid(), + new List(), true, null, new Dictionary())); + projectInformation.SetUpInspector(); songInformation.SetUpInspector(); cameraManager.SetUpInspector(); diff --git a/Assets/Scripts/Manager/OperationManager.cs b/Assets/Scripts/Manager/OperationManager.cs index 5605d039..4d0ddbbf 100644 --- a/Assets/Scripts/Manager/OperationManager.cs +++ b/Assets/Scripts/Manager/OperationManager.cs @@ -19,11 +19,15 @@ namespace Ichni.Editor public void SelectElement(GameElement gameElement) { - if(currentSelectedElement != null) + if (currentSelectedElement != null) { currentSelectedElement.connectedTab.isSelected = false; - currentSelectedElement.connectedTab.BgImage.color = new Color(0.5f, 0.5f, 0.5f, 0); + if (currentSelectedElement.connectedTab.BgImage != null) + { + currentSelectedElement.connectedTab.BgImage.color = new Color(0.5f, 0.5f, 0.5f, 0); + } } + currentSelectedElement = gameElement; currentSelectedElement.connectedTab.isSelected = true; currentSelectedElement.connectedTab.BgImage.color = new Color(0.5f,0.5f, 0.5f, 0.2f); diff --git a/Assets/StreamingAssets/Projects/Terminal/Beatmap.json b/Assets/StreamingAssets/Projects/Terminal/Beatmap.json index 707d69b6..1b911df5 100644 --- a/Assets/StreamingAssets/Projects/Terminal/Beatmap.json +++ b/Assets/StreamingAssets/Projects/Terminal/Beatmap.json @@ -389,6 +389,14 @@ "postWrapMode" : 8 }, "effectTime" : 0 + },{ + "__type" : "Ichni.RhythmGame.Beatmap.SetIntegerEffect_BM,Assembly-CSharp", + "targetVariableName" : "Test", + "targetValue" : 0, + "isRandom" : true, + "minValue" : 0, + "maxValue" : 100, + "effectTime" : 0 } ],"Good":[ { @@ -402,6 +410,8 @@ } ],"Miss":[ + ],"AfterJudge":[ + ] }, "attachedElementGuid" : { @@ -487,6 +497,8 @@ ],"Miss":[ + ],"AfterJudge":[ + ] }, "attachedElementGuid" : { @@ -699,6 +711,8 @@ "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteMissPale_BM,Assembly-CSharp", "effectTime" : 0.2 } + ],"AfterJudge":[ + ] }, "attachedElementGuid" : { @@ -890,11 +904,71 @@ "__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteMissPale_BM,Assembly-CSharp", "effectTime" : 0.2 } + ],"AfterJudge":[ + ] }, "attachedElementGuid" : { "value" : "591f7a09-8606-4615-b1d2-7cad18afc922" } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.VariablesContainer_BM,Assembly-CSharp", + "originalVariables" : {"Test":0,"ShowStay":0 + }, + "elementName" : "Variables Container", + "tags" : [ + + ], + "elementGuid" : { + "value" : "6cc708e2-2e84-4fd2-8411-1281d3066f71" + }, + "attachedElementGuid" : { + "value" : "00000000-0000-0000-0000-000000000000" + } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.TimeEffectsCollection_BM,Assembly-CSharp", + "time" : 0.1, + "elementName" : "New Time Effects Collection", + "tags" : [ + + ], + "elementGuid" : { + "value" : "8db6192e-a98d-45f7-80c8-e0183298c5cd" + }, + "attachedElementGuid" : { + "value" : "030b4b43-46bb-43c9-84e7-6a98207a39c9" + } + },{ + "__type" : "Ichni.RhythmGame.Beatmap.EffectSubmodule_BM,Assembly-CSharp", + "effectCollection" : {"Prior":[ + { + "__type" : "Ichni.RhythmGame.Beatmap.SetIntegerEffect_BM,Assembly-CSharp", + "targetVariableName" : "ShowStay", + "targetValue" : 0, + "isRandom" : true, + "minValue" : 0, + "maxValue" : 1, + "effectTime" : 0 + } + ],"Default":[ + { + "__type" : "Ichni.RhythmGame.Beatmap.EnableControlEffect_BM,Assembly-CSharp", + "connectedGameElementGuid" : { + "value" : "36f8bb90-4082-4ea8-965c-b7c3ffa838f9" + }, + "connectedVariableName" : "ShowStay", + "enableValue" : 1, + "useExpression" : false, + "expression" : "", + "effectTime" : 0 + } + ],"Late":[ + + ] + }, + "attachedElementGuid" : { + "value" : "8db6192e-a98d-45f7-80c8-e0183298c5cd" + } } ], "attachedElementGuid" : {