diff --git a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml index c71abd758..12fa3f8cf 100644 --- a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml +++ b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml @@ -1288,6 +1288,7 @@ + @@ -1755,6 +1756,7 @@ + @@ -1773,6 +1775,7 @@ + diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 311897d52..49fa66771 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -871,6 +871,7 @@ + @@ -889,6 +890,7 @@ + diff --git a/Assets/Prefabs/Button Field.prefab b/Assets/Prefabs/Button Field.prefab new file mode 100644 index 000000000..914b761b9 --- /dev/null +++ b/Assets/Prefabs/Button Field.prefab @@ -0,0 +1,637 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &790814197411605232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 790814197411605233} + - component: {fileID: 790814197411605235} + - component: {fileID: 790814197411605234} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &790814197411605233 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814197411605232} + 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_Children: [] + m_Father: {fileID: 790814198576895811} + m_RootOrder: 0 + 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 &790814197411605235 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814197411605232} + m_CullTransparentMesh: 0 +--- !u!114 &790814197411605234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814197411605232} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Dolor + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 9dcd07b95faae7641a3ff6fccab43c32, type: 2} + m_sharedMaterial: {fileID: 21906973755630180, guid: 9dcd07b95faae7641a3ff6fccab43c32, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_textAlignment: 514 + 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_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 790814197411605234} + characterCount: 5 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &790814198576895810 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 790814198576895811} + - component: {fileID: 790814198576895814} + - component: {fileID: 790814198576895813} + - component: {fileID: 790814198576895812} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &790814198576895811 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198576895810} + 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_Children: + - {fileID: 790814197411605233} + - {fileID: 790814198754792692} + m_Father: {fileID: 6566784227922820063} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.6, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.0000076, y: 0} + m_SizeDelta: {x: 8, y: 2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &790814198576895814 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198576895810} + m_CullTransparentMesh: 0 +--- !u!114 &790814198576895813 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198576895810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.4180913, b: 1, a: 0.15294118} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84d126f984de5fd42ac66361c00f830c, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!114 &790814198576895812 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198576895810} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fafbcd26aa8d175448880b37b7a41b2e, type: 3} + m_Name: + m_EditorClassIdentifier: + StateDamping: 10 + Fill: {fileID: 790814198576895813} + CurrentState: 0 + DisableClickWhenSelected: 1 + UnselectedColor: {r: 0, g: 0.4180913, b: 1, a: 0.15294118} + SelectedColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 0.65882355} + HoverColor: {r: 0, g: 0.4180913, b: 1, a: 0.5019608} + ClickColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 1} +--- !u!1 &790814198754792691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 790814198754792692} + - component: {fileID: 790814198754792694} + - component: {fileID: 790814198754792693} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &790814198754792692 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198754792691} + 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_Children: [] + m_Father: {fileID: 790814198576895811} + m_RootOrder: 1 + 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 &790814198754792694 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198754792691} + m_CullTransparentMesh: 0 +--- !u!114 &790814198754792693 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 790814198754792691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.9333333, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b412943088786454c9bf10b1f7e1e94b, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &2152774904542180253 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3391258965138102790} + - component: {fileID: 1727340882891331310} + - component: {fileID: 1262479968588482621} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3391258965138102790 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2152774904542180253} + 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_Children: [] + m_Father: {fileID: 6566784227922820063} + m_RootOrder: 0 + 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: 16, y: 4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1727340882891331310 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2152774904542180253} + m_CullTransparentMesh: 0 +--- !u!114 &1262479968588482621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2152774904542180253} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.4180913, b: 1, a: 0.15294118} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84d126f984de5fd42ac66361c00f830c, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &6566784227922820056 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6566784227922820063} + - component: {fileID: 6566784227922820061} + - component: {fileID: 1185277543755028150} + - component: {fileID: 6566784227922820057} + m_Layer: 5 + m_Name: Button Field + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6566784227922820063 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784227922820056} + 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_Children: + - {fileID: 3391258965138102790} + - {fileID: 6566784228232816309} + - {fileID: 790814198576895811} + m_Father: {fileID: 0} + 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_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &6566784227922820061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784227922820056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 32 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &1185277543755028150 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784227922820056} + m_CullTransparentMesh: 0 +--- !u!114 &6566784227922820057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784227922820056} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 16f77bec2596fd74ba40cb68aa4c7f20, type: 3} + m_Name: + m_EditorClassIdentifier: + Label: {fileID: 6566784228232816308} + ButtonLabel: {fileID: 790814197411605234} + Button: {fileID: 790814198576895812} +--- !u!1 &6566784228232816310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6566784228232816309} + - component: {fileID: 6566784228232816315} + - component: {fileID: 6566784228232816308} + m_Layer: 5 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6566784228232816309 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784228232816310} + 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_Children: [] + m_Father: {fileID: 6566784227922820063} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2, y: 0} + m_SizeDelta: {x: -4, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6566784228232816315 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784228232816310} + m_CullTransparentMesh: 0 +--- !u!114 &6566784228232816308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6566784228232816310} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Dolor + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 9dcd07b95faae7641a3ff6fccab43c32, type: 2} + m_sharedMaterial: {fileID: 21906973755630180, guid: 9dcd07b95faae7641a3ff6fccab43c32, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_textAlignment: 513 + 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_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 6566784228232816308} + characterCount: 5 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Prefabs/Button Field.prefab.meta b/Assets/Prefabs/Button Field.prefab.meta new file mode 100644 index 000000000..3d38f7805 --- /dev/null +++ b/Assets/Prefabs/Button Field.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6db1feb4cda7b8c419384cd42c85a5c4 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Enum Field.prefab b/Assets/Prefabs/Enum Field.prefab index 0d6efea63..cb23e4352 100644 --- a/Assets/Prefabs/Enum Field.prefab +++ b/Assets/Prefabs/Enum Field.prefab @@ -1641,7 +1641,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6693f0cab8ab72b49bdbc76515d0fc1f, type: 3} m_Name: m_EditorClassIdentifier: - Label: {fileID: 8066689790862381} + Label: {fileID: 8066690032161818} Dropdown: {fileID: 8066689769109182} --- !u!1 &8066691340653935 GameObject: diff --git a/Assets/Prefabs/Progress Field.prefab b/Assets/Prefabs/Progress Field.prefab new file mode 100644 index 000000000..6da93ed14 --- /dev/null +++ b/Assets/Prefabs/Progress Field.prefab @@ -0,0 +1,651 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1103627007437062218 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1684719062263664779} + - component: {fileID: 7932258796196231685} + - component: {fileID: 8894480284447435227} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1684719062263664779 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103627007437062218} + 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_Children: [] + m_Father: {fileID: 8181761431199775037} + 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_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7932258796196231685 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103627007437062218} + m_CullTransparentMesh: 0 +--- !u!114 &8894480284447435227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1103627007437062218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.44583336, b: 0.050000012, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7ed12bf887e951949bd02894a21fb3ff, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &2128179938907734338 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4052465884214141673} + - component: {fileID: 3178655000854301877} + - component: {fileID: 6640782209009516030} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4052465884214141673 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128179938907734338} + 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_Children: [] + m_Father: {fileID: 8626591645481506733} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3178655000854301877 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128179938907734338} + m_CullTransparentMesh: 0 +--- !u!114 &6640782209009516030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2128179938907734338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.1164044, b: 0.28, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7ed12bf887e951949bd02894a21fb3ff, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &3301729264647156059 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3301729264647156058} + - component: {fileID: 3301729264647156056} + - component: {fileID: 3301729264647156057} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3301729264647156058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729264647156059} + 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_Children: [] + m_Father: {fileID: 3301729265155698787} + m_RootOrder: 0 + 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: 16, y: 4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3301729264647156056 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729264647156059} + m_CullTransparentMesh: 0 +--- !u!114 &3301729264647156057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729264647156059} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.4180913, b: 1, a: 0.15294118} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84d126f984de5fd42ac66361c00f830c, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &3301729265155698788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3301729265155698787} + - component: {fileID: 3301729265155698799} + - component: {fileID: 3301729265155698785} + - component: {fileID: 256436433275418348} + m_Layer: 5 + m_Name: Progress Field + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3301729265155698787 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265155698788} + 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_Children: + - {fileID: 3301729264647156058} + - {fileID: 3301729265189646952} + - {fileID: 8626591645481506733} + m_Father: {fileID: 0} + 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_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3301729265155698799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265155698788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 32 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &3301729265155698785 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265155698788} + m_CullTransparentMesh: 0 +--- !u!114 &256436433275418348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265155698788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9f6e88386192c944b8c95e1a6251be66, type: 3} + m_Name: + m_EditorClassIdentifier: + Label: {fileID: 3301729265189646935} + Slider: {fileID: 1245313791973438745} +--- !u!1 &3301729265189646953 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3301729265189646952} + - component: {fileID: 3301729265189646934} + - component: {fileID: 3301729265189646935} + m_Layer: 5 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3301729265189646952 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265189646953} + 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_Children: [] + m_Father: {fileID: 3301729265155698787} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2, y: 0} + m_SizeDelta: {x: -4, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3301729265189646934 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265189646953} + m_CullTransparentMesh: 0 +--- !u!114 &3301729265189646935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3301729265189646953} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Dolor + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 9dcd07b95faae7641a3ff6fccab43c32, type: 2} + m_sharedMaterial: {fileID: 21906973755630180, guid: 9dcd07b95faae7641a3ff6fccab43c32, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_textAlignment: 513 + 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_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 3301729265189646935} + characterCount: 5 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &3947597710774014716 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8181761431199775037} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8181761431199775037 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3947597710774014716} + 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_Children: + - {fileID: 1684719062263664779} + m_Father: {fileID: 8626591645481506733} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7612562921131326594 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8486777826238065456} + - component: {fileID: 6947366979028237389} + - component: {fileID: 6333568709943515539} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8486777826238065456 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7612562921131326594} + 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_Children: [] + m_Father: {fileID: 8626591645481506733} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6947366979028237389 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7612562921131326594} + m_CullTransparentMesh: 0 +--- !u!114 &6333568709943515539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7612562921131326594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.9333333, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 61501af80fabaac44ace015a55851277, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &8579295300066914487 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8626591645481506733} + - component: {fileID: 1245313791973438745} + m_Layer: 5 + m_Name: Slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8626591645481506733 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8579295300066914487} + 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_Children: + - {fileID: 4052465884214141673} + - {fileID: 8181761431199775037} + - {fileID: 8486777826238065456} + m_Father: {fileID: 3301729265155698787} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.6, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1245313791973438745 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8579295300066914487} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + 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_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_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 0} + m_FillRect: {fileID: 1684719062263664779} + m_HandleRect: {fileID: 0} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0.501 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Prefabs/Progress Field.prefab.meta b/Assets/Prefabs/Progress Field.prefab.meta new file mode 100644 index 000000000..5f02e26df --- /dev/null +++ b/Assets/Prefabs/Progress Field.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e6524d59d9bc67545b0eb1304bfb9d4b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Properties Panel.prefab b/Assets/Prefabs/Properties Panel.prefab index 2bb90cbab..372667897 100644 --- a/Assets/Prefabs/Properties Panel.prefab +++ b/Assets/Prefabs/Properties Panel.prefab @@ -101,10 +101,15 @@ MonoBehaviour: type: 3} RangedFloatField: {fileID: 1663396771457720812, guid: c214f62d8f2188140b96ed12798034c8, type: 3} + ProgressField: {fileID: 256436433275418348, guid: e6524d59d9bc67545b0eb1304bfb9d4b, + type: 3} EnumField: {fileID: 8066691333806154, guid: f19a14cd178d48f49ace9ad217bea2ed, type: 3} BoolField: {fileID: 7661950293931311388, guid: 001ad6a15f0d582458d359c0ae4405ed, type: 3} - ChildRadioSelection: 0 + PropertyButton: {fileID: 1613450655389604799, guid: 99bde06e2f0ca504bb95f2a4e3429462, + type: 3} + ButtonField: {fileID: 6566784227922820057, guid: 6db1feb4cda7b8c419384cd42c85a5c4, + type: 3} --- !u!1 &2378632238144827086 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Property Button.prefab b/Assets/Prefabs/Property Button.prefab new file mode 100644 index 000000000..9c72aee87 --- /dev/null +++ b/Assets/Prefabs/Property Button.prefab @@ -0,0 +1,406 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1613450655044732624 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1613450655044732627} + - component: {fileID: 1613450655044732637} + - component: {fileID: 1613450655044732626} + m_Layer: 5 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1613450655044732627 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655044732624} + 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_Children: [] + m_Father: {fileID: 1613450655389604793} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 2, y: 0} + m_SizeDelta: {x: -4, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1613450655044732637 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655044732624} + m_CullTransparentMesh: 0 +--- !u!114 &1613450655044732626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655044732624} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: This is a button + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 9dcd07b95faae7641a3ff6fccab43c32, type: 2} + m_sharedMaterial: {fileID: 21906973755630180, guid: 9dcd07b95faae7641a3ff6fccab43c32, + type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_textAlignment: 514 + 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_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_isTextTruncated: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_VertexBufferAutoSizeReduction: 1 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1613450655044732626} + characterCount: 16 + spriteCount: 0 + spaceCount: 3 + wordCount: 4 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1613450655389604798 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1613450655389604793} + - component: {fileID: 1613450655389604795} + - component: {fileID: 6716894550144612048} + - component: {fileID: 9031877687215098194} + - component: {fileID: 1613450655389604799} + m_Layer: 5 + m_Name: Property Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1613450655389604793 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655389604798} + 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_Children: + - {fileID: 7085828711539161696} + - {fileID: 5151860849690372526} + - {fileID: 1613450655044732627} + m_Father: {fileID: 0} + 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_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1613450655389604795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655389604798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 32 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!222 &6716894550144612048 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655389604798} + m_CullTransparentMesh: 0 +--- !u!114 &9031877687215098194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655389604798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fafbcd26aa8d175448880b37b7a41b2e, type: 3} + m_Name: + m_EditorClassIdentifier: + StateDamping: 10 + Fill: {fileID: 6683620520386570331} + CurrentState: 0 + DisableClickWhenSelected: 1 + UnselectedColor: {r: 0, g: 0.4180913, b: 1, a: 0.15294118} + SelectedColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 0.65882355} + HoverColor: {r: 0, g: 0.4180913, b: 1, a: 0.5019608} + ClickColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 1} +--- !u!114 &1613450655389604799 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1613450655389604798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8c0b005aebd0cd947a04034f1a42e838, type: 3} + m_Name: + m_EditorClassIdentifier: + Label: {fileID: 1613450655044732626} + Button: {fileID: 9031877687215098194} +--- !u!1 &5151860849690372521 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5151860849690372526} + - component: {fileID: 5151860849690372524} + - component: {fileID: 5151860849690372527} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5151860849690372526 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5151860849690372521} + 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_Children: [] + m_Father: {fileID: 1613450655389604793} + m_RootOrder: 1 + 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: 16, y: 4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5151860849690372524 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5151860849690372521} + m_CullTransparentMesh: 0 +--- !u!114 &5151860849690372527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5151860849690372521} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.9333333, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b412943088786454c9bf10b1f7e1e94b, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!1 &5811322450855121915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7085828711539161696} + - component: {fileID: 6538515023904061064} + - component: {fileID: 6683620520386570331} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7085828711539161696 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5811322450855121915} + 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_Children: [] + m_Father: {fileID: 1613450655389604793} + m_RootOrder: 0 + 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: 16, y: 4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6538515023904061064 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5811322450855121915} + m_CullTransparentMesh: 0 +--- !u!114 &6683620520386570331 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5811322450855121915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.4180913, b: 1, a: 0.15294118} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 84d126f984de5fd42ac66361c00f830c, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 diff --git a/Assets/Prefabs/Property Button.prefab.meta b/Assets/Prefabs/Property Button.prefab.meta new file mode 100644 index 000000000..f51c46121 --- /dev/null +++ b/Assets/Prefabs/Property Button.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 99bde06e2f0ca504bb95f2a4e3429462 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Property List.prefab b/Assets/Prefabs/Property List.prefab index 48d1cb467..3f243dd96 100644 --- a/Assets/Prefabs/Property List.prefab +++ b/Assets/Prefabs/Property List.prefab @@ -280,7 +280,15 @@ MonoBehaviour: ListPrefab: {fileID: 6914334813923144328} PropertyPrefab: {fileID: 279061376544739623, guid: 5b8c5126640066e4fabe6e65b7225b3b, type: 3} - ChildRadioSelection: 0 + AttributePrefab: {fileID: 0} + InputField: {fileID: 0} + RangedFloatField: {fileID: 0} + ProgressField: {fileID: 0} + EnumField: {fileID: 0} + BoolField: {fileID: 0} + PropertyButton: {fileID: 1613450655389604799, guid: 99bde06e2f0ca504bb95f2a4e3429462, + type: 3} + ButtonField: {fileID: 0} FoldoutIcon: {fileID: 6485458701090981364} FoldoutRotationDamping: 10 Button: {fileID: 5436107563273525140} @@ -307,6 +315,7 @@ MonoBehaviour: SelectedColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 0.65882355} HoverColor: {r: 0, g: 0.4180913, b: 1, a: 0.29803923} ClickColor: {r: 0, g: 0.4180913, b: 1, a: 0.7490196} + DisabledColor: {r: 0, g: 0, b: 0, a: 0} --- !u!1 &2755672975795187168 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Tab Button Primary.prefab b/Assets/Prefabs/Tab Button Primary.prefab index 9d91bad4e..1588911cb 100644 --- a/Assets/Prefabs/Tab Button Primary.prefab +++ b/Assets/Prefabs/Tab Button Primary.prefab @@ -161,7 +161,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: New Text + m_text: Corporation m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 9dcd07b95faae7641a3ff6fccab43c32, type: 2} m_sharedMaterial: {fileID: 21906973755630180, guid: 9dcd07b95faae7641a3ff6fccab43c32, @@ -191,12 +191,12 @@ MonoBehaviour: serializedVersion: 2 rgba: 4278190080 m_fontSize: 32 - m_fontSizeBase: 24 + m_fontSizeBase: 32 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 m_fontSizeMax: 72 - m_fontStyle: 0 + m_fontStyle: 1 m_textAlignment: 514 m_characterSpacing: 0 m_wordSpacing: 0 @@ -207,7 +207,7 @@ MonoBehaviour: m_enableWordWrapping: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 - m_firstOverflowCharacterIndex: 0 + m_firstOverflowCharacterIndex: -1 m_linkedTextComponent: {fileID: 0} m_isLinkedTextComponent: 0 m_isTextTruncated: 0 @@ -231,10 +231,10 @@ MonoBehaviour: m_margin: {x: 0, y: 0, z: 0, w: 0} m_textInfo: textComponent: {fileID: 4750078953547169287} - characterCount: 8 + characterCount: 11 spriteCount: 0 - spaceCount: 1 - wordCount: 2 + spaceCount: 0 + wordCount: 1 linkCount: 0 lineCount: 1 pageCount: 1 @@ -365,7 +365,6 @@ MonoBehaviour: StateDamping: 10 Fill: {fileID: 6620917632164000384} Outline: {fileID: 5084245071935710148} - Label: {fileID: 4750078953547169287} LabelLayout: {fileID: 323497596060304149} CurrentState: 0 DisableClickWhenSelected: 1 diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index bab5c695f..ae057ed12 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -388,7 +388,7 @@ PrefabInstance: - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_AnchoredPosition.x - value: 83.65 + value: 86.84 objectReference: {fileID: 0} - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} @@ -1262,12 +1262,12 @@ PrefabInstance: - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: -707.7081 objectReference: {fileID: 0} - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0.000030517578 + value: -0.00012207031 objectReference: {fileID: 0} - target: {fileID: 2378632238049155251, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -1277,32 +1277,32 @@ PrefabInstance: - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 0.000000059604645 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: -17 objectReference: {fileID: 0} - target: {fileID: 2378632240158519320, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -1373,12 +1373,12 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 1274 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -458.20905 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -1388,7 +1388,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 852.4181 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -1398,7 +1398,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -1408,7 +1408,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -1433,32 +1433,32 @@ PrefabInstance: - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 241.5 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -72.354996 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 419 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 80.71 objectReference: {fileID: 0} - target: {fileID: 5116519198747529738, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3702,12 +3702,12 @@ PrefabInstance: - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: -707.7081 objectReference: {fileID: 0} - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0.000030517578 + value: -0.00012207031 objectReference: {fileID: 0} - target: {fileID: 2378632238049155251, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3717,32 +3717,32 @@ PrefabInstance: - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 0.000000059604645 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: -17 objectReference: {fileID: 0} - target: {fileID: 2378632240158519320, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3813,12 +3813,12 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 146 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -458.20905 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3828,7 +3828,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 852.4181 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3838,7 +3838,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3848,7 +3848,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -3878,32 +3878,32 @@ PrefabInstance: - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 241.5 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -72.354996 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 419 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 80.71 objectReference: {fileID: 0} - target: {fileID: 5116519198747529738, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -6000,7 +6000,7 @@ PrefabInstance: - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_AnchoredPosition.x - value: 78.765 + value: 81.615005 objectReference: {fileID: 0} - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} @@ -6934,7 +6934,7 @@ PrefabInstance: - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_AnchoredPosition.x - value: 80.130005 + value: 82.94 objectReference: {fileID: 0} - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} @@ -9099,12 +9099,12 @@ PrefabInstance: - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: -707.7081 objectReference: {fileID: 0} - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0.000030517578 + value: -0.00012207031 objectReference: {fileID: 0} - target: {fileID: 2378632238049155251, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -9114,32 +9114,32 @@ PrefabInstance: - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 0.000000059604645 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: -17 objectReference: {fileID: 0} - target: {fileID: 2378632240158519320, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -9210,12 +9210,12 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 710 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -458.20905 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -9225,7 +9225,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 852.4181 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -9235,7 +9235,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -9245,7 +9245,7 @@ PrefabInstance: - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -9275,32 +9275,32 @@ PrefabInstance: - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 241.5 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -72.354996 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 419 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 80.71 objectReference: {fileID: 0} - target: {fileID: 5116519198747529738, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -13208,7 +13208,7 @@ PrefabInstance: - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_AnchoredPosition.x - value: 115.185 + value: 120.51 objectReference: {fileID: 0} - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} @@ -15872,7 +15872,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1565778113 RectTransform: m_ObjectHideFlags: 0 @@ -15909,9 +15909,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 69422316520cbd649ad89629be288c06, type: 3} m_Name: m_EditorClassIdentifier: + Title: {fileID: 778641168} General: {fileID: 303664031} Inventory: {fileID: 1738416598} Details: {fileID: 1548865998} + ContextMenu: {fileID: 831625851} --- !u!114 &1565778115 MonoBehaviour: m_ObjectHideFlags: 0 @@ -20181,7 +20183,7 @@ PrefabInstance: - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_AnchoredPosition.x - value: 81.759995 + value: 84.72 objectReference: {fileID: 0} - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} @@ -22099,12 +22101,12 @@ PrefabInstance: - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: -784.9881 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632238049155248, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: -0.000061035156 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632238049155251, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -22114,12 +22116,12 @@ PrefabInstance: - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 0.9999999 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632238144827081, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -22129,17 +22131,17 @@ PrefabInstance: - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.x - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632238683789172, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: -17 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2378632240158519326, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -22254,37 +22256,37 @@ PrefabInstance: - target: {fileID: 2378632240158519327, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.x - value: 241.5 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_AnchoredPosition.y - value: -113.715 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.x - value: 419 + value: 0 objectReference: {fileID: 0} - target: {fileID: 5116519198747529736, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} propertyPath: m_SizeDelta.y - value: 163.43 + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 4fca44e21a27a6d48916d2cc4b6e2df0, type: 3} @@ -22354,51 +22356,11 @@ PrefabInstance: propertyPath: m_Name value: Corporation objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_text - value: Corporation - objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_firstOverflowCharacterIndex - value: -1 - objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_textInfo.characterCount - value: 11 - objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_textInfo.spaceCount - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_textInfo.wordCount - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_fontSizeBase - value: 32 - objectReference: {fileID: 0} - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_subTextObjects.Array.data[1] value: objectReference: {fileID: 650897775} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_textInfo.lineCount - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4750078953547169287, guid: b93e36d73a071274d8e9225e077ce92a, - type: 3} - propertyPath: m_textInfo.pageCount - value: 1 - objectReference: {fileID: 0} - target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_LocalPosition.x @@ -22512,7 +22474,7 @@ PrefabInstance: - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} propertyPath: m_AnchoredPosition.x - value: 119.765 + value: 125.285 objectReference: {fileID: 0} - target: {fileID: 6493174789768221420, guid: b93e36d73a071274d8e9225e077ce92a, type: 3} diff --git a/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs b/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs index 8369525bc..84855a45d 100644 --- a/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs +++ b/Assets/Scripts/ServerShared/Behaviors/FactoryBehavior.cs @@ -24,21 +24,43 @@ public class FactoryData : BehaviorData public class Factory : IBehavior, IPersistentBehavior { + public float ProductionQuality; + public double RetoolingTime; + public string ItemName; + public List ItemsUnderConstruction = new List(); + public Entity Entity { get; } public Gear Item { get; } public GameContext Context { get; } public BehaviorData Data => _data; + public float ToolingTime { get; private set; } + + public Guid Blueprint + { + get => _blueprint; + set + { + if (value != _blueprint) + { + _blueprint = value; + RetoolingTime = ToolingTime; + _retooling = true; + OnToolingUpdate?.Invoke(); + OnToolingUpdate = null; + ItemName = Context.Cache.Get(value).Name; + } + } + } + + public event Action OnToolingUpdate; + private FactoryData _data; private Guid _blueprint; - private float _remainingManHours; - private bool _retooling; - private bool _producing; - private List _reservedStock = new List(); private int _assignedPopulation; - private float _productionQuality; + private bool _retooling = false; public Factory(GameContext context, FactoryData data, Entity entity, Gear item) { @@ -50,148 +72,56 @@ public class Factory : IBehavior, IPersistentBehavior public bool Update(float delta) { + ToolingTime = Context.Evaluate(_data.ToolingTime, Item, Entity); var blueprint = Context.Cache.Get(_blueprint); - if (_retooling || _producing) + if (blueprint == null) + return false; + + if (RetoolingTime > 0) { - _remainingManHours -= delta / 3600 * (_assignedPopulation + _data.AutomationPoints) / - pow(lerp(blueprint.QualityFloor, 1, saturate(_productionQuality)), - blueprint.ProductionExponent); + RetoolingTime -= delta; + return false; } - if (_remainingManHours < 0) + if (_retooling) { - if (_retooling) - _retooling = false; - else if (_producing) + _retooling = false; + OnToolingUpdate?.Invoke(); + OnToolingUpdate = null; + } + + if (ItemsUnderConstruction.Any()) + { + var finishedConstruction = false; + foreach (var item in ItemsUnderConstruction.ToArray()) { - var blueprintItemData = Context.Cache.Get(blueprint.Item); - - if (blueprintItemData is CraftedItemData) + Entity.IncompleteCargo[item] = + Entity.IncompleteCargo[item] - delta * (_assignedPopulation + _data.AutomationPoints) / + pow(lerp(blueprint.QualityFloor, 1, saturate(ProductionQuality)), + blueprint.ProductionExponent); + if(Entity.IncompleteCargo[item] < 0) { - for (int i = 0; i < blueprint.Quantity; i++) - { - CraftedItemInstance newItem; - - // Applying exponents to two random numbers and adding them produces a range of interesting probability distributions - var quality = blueprint.Quality * - pow(_productionQuality, blueprint.QualityExponent) * - (pow(Context.Random.NextFloat(), blueprint.RandomExponent) + - pow(Context.Random.NextFloat(), blueprint.RandomExponent)) / 2; - - if (blueprintItemData is EquippableItemData equippableItemData) - { - var newGear = new Gear - { - Context = Context, - Data = blueprintItemData.ID, - Ingredients = _reservedStock.Select(ii=>ii.ID).ToList(), - Quality = quality, - Blueprint = _blueprint - }; - newGear.Durability = Context.Evaluate(equippableItemData.Durability, newGear); - newItem = newGear; - } - else - { - newItem = new CompoundCommodity - { - Context = Context, - Data = blueprintItemData.ID, - Ingredients = _reservedStock.Select(ii=>ii.ID).ToList(), - Quality = quality, - Blueprint = _blueprint - }; - } - Context.Cache.Add(newItem); - Entity.Cargo.Add(newItem.ID); - } - } - else - { - var simpleCommodityData = blueprintItemData as SimpleCommodityData; - var simpleCommodityInstance = Entity.Cargo.FirstOrDefault(i => Context.Cache.Get(i).Data == simpleCommodityData.ID); - if (simpleCommodityInstance == Guid.Empty) - { - var newSimpleCommodity = new SimpleCommodity - { - Context = Context, - Data = simpleCommodityData.ID, - Quantity = blueprint.Quantity - }; - Context.Cache.Add(newSimpleCommodity); - Entity.Cargo.Add(newSimpleCommodity.ID); - } - else - { - Context.Cache.Get(simpleCommodityInstance).Quantity += blueprint.Quantity; - } - } - Entity.RecalculateMass(); - - var simpleIngredients = new List(); - var compoundIngredients = new List(); - var hasAllIngredients = true; - var cargoInstances = Entity.Cargo.Select(c => Context.Cache.Get(c)); - foreach (var kvp in blueprint.Ingredients) - { - var itemData = Context.Cache.Get(kvp.Key); - if (itemData is SimpleCommodityData) - { - var matchingItem = cargoInstances.FirstOrDefault(ii => - { - if (!(ii is SimpleCommodity simpleCommodity)) return false; - return simpleCommodity.Data == itemData.ID && simpleCommodity.Quantity >= kvp.Value; - }) as SimpleCommodity; - hasAllIngredients = hasAllIngredients && matchingItem != null; - if(matchingItem != null) - simpleIngredients.Add(matchingItem); - } - else - { - var matchingItems = - cargoInstances.Where(ii => (ii as CompoundCommodity)?.Data == itemData.ID).Cast().ToArray(); - hasAllIngredients = hasAllIngredients && matchingItems.Length >= kvp.Value; - if(matchingItems.Length >= kvp.Value) - compoundIngredients.AddRange(matchingItems.Take(kvp.Value)); - } - } - - if (hasAllIngredients) - { - _reservedStock.AddRange(compoundIngredients); - foreach (var compoundCommodity in compoundIngredients) - { - Entity.Cargo.Remove(compoundCommodity.ID); - } - foreach (var simpleCommodity in simpleIngredients) - { - var blueprintQuantity = blueprint.Ingredients - .First(ingredient => ingredient.Key == simpleCommodity.ID).Value; - if (simpleCommodity.Quantity == blueprintQuantity) - { - _reservedStock.Add(simpleCommodity); - Entity.Cargo.Remove(simpleCommodity.ID); - } - else - { - var newSimpleCommodity = new SimpleCommodity - { - Context = Context, - Data = simpleCommodity.Data, - Quantity = blueprintQuantity - }; - simpleCommodity.Quantity -= blueprintQuantity; - _reservedStock.Add(newSimpleCommodity); - } - } - Entity.RecalculateMass(); - _remainingManHours = blueprint.ProductionTime; - _producing = true; + Entity.Cargo.Add(item); + Entity.IncompleteCargo.Remove(item); + ItemsUnderConstruction.Remove(item); + finishedConstruction = true; } } + if(finishedConstruction) + Entity.RecalculateMass(); + + return true; } - return true; + // Applying exponents to two random numbers and adding them produces a range of interesting probability distributions for quality + ItemsUnderConstruction = Entity.Build(blueprint, blueprint.Quality * + pow(ProductionQuality, blueprint.QualityExponent) * + (pow(Context.Random.NextFloat(), blueprint.RandomExponent) + + pow(Context.Random.NextFloat(), blueprint.RandomExponent)) / 2, ItemName); + if(ItemsUnderConstruction.Any()) + Entity.RecalculateMass(); // TODO: FIX THIS UGLY HACK, needed to update UI + + return false; } public PersistentBehaviorData Store() @@ -199,12 +129,9 @@ public class Factory : IBehavior, IPersistentBehavior return new FactoryPersistence { Blueprint = _blueprint, - RemainingManHours = _remainingManHours, - Retooling = _retooling, - Producing = _producing, - ReservedStock = _reservedStock.Select(i=>i.ID).ToArray(), + RetoolingTime = RetoolingTime, AssignedPopulation = _assignedPopulation, - ProductionQuality = _productionQuality + ProductionQuality = ProductionQuality }; } @@ -212,12 +139,9 @@ public class Factory : IBehavior, IPersistentBehavior { var factoryPersistence = data as FactoryPersistence; _blueprint = factoryPersistence.Blueprint; - _remainingManHours = factoryPersistence.RemainingManHours; - _retooling = factoryPersistence.Retooling; - _producing = factoryPersistence.Producing; - _reservedStock = factoryPersistence.ReservedStock.Select(id => Context.Cache.Get(id)).ToList(); + RetoolingTime = factoryPersistence.RetoolingTime; _assignedPopulation = factoryPersistence.AssignedPopulation; - _productionQuality = factoryPersistence.ProductionQuality; + ProductionQuality = factoryPersistence.ProductionQuality; } } @@ -225,10 +149,7 @@ public class Factory : IBehavior, IPersistentBehavior public class FactoryPersistence : PersistentBehaviorData { [JsonProperty("blueprint"), Key(0)] public Guid Blueprint; - [JsonProperty("remainingManHours"), Key(1)] public float RemainingManHours; - [JsonProperty("retooling"), Key(2)] public bool Retooling; - [JsonProperty("producing"), Key(3)] public bool Producing; - [JsonProperty("reservedStock"), Key(4)] public Guid[] ReservedStock; + [JsonProperty("retoolingTime"), Key(2)] public double RetoolingTime; [JsonProperty("assignedPopulation"), Key(5)] public int AssignedPopulation; [JsonProperty("productionQuality"), Key(6)] public float ProductionQuality; } \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/Corporations.cs b/Assets/Scripts/ServerShared/Corporations.cs new file mode 100644 index 000000000..36ef49ec1 --- /dev/null +++ b/Assets/Scripts/ServerShared/Corporations.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using MessagePack; +using Newtonsoft.Json; +using UnityEngine; + + +[RethinkTable("Galaxy"), MessagePackObject, JsonObject(MemberSerialization.OptIn)] +public class Corporation : DatabaseEntry, INamedEntry +{ + [JsonProperty("name"), Key(1)] + public string Name; + + [JsonProperty("parent"), Key(2)] + public Guid Parent; + + [JsonProperty("tasks"), Key(3)] + public List Tasks = new List(); + + [JsonProperty("planetSurveyFloor"), Key(4)] + public Dictionary PlanetSurveyFloor = new Dictionary(); + + [JsonProperty("unlockedBlueprints"), Key(5)] + public List UnlockedBlueprints = new List(); + + [IgnoreMember] public string EntryName + { + get => Name; + set => Name = value; + } +} + +[RethinkTable("Galaxy"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] +public class MegaCorporation : DatabaseEntry, INamedEntry +{ + [InspectableField, JsonProperty("name"), Key(1)] + public string Name; + + [InspectableText, JsonProperty("description"), Key(2)] + public string Description; + + [InspectableTexture, JsonProperty("logo"), Key(3)] + public string Logo; + + [InspectableDatabaseLink(typeof(PersonalityAttribute)), JsonProperty("personality"), Key(4)] + public Dictionary Personality = new Dictionary(); + + [InspectableDatabaseLink(typeof(LoadoutData)), JsonProperty("initialFleet"), Key(5)] + public Dictionary InitialFleet = new Dictionary(); + + [InspectableDatabaseLink(typeof(BlueprintData)), JsonProperty("initialTechs"), Key(6)] + public List InitialTechnologies = new List(); + + [JsonProperty("parent"), Key(7)] + public Guid HomeZone; + + [InspectableField, JsonProperty("placement"), Key(8)] + public MegaPlacementType PlacementType; + + [IgnoreMember] public string EntryName + { + get => Name; + set => Name = value; + } +} diff --git a/Assets/Scripts/ServerShared/Corporations.cs.meta b/Assets/Scripts/ServerShared/Corporations.cs.meta new file mode 100644 index 000000000..8aff196ff --- /dev/null +++ b/Assets/Scripts/ServerShared/Corporations.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce66dd66434e39f44bd4d4b9639aaeca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/DatabaseItems.cs b/Assets/Scripts/ServerShared/DatabaseItems.cs index eda71dc37..f9d48fa3f 100644 --- a/Assets/Scripts/ServerShared/DatabaseItems.cs +++ b/Assets/Scripts/ServerShared/DatabaseItems.cs @@ -74,62 +74,6 @@ public class Player : DatabaseEntry, INamedEntry } } -[RethinkTable("Galaxy"), MessagePackObject, JsonObject(MemberSerialization.OptIn)] -public class Corporation : DatabaseEntry, INamedEntry -{ - [JsonProperty("name"), Key(1)] - public string Name; - - [JsonProperty("parent"), Key(2)] - public Guid Parent; - - [JsonProperty("tasks"), Key(3)] - public List Tasks = new List(); - - [JsonProperty("planetSurveyFloor"), Key(4)] - public Dictionary PlanetSurveyFloor = new Dictionary(); - - [IgnoreMember] public string EntryName - { - get => Name; - set => Name = value; - } -} - -[RethinkTable("Galaxy"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] -public class MegaCorporation : DatabaseEntry, INamedEntry -{ - [InspectableField, JsonProperty("name"), Key(1)] - public string Name; - - [InspectableText, JsonProperty("description"), Key(2)] - public string Description; - - [InspectableTexture, JsonProperty("logo"), Key(3)] - public string Logo; - - [InspectableDatabaseLink(typeof(PersonalityAttribute)), JsonProperty("personality"), Key(4)] - public Dictionary Personality = new Dictionary(); - - [InspectableDatabaseLink(typeof(LoadoutData)), JsonProperty("initialFleet"), Key(5)] - public Dictionary InitialFleet = new Dictionary(); - - [InspectableDatabaseLink(typeof(BlueprintData)), JsonProperty("initialTechs"), Key(6)] - public List InitialTechnologies = new List(); - - [JsonProperty("parent"), Key(7)] - public Guid HomeZone; - - [InspectableField, JsonProperty("placement"), Key(8)] - public MegaPlacementType PlacementType; - - [IgnoreMember] public string EntryName - { - get => Name; - set => Name = value; - } -} - [RethinkTable("Items"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] public class LoadoutData : DatabaseEntry, INamedEntry { diff --git a/Assets/Scripts/ServerShared/Entity.cs b/Assets/Scripts/ServerShared/Entity.cs index fd52ecb70..320d0257d 100644 --- a/Assets/Scripts/ServerShared/Entity.cs +++ b/Assets/Scripts/ServerShared/Entity.cs @@ -60,6 +60,14 @@ public abstract class Entity : DatabaseEntry, IMessagePackSerializationCallbackR [JsonProperty("personality"), Key(15)] public Dictionary Personality = new Dictionary(); + [JsonProperty("incompleteGear"), Key(16)] + public Dictionary IncompleteGear = new Dictionary(); + //public List IncompleteGear = new List(); + + [JsonProperty("incompleteGear"), Key(17)] + public Dictionary IncompleteCargo = new Dictionary(); + //public List IncompleteCargo = new List(); + // [IgnoreMember] protected List Behaviors; [IgnoreMember] public Guid Zone; [IgnoreMember] public Dictionary> Behaviors; @@ -69,14 +77,16 @@ public abstract class Entity : DatabaseEntry, IMessagePackSerializationCallbackR [IgnoreMember] public Dictionary AxisOverrides = new Dictionary(); [IgnoreMember] public readonly Dictionary VisibilitySources = new Dictionary(); [IgnoreMember] public readonly Dictionary Messages = new Dictionary(); - - private Dictionary GearData; - private Dictionary> ItemBehaviors; + [IgnoreMember] public Dictionary GearData; + [IgnoreMember] public Dictionary> ItemBehaviors; [IgnoreMember] public float Mass { get; private set; } [IgnoreMember] public float OccupiedCapacity { get; private set; } [IgnoreMember] public float SpecificHeat { get; private set; } [IgnoreMember] public float Visibility => VisibilitySources.Values.Sum(); + + public event Action OnInventoryUpdate; + public float Capacity { get @@ -111,16 +121,16 @@ public abstract class Entity : DatabaseEntry, IMessagePackSerializationCallbackR public void AddItemBehaviors() { - var gear = EquippedItems.Append(Hull); - var gearData = gear.ToDictionary(id => id, id => Context.Cache.Get(id)); - GearData = gearData.Values.ToDictionary(g => g, g => g.ItemData); + var gearIDs = EquippedItems.Append(Hull); + var gear = gearIDs.ToDictionary(id => id, id => Context.Cache.Get(id)); + GearData = gear.Values.ToDictionary(g => g, g => g.ItemData); - // Associate items with behavior list, used only for persistence - ItemBehaviors = gear - .Where(i=> gearData[i].ItemData.Behaviors?.Any()??false) - .ToDictionary(i=> gearData[i], i => gearData[i].ItemData.Behaviors + // Associate items with behavior list, used for persistence and convenience + ItemBehaviors = gearIDs + .Where(i=> gear[i].ItemData.Behaviors?.Any()??false) + .ToDictionary(i=> gear[i], i => gear[i].ItemData.Behaviors .OrderBy(bd => bd.GetType().GetCustomAttribute()?.Order ?? 0) - .Select(bd => bd.CreateInstance(Context, this, gearData[i])) + .Select(bd => bd.CreateInstance(Context, this, gear[i])) .ToList()); var behaviorGroups = ItemBehaviors @@ -160,20 +170,207 @@ public abstract class Entity : DatabaseEntry, IMessagePackSerializationCallbackR .Cast()) behavior.Initialize(); } + public void Equip(Gear gear) + { + if (Cargo.Contains(gear.ID)) Cargo.Remove(gear.ID); + else if (IncompleteGear.Any(ig => ig.Key == gear.ID)) + IncompleteGear.Remove(IncompleteGear.First(ig => ig.Key == gear.ID).Key); + else + throw new ArgumentException("Attempted to equip gear which is not present in inventory!"); + + EquippedItems.Add(gear.ID); + OnBeforeSerialize(); + OnAfterDeserialize(); + } + + // public Guid Build(BlueprintData blueprint) + // { + // var gear = Context.CreateInstance(blueprint.Item, blueprint.Quality * .5f, blueprint.Quality); + // IncompleteGear[gear.ID] = blueprint.ProductionTime; + // RecalculateMass(); + // return gear.ID; + // // IncompleteGear.Add(new IncompleteItem + // // { + // // Item = gear.ID, + // // Blueprint = blueprint.ID, + // // RemainingTime = blueprint.ProductionTime + // // }); + // } + + public List Build(BlueprintData blueprint, float quality, string name, bool equip = false) + { + if (equip) + { + if(blueprint.FactoryItem!=Guid.Empty) + throw new ArgumentException("Attempted to directly build a blueprint which requires a factory!"); + var blueprintItem = Context.Cache.Get(blueprint.Item); + if(blueprintItem == null) + throw new ArgumentException("Attempted to directly build a blueprint for a missing or incompatible item!"); + } + + var newItems = new List(); + if (GetBlueprintIngredients(blueprint, out var simpleIngredients, out var compoundIngredients)) + { + var ingredients = new List(); + ingredients.AddRange(compoundIngredients); + foreach (var compoundCommodity in compoundIngredients) + { + Cargo.Remove(compoundCommodity.ID); + } + foreach (var simpleCommodity in simpleIngredients) + { + var blueprintQuantity = blueprint.Ingredients + .First(ingredient => ingredient.Key == simpleCommodity.ItemData.ID).Value; + if (simpleCommodity.Quantity == blueprintQuantity) + { + ingredients.Add(simpleCommodity); + Cargo.Remove(simpleCommodity.ID); + } + else + { + var newSimpleCommodity = new SimpleCommodity + { + Context = Context, + Data = simpleCommodity.Data, + Quantity = blueprintQuantity + }; + simpleCommodity.Quantity -= blueprintQuantity; + ingredients.Add(newSimpleCommodity); + } + } + + var blueprintItemData = Context.Cache.Get(blueprint.Item); + + if (blueprintItemData is CraftedItemData) + { + for (int i = 0; i < blueprint.Quantity; i++) + { + CraftedItemInstance newItem; + + if (blueprintItemData is EquippableItemData equippableItemData) + { + var newGear = new Gear + { + Context = Context, + Data = blueprintItemData.ID, + Ingredients = ingredients.Select(ii=>ii.ID).ToList(), + Quality = quality, + Blueprint = blueprint.ID, + Name = name + }; + newGear.Durability = Context.Evaluate(equippableItemData.Durability, newGear); + newItem = newGear; + } + else + { + newItem = new CompoundCommodity + { + Context = Context, + Data = blueprintItemData.ID, + Ingredients = ingredients.Select(ii=>ii.ID).ToList(), + Quality = quality, + Blueprint = blueprint.ID, + Name = name + }; + } + Context.Cache.Add(newItem); + if (equip) + IncompleteGear[newItem.ID] = blueprint.ProductionTime; + else + IncompleteCargo[newItem.ID] = blueprint.ProductionTime; + newItems.Add(newItem.ID); + // IncompleteCargo.Add(new IncompleteItem + // { + // Item = newItem.ID, + // Blueprint = blueprint.ID, + // RemainingTime = blueprint.ProductionTime + // }); + } + } + else + { + var newSimpleCommodity = new SimpleCommodity + { + Context = Context, + Data = blueprintItemData.ID, + Quantity = blueprint.Quantity + }; + Context.Cache.Add(newSimpleCommodity); + IncompleteCargo[newSimpleCommodity.ID] = blueprint.ProductionTime; + newItems.Add(newSimpleCommodity.ID); + // IncompleteCargo.Add(new IncompleteItem + // { + // Item = newSimpleCommodity.ID, + // Blueprint = blueprint.ID, + // RemainingTime = blueprint.ProductionTime + // }); + } + + RecalculateMass(); + } + + return newItems; + } + + public bool GetBlueprintIngredients(BlueprintData blueprint, out List simpleIngredients, + out List compoundIngredients) + { + simpleIngredients = new List(); + compoundIngredients = new List(); + var hasAllIngredients = true; + var cargoInstances = Cargo.Select(c => Context.Cache.Get(c)); + foreach (var kvp in blueprint.Ingredients) + { + var itemData = Context.Cache.Get(kvp.Key); + if (itemData is SimpleCommodityData) + { + var matchingItem = cargoInstances.FirstOrDefault(ii => + { + if (!(ii is SimpleCommodity simpleCommodity)) return false; + return simpleCommodity.Data == itemData.ID && simpleCommodity.Quantity >= kvp.Value; + }) as SimpleCommodity; + hasAllIngredients = hasAllIngredients && matchingItem != null; + if(matchingItem != null) + simpleIngredients.Add(matchingItem); + } + else + { + var matchingItems = + cargoInstances.Where(ii => (ii as CompoundCommodity)?.Data == itemData.ID).Cast().ToArray(); + hasAllIngredients = hasAllIngredients && matchingItems.Length >= kvp.Value; + if(matchingItems.Length >= kvp.Value) + compoundIngredients.AddRange(matchingItems.Take(kvp.Value)); + } + } + + return hasAllIngredients; + } + public void RecalculateMass() { Mass = Context.Cache.Get(Hull).Mass + EquippedItems.Select(i => Context.Cache.Get(i)).Sum(i => i.Mass) + + IncompleteGear.Select(i => Context.Cache.Get(i.Key)).Sum(i => i.Mass) + Cargo.Select(i => Context.Cache.Get(i)).Sum(ii => ii.Mass) + + IncompleteCargo.Select(i => Context.Cache.Get(i.Key)).Sum(ii => ii.Mass) + Children.Select(i => Context.Cache.Get(i)).Sum(c=>c.Mass); SpecificHeat = Context.Cache.Get(Hull).HeatCapacity + EquippedItems.Select(i => Context.Cache.Get(i)).Sum(i => i.HeatCapacity) + + IncompleteGear.Select(i => Context.Cache.Get(i.Key)).Sum(i => i.HeatCapacity) + Cargo.Select(i => Context.Cache.Get(i)).Sum(ii => ii.HeatCapacity) + + IncompleteCargo.Select(i => Context.Cache.Get(i.Key)).Sum(ii => ii.HeatCapacity) + Children.Select(i => Context.Cache.Get(i)).Sum(c=>c.SpecificHeat); OccupiedCapacity = EquippedItems.Select(i => Context.Cache.Get(i)).Sum(i => i.ItemData.Size) + Cargo.Select(i => Context.Cache.Get(i)).Sum(ii => Context.GetSize(ii)); + + OnInventoryUpdate?.Invoke(); + } + + public void ClearInventoryListeners() + { + OnInventoryUpdate = null; } public IEnumerable GetBehaviors() where T : class, IBehavior @@ -278,6 +475,15 @@ public abstract class Entity : DatabaseEntry, IMessagePackSerializationCallbackR Messages.Remove(message); } + foreach (var incompleteGear in IncompleteGear.Keys.ToArray()) + { + IncompleteGear[incompleteGear] = IncompleteGear[incompleteGear] - delta; + if (IncompleteGear[incompleteGear] < 0) + { + Equip(Context.Cache.Get(incompleteGear)); + } + } + // Here's the PITA way // foreach (var staleItem in GearData // .Where(kvp=>kvp.Key.ItemData!=kvp.Value) @@ -352,9 +558,9 @@ public abstract class Entity : DatabaseEntry, IMessagePackSerializationCallbackR public void OnAfterDeserialize() { - RecalculateMass(); - AddItemBehaviors(); + + RecalculateMass(); // Iterate only over the behaviors of items which contain persistent data // Filter the behaviors for each item to get the persistent ones, then cast them and combine with the persisted data array for that item @@ -372,4 +578,12 @@ public class AxisSetting { public float Value; public List Behaviors; +} + +[MessagePackObject] +public class IncompleteItem +{ + [Key(0)] public Guid Item; + [Key(1)] public Guid Blueprint; + [Key(2)] public double RemainingTime; } \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/GameContext.cs b/Assets/Scripts/ServerShared/GameContext.cs index 525cb012a..eb1027ea9 100644 --- a/Assets/Scripts/ServerShared/GameContext.cs +++ b/Assets/Scripts/ServerShared/GameContext.cs @@ -699,9 +699,6 @@ public class GameContext if (simpleCargo.Any(g=>g==null)) return null; - foreach(var c in simpleCargo) - Cache.Add(c); - var hull = CreateInstance(loadoutData.Hull, GlobalData.StartingGearQualityMin, GlobalData.StartingGearQualityMax); if(hull==null) @@ -764,11 +761,16 @@ public class GameContext { var item = Cache.Get(data); if (item != null) - return new SimpleCommodity + { + var newItem = new SimpleCommodity { + Context = this, Data = data, Quantity = count }; + Cache.Add(newItem); + return newItem; + } _logger("Attempted to create Simple Commodity instance using missing or incorrect item id"); return null; @@ -809,7 +811,8 @@ public class GameContext Data = data, Ingredients = ingredients.Select(i=>i.ID).ToList(), Quality = Random.NextFloat(qualityMin, qualityMax), - Blueprint = blueprint.ID + Blueprint = blueprint.ID, + Name = $"Generic {item.Name}" }; newGear.Durability = Evaluate(equippableItemData.Durability, newGear); Cache.Add(newGear); @@ -822,7 +825,8 @@ public class GameContext Data = data, Ingredients = ingredients.Select(i=>i.ID).ToList(), Quality = Random.NextFloat(qualityMin, qualityMax), - Blueprint = blueprint.ID + Blueprint = blueprint.ID, + Name = $"Generic {item.Name}" }; Cache.Add(newCommodity); return newCommodity; diff --git a/Assets/Scripts/ServerShared/ItemInstance.cs b/Assets/Scripts/ServerShared/ItemInstance.cs index ed236daea..b1d28109a 100644 --- a/Assets/Scripts/ServerShared/ItemInstance.cs +++ b/Assets/Scripts/ServerShared/ItemInstance.cs @@ -36,6 +36,8 @@ public abstract class CraftedItemInstance : ItemInstance [JsonProperty("ingredients"), Key(3)] public List Ingredients = new List(); [JsonProperty("blueprint"), Key(4)] public Guid Blueprint; + + [JsonProperty("name"), Key(5)] public string Name; } [MessagePackObject, JsonObject(MemberSerialization.OptIn)] diff --git a/Assets/Scripts/StrategyGameManager.cs b/Assets/Scripts/StrategyGameManager.cs index 5e0bd373c..aef3ce82f 100644 --- a/Assets/Scripts/StrategyGameManager.cs +++ b/Assets/Scripts/StrategyGameManager.cs @@ -203,6 +203,9 @@ public class StrategyGameManager : MonoBehaviour CorpMenuRoot.gameObject.SetActive(false); var parentCorp = _cache.Get(newCorp.Parent); + + newCorp.UnlockedBlueprints.AddRange(parentCorp.InitialTechnologies); + _selectedZone = parentCorp.HomeZone; ZoneTabButton.OnPointerClick(null); diff --git a/Assets/Scripts/UI/ButtonField.cs b/Assets/Scripts/UI/ButtonField.cs new file mode 100644 index 000000000..c9841ed17 --- /dev/null +++ b/Assets/Scripts/UI/ButtonField.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +public class ButtonField : MonoBehaviour +{ + public TextMeshProUGUI Label; + public TextMeshProUGUI ButtonLabel; + public FlatFlatButton Button; +} diff --git a/Assets/Scripts/UI/ButtonField.cs.meta b/Assets/Scripts/UI/ButtonField.cs.meta new file mode 100644 index 000000000..cb04c05c9 --- /dev/null +++ b/Assets/Scripts/UI/ButtonField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16f77bec2596fd74ba40cb68aa4c7f20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/ColonyTab.cs b/Assets/Scripts/UI/ColonyTab.cs index cad9f1eb4..7ccfa265d 100644 --- a/Assets/Scripts/UI/ColonyTab.cs +++ b/Assets/Scripts/UI/ColonyTab.cs @@ -3,30 +3,65 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; +using TMPro; using UnityEngine; +using UnityEngine.EventSystems; public class ColonyTab : MonoBehaviour { + public TextMeshProUGUI Title; public PropertiesPanel General; public PropertiesPanel Inventory; public PropertiesPanel Details; - + public ContextMenu ContextMenu; + [HideInInspector] - public GameContext Context; + public GameContext Context + { + get => _context; + set + { + _context = value; + General.Context = value; + Inventory.Context = value; + Details.Context = value; + } + } private Guid _selectedColony; + private GameContext _context; + private HardpointData _selectedHardpoint; public void Open(Guid colony) { _selectedColony = colony; + _selectedHardpoint = null; + + var entity = Context.Cache.Get(_selectedColony); + entity.OnInventoryUpdate += () => PopulateScreen(entity); + PopulateScreen(entity); + } + + private void OnDisable() + { + var entity = Context.Cache.Get(_selectedColony); + entity.ClearInventoryListeners(); + } + + public void PopulateScreen(Entity entity){ + Title.text = entity.Name; General.Clear(); Inventory.Clear(); Details.Clear(); - - var entity = Context.Cache.Get(_selectedColony); - General.AddProperty("Capacity", () => $"{entity.OccupiedCapacity}/{entity.Capacity:0}"); + var corporation = Context.Cache.Get(entity.Corporation); + var blueprints = corporation.UnlockedBlueprints.Select(id => Context.Cache.Get(id)); + var hull = Context.Cache.Get(entity.Hull); + var hullData = Context.Cache.Get(hull.Data); + var capacity = Context.Evaluate(hullData.Capacity, hull, entity); + + General.AddProperty("Capacity", () => $"{entity.OccupiedCapacity}/{capacity:0}"); General.AddProperty("Mass", () => $"{entity.Mass.SignificantDigits(Context.GlobalData.SignificantDigits)}"); General.AddProperty("Temperature", () => $"{entity.Temperature:0}°K"); General.AddProperty("Energy", () => $"{entity.Energy:0}/{entity.GetBehaviors().First().Capacitance:0}"); @@ -37,24 +72,107 @@ public class ColonyTab : MonoBehaviour () => attribute.Value); General.RefreshValues(); - Inventory.ChildRadioSelection = true; + var cargoData = entity.Cargo.ToDictionary(id => _context.Cache.Get(id), + id => Context.Cache.Get(_context.Cache.Get(id).Data)); + //var incompleteGear = entity.IncompleteGear.Keys.Select(id => _context.Cache.Get(id)); + // var incompleteGear = entity.IncompleteGear.Select(x => + // { + // var gear = _context.Cache.Get(x.Key); + // var productionTime = _context.Cache.Get(gear.Blueprint).ProductionTime; + // var progress = (productionTime - (float) x.Value) / productionTime; + // return (gear, progress); + // }); Inventory.AddSection("Gear"); - var equippedItems = entity.EquippedItems.Select(g => Context.Cache.Get(g)); - foreach(var gear in equippedItems) - Inventory.AddProperty(gear.ItemData.Name, null, () => PopulateDetails(gear, entity)); + var gearList = new List(entity.GearData.Keys.Concat(entity.IncompleteGear.Keys.Select(id => _context.Cache.Get(id)))); + foreach (var hardpoint in hullData.Hardpoints) + { + var match = gearList.FirstOrDefault(g => g.ItemData.HardpointType == hardpoint.Type); + var matchingCargoGear = cargoData + .Where(x => x.Value is EquippableItemData equippableItemData && + equippableItemData.HardpointType == hardpoint.Type).Select(x=>x.Key as Gear) + .ToArray(); + if (match == null) + { + var matchingBlueprints = blueprints.Where(bp => + bp.FactoryItem == Guid.Empty && + Context.Cache.Get(bp.Item) is GearData gearData && + gearData.HardpointType == hardpoint.Type).ToArray(); + Action onClick = null; + if (matchingCargoGear.Any() || matchingBlueprints.Any()) + onClick = data => + { + if (data.button == PointerEventData.InputButton.Left) + { + Details.Clear(); + foreach (var blueprint in matchingBlueprints) + { + var blueprintList = Details.AddList(blueprint.Name); + + foreach (var ingredient in blueprint.Ingredients) + { + var itemData = _context.Cache.Get(ingredient.Key); + blueprintList.AddProperty(itemData.Name, () => ingredient.Value.ToString()); + } + + var bpItemData = _context.Cache.Get(blueprint.Item); + + if(entity.GetBlueprintIngredients(blueprint, out _, out _)) + blueprintList.AddButton("Build", _ => entity.Build(blueprint, 1, bpItemData.Name, true)); + } + Details.RefreshValues(); + } + else if (data.button == PointerEventData.InputButton.Right) + { + ContextMenu.gameObject.SetActive(true); + ContextMenu.Clear(); + if (matchingCargoGear.Any()) + ContextMenu.AddDropdown("Install", matchingCargoGear + .Select(gear => (gear.Name, () => entity.Equip(gear), true))); + if(matchingBlueprints.Any()) + ContextMenu.AddDropdown("Build", matchingBlueprints + .Select(blueprint => (blueprint.Name, () => entity.Build(blueprint, 1, _context.Cache.Get(blueprint.Item).Name, true), entity.GetBlueprintIngredients(blueprint, out _, out _)))); + ContextMenu.Show(); + } + }; + Inventory.AddProperty($"Empty {Enum.GetName(typeof(HardpointType), hardpoint.Type)} Hardpoint", null, onClick, matchingBlueprints.Any()); + } + else + { + if (entity.IncompleteGear.ContainsKey(match.ID)) + { + Inventory.AddProgressField(match.Name, () => + { + var productionTime = _context.Cache.Get(match.Blueprint).ProductionTime; + return (productionTime - (float) entity.IncompleteGear[match.ID]) / productionTime; + }); + } + else + { + var prop = Inventory.AddProperty(match.Name, null, _ => + { + _selectedHardpoint = hardpoint; + PopulateDetails(match, entity); + }, true); + + if (hardpoint == _selectedHardpoint) prop.Button.OnPointerClick(new PointerEventData(null){button = PointerEventData.InputButton.Left}); + } + + + gearList.Remove(match); + } + } + if(!entity.Cargo.Any()) Inventory.AddSection("No Cargo"); else { Inventory.AddSection("Cargo"); - foreach (var itemID in entity.Cargo) + foreach (var x in cargoData) { - var itemInstance = Context.Cache.Get(itemID); - var data = Context.Cache.Get(itemInstance.Data); - if(itemInstance is SimpleCommodity simpleCommodity) - Inventory.AddProperty(data.Name, () => simpleCommodity.Quantity.ToString()); + if(x.Key is SimpleCommodity simpleCommodity) + Inventory.AddProperty(x.Value.Name, () => simpleCommodity.Quantity.ToString()); else - Inventory.AddProperty(data.Name); + Inventory.AddProperty(x.Value.Name); } } Inventory.RefreshValues(); @@ -69,6 +187,52 @@ public class ColonyTab : MonoBehaviour Details.AddProperty("Durability", () => $"{gear.Durability.SignificantDigits(Context.GlobalData.SignificantDigits)}/{Context.Evaluate(data.Durability, gear).SignificantDigits(Context.GlobalData.SignificantDigits)}"); + foreach (var behavior in entity.ItemBehaviors[gear]) + { + if (behavior is Factory factory) + { + factory.OnToolingUpdate += () => PopulateDetails(item, entity); + Details.AddField("Production Quality", () => factory.ProductionQuality, f => factory.ProductionQuality = f, 0, 1); + var corporation = Context.Cache.Get(entity.Corporation); + var compatibleBlueprints = corporation.UnlockedBlueprints + .Select(id => _context.Cache.Get(id)) + .Where(bp => bp.FactoryItem == data.ID).ToList(); + if (factory.RetoolingTime > 0) + { + Details.AddProgressField("Retooling", () => (factory.ToolingTime - (float) factory.RetoolingTime) / factory.ToolingTime); + } + else + { + Details.AddField("Item", + () => compatibleBlueprints.FindIndex(bp=>bp.ID== factory.Blueprint) + 1, + i => factory.Blueprint = i == 0 ? Guid.Empty : compatibleBlueprints[i - 1].ID, + new []{"None"}.Concat(compatibleBlueprints.Select(bp=>bp.Name)).ToArray()); + if (factory.Blueprint != Guid.Empty) + { + if (factory.ItemsUnderConstruction.Any()) + { + Details.AddProgressField("Production", () => + { + var itemUnderConstruction = factory.ItemsUnderConstruction[0]; + var itemInstance = _context.Cache.Get(itemUnderConstruction); + var blueprintData = _context.Cache.Get(itemInstance.Blueprint); + return (blueprintData.ProductionTime - (float) entity.IncompleteCargo[itemUnderConstruction]) / blueprintData.ProductionTime; + }); + } + else + { + var ingredientsList = Details.AddList("Ingredients Needed"); + var blueprintData = _context.Cache.Get(factory.Blueprint); + foreach (var ingredient in blueprintData.Ingredients) + { + var itemData = _context.Cache.Get(ingredient.Key); + ingredientsList.AddProperty(itemData.Name, () => ingredient.Value.ToString()); + } + } + } + } + } + } foreach (var behavior in data.Behaviors) { var type = behavior.GetType(); diff --git a/Assets/Scripts/UI/ContextMenu.cs b/Assets/Scripts/UI/ContextMenu.cs index 68c8ef6b7..9812ec322 100644 --- a/Assets/Scripts/UI/ContextMenu.cs +++ b/Assets/Scripts/UI/ContextMenu.cs @@ -54,7 +54,7 @@ public class ContextMenu : MonoBehaviour _hasDropdown = false; } - public void AddOption(string text, Action action) + public void AddOption(string text, Action action, bool enabled = true) { var optionButton = Instantiate(OptionPrefab, ContentRoot); optionButton.Label.text = text; @@ -72,10 +72,11 @@ public class ContextMenu : MonoBehaviour Destroy(_dropdown); }; optionButton.Arrow.gameObject.SetActive(false); + optionButton.Button.interactable = enabled; _options.Add(optionButton.gameObject); } - public void AddDropdown(string text, IEnumerable<(string text, Action action)> options) + public void AddDropdown(string text, IEnumerable<(string text, Action action, bool enabled)> options) { _hasDropdown = true; var optionButton = Instantiate(OptionPrefab, ContentRoot); @@ -89,7 +90,7 @@ public class ContextMenu : MonoBehaviour var drop = Instantiate(DropMenuPrefab, Root); _dropdown = drop.gameObject; foreach (var option in options) - drop.AddOption(option.text, option.action); + drop.AddOption(option.text, option.action, option.enabled); drop.Parent = this; drop.ForceDirectionRight = _dropdownRight; Vector3[] corners = new Vector3[4]; diff --git a/Assets/Scripts/UI/FlatButton.cs b/Assets/Scripts/UI/FlatButton.cs index 9dafe9264..8046d14ea 100644 --- a/Assets/Scripts/UI/FlatButton.cs +++ b/Assets/Scripts/UI/FlatButton.cs @@ -21,6 +21,7 @@ public class FlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandl public FlatButtonAppearance SelectedAppearance; public FlatButtonAppearance HoverAppearance; public FlatButtonAppearance ClickAppearance; + public FlatButtonAppearance DisabledAppearance; private RectOffset _defaultPadding; private float _currentPadding; @@ -45,7 +46,7 @@ public class FlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandl public void OnPointerClick(PointerEventData eventData) { - if (!DisableClickWhenSelected || CurrentState != FlatButtonState.Selected) + if (CurrentState != FlatButtonState.Disabled && (!DisableClickWhenSelected || CurrentState != FlatButtonState.Selected)) { Fill.color = ClickAppearance.FillColor; Outline.color = ClickAppearance.OutlineColor; @@ -67,6 +68,9 @@ public class FlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandl case FlatButtonState.Hover: appearance = HoverAppearance; break; + case FlatButtonState.Disabled: + appearance = DisabledAppearance; + break; default: appearance = new FlatButtonAppearance(); break; @@ -89,7 +93,8 @@ public enum FlatButtonState { Unselected, Selected, - Hover + Hover, + Disabled } [Serializable] diff --git a/Assets/Scripts/UI/FlatFlatButton.cs b/Assets/Scripts/UI/FlatFlatButton.cs index ef7336075..c2ab41a27 100644 --- a/Assets/Scripts/UI/FlatFlatButton.cs +++ b/Assets/Scripts/UI/FlatFlatButton.cs @@ -8,7 +8,7 @@ using UnityEngine.UI; public class FlatFlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler { - public event Action OnClick; + public event Action OnClick; public float StateDamping; // public RectTransform Tab; public Image Fill; @@ -19,6 +19,7 @@ public class FlatFlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitH public Color SelectedColor; public Color HoverColor; public Color ClickColor; + public Color DisabledColor; public void OnPointerEnter(PointerEventData eventData) { @@ -34,12 +35,12 @@ public class FlatFlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitH public void OnPointerClick(PointerEventData eventData) { - if (!DisableClickWhenSelected || CurrentState != FlatButtonState.Selected) + if (CurrentState != FlatButtonState.Disabled && (!DisableClickWhenSelected || CurrentState != FlatButtonState.Selected)) { if (OnClick != null) { Fill.color = ClickColor; - OnClick(); + OnClick(eventData); } } } @@ -58,6 +59,9 @@ public class FlatFlatButton : MonoBehaviour, IPointerEnterHandler, IPointerExitH case FlatButtonState.Hover: appearance = HoverColor; break; + case FlatButtonState.Disabled: + appearance = DisabledColor; + break; default: appearance = Color.white; break; diff --git a/Assets/Scripts/UI/PropertiesList.cs b/Assets/Scripts/UI/PropertiesList.cs index f3916c038..747a983dd 100644 --- a/Assets/Scripts/UI/PropertiesList.cs +++ b/Assets/Scripts/UI/PropertiesList.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; +using UnityEngine.EventSystems; using UnityEngine.UI; public class PropertiesList : PropertiesPanel @@ -33,7 +34,7 @@ public class PropertiesList : PropertiesPanel public void Start() { - Button.OnClick += ToggleExpand; + Button.OnClick += _ => ToggleExpand(); } public void ToggleExpand() => Expanded = !_expanded; @@ -45,24 +46,31 @@ public class PropertiesList : PropertiesPanel FoldoutIcon.transform.localRotation = Quaternion.Euler(0,0, _foldoutRotation); } - public new PropertyLabel AddProperty(string name, Func value = null, Action onClick = null) + public override PropertyLabel AddProperty(string name, Func read = null, Action onClick = null, bool radio = false) { - var prop = base.AddProperty(name, value, onClick); + var prop = base.AddProperty(name, read, onClick, radio); prop.gameObject.SetActive(false); return prop; } - public new PropertiesList AddList(string name) + public override PropertiesList AddList(string name) { var list = base.AddList(name); list.gameObject.SetActive(false); return list; } - public new RectTransform AddSection(string name) + public override RectTransform AddSection(string name) { var section = base.AddSection(name); section.gameObject.SetActive(false); return section; } + + public override PropertyButton AddButton(string name, Action onClick) + { + var button = base.AddButton(name, onClick); + button.gameObject.SetActive(false); + return button; + } } diff --git a/Assets/Scripts/UI/PropertiesPanel.cs b/Assets/Scripts/UI/PropertiesPanel.cs index 3c0aac173..fa692106c 100644 --- a/Assets/Scripts/UI/PropertiesPanel.cs +++ b/Assets/Scripts/UI/PropertiesPanel.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using TMPro; using UnityEngine; +using UnityEngine.EventSystems; public class PropertiesPanel : MonoBehaviour { @@ -15,14 +16,18 @@ public class PropertiesPanel : MonoBehaviour public AttributeProperty AttributePrefab; public InputField InputField; public RangedFloatField RangedFloatField; + public RangedFloatField ProgressField; public EnumField EnumField; public BoolField BoolField; - public bool ChildRadioSelection; + public PropertyButton PropertyButton; + public ButtonField ButtonField; + [HideInInspector] public GameContext Context; protected List Properties = new List(); protected List Buttons = new List(); protected FlatFlatButton SelectedChild; protected event Action RefreshPropertyValues; + protected bool RadioSelection = false; private void Update() { @@ -37,6 +42,7 @@ public class PropertiesPanel : MonoBehaviour Buttons.Clear(); SelectedChild = null; RefreshPropertyValues = null; + RadioSelection = false; } public void Deselect() @@ -46,7 +52,7 @@ public class PropertiesPanel : MonoBehaviour SelectedChild = null; } - public RectTransform AddSection(string name) + public virtual RectTransform AddSection(string name) { var section = Instantiate(SectionPrefab, transform); section.GetComponentInChildren().text = name; @@ -54,20 +60,24 @@ public class PropertiesPanel : MonoBehaviour return section; } - public PropertyLabel AddProperty(string name, Func read = null, Action onClick = null) + public virtual PropertyLabel AddProperty(string name, Func read = null, Action onClick = null, bool radio = false) { var property = Instantiate(PropertyPrefab, transform); property.Name.text = name; - if (ChildRadioSelection) + if (radio) { + RadioSelection = true; Buttons.Add(property.Button); - property.Button.OnClick += () => + property.Button.OnClick += data => { - if (SelectedChild != null) - SelectedChild.CurrentState = FlatButtonState.Unselected; - SelectedChild = property.Button; - SelectedChild.CurrentState = FlatButtonState.Selected; - onClick?.Invoke(); + if (data.button == PointerEventData.InputButton.Left) + { + if (SelectedChild != null) + SelectedChild.CurrentState = FlatButtonState.Unselected; + SelectedChild = property.Button; + SelectedChild.CurrentState = FlatButtonState.Selected; + } + onClick?.Invoke(data); }; } else if(onClick!=null) property.Button.OnClick += onClick; @@ -76,7 +86,7 @@ public class PropertiesPanel : MonoBehaviour return property; } - public PropertiesList AddList(string name) //, IEnumerable<(string, Func)> elements) + public virtual PropertiesList AddList(string name) //, IEnumerable<(string, Func)> elements) { var list = Instantiate(ListPrefab, transform); list.Title.text = name; @@ -103,8 +113,26 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(attributeInstance.gameObject); return attributeInstance; } + + public virtual PropertyButton AddButton(string name, Action onClick) + { + var button = Instantiate(PropertyButton, transform); + button.Label.text = name; + button.Button.OnClick += onClick; + Properties.Add(button.gameObject); + return button; + } + + public void AddButton(string name, string label, Action onClick) + { + var button = Instantiate(ButtonField, transform); + button.Label.text = name; + button.ButtonLabel.text = label; + button.Button.OnClick += onClick; + Properties.Add(button.gameObject); + } - public void AddProperty(string name, Func read, Action write) + public void AddField(string name, Func read, Action write) { var field = Instantiate(InputField, transform); field.Label.text = name; @@ -114,7 +142,7 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(field.gameObject); } - public void AddProperty(string name, Func read, Action write) + public void AddField(string name, Func read, Action write) { var field = Instantiate(InputField, transform); field.Label.text = name; @@ -124,7 +152,7 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(field.gameObject); } - public void AddProperty(string name, Func read, Action write) + public void AddField(string name, Func read, Action write) { var field = Instantiate(InputField, transform); field.Label.text = name; @@ -134,7 +162,7 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(field.gameObject); } - public void AddProperty(string name, Func read, Action write, float min, float max) + public void AddField(string name, Func read, Action write, float min, float max) { var field = Instantiate(RangedFloatField, transform); field.Label.text = name; @@ -146,7 +174,19 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(field.gameObject); } - public void AddProperty(string name, Func read, Action write, int min, int max) + public void AddProgressField(string name, Func read) + { + var field = Instantiate(ProgressField, transform); + field.Label.text = name; + field.Slider.wholeNumbers = false; + field.Slider.minValue = 0; + field.Slider.maxValue = 1; + //field.Slider.onValueChanged.AddListener(val => write(val)); + RefreshPropertyValues += () => field.Slider.value = read(); + Properties.Add(field.gameObject); + } + + public void AddField(string name, Func read, Action write, int min, int max) { var field = Instantiate(RangedFloatField, transform); field.Label.text = name; @@ -158,7 +198,7 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(field.gameObject); } - public void AddProperty(string name, Func read, Action write) + public void AddField(string name, Func read, Action write) { var field = Instantiate(BoolField, transform); field.Label.text = name; @@ -167,7 +207,7 @@ public class PropertiesPanel : MonoBehaviour Properties.Add(field.gameObject); } - public void AddProperty(string name, Func read, Action write, string[] enumOptions) + public void AddField(string name, Func read, Action write, string[] enumOptions) { var field = Instantiate(EnumField, transform); field.Label.text = name; diff --git a/Assets/Scripts/UI/PropertyButton.cs b/Assets/Scripts/UI/PropertyButton.cs new file mode 100644 index 000000000..062df61d4 --- /dev/null +++ b/Assets/Scripts/UI/PropertyButton.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +public class PropertyButton : MonoBehaviour +{ + public TextMeshProUGUI Label; + public FlatFlatButton Button; +} diff --git a/Assets/Scripts/UI/PropertyButton.cs.meta b/Assets/Scripts/UI/PropertyButton.cs.meta new file mode 100644 index 000000000..bd341cfca --- /dev/null +++ b/Assets/Scripts/UI/PropertyButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c0b005aebd0cd947a04034f1a42e838 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Economy.Shared.Unity.csproj b/Economy.Shared.Unity.csproj index c9992bebd..e97fc1135 100644 --- a/Economy.Shared.Unity.csproj +++ b/Economy.Shared.Unity.csproj @@ -104,6 +104,7 @@ +