diff --git a/Assembly-CSharp-Editor-firstpass.csproj b/Assembly-CSharp-Editor-firstpass.csproj index 6c6a80a91..584a4d229 100644 --- a/Assembly-CSharp-Editor-firstpass.csproj +++ b/Assembly-CSharp-Editor-firstpass.csproj @@ -284,9 +284,6 @@ C:/Program Files/Unity/Hub/Editor/2020.2.1f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll - - C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll - E:/Projects/Aetheria-Economy/Assets/Plugins/Remotion.Linq.dll diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index ee5a03973..325863c01 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -348,9 +348,6 @@ C:/Program Files/Unity/Hub/Editor/2020.2.1f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll - - C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll - E:/Projects/Aetheria-Economy/Assets/Plugins/Remotion.Linq.dll diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 518d4ced5..36c93d8ee 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -130,6 +130,7 @@ + @@ -218,6 +219,7 @@ + @@ -313,6 +315,7 @@ + @@ -424,6 +427,7 @@ + @@ -458,6 +462,7 @@ + @@ -567,6 +572,7 @@ + @@ -659,6 +665,7 @@ + @@ -699,6 +706,7 @@ + @@ -711,14 +719,6 @@ - - - - - - - - diff --git a/Assets/Materials/UI/Map Gravity Lines.mat b/Assets/Materials/UI/Map Gravity Lines.mat index 4fb0c25c1..023bdf3ce 100644 --- a/Assets/Materials/UI/Map Gravity Lines.mat +++ b/Assets/Materials/UI/Map Gravity Lines.mat @@ -86,7 +86,7 @@ Material: - _Mode: 0 - _OcclusionStrength: 1 - _Parallax: 0.02 - - _Scale: 3.2540116 + - _Scale: 2.0531235 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 diff --git a/Assets/Prefabs/UI/Inventory.prefab b/Assets/Prefabs/UI/Inventory.prefab index c9f95a4e2..e74f43b4b 100644 --- a/Assets/Prefabs/UI/Inventory.prefab +++ b/Assets/Prefabs/UI/Inventory.prefab @@ -1,5 +1,206 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &1517101022650042043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5683613523479270443} + - component: {fileID: 646959673176026143} + - component: {fileID: 6018881512285912399} + - component: {fileID: 2058795912543605561} + - component: {fileID: 5512238094018694157} + m_Layer: 5 + m_Name: Thermal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5683613523479270443 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517101022650042043} + 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: 6584545650613466935} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -8} + m_SizeDelta: {x: 84, y: 24} + m_Pivot: {x: 1, y: 1} +--- !u!222 &646959673176026143 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517101022650042043} + m_CullTransparentMesh: 0 +--- !u!114 &6018881512285912399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517101022650042043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Thermal + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 53555f7a2d5e745428813f1b1118734f, type: 2} + m_sharedMaterial: {fileID: -2804126062856497447, guid: 53555f7a2d5e745428813f1b1118734f, + 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_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &2058795912543605561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517101022650042043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &5512238094018694157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1517101022650042043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6018881512285912399} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &2279630452357787792 GameObject: m_ObjectHideFlags: 0 @@ -568,6 +769,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -1019,10 +1221,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 78aa0b8ec7594a7438f13757228e3500, type: 3} m_Name: m_EditorClassIdentifier: + Flip: 0 + Settings: {fileID: 0} GameManager: {fileID: 0} ContextMenu: {fileID: 0} Title: {fileID: 2279630453679143108} Dropdown: {fileID: 8289855250608258092} + Current: {fileID: 3016612072679339612} + Thermal: {fileID: 5512238094018694157} Grid: {fileID: 2279630453710142156} NodeBackgroundTextures: - {fileID: -7421115223572569992, guid: d826c67011a143148bb7f6129549ef38, type: 3} @@ -1794,18 +2000,41 @@ MonoBehaviour: - {fileID: 6047394896708382521, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} - {fileID: -3137123266071239926, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} - {fileID: 6575361018301538774, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} + ThermalTextures: + - {fileID: 3624413539235301459, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: 7631404538767374335, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -4752754735582442470, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -2120189714087908947, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -8507936627233245176, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -2508138221163281763, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -9264146362022084, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -4505807909773429587, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: 1571344320749704877, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -6624953910322571867, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -7524521870618806978, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -551590714208027187, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -2054774350801148439, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: 2949637312520497048, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: 6572578204425805008, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + - {fileID: -2189814545099003515, guid: a53955671598f6b4a8b23b245fc38605, type: 3} + ThermalToggleRegionSize: 0.2 NodePrototype: {fileID: 2279630454000268455} TemperatureDisplay: {fileID: 1910900642664402175} TemperatureColor: {fileID: 2800000, guid: dc6059983b32c9749a1d5975fd00ec48, type: 3} TemperatureColorCurve: - Exponent: 0.5 + Exponent: 1.4 Minimum: 0 Maximum: 1 TemperatureAlphaCurve: - Exponent: 0.15 + Exponent: 0.25 Minimum: 0 Maximum: 1 - MaxTemperature: 5000 + MaxTemperature: 1000 + FitToContent: 0 + CellHitPulseTime: 0 + ToggleEnabledColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 1} + ToggleDisabledColor: {r: 0.638, g: 0.638, b: 0.638, a: 1} + CellBackgroundColor: {r: 0, g: 0, b: 0, a: 0.75} EmptyCells: [] --- !u!222 &6932930312706461541 CanvasRenderer: @@ -2007,6 +2236,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -2072,6 +2302,8 @@ RectTransform: - {fileID: 4397116930423727094} - {fileID: 2279630453679143107} - {fileID: 2279630453117559409} + - {fileID: 5683613523479270443} + - {fileID: 6462754505713931446} m_Father: {fileID: 2279630453886260053} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2218,7 +2450,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 189.995, y: -20} + m_AnchoredPosition: {x: 209.12, y: -20} m_SizeDelta: {x: 16, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &6903091099768520881 @@ -2307,6 +2539,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Navigation: m_Mode: 3 + m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} @@ -2429,3 +2662,206 @@ MonoBehaviour: y: 0 width: 1 height: 1 +--- !u!1 &8906074125575078972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6462754505713931446} + - component: {fileID: 7628389798792906681} + - component: {fileID: 4516939325424632037} + - component: {fileID: 8742083009644556466} + - component: {fileID: 3016612072679339612} + m_Layer: 5 + m_Name: Current + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6462754505713931446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8906074125575078972} + 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: 6584545650613466935} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -8} + m_SizeDelta: {x: 78.1, y: 24} + m_Pivot: {x: 0, y: 1} +--- !u!222 &7628389798792906681 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8906074125575078972} + m_CullTransparentMesh: 0 +--- !u!114 &4516939325424632037 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8906074125575078972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Current + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 53555f7a2d5e745428813f1b1118734f, type: 2} + m_sharedMaterial: {fileID: -2804126062856497447, guid: 53555f7a2d5e745428813f1b1118734f, + 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_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &8742083009644556466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8906074125575078972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &3016612072679339612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8906074125575078972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4516939325424632037} + m_OnClick: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Resources/Settings.asset b/Assets/Resources/Settings.asset index 4738ebf95..1bb95f38c 100644 --- a/Assets/Resources/Settings.asset +++ b/Assets/Resources/Settings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d00a82f3ca609ee61f987046c3da2857a1426274d15606bde77e2336dc1c4554 -size 7299 +oid sha256:8db7fda01edf4958994e9baeaf1c8b0d1edf33e5bead1eb095ca1367bf6f20ba +size 7243 diff --git a/Assets/Resources/Sprites/Flat UI/pipes.png b/Assets/Resources/Sprites/Flat UI/pipes.png new file mode 100644 index 000000000..abe5940af --- /dev/null +++ b/Assets/Resources/Sprites/Flat UI/pipes.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ca28d415a655306905581cd5fb73e2e18a5720c7610e614ac222cbedd5f581e +size 3860 diff --git a/Assets/Resources/Sprites/Flat UI/pipes.png.meta b/Assets/Resources/Sprites/Flat UI/pipes.png.meta new file mode 100644 index 000000000..d6c712e52 --- /dev/null +++ b/Assets/Resources/Sprites/Flat UI/pipes.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 2328bcc7bc4840b438d5d2500c562a17 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Flat UI/pipes.psd b/Assets/Resources/Sprites/Flat UI/pipes.psd new file mode 100644 index 000000000..7e2d0059f --- /dev/null +++ b/Assets/Resources/Sprites/Flat UI/pipes.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff2e7e79f2c248a636b000428dfdb9fe5cec6c320271d96791fd27666eebf09a +size 31832 diff --git a/Assets/Resources/Sprites/Flat UI/pipes.psd.meta b/Assets/Resources/Sprites/Flat UI/pipes.psd.meta new file mode 100644 index 000000000..9e468924a --- /dev/null +++ b/Assets/Resources/Sprites/Flat UI/pipes.psd.meta @@ -0,0 +1,492 @@ +fileFormatVersion: 2 +guid: a53955671598f6b4a8b23b245fc38605 +TextureImporter: + internalIDToNameTable: + - first: + 213: 3624413539235301459 + second: pipes_0 + - first: + 213: 7631404538767374335 + second: pipes_1 + - first: + 213: -4752754735582442470 + second: pipes_2 + - first: + 213: -2120189714087908947 + second: pipes_3 + - first: + 213: -8507936627233245176 + second: pipes_4 + - first: + 213: -2508138221163281763 + second: pipes_5 + - first: + 213: -9264146362022084 + second: pipes_6 + - first: + 213: -4505807909773429587 + second: pipes_7 + - first: + 213: 1571344320749704877 + second: pipes_8 + - first: + 213: -6624953910322571867 + second: pipes_9 + - first: + 213: -7524521870618806978 + second: pipes_10 + - first: + 213: -551590714208027187 + second: pipes_11 + - first: + 213: -2054774350801148439 + second: pipes_12 + - first: + 213: 2949637312520497048 + second: pipes_13 + - first: + 213: 6572578204425805008 + second: pipes_14 + - first: + 213: -2189814545099003515 + second: pipes_15 + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: pipes_0 + rect: + serializedVersion: 2 + x: 1 + y: 103 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 3588c3539e08c4230800000000000000 + internalID: 3624413539235301459 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_1 + rect: + serializedVersion: 2 + x: 35 + y: 103 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: ff7788ebef138e960800000000000000 + internalID: 7631404538767374335 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_2 + rect: + serializedVersion: 2 + x: 69 + y: 103 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a1c8d09cfb2da0eb0800000000000000 + internalID: -4752754735582442470 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_3 + rect: + serializedVersion: 2 + x: 103 + y: 103 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: da96a5330b29392e0800000000000000 + internalID: -2120189714087908947 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_4 + rect: + serializedVersion: 2 + x: 1 + y: 69 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 8083a3ae6bcbde980800000000000000 + internalID: -8507936627233245176 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_5 + rect: + serializedVersion: 2 + x: 35 + y: 69 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: d928bf7939d413dd0800000000000000 + internalID: -2508138221163281763 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_6 + rect: + serializedVersion: 2 + x: 69 + y: 69 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: c37c1f6de461fdff0800000000000000 + internalID: -9264146362022084 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_7 + rect: + serializedVersion: 2 + x: 103 + y: 69 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: da43fcf24972871c0800000000000000 + internalID: -4505807909773429587 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_8 + rect: + serializedVersion: 2 + x: 1 + y: 35 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: da61d1a95598ec510800000000000000 + internalID: 1571344320749704877 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_9 + rect: + serializedVersion: 2 + x: 35 + y: 35 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 5a553e1e48f6f04a0800000000000000 + internalID: -6624953910322571867 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_10 + rect: + serializedVersion: 2 + x: 69 + y: 35 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e35bb1da937839790800000000000000 + internalID: -7524521870618806978 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_11 + rect: + serializedVersion: 2 + x: 103 + y: 35 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: dcdf93afa2b5858f0800000000000000 + internalID: -551590714208027187 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_12 + rect: + serializedVersion: 2 + x: 1 + y: 1 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 9e5e9e65d99fb73e0800000000000000 + internalID: -2054774350801148439 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_13 + rect: + serializedVersion: 2 + x: 35 + y: 1 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 897a50502873fe820800000000000000 + internalID: 2949637312520497048 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_14 + rect: + serializedVersion: 2 + x: 69 + y: 1 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 0dc564dcd0d763b50800000000000000 + internalID: 6572578204425805008 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: pipes_15 + rect: + serializedVersion: 2 + x: 103 + y: 1 + width: 32 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 589e36bf5473c91e0800000000000000 + internalID: -2189814545099003515 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/ARPG.unity b/Assets/Scenes/ARPG.unity index 577651aed..cdcd49498 100644 --- a/Assets/Scenes/ARPG.unity +++ b/Assets/Scenes/ARPG.unity @@ -1830,7 +1830,7 @@ RectTransform: - {fileID: 1868140981} - {fileID: 1080776604} m_Father: {fileID: 761574181} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -4012,7 +4012,7 @@ RectTransform: - {fileID: 1631662978} - {fileID: 146394775} m_Father: {fileID: 761574181} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4612,6 +4612,8 @@ MonoBehaviour: ContextMenu: {fileID: 1157981993} Title: {fileID: 0} Dropdown: {fileID: 0} + Current: {fileID: 0} + Thermal: {fileID: 0} Grid: {fileID: 1359207440} NodeBackgroundTextures: - {fileID: -7421115223572569992, guid: d826c67011a143148bb7f6129549ef38, type: 3} @@ -5383,6 +5385,8 @@ MonoBehaviour: - {fileID: 6047394896708382521, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} - {fileID: -3137123266071239926, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} - {fileID: 6575361018301538774, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} + ThermalTextures: [] + ThermalToggleRegionSize: 0.2 NodePrototype: {fileID: 1889622745} TemperatureDisplay: {fileID: 191729605} TemperatureColor: {fileID: 2800000, guid: dc6059983b32c9749a1d5975fd00ec48, type: 3} @@ -5397,8 +5401,111 @@ MonoBehaviour: MaxTemperature: 1000 FitToContent: 1 CellHitPulseTime: 0.5 + ToggleEnabledColor: {r: 0, g: 0, b: 0, a: 0} + ToggleDisabledColor: {r: 0, g: 0, b: 0, a: 0} CellBackgroundColor: {r: 0, g: 0, b: 0, a: 0.75} EmptyCells: [] +--- !u!1 &411347518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 411347519} + - component: {fileID: 411347523} + - component: {fileID: 411347522} + - component: {fileID: 411347521} + - component: {fileID: 411347520} + m_Layer: 5 + m_Name: Menu Background + m_TagString: UIBackground + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &411347519 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411347518} + 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: 761574181} + 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!114 &411347520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411347518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9643e74593988274bbed9adf40384e48, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &411347521 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411347518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3468b3db8d419c745b12124f6432696b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &411347522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411347518} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &411347523 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 411347518} + m_CullTransparentMesh: 0 --- !u!1 &425104907 GameObject: m_ObjectHideFlags: 0 @@ -5928,7 +6035,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 761574181} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -7431,7 +7538,7 @@ RectTransform: - {fileID: 738229276} - {fileID: 947321578} m_Father: {fileID: 761574181} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -9438,6 +9545,7 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1273980439} + - {fileID: 411347519} - {fileID: 1723136546} - {fileID: 346000247} - {fileID: 1726632265} @@ -13693,7 +13801,7 @@ RectTransform: - {fileID: 1505831357} - {fileID: 1741914910} m_Father: {fileID: 761574181} - m_RootOrder: 6 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -15820,7 +15928,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 761574181} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -17143,12 +17251,12 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -17163,12 +17271,12 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 55.675 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1713457305180270767, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -17999,12 +18107,12 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMax.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchorMin.y - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -18019,12 +18127,12 @@ PrefabInstance: - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.x - value: 60.98 + value: 0 objectReference: {fileID: 0} - target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} propertyPath: m_AnchoredPosition.y - value: -16 + value: 0 objectReference: {fileID: 0} - target: {fileID: 1713457305180270767, guid: 2758dfa2744d7ad4d8877545189d116e, type: 3} @@ -19023,7 +19131,7 @@ RectTransform: m_Children: - {fileID: 460484049} m_Father: {fileID: 761574181} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 1, y: 1} @@ -19156,7 +19264,7 @@ RectTransform: - {fileID: 522642868} - {fileID: 1783772015} m_Father: {fileID: 761574181} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -21357,6 +21465,8 @@ MonoBehaviour: GameManager: {fileID: 1009503729} DragParent: {fileID: 245842385} Dialog: {fileID: 620555924} + BackgroundEntered: {fileID: 411347521} + BackgroundExited: {fileID: 411347520} --- !u!1 &2011788088 GameObject: m_ObjectHideFlags: 0 @@ -22738,6 +22848,11 @@ PrefabInstance: propertyPath: m_SizeDelta.y value: -583 objectReference: {fileID: 0} + - target: {fileID: 257019179596293679, guid: 426f9dcb510530d4dbfa678c9f727ec1, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 257019180101986795, guid: 426f9dcb510530d4dbfa678c9f727ec1, type: 3} propertyPath: m_AnchorMax.x @@ -23018,6 +23133,11 @@ PrefabInstance: propertyPath: m_AnchorMax.y value: 1 objectReference: {fileID: 0} + - target: {fileID: 2279630452592903581, guid: aac073da6df367d499834c926930dd84, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 2279630452912159027, guid: aac073da6df367d499834c926930dd84, type: 3} propertyPath: m_AnchorMax.x @@ -23218,21 +23338,6 @@ PrefabInstance: propertyPath: GameManager value: objectReference: {fileID: 1009503729} - - target: {fileID: 2279630453886260054, guid: aac073da6df367d499834c926930dd84, - type: 3} - propertyPath: MaxTemperature - value: 1000 - objectReference: {fileID: 0} - - target: {fileID: 2279630453886260054, guid: aac073da6df367d499834c926930dd84, - type: 3} - propertyPath: TemperatureAlphaCurve.Exponent - value: 0.25 - objectReference: {fileID: 0} - - target: {fileID: 2279630453886260054, guid: aac073da6df367d499834c926930dd84, - type: 3} - propertyPath: TemperatureColorCurve.Exponent - value: 1.4 - objectReference: {fileID: 0} - target: {fileID: 2279630454000268454, guid: aac073da6df367d499834c926930dd84, type: 3} propertyPath: m_AnchorMax.y @@ -27635,6 +27740,8 @@ MonoBehaviour: ContextMenu: {fileID: 1157981993} Title: {fileID: 0} Dropdown: {fileID: 0} + Current: {fileID: 0} + Thermal: {fileID: 0} Grid: {fileID: 7628189704016736660} NodeBackgroundTextures: - {fileID: -7421115223572569992, guid: d826c67011a143148bb7f6129549ef38, type: 3} @@ -28406,6 +28513,8 @@ MonoBehaviour: - {fileID: 6047394896708382521, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} - {fileID: -3137123266071239926, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} - {fileID: 6575361018301538774, guid: ef4a863cd35ba454cb1d7e37e6388abe, type: 3} + ThermalTextures: [] + ThermalToggleRegionSize: 0.2 NodePrototype: {fileID: 7628189703197605887} TemperatureDisplay: {fileID: 7852865762198308775} TemperatureColor: {fileID: 2800000, guid: dc6059983b32c9749a1d5975fd00ec48, type: 3} @@ -28420,6 +28529,8 @@ MonoBehaviour: MaxTemperature: 1000 FitToContent: 1 CellHitPulseTime: 0.5 + ToggleEnabledColor: {r: 0, g: 0, b: 0, a: 0} + ToggleDisabledColor: {r: 0, g: 0, b: 0, a: 0} CellBackgroundColor: {r: 0, g: 0, b: 0, a: 0.75} EmptyCells: [] --- !u!114 &7628189704109037583 diff --git a/Assets/Scripts/ActionGameManager.cs b/Assets/Scripts/ActionGameManager.cs index 42fac21d3..6893230da 100644 --- a/Assets/Scripts/ActionGameManager.cs +++ b/Assets/Scripts/ActionGameManager.cs @@ -50,7 +50,6 @@ public class ActionGameManager : MonoBehaviour private float _time; private AetheriaInput _input; private int _zoomLevelIndex; - private Ship _currentShip; // private ShipInput _shipInput; private float2 _shipYawPitch; @@ -60,10 +59,7 @@ public class ActionGameManager : MonoBehaviour public List PlayerShips { get; } = new List(); public EquippedDockingBay DockingBay { get; private set; } - public Ship CurrentShip - { - get => _currentShip; - } + public Ship CurrentShip { get; set; } public DatabaseCache ItemData { get; private set; } public ItemManager ItemManager { get; private set; } public Zone Zone { get; private set; } @@ -123,12 +119,12 @@ public class ActionGameManager : MonoBehaviour Cursor.lockState = CursorLockMode.Locked; _input.Player.Enable(); Menu.gameObject.SetActive(false); - if (_currentShip != null && _currentShip.Parent == null) + if (CurrentShip != null && CurrentShip.Parent == null) { GameplayUI.SetActive(true); - SchematicDisplay.ShowShip(_currentShip); - ShipPanel.Display(_currentShip, true); + SchematicDisplay.ShowShip(CurrentShip); + ShipPanel.Display(CurrentShip, true); } return; @@ -138,7 +134,7 @@ public class ActionGameManager : MonoBehaviour _input.Player.Disable(); GameplayUI.SetActive(false); Menu.ShowTab(MenuTab.Map); - MenuMap.Position = _currentShip.Position.xz; + MenuMap.Position = CurrentShip.Position.xz; }; _input.Global.Inventory.performed += context => @@ -148,12 +144,12 @@ public class ActionGameManager : MonoBehaviour Cursor.lockState = CursorLockMode.Locked; _input.Player.Enable(); Menu.gameObject.SetActive(false); - if (_currentShip != null && _currentShip.Parent == null) + if (CurrentShip != null && CurrentShip.Parent == null) { GameplayUI.SetActive(true); - SchematicDisplay.ShowShip(_currentShip); - ShipPanel.Display(_currentShip, true); + SchematicDisplay.ShowShip(CurrentShip); + ShipPanel.Display(CurrentShip, true); } return; } @@ -162,86 +158,79 @@ public class ActionGameManager : MonoBehaviour _input.Player.Disable(); Menu.ShowTab(MenuTab.Inventory); GameplayUI.SetActive(false); - var cargo = _currentShip.CargoBays.FirstOrDefault(); - if (cargo != null) - { - Inventory.GetPanel.Display(cargo); - } - else Inventory.GetPanel.Clear(); - Inventory.GetPanel.Display(_currentShip); }; _input.Global.Dock.performed += context => { - if (_currentShip.Parent == null) Dock(); + if (CurrentShip.Parent == null) Dock(); else Undock(); }; _input.Player.TargetReticle.performed += context => { - var underReticle = Zone.Entities.Where(x => x != _currentShip).MaxBy(x => dot(normalize(x.Position - _currentShip.Position), _currentShip.LookDirection)); - _currentShip.Target.Value = _currentShip.Target.Value == underReticle ? null : underReticle; + var underReticle = Zone.Entities.Where(x => x != CurrentShip).MaxBy(x => dot(normalize(x.Position - CurrentShip.Position), CurrentShip.LookDirection)); + CurrentShip.Target.Value = CurrentShip.Target.Value == underReticle ? null : underReticle; }; _input.Player.TargetNearest.performed += context => { - _currentShip.Target.Value = Zone.Entities.Where(x=>x!=_currentShip).MaxBy(x => length(x.Position - _currentShip.Position)); + CurrentShip.Target.Value = Zone.Entities.Where(x=>x!=CurrentShip).MaxBy(x => length(x.Position - CurrentShip.Position)); }; _input.Player.TargetNext.performed += context => { - var targets = Zone.Entities.Where(x => x != _currentShip).OrderBy(x => length(x.Position - _currentShip.Position)).ToArray(); - var currentTargetIndex = Array.IndexOf(targets, _currentShip.Target.Value); - _currentShip.Target.Value = targets[(currentTargetIndex + 1) % targets.Length]; + var targets = Zone.Entities.Where(x => x != CurrentShip).OrderBy(x => length(x.Position - CurrentShip.Position)).ToArray(); + var currentTargetIndex = Array.IndexOf(targets, CurrentShip.Target.Value); + CurrentShip.Target.Value = targets[(currentTargetIndex + 1) % targets.Length]; }; _input.Player.TargetPrevious.performed += context => { - var targets = Zone.Entities.Where(x => x != _currentShip).OrderBy(x => length(x.Position - _currentShip.Position)).ToArray(); - var currentTargetIndex = Array.IndexOf(targets, _currentShip.Target.Value); - _currentShip.Target.Value = targets[(currentTargetIndex + targets.Length - 1) % targets.Length]; + var targets = Zone.Entities.Where(x => x != CurrentShip).OrderBy(x => length(x.Position - CurrentShip.Position)).ToArray(); + var currentTargetIndex = Array.IndexOf(targets, CurrentShip.Target.Value); + CurrentShip.Target.Value = targets[(currentTargetIndex + targets.Length - 1) % targets.Length]; }; #region Trigger Groups _input.Player.PreviousWeaponGroup.performed += context => { - if (_currentShip.Parent != null) return; + if (CurrentShip.Parent != null) return; SchematicDisplay.SelectedGroupIndex--; }; _input.Player.NextWeaponGroup.performed += context => { - if (_currentShip.Parent != null) return; + if (CurrentShip.Parent != null) return; SchematicDisplay.SelectedGroupIndex++; }; _input.Player.PreviousWeapon.performed += context => { - if (_currentShip.Parent != null) return; + if (CurrentShip.Parent != null) return; SchematicDisplay.SelectedItemIndex--; }; _input.Player.NextWeapon.performed += context => { - if (_currentShip.Parent != null) return; + if (CurrentShip.Parent != null) return; SchematicDisplay.SelectedItemIndex++; }; _input.Player.ToggleWeaponGroup.performed += context => { - if (_currentShip.Parent != null) return; + if (CurrentShip.Parent != null) return; var item = SchematicDisplay.SchematicItems[SchematicDisplay.SelectedItemIndex]; - if (_currentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Contains(item.Item)) - _currentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Remove(item.Item); - else _currentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Add(item.Item); + if (CurrentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Contains(item.Item)) + CurrentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Remove(item.Item); + else CurrentShip.TriggerGroups[SchematicDisplay.SelectedGroupIndex].Add(item.Item); SchematicDisplay.UpdateTriggerGroups(); }; _input.Player.FireGroup1.started += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[0]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[0]) { foreach (var behaviors in item.BehaviorGroups) { @@ -254,8 +243,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup1.canceled += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[0]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[0]) { foreach (var behaviors in item.BehaviorGroups) { @@ -267,8 +256,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup2.started += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[1]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[1]) { foreach (var behaviors in item.BehaviorGroups) { @@ -281,8 +270,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup2.canceled += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[1]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[1]) { foreach (var behaviors in item.BehaviorGroups) { @@ -294,8 +283,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup3.started += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[2]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[2]) { foreach (var behaviors in item.BehaviorGroups) { @@ -308,8 +297,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup3.canceled += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[2]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[2]) { foreach (var behaviors in item.BehaviorGroups) { @@ -321,8 +310,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup4.started += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[3]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[3]) { foreach (var behaviors in item.BehaviorGroups) { @@ -335,8 +324,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup4.canceled += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[3]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[3]) { foreach (var behaviors in item.BehaviorGroups) { @@ -348,8 +337,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup5.started += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[4]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[4]) { foreach (var behaviors in item.BehaviorGroups) { @@ -362,8 +351,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup5.canceled += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[4]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[4]) { foreach (var behaviors in item.BehaviorGroups) { @@ -375,8 +364,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup6.started += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[5]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[5]) { foreach (var behaviors in item.BehaviorGroups) { @@ -389,8 +378,8 @@ public class ActionGameManager : MonoBehaviour _input.Player.FireGroup6.canceled += context => { - if (_currentShip.Parent != null) return; - foreach (var item in _currentShip.TriggerGroups[5]) + if (CurrentShip.Parent != null) return; + foreach (var item in CurrentShip.TriggerGroups[5]) { foreach (var behaviors in item.BehaviorGroups) { @@ -454,15 +443,15 @@ public class ActionGameManager : MonoBehaviour var shipHull = ItemManager.CreateInstance(hullType, 0, 1) as EquippableItem; var ship = new Ship(ItemManager, Zone, shipHull); PlayerShips.Add(ship); - _currentShip = ship; - _currentShip.Target.Subscribe(target => + CurrentShip = ship; + CurrentShip.Target.Subscribe(target => { - TargetIndicator.gameObject.SetActive(_currentShip.Target.Value != null); + TargetIndicator.gameObject.SetActive(CurrentShip.Target.Value != null); TargetShipPanel.gameObject.SetActive(target != null); if (target != null) { TargetShipPanel.Display(target, true); - TargetSchematicDisplay.ShowShip(target, _currentShip); + TargetSchematicDisplay.ShowShip(target, CurrentShip); } }); ship.ArmorDamage.Subscribe(hit => @@ -478,7 +467,7 @@ public class ActionGameManager : MonoBehaviour var data = ItemManager.GetData(hit.item.EquippableItem); EventLog.LogMessage( $"{hit.item.EquippableItem.Name} hit for {hit.damage} damage, currently {((int) (hit.item.EquippableItem.Durability / data.Durability * 100)).ToString()}%", - data.HardpointType == HardpointType.Thermal ? Settings.ThermalHitColor : Settings.GearHitColor); + Settings.GearHitColor); }); ship.HardpointDamage.Subscribe(hit => EventLog.LogMessage( $"{Enum.GetName(typeof(HardpointType), hit.hardpoint.Type)} hardpoint hit for {hit.damage} damage, currently {((int) (ship.HardpointArmor[hit.hardpoint] / hit.hardpoint.Armor * 100)).ToString()}%", @@ -524,27 +513,25 @@ public class ActionGameManager : MonoBehaviour public void Dock() { - if (_currentShip.Parent != null) return; + if (CurrentShip.Parent != null) return; foreach (var entity in Zone.Entities.ToArray()) { - if (lengthsq(entity.Position.xz - _currentShip.Position.xz) < + if (lengthsq(entity.Position.xz - CurrentShip.Position.xz) < Settings.GameplaySettings.DockingDistance * Settings.GameplaySettings.DockingDistance) { - var bay = entity.TryDock(_currentShip); + var bay = entity.TryDock(CurrentShip); if (bay != null) { DockingBay = bay; DockCamera.enabled = true; FollowCamera.enabled = false; - _currentShip.Active = false; + CurrentShip.Active = false; var orbital = (OrbitalEntity) entity; DockCamera.Follow = SectorRenderer.EntityInstances[orbital].Transform; var parentOrbit = Zone.Orbits[orbital.OrbitData].Data.Parent; var parentPlanet = SectorRenderer.Planets[Zone.Planets.FirstOrDefault(p => p.Value.Orbit == parentOrbit).Key]; DockCamera.LookAt = parentPlanet.Body.transform; Menu.ShowTab(MenuTab.Inventory); - Inventory.GetPanel.Display(bay); - Inventory.GetPanel.Display(_currentShip); Cursor.lockState = CursorLockMode.None; _input.Player.Disable(); GameplayUI.SetActive(false); @@ -557,44 +544,44 @@ public class ActionGameManager : MonoBehaviour public void Undock() { - if (_currentShip.Parent == null) return; - if (_currentShip.GetBehavior() == null) + if (CurrentShip.Parent == null) return; + if (CurrentShip.GetBehavior() == null) { ConfirmationDialog.Clear(); ConfirmationDialog.Title.text = "Can't undock. Missing cockpit component!"; ConfirmationDialog.Show(); } - else if (_currentShip.GetBehavior() == null) + else if (CurrentShip.GetBehavior() == null) { ConfirmationDialog.Clear(); ConfirmationDialog.Title.text = "Can't undock. Missing thruster component!"; ConfirmationDialog.Show(); } - else if (_currentShip.GetBehavior() == null) + else if (CurrentShip.GetBehavior() == null) { ConfirmationDialog.Clear(); ConfirmationDialog.Title.text = "Can't undock. Missing reactor component!"; ConfirmationDialog.Show(); } - else if (_currentShip.Parent.TryUndock(_currentShip)) + else if (CurrentShip.Parent.TryUndock(CurrentShip)) { Menu.gameObject.SetActive(false); DockingBay = null; - _currentShip.Active = true; + CurrentShip.Active = true; //_shipInput = new ShipInput(_input.Player, _currentShip); DockCamera.enabled = false; FollowCamera.enabled = true; - FollowCamera.LookAt = SectorRenderer.EntityInstances[_currentShip].LookAtPoint; - FollowCamera.Follow = SectorRenderer.EntityInstances[_currentShip].Transform; - ArticulationGroups = _currentShip.Equipment + FollowCamera.LookAt = SectorRenderer.EntityInstances[CurrentShip].LookAtPoint; + FollowCamera.Follow = SectorRenderer.EntityInstances[CurrentShip].Transform; + ArticulationGroups = CurrentShip.Equipment .Where(item => item.Behaviors.Any(x => x.Data is WeaponData && !(x.Data is LauncherData))) - .GroupBy(item => SectorRenderer.EntityInstances[_currentShip] - .GetBarrel(_currentShip.Hardpoints[item.Position.x, item.Position.y]) + .GroupBy(item => SectorRenderer.EntityInstances[CurrentShip] + .GetBarrel(CurrentShip.Hardpoints[item.Position.x, item.Position.y]) .GetComponentInParent()?.Group ?? -1) .Select((group, index) => { return ( - group.Select(item => _currentShip.Hardpoints[item.Position.x, item.Position.y]).ToArray(), - group.Select(item => SectorRenderer.EntityInstances[_currentShip].GetBarrel(_currentShip.Hardpoints[item.Position.x, item.Position.y])).ToArray(), + group.Select(item => CurrentShip.Hardpoints[item.Position.x, item.Position.y]).ToArray(), + group.Select(item => SectorRenderer.EntityInstances[CurrentShip].GetBarrel(CurrentShip.Hardpoints[item.Position.x, item.Position.y])).ToArray(), Crosshairs[index] ); }).ToArray(); @@ -604,7 +591,7 @@ public class ActionGameManager : MonoBehaviour foreach (var group in ArticulationGroups) group.crosshair.gameObject.SetActive(true); - LockingIndicators = _currentShip.GetBehaviors().Select(x => + LockingIndicators = CurrentShip.GetBehaviors().Select(x => { var i = LockIndicator.Instantiate(); return (x, i, i.GetComponent()); @@ -614,8 +601,8 @@ public class ActionGameManager : MonoBehaviour Cursor.lockState = CursorLockMode.Locked; GameplayUI.SetActive(true); _input.Player.Enable(); - ShipPanel.Display(_currentShip, true); - SchematicDisplay.ShowShip(_currentShip); + ShipPanel.Display(CurrentShip, true); + SchematicDisplay.ShowShip(CurrentShip); } else { @@ -636,9 +623,9 @@ public class ActionGameManager : MonoBehaviour public IEnumerable AvailableCargoBays() { - if (_currentShip.Parent != null) + if (CurrentShip.Parent != null) { - foreach (var bay in _currentShip.Parent.DockingBays) + foreach (var bay in CurrentShip.Parent.DockingBays) { if (PlayerShips.Contains(bay.DockedShip)) yield return bay; } @@ -647,15 +634,15 @@ public class ActionGameManager : MonoBehaviour public IEnumerable AvailableShips() { - if (_currentShip.Parent != null) + if (CurrentShip.Parent != null) { foreach (var ship in PlayerShips) { - if (_currentShip.Parent.Children.Contains(ship)) yield return ship; + if (CurrentShip.Parent.Children.Contains(ship)) yield return ship; } } else - yield return _currentShip; + yield return CurrentShip; } void Update() @@ -664,13 +651,13 @@ public class ActionGameManager : MonoBehaviour { _time += Time.deltaTime; ItemManager.Time = Time.time; - if(_currentShip.Parent==null) + if(CurrentShip.Parent==null) { var look = _input.Player.Look.ReadValue(); _shipYawPitch = float2(_shipYawPitch.x + look.x * Sensitivity.x, clamp(_shipYawPitch.y + look.y * Sensitivity.y, -.45f * PI, .45f * PI)); _viewDirection = mul(float3(0, 0, 1), Unity.Mathematics.float3x3.Euler(float3(_shipYawPitch.yx, 0), RotationOrder.YXZ)); - _currentShip.LookDirection = _viewDirection; - _currentShip.MovementDirection = _input.Player.Move.ReadValue(); + CurrentShip.LookDirection = _viewDirection; + CurrentShip.MovementDirection = _input.Player.Move.ReadValue(); } } Zone.Update(_time, Time.deltaTime); @@ -684,12 +671,12 @@ public class ActionGameManager : MonoBehaviour private void UpdateTargetIndicators() { - if (_currentShip == null || _currentShip.Parent != null) return; + if (CurrentShip == null || CurrentShip.Parent != null) return; - ViewDot.Target = SectorRenderer.EntityInstances[_currentShip].LookAtPoint.position; - if (_currentShip.Target.Value != null) - TargetIndicator.Target = _currentShip.Target.Value.Position; - var distance = length((float3)ViewDot.Target - _currentShip.Position); + ViewDot.Target = SectorRenderer.EntityInstances[CurrentShip].LookAtPoint.position; + if (CurrentShip.Target.Value != null) + TargetIndicator.Target = CurrentShip.Target.Value.Position; + var distance = length((float3)ViewDot.Target - CurrentShip.Position); foreach (var (_, barrels, crosshair) in ArticulationGroups) { var averagePosition = Vector3.zero; @@ -700,10 +687,10 @@ public class ActionGameManager : MonoBehaviour } foreach (var (targetLock, indicator, spin) in LockingIndicators) { - var showLockingIndicator = targetLock.Lock > .01f && _currentShip.Target.Value != null; + var showLockingIndicator = targetLock.Lock > .01f && CurrentShip.Target.Value != null; indicator.gameObject.SetActive(showLockingIndicator); if(showLockingIndicator) - indicator.Target = _currentShip.Target.Value.Position; + indicator.Target = CurrentShip.Target.Value.Position; indicator.NoiseAmplitude = Settings.GameplaySettings.LockIndicatorNoiseAmplitude * (1 - targetLock.Lock); indicator.NoiseFrequency = Settings.GameplaySettings.LockIndicatorFrequency.Evaluate(targetLock.Lock); spin.Speed = Settings.GameplaySettings.LockSpinSpeed.Evaluate(targetLock.Lock); diff --git a/Assets/Scripts/ActionGameManager.cs.meta b/Assets/Scripts/ActionGameManager.cs.meta index 7b7dd5d18..b7beba3d8 100644 --- a/Assets/Scripts/ActionGameManager.cs.meta +++ b/Assets/Scripts/ActionGameManager.cs.meta @@ -4,7 +4,7 @@ MonoImporter: externalObjects: {} serializedVersion: 2 defaultReferences: [] - executionOrder: 0 + executionOrder: -10 icon: {instanceID: 0} userData: assetBundleName: diff --git a/Assets/Scripts/GameSettings.cs b/Assets/Scripts/GameSettings.cs index aa18b64e2..4052f92b6 100644 --- a/Assets/Scripts/GameSettings.cs +++ b/Assets/Scripts/GameSettings.cs @@ -28,7 +28,6 @@ public class GameSettings : ScriptableObject public Color ArmorHitColor; public Color HardpointHitColor; public Color GearHitColor; - public Color ThermalHitColor; public Gradient ArmorGradient; public Gradient DurabilityGradient; [HideInInspector] public Sprite[] ItemIcons; diff --git a/Assets/Scripts/InventoryMenu.cs b/Assets/Scripts/InventoryMenu.cs index 2ba83fc2d..1ed4137e8 100644 --- a/Assets/Scripts/InventoryMenu.cs +++ b/Assets/Scripts/InventoryMenu.cs @@ -19,6 +19,8 @@ public class InventoryMenu : MonoBehaviour public ActionGameManager GameManager; public RectTransform DragParent; public ConfirmationDialog Dialog; + public ObservablePointerEnterTrigger BackgroundEntered; + public ObservablePointerExitTrigger BackgroundExited; private int _currentPanel = -1; @@ -41,9 +43,31 @@ public class InventoryMenu : MonoBehaviour private int2 _dragTargetPosition; private int2 _lastDragPosition; private bool _dragTargetValid; + private bool _destroyItem; + + private void OnEnable() + { + BackgroundEntered.gameObject.SetActive(true); + + BackgroundEntered.OnPointerEnterAsObservable().Subscribe(enter => + { + _destroyItem = true; + }); + BackgroundExited.OnPointerExitAsObservable().Subscribe(enter => + { + _destroyItem = false; + }); + var cargo = GameManager.DockingBay ?? GameManager.CurrentShip.CargoBays.FirstOrDefault(); + if (cargo!=null) + InventoryPanels[0].Display(cargo); + InventoryPanels[1].Display(GameManager.CurrentShip); + } + + private void OnDisable() + { + BackgroundEntered.gameObject.SetActive(false); + } - public InventoryPanel GetPanel => InventoryPanels[_currentPanel = (_currentPanel + 1) % InventoryPanels.Length]; - void Start() { PropertiesPanel.Context = GameManager.ItemManager; @@ -150,6 +174,25 @@ public class InventoryMenu : MonoBehaviour { _dragItem.Rotation = _originalRotation; } + + if (_destroyItem) + { + if (data is InventoryCargoEventData cargoEvent) + { + cargoEvent.CargoBay.Remove(_dragItem); + } + else if (data is InventoryEntityEventData entityEvent) + { + if (entityEvent.Entity.Unequip(_originalEquippedItem) == null) + { + Dialog.Clear(); + Dialog.Title.text = "Unable to destroy item!"; + Dialog.AddProperty("Verify that cargo bays are empty before un-equipping them."); + Dialog.Show(); + } + } + } + panel.IgnoreOccupancy = null; panel.RefreshCells(); if(_dragTargetPanel!=panel) diff --git a/Assets/Scripts/MenuPanel.cs b/Assets/Scripts/MenuPanel.cs index 13e9b7700..2c1d0110e 100644 --- a/Assets/Scripts/MenuPanel.cs +++ b/Assets/Scripts/MenuPanel.cs @@ -5,6 +5,7 @@ using System; using System.Collections; using System.Collections.Generic; +using UniRx.Triggers; using UnityEngine; public class MenuPanel : MonoBehaviour @@ -50,7 +51,7 @@ public class MenuPanel : MonoBehaviour } } - void Awake() + private void Awake() { foreach (var tabButton in TabButtons.GetComponentsInChildren()) { @@ -59,8 +60,12 @@ public class MenuPanel : MonoBehaviour _tabs.Add(tabButton.Tab, tabButton); tabButton.Button.onClick.AddListener(() => ShowTab(tabButton.Tab)); } - ShowTab(MenuTab.Inventory); } + + // void Start() + // { + // ShowTab(MenuTab.Inventory); + // } } public enum MenuTab diff --git a/Assets/Scripts/Sector Display/SectorRenderer.cs b/Assets/Scripts/Sector Display/SectorRenderer.cs index fc07ef4be..c73a9064f 100644 --- a/Assets/Scripts/Sector Display/SectorRenderer.cs +++ b/Assets/Scripts/Sector Display/SectorRenderer.cs @@ -269,30 +269,14 @@ public class SectorRenderer : MonoBehaviour } } - // Search all cells occupied by target cells for any thermal equipment - var equippedThermals = new List(); - foreach (var hullCoord in hitShape.Coordinates) - { - if (entity.ThermalOccupancy[hullCoord.x, hullCoord.y] != null) - { - equippedThermals.Add(entity.ThermalOccupancy[hullCoord.x, hullCoord.y]); - } - } - float remainder = 0; // Direct damage is divided between gear and thermal equipment (if present) - if (equippedGear != null && equippedThermals.Count > 0) + if (equippedGear != null) { remainder = max(directDamage / 2 - equippedGear.EquippableItem.Durability, 0); equippedGear.EquippableItem.Durability = max(equippedGear.EquippableItem.Durability - directDamage / 2, 0); entity.ItemDamage.OnNext((equippedGear, directDamage / 2)); - foreach (var t in equippedThermals) - { - remainder += max(directDamage / (2 * equippedThermals.Count) - t.EquippableItem.Durability, 0); - t.EquippableItem.Durability = max(equippedGear.EquippableItem.Durability - directDamage / (2 * equippedThermals.Count), 0); - entity.ItemDamage.OnNext((t, directDamage / (2 * equippedThermals.Count))); - } } else if (equippedGear != null) { @@ -300,15 +284,6 @@ public class SectorRenderer : MonoBehaviour equippedGear.EquippableItem.Durability = max(equippedGear.EquippableItem.Durability - directDamage, 0); entity.ItemDamage.OnNext((equippedGear, directDamage)); } - else if (equippedThermals.Count > 0) - { - foreach (var t in equippedThermals) - { - remainder += max(directDamage / (equippedThermals.Count) - t.EquippableItem.Durability, 0); - t.EquippableItem.Durability = max(equippedGear.EquippableItem.Durability - directDamage / equippedThermals.Count, 0); - entity.ItemDamage.OnNext((t, directDamage / equippedThermals.Count)); - } - } else remainder = directDamage; // Direct damage remaining after all items are destroyed damages the hull @@ -331,8 +306,6 @@ public class SectorRenderer : MonoBehaviour { if (entity.GearOccupancy[hullCoord.x, hullCoord.y] != null) surroundingEquipment.Add(entity.GearOccupancy[hullCoord.x, hullCoord.y]); - if (entity.ThermalOccupancy[hullCoord.x, hullCoord.y] != null) - surroundingEquipment.Add(entity.ThermalOccupancy[hullCoord.x, hullCoord.y]); } // Divide spread damage among all surrounding cells @@ -402,8 +375,7 @@ public class SectorRenderer : MonoBehaviour var penetrationPoint = float2(hitCell); var penetrationCell = hitCell; while (hullData.Shape[penetrationCell] && - entity.GearOccupancy[penetrationCell.x, penetrationCell.y] == null && - entity.ThermalOccupancy[penetrationCell.x, penetrationCell.y] == null) + entity.GearOccupancy[penetrationCell.x, penetrationCell.y] == null) { penetrationPoint += penetrationVector * .5f; penetrationCell = int2(penetrationPoint); diff --git a/Assets/Scripts/ServerShared/Entity.cs b/Assets/Scripts/ServerShared/Entity.cs index a8a4d8d81..445093668 100644 --- a/Assets/Scripts/ServerShared/Entity.cs +++ b/Assets/Scripts/ServerShared/Entity.cs @@ -28,7 +28,7 @@ public abstract class Entity public float2 Velocity; public float[,] Temperature; - public float4[,] Conductivity; + public bool2[,] HullConductivity; public float[,] ThermalMass; public float Energy; @@ -58,7 +58,6 @@ public abstract class Entity public List PopulationAssignments = new List(); public EquippedItem[,] GearOccupancy; - public EquippedItem[,] ThermalOccupancy; public HardpointData[,] Hardpoints; public float[,] Armor; @@ -123,7 +122,7 @@ public abstract class Entity Equipment.Add(new EquippedItem(ItemManager, Hull, int2.zero, this)); Mass = hullData.Mass; Temperature = new float[hullData.Shape.Width, hullData.Shape.Height]; - Conductivity = new float4[hullData.Shape.Width, hullData.Shape.Height]; + HullConductivity = new bool2[hullData.Shape.Width,hullData.Shape.Height]; ThermalMass = new float[hullData.Shape.Width, hullData.Shape.Height]; Armor = new float[hullData.Shape.Width, hullData.Shape.Height]; var cellCount = hullData.Shape.Coordinates.Length; @@ -132,11 +131,9 @@ public abstract class Entity if (!hullData.InteriorCells[v]) Armor[v.x, v.y] = hullData.Armor; Temperature[v.x, v.y] = 280; - Conductivity[v.x, v.y] = hullData.Conductivity; ThermalMass[v.x, v.y] = hullData.Mass * hullData.SpecificHeat / cellCount; } GearOccupancy = new EquippedItem[hullData.Shape.Width, hullData.Shape.Height]; - ThermalOccupancy = new EquippedItem[hullData.Shape.Width, hullData.Shape.Height]; Hardpoints = new HardpointData[hullData.Shape.Width, hullData.Shape.Height]; foreach (var hardpoint in hullData.Hardpoints) { @@ -232,13 +229,11 @@ public abstract class Entity var hullData = ItemManager.GetData(Hull) as HullData; var itemData = ItemManager.GetData(item.EquippableItem); - var itemLayer = (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy); foreach (var i in hullData.Shape.Coordinates) - if (itemLayer[i.x, i.y] == item) + if (GearOccupancy[i.x, i.y] == item) { ThermalMass[i.x, i.y] -= ItemManager.GetThermalMass(item.EquippableItem) / itemData.Shape.Coordinates.Length; - Conductivity[i.x, i.y] /= itemData.Conductivity; - itemLayer[i.x, i.y] = null; + GearOccupancy[i.x, i.y] = null; } Mass -= itemData.Mass; @@ -252,7 +247,7 @@ public abstract class Entity if (!hullData.Shape[hullCoord]) return false; // Items without specific hardpoints on the ship can be freely rotated and placed anywhere - if (itemData.HardpointType == HardpointType.Tool || itemData.HardpointType == HardpointType.Thermal) + if (itemData.HardpointType == HardpointType.Tool) { // Check every cell of the item's shape foreach (var i in itemData.Shape.Coordinates) @@ -261,7 +256,10 @@ public abstract class Entity // If there's a hardpoint there, it won't fit // Thermal items have their own layer and do not collide with gear var itemCoord = hullCoord + itemData.Shape.Rotate(i, item.Rotation); - if (!hullData.InteriorCells[itemCoord] || (itemData.HardpointType == HardpointType.Tool && Hardpoints[itemCoord.x, itemCoord.y] != null) || (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[itemCoord.x, itemCoord.y] != null) return false; + if (!hullData.InteriorCells[itemCoord] || + itemData.HardpointType == HardpointType.Tool && Hardpoints[itemCoord.x, itemCoord.y] != null || + GearOccupancy[itemCoord.x, itemCoord.y] != null) + return false; } } else @@ -315,7 +313,7 @@ public abstract class Entity // Tools and thermal equipment can be installed anywhere on the ship // Search the whole ship for somewhere the item will fit - if (itemData.HardpointType == HardpointType.Tool || itemData.HardpointType == HardpointType.Thermal) + if (itemData.HardpointType == HardpointType.Tool) { foreach (var hullCoord2 in hullData.InteriorCells.Coordinates) { @@ -364,7 +362,7 @@ public abstract class Entity if (!ItemFits(itemData, hullData, item, hullCoord)) return false; EquippedItem equippedItem; - if (itemData.HardpointType == HardpointType.Tool || itemData.HardpointType == HardpointType.Thermal) + if (itemData.HardpointType == HardpointType.Tool) { if(itemData is CargoBayData) { @@ -396,8 +394,7 @@ public abstract class Entity var occupiedCoord = hullCoord + itemData.Shape.Rotate(i, item.Rotation); // TODO: Track thermal mass of cargo bay contents as reactive property ThermalMass[occupiedCoord.x, occupiedCoord.y] += ItemManager.GetThermalMass(item) / itemData.Shape.Coordinates.Length; - Conductivity[occupiedCoord.x, occupiedCoord.y] *= itemData.Conductivity; - (itemData.HardpointType == HardpointType.Thermal ? ThermalOccupancy : GearOccupancy)[occupiedCoord.x, occupiedCoord.y] = equippedItem; + GearOccupancy[occupiedCoord.x, occupiedCoord.y] = equippedItem; } Mass += itemData.Mass; @@ -437,13 +434,13 @@ public abstract class Entity return true; } - public void AddChild(Entity entity) + private void AddChild(Entity entity) { Mass += entity.Mass; Children.Add(entity); } - public void RemoveChild(Entity entity) + private void RemoveChild(Entity entity) { Mass -= entity.Mass; Children.Remove(entity); @@ -521,28 +518,43 @@ public abstract class Entity var temp = Temperature[v.x, v.y]; var heatTransfer = 0f; - if (v.x > 0) - heatTransfer += (Temperature[v.x - 1, v.y] - temp) * Conductivity[v.x, v.y].y * Conductivity[v.x - 1, v.y].w; + if (hullData.Shape[int2(v.x - 1, v.y)]) + heatTransfer += (Temperature[v.x - 1, v.y] - temp) * + (GearOccupancy[v.x, v.y]?.Conductivity ?? 1) * + (GearOccupancy[v.x - 1, v.y]?.Conductivity ?? 1) * + (HullConductivity[v.x - 1, v.y].x ? hullData.Conductivity : 1 / hullData.Conductivity); + + if (hullData.Shape[int2(v.x + 1, v.y)]) + heatTransfer += (Temperature[v.x + 1, v.y] - temp) * + (GearOccupancy[v.x, v.y]?.Conductivity ?? 1) * + (GearOccupancy[v.x + 1, v.y]?.Conductivity ?? 1) * + (HullConductivity[v.x, v.y].x ? hullData.Conductivity : 1 / hullData.Conductivity); - if (v.x < hullData.Shape.Width - 1) - heatTransfer += (Temperature[v.x + 1, v.y] - temp) * Conductivity[v.x, v.y].w * Conductivity[v.x + 1, v.y].y; + if (hullData.Shape[int2(v.x, v.y - 1)]) + heatTransfer += (Temperature[v.x, v.y - 1] - temp) * + (GearOccupancy[v.x, v.y]?.Conductivity ?? 1) * + (GearOccupancy[v.x, v.y - 1]?.Conductivity ?? 1) * + (HullConductivity[v.x, v.y - 1].y ? hullData.Conductivity : 1 / hullData.Conductivity); - if (v.y > 0) - heatTransfer += (Temperature[v.x, v.y - 1] - temp) * Conductivity[v.x, v.y].z * Conductivity[v.x, v.y - 1].x; - - if (v.y < hullData.Shape.Height - 1) - heatTransfer += (Temperature[v.x, v.y + 1] - temp) * Conductivity[v.x, v.y].x * Conductivity[v.x, v.y + 1].z; + if (hullData.Shape[int2(v.x, v.y + 1)]) + heatTransfer += (Temperature[v.x, v.y + 1] - temp) * + (GearOccupancy[v.x, v.y]?.Conductivity ?? 1) * + (GearOccupancy[v.x, v.y + 1]?.Conductivity ?? 1) * + (HullConductivity[v.x, v.y].y ? hullData.Conductivity : 1 / hullData.Conductivity); newTemp[v.x, v.y] = Temperature[v.x, v.y] + heatTransfer * min(ItemManager.GameplaySettings.HeatConductionMultiplier * delta,1) / ThermalMass[v.x,v.y]; // For all cells on the border of the entity, radiate some heat into space, increasing the visibility of the ship - if (!hullData.InteriorCells[v]) + if (Parent==null && !hullData.InteriorCells[v]) { var rad = pow(newTemp[v.x, v.y], ItemManager.GameplaySettings.HeatRadiationExponent) * ItemManager.GameplaySettings.HeatRadiationMultiplier; newTemp[v.x, v.y] -= rad * delta; radiation += rad; } + + if(float.IsNaN(newTemp[v.x, v.y]) || newTemp[v.x, v.y] < 0) + ItemManager.Log("HOUSTON, WE HAVE A PROBLEM!"); } VisibilitySources[this] = radiation; @@ -608,19 +620,18 @@ public abstract class Entity // } } -[MessagePackObject, JsonObject(MemberSerialization.OptIn)] public class EquippedItem { - [JsonProperty("item"), Key(0)] public EquippableItem EquippableItem; + public EquippableItem EquippableItem; - [JsonProperty("position"), Key(1)] public int2 Position; + public int2 Position; - [IgnoreMember] public IBehavior[] Behaviors; - [IgnoreMember] public BehaviorGroup[] BehaviorGroups; + public float Conductivity { get; } + public Shape InsetShape { get; } public int SortPosition; @@ -648,6 +659,7 @@ public class EquippedItem _entity = entity; EquippableItem = item; Position = position; + Conductivity = _data.Conductivity; var hullData = itemManager.GetData(entity.Hull); InsetShape = hullData.Shape.Inset(_data.Shape, position, item.Rotation); @@ -689,8 +701,8 @@ public class EquippedItem EquippableItem.Durability -= delta; } - foreach (var behavior in Behaviors.Where(b => b is IAlwaysUpdatedBehavior).Cast()) - behavior.Update(delta); + foreach (var behavior in Behaviors)//.Where(b => b is IAlwaysUpdatedBehavior).Cast()) + if(behavior is IAlwaysUpdatedBehavior alwaysUpdatedBehavior) alwaysUpdatedBehavior.Update(delta); if (Online) { diff --git a/Assets/Scripts/ServerShared/Enums.cs b/Assets/Scripts/ServerShared/Enums.cs index 9d6679186..f97c2ffdb 100644 --- a/Assets/Scripts/ServerShared/Enums.cs +++ b/Assets/Scripts/ServerShared/Enums.cs @@ -83,21 +83,21 @@ public enum MegaPlacementType public enum SimpleCommodityCategory { - Minerals, - Metals, - Alloys, - Compounds, - Organics, - Ammo, - Consumer + Minerals = 0, + Metals = 1, + Alloys = 2, + Compounds = 3, + Organics = 4, + Ammo = 5, + Consumer = 6 } public enum CompoundCommodityCategory { - Wearables, - Consumables, - Luxuries, - Tools, - Manufacturing, - Assemblies + Wearables = 0, + Consumables = 1, + Luxuries = 2, + Tools = 3, + Manufacturing = 4, + Assemblies = 5 } \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/ItemData.cs b/Assets/Scripts/ServerShared/ItemData.cs index 7aeea963d..598beee90 100644 --- a/Assets/Scripts/ServerShared/ItemData.cs +++ b/Assets/Scripts/ServerShared/ItemData.cs @@ -192,20 +192,26 @@ public abstract class ItemData : DatabaseEntry, INamedEntry [InspectableText, JsonProperty("description"), Key(2)] public string Description; + + [InspectableText, JsonProperty("manufacturer"), Key(3)] + public string Manufacturer; - [InspectableField, JsonProperty("mass"), Key(3)] + [InspectableField, JsonProperty("mass"), Key(4)] public float Mass; - [InspectableField, JsonProperty("shape"), Key(4)] + [InspectableField, JsonProperty("shape"), Key(5)] public Shape Shape; // Heat needed to change temperature of 1 gram by 1 degree - [InspectableField, JsonProperty("specificHeat"), Key(5)] + [InspectableField, JsonProperty("specificHeat"), Key(6)] public float SpecificHeat = 1; - [InspectableField, JsonProperty("conductivity"), Key(6)] + [InspectableField, JsonProperty("conductivity"), Key(7)] public float Conductivity = 1; + [InspectableField, JsonProperty("price"), Key(8)] + public int Price = 0; + [IgnoreMember] public string EntryName { get => Name; @@ -233,10 +239,10 @@ public class SimpleCommodityData : ItemData // [InspectableField, JsonProperty("floor"), Key(11)] // public float Floor = 5f; - [InspectableField, JsonProperty("maxStackSize"), Key(7)] + [InspectableField, JsonProperty("maxStackSize"), Key(9)] public int MaxStack = 10; - [InspectableField, JsonProperty("category"), Key(8)] + [InspectableField, JsonProperty("category"), Key(10)] public SimpleCommodityCategory Category; } @@ -248,17 +254,17 @@ public class SimpleCommodityData : ItemData JsonConverter(typeof(JsonKnownTypesConverter))] public abstract class CraftedItemData : ItemData { - [InspectableField, JsonProperty("ingredientQualityWeight"), Key(7)] + [InspectableField, JsonProperty("ingredientQualityWeight"), Key(9)] public float IngredientQualityWeight = .5f; } [RethinkTable("Items"), Inspectable, MessagePackObject] public class CompoundCommodityData : CraftedItemData { - [InspectableDatabaseLink(typeof(PersonalityAttribute)), JsonProperty("demandProfile"), Key(8)] + [InspectableDatabaseLink(typeof(PersonalityAttribute)), JsonProperty("demandProfile"), Key(10)] public Dictionary DemandProfile = new Dictionary(); - [InspectableField, JsonProperty("category"), Key(9)] + [InspectableField, JsonProperty("category"), Key(11)] public CompoundCommodityCategory Category; } @@ -267,22 +273,22 @@ public class CompoundCommodityData : CraftedItemData JsonObject(MemberSerialization.OptIn), JsonConverter(typeof(JsonKnownTypesConverter))] public abstract class EquippableItemData : CraftedItemData { - [InspectableTexture, JsonProperty("schematic"), Key(8)] + [InspectableTexture, JsonProperty("schematic"), Key(10)] public string Schematic; - [InspectableField, JsonProperty("behaviors"), Key(9)] + [InspectableField, JsonProperty("behaviors"), Key(11)] public List Behaviors = new List(); - [InspectableField, JsonProperty("durability"), Key(10)] + [InspectableField, JsonProperty("durability"), Key(12)] public float Durability; - [TemperatureInspectable, JsonProperty("minTemp"), Key(11)] + [TemperatureInspectable, JsonProperty("minTemp"), Key(13)] public float MinimumTemperature; - [TemperatureInspectable, JsonProperty("maxTemp"), Key(12)] + [TemperatureInspectable, JsonProperty("maxTemp"), Key(14)] public float MaximumTemperature; - [InspectableField, JsonProperty("durabilityExponent"), Key(13), SimplePerformanceStat] + [InspectableField, JsonProperty("durabilityExponent"), Key(15), SimplePerformanceStat] public PerformanceStat DurabilityExponent = new PerformanceStat(); [IgnoreMember] @@ -296,7 +302,7 @@ public abstract class EquippableItemData : CraftedItemData [RethinkTable("Items"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] public class GearData : EquippableItemData { - [InspectableField, JsonProperty("hardpointType"), Key(14)] + [InspectableField, JsonProperty("hardpointType"), Key(16)] public HardpointType Hardpoint; [IgnoreMember] public override HardpointType HardpointType => Hardpoint; @@ -305,7 +311,7 @@ public class GearData : EquippableItemData [RethinkTable("Items"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] public class CargoBayData : EquippableItemData { - [InspectableField, JsonProperty("interiorShape"), Key(14)] + [InspectableField, JsonProperty("interiorShape"), Key(16)] public Shape InteriorShape; [IgnoreMember] public override HardpointType HardpointType => HardpointType.Tool; } @@ -313,7 +319,7 @@ public class CargoBayData : EquippableItemData [RethinkTable("Items"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] public class DockingBayData : CargoBayData { - [InspectableField, JsonProperty("maxSize"), Key(15)] + [InspectableField, JsonProperty("maxSize"), Key(17)] public int2 MaxSize; [IgnoreMember] public override HardpointType HardpointType => HardpointType.Tool; } @@ -321,19 +327,19 @@ public class DockingBayData : CargoBayData [RethinkTable("Items"), Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn)] public class HullData : EquippableItemData { - [InspectableField, JsonProperty("hardpoints"), Key(14)] + [InspectableField, JsonProperty("hardpoints"), Key(16)] public List Hardpoints = new List(); - [InspectablePrefab, JsonProperty("prefab"), Key(15)] + [InspectablePrefab, JsonProperty("prefab"), Key(17)] public string Prefab; - [InspectableField, JsonProperty("hullType"), Key(16)] + [InspectableField, JsonProperty("hullType"), Key(18)] public HullType HullType; - [InspectableField, JsonProperty("gridOffset"), Key(17)] + [InspectableField, JsonProperty("gridOffset"), Key(19)] public float GridOffset; - [InspectableField, JsonProperty("armor"), Key(18)] + [InspectableField, JsonProperty("armor"), Key(20)] public float Armor; [IgnoreMember] diff --git a/Assets/Scripts/ServerShared/ItemManager.cs b/Assets/Scripts/ServerShared/ItemManager.cs index d4e06cfa7..503e79138 100644 --- a/Assets/Scripts/ServerShared/ItemManager.cs +++ b/Assets/Scripts/ServerShared/ItemManager.cs @@ -213,10 +213,15 @@ public class ItemManager return ItemQuality[item]; } + + private readonly Dictionary<(PerformanceStat stat, EquippableItem item), float> StatQuality = new Dictionary<(PerformanceStat stat, EquippableItem item), float>(); // Determine quality of either the item itself or the specific ingredient this stat depends on public float Quality(PerformanceStat stat, EquippableItem item) { + if (StatQuality.ContainsKey((stat, item))) + return StatQuality[(stat, item)]; + var itemData = GetData(item); var blueprint = ItemData.Get(item.Blueprint); var activeEffects = blueprint.StatEffects.Where(x => GetAffectedStat(blueprint, x) == stat).ToArray(); @@ -244,6 +249,7 @@ public class ItemManager quality = sum / ingredients.Length; } + StatQuality[(stat, item)] = quality; return quality; } @@ -268,11 +274,13 @@ public class ItemManager //var heat = !stat.HeatDependent ? 1 : pow(itemData.Performance(entity.Temperature), Evaluate(itemData.HeatExponent,item)); var durability = !stat.DurabilityDependent ? 1 : pow(item.Durability / itemData.Durability, Evaluate(itemData.DurabilityExponent,item)); var quality = pow(Quality(stat, item), stat.QualityExponent); - - var scaleModifier = stat.GetScaleModifiers(entity).Values.Aggregate(1.0f, (current, mod) => current * mod); - - var constantModifier = stat.GetConstantModifiers(entity).Values.Sum(); - + + var scaleModifier = 1.0f; + foreach (var value in stat.GetScaleModifiers(entity).Values) scaleModifier = scaleModifier * value; + + float constantModifier = 0; + foreach (var value in stat.GetConstantModifiers(entity).Values) constantModifier += value; + var result = lerp(stat.Min, stat.Max, durability * quality) * scaleModifier + constantModifier; if (float.IsNaN(result)) return stat.Min; diff --git a/Assets/Scripts/TradeMenu.cs b/Assets/Scripts/TradeMenu.cs index 4d633c405..e9c06ccb7 100644 --- a/Assets/Scripts/TradeMenu.cs +++ b/Assets/Scripts/TradeMenu.cs @@ -23,6 +23,8 @@ public class TradeMenu : MonoBehaviour private EquippedCargoBay _targetCargo; private (ItemFilter filter, HardpointType type) _hardpointFilter; + private (ItemFilter filter, SimpleCommodityCategory type) _commodityFilter; + private (ItemFilter filter, CompoundCommodityCategory type) _compoundCommodityFilter; private List<(ItemFilter filter, Type type)> _behaviorFilters = new List<(ItemFilter filter, Type type)>(); private void OnEnable() @@ -40,7 +42,16 @@ public class TradeMenu : MonoBehaviour IEnumerable hardpointTypes = (HardpointType[]) Enum.GetValues(typeof(HardpointType)); if (_hardpointFilter.filter != null) hardpointTypes = hardpointTypes.Where(x => x != _hardpointFilter.type); - ContextMenu.AddDropdown("Item Type", hardpointTypes + + IEnumerable commodityTypes = (SimpleCommodityCategory[]) Enum.GetValues(typeof(SimpleCommodityCategory)); + if (_commodityFilter.filter != null) + commodityTypes = commodityTypes.Where(x => x != _commodityFilter.type); + + IEnumerable compoundCommodityTypes = (CompoundCommodityCategory[]) Enum.GetValues(typeof(CompoundCommodityCategory)); + if (_compoundCommodityFilter.filter != null) + compoundCommodityTypes = compoundCommodityTypes.Where(x => x != _compoundCommodityFilter.type); + + ContextMenu.AddDropdown("Gear Type", hardpointTypes .Select(x => (Enum.GetName(typeof(HardpointType), x), () => { if (_hardpointFilter.filter == null) @@ -52,11 +63,75 @@ public class TradeMenu : MonoBehaviour Populate(); }; } + if(_commodityFilter.filter != null) + { + _commodityFilter.filter.GetComponent().ReturnToPool(); + _commodityFilter.filter = null; + } + if(_compoundCommodityFilter.filter != null) + { + _compoundCommodityFilter.filter.GetComponent().ReturnToPool(); + _compoundCommodityFilter.filter = null; + } _hardpointFilter.filter.Label.text = $"Hardpoint: {Enum.GetName(typeof(HardpointType), x)}"; _hardpointFilter.type = x; Populate(); }, true))); + ContextMenu.AddDropdown("Simple Commodity", commodityTypes + .Select(x => (Enum.GetName(typeof(SimpleCommodityCategory), x), () => + { + if (_commodityFilter.filter == null) + { + _commodityFilter.filter = FilterPrototype.Instantiate(); + _commodityFilter.filter.OnDisable += () => + { + _commodityFilter.filter = null; + Populate(); + }; + } + if(_hardpointFilter.filter != null) + { + _hardpointFilter.filter.GetComponent().ReturnToPool(); + _hardpointFilter.filter = null; + } + if(_compoundCommodityFilter.filter != null) + { + _compoundCommodityFilter.filter.GetComponent().ReturnToPool(); + _compoundCommodityFilter.filter = null; + } + + _commodityFilter.filter.Label.text = $"Hardpoint: {Enum.GetName(typeof(SimpleCommodityCategory), x)}"; + _commodityFilter.type = x; + Populate(); + }, true))); + ContextMenu.AddDropdown("Compound Commodity", compoundCommodityTypes + .Select(x => (Enum.GetName(typeof(CompoundCommodityCategory), x), () => + { + if (_compoundCommodityFilter.filter == null) + { + _compoundCommodityFilter.filter = FilterPrototype.Instantiate(); + _compoundCommodityFilter.filter.OnDisable += () => + { + _compoundCommodityFilter.filter = null; + Populate(); + }; + } + if(_hardpointFilter.filter != null) + { + _hardpointFilter.filter.GetComponent().ReturnToPool(); + _hardpointFilter.filter = null; + } + if(_commodityFilter.filter != null) + { + _commodityFilter.filter.GetComponent().ReturnToPool(); + _commodityFilter.filter = null; + } + + _compoundCommodityFilter.filter.Label.text = $"Hardpoint: {Enum.GetName(typeof(CompoundCommodityCategory), x)}"; + _compoundCommodityFilter.type = x; + Populate(); + }, true))); ContextMenu.AddDropdown("Item Behavior", typeof(BehaviorData).GetAllChildClasses() .Where(x=> x.GetCustomAttribute() != null && _behaviorFilters.All(f => f.type != x)) .Select(x=> (x.Name.FormatTypeName(), () => @@ -94,23 +169,46 @@ public class TradeMenu : MonoBehaviour void Populate() { - var columns = new List<(string name, int size, Func> output, Func sortKey)>(); + var columns = new List<(string name, int size, Func> output, Func sortKey)>(); columns.Add(("Name", 3, data => () => data.Name, data => data.Name)); if(_hardpointFilter.filter==null) columns.Add(("Type", 2, - data => () => Enum.GetName(typeof(HardpointType), data.HardpointType), - data => data.HardpointType)); + data => () => + { + if (data is SimpleCommodityData s) + return Enum.GetName(typeof(SimpleCommodityCategory), s.Category); + if(data is CompoundCommodityData c) + return Enum.GetName(typeof(CompoundCommodityCategory), c.Category); + if(data is EquippableItemData e) + return Enum.GetName(typeof(HardpointType), e.HardpointType); + return "None"; + }, + data => + { + if (data is SimpleCommodityData s) + return (int) s.Category; + var offset = Enum.GetValues(typeof(SimpleCommodityCategory)).Length; + if(data is CompoundCommodityData c) + return (int) c.Category + offset; + offset += Enum.GetValues(typeof(CompoundCommodityCategory)).Length; + if(data is EquippableItemData e) + return (int) e.HardpointType + offset; + return 0; + })); columns.Add(("Mass", 1, data => () => data.Mass.SignificantDigits(3), data => data.Mass)); + columns.Add(("Price", 1, + data => () => data.Price.ToString(), + data => data.Price)); columns.Add(("Size", 1, data => () => $"{data.Shape.Width}x{data.Shape.Height}", data => data.Shape.Width*data.Shape.Height)); - var items = GameManager.ItemManager.ItemData.GetAll(); + var items = GameManager.ItemManager.ItemData.GetAll().Where(i=>i.Price!=0); if (MinimumSizeFilter.gameObject.activeSelf) items = items.Where(i => @@ -122,12 +220,18 @@ public class TradeMenu : MonoBehaviour !(MaximumSizeFilter.Width.text.Length > 0 && i.Shape.Width > int.Parse(MaximumSizeFilter.Width.text) || MaximumSizeFilter.Height.text.Length > 0 && i.Shape.Height > int.Parse(MaximumSizeFilter.Height.text))); + if(_commodityFilter.filter != null) + items = items.Where(i => i is SimpleCommodityData s && s.Category == _commodityFilter.type); + + if(_compoundCommodityFilter.filter != null) + items = items.Where(i => i is CompoundCommodityData c && c.Category == _compoundCommodityFilter.type); + if (_hardpointFilter.filter != null) - items = items.Where(i => i.HardpointType == _hardpointFilter.type); + items = items.Where(i => i is EquippableItemData e && e.HardpointType == _hardpointFilter.type); foreach (var (_, type) in _behaviorFilters) { - items = items.Where(i => i.Behaviors.Any(b => type.IsInstanceOfType(b))); + items = items.Where(i => i is EquippableItemData e && e.Behaviors.Any(b => type.IsInstanceOfType(b))); foreach (var field in type.GetFields().Where(f => f.GetCustomAttribute() != null)) { @@ -135,32 +239,32 @@ public class TradeMenu : MonoBehaviour if (fieldType == typeof(float)) columns.Add((field.Name, 1, data => { - var behavior = data.Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); + var behavior = ((EquippableItemData) data).Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); return () => ((float) field.GetValue(behavior)).SignificantDigits(3); }, data => { - var behavior = data.Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); + var behavior = ((EquippableItemData) data).Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); return (float) field.GetValue(behavior); })); else if (fieldType == typeof(int)) columns.Add((field.Name, 1, data => { - var behavior = data.Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); + var behavior = ((EquippableItemData) data).Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); return () => ((int) field.GetValue(behavior)).ToString(); }, data => { - var behavior = data.Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); + var behavior = ((EquippableItemData) data).Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); return (int) field.GetValue(behavior); })); else if (fieldType == typeof(PerformanceStat)) { columns.Add((field.Name, 1, data => { - var behavior = data.Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); + var behavior = ((EquippableItemData) data).Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); return () => ((PerformanceStat) field.GetValue(behavior)).Max.SignificantDigits(3); }, data => { - var behavior = data.Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); + var behavior = ((EquippableItemData) data).Behaviors.FirstOrDefault(b => type.IsInstanceOfType(b)); return ((PerformanceStat) field.GetValue(behavior)).Max; })); } @@ -168,8 +272,22 @@ public class TradeMenu : MonoBehaviour } columns.Add(("Owned", 1, - data => () => (_targetCargo.ItemsOfType.ContainsKey(data.ID) ? _targetCargo.ItemsOfType[data.ID].Count : 0).ToString(), - data => _targetCargo.ItemsOfType.ContainsKey(data.ID) ? _targetCargo.ItemsOfType[data.ID].Count : 0)); + data => () => + { + if (data is HullData) + return GameManager.PlayerShips.Count(s => s.Hull.Data == data.ID && s.Parent == GameManager.CurrentShip.Parent).ToString(); + if(data is SimpleCommodityData) + return (_targetCargo.ItemsOfType.ContainsKey(data.ID) ? _targetCargo.ItemsOfType[data.ID].Cast().Sum(s=>s.Quantity) : 0).ToString(); + return (_targetCargo.ItemsOfType.ContainsKey(data.ID) ? _targetCargo.ItemsOfType[data.ID].Count : 0).ToString(); + }, + data => + { + if (data is HullData) + return GameManager.PlayerShips.Count(s => s.Hull.Data == data.ID && s.Parent == GameManager.CurrentShip.Parent); + if(data is SimpleCommodityData) + return _targetCargo.ItemsOfType.ContainsKey(data.ID) ? _targetCargo.ItemsOfType[data.ID].Cast().Sum(s=>s.Quantity) : 0; + return _targetCargo.ItemsOfType.ContainsKey(data.ID) ? _targetCargo.ItemsOfType[data.ID].Count : 0; + })); Spreadsheet.ShowData( columns.Select(x => x.name).ToArray(), @@ -188,7 +306,16 @@ public class TradeMenu : MonoBehaviour }, OnDoubleClick = () => { - _targetCargo.TryStore(GameManager.ItemManager.CreateInstance(i, .1f, 1)); + if (i is HullData h) + { + var ship = new Ship(GameManager.ItemManager, GameManager.Zone, GameManager.ItemManager.CreateInstance(h, .1f, 1) as EquippableItem); + ship.SetParent(GameManager.CurrentShip.Parent); + GameManager.PlayerShips.Add(ship); + } + else if(i is CraftedItemData c) + _targetCargo.TryStore(GameManager.ItemManager.CreateInstance(c, .1f, 1)); + else if(i is SimpleCommodityData s) + _targetCargo.TryStore(GameManager.ItemManager.CreateInstance(s, 1)); Populate(); } })); diff --git a/Assets/Scripts/UI/InventoryPanel.cs b/Assets/Scripts/UI/InventoryPanel.cs index c4c9c276f..f2168ab83 100644 --- a/Assets/Scripts/UI/InventoryPanel.cs +++ b/Assets/Scripts/UI/InventoryPanel.cs @@ -25,9 +25,13 @@ public class InventoryPanel : MonoBehaviour public ContextMenu ContextMenu; public TextMeshProUGUI Title; public Button Dropdown; + public Button Current; + public Button Thermal; public GridLayoutGroup Grid; public Sprite[] NodeBackgroundTextures; public Sprite[] NodeTextures; + public Sprite[] ThermalTextures; + public float ThermalToggleRegionSize = .2f; public Prototype NodePrototype; public RawImage TemperatureDisplay; public Texture2D TemperatureColor; @@ -36,6 +40,8 @@ public class InventoryPanel : MonoBehaviour public float MaxTemperature; public bool FitToContent; public float CellHitPulseTime; + public Color ToggleEnabledColor; + public Color ToggleDisabledColor; public Color CellBackgroundColor = new Color(0, 0, 0, .75f); Subject _onBeginDrag; @@ -60,6 +66,7 @@ public class InventoryPanel : MonoBehaviour private List _subscriptions = new List(); private Dictionary _cellAnimationSequence = new Dictionary(); private int _hitSequence = 0; + private bool _thermal = false; private bool _hud; @@ -76,6 +83,26 @@ public class InventoryPanel : MonoBehaviour private void Start() { + if (Thermal) + { + Thermal.onClick.AddListener(() => + { + Display(_displayedEntity, false, !_thermal); + }); + } + + if (Current) + { + Current.onClick.AddListener(() => + { + if (_displayedEntity != GameManager.CurrentShip) + { + GameManager.CurrentShip = (Ship) _displayedEntity; + GameManager.DockingBay.DockedShip = (Ship) _displayedEntity; + Current.targetGraphic.color = ToggleEnabledColor; + } + }); + } if(Dropdown) { Dropdown.onClick.AddListener(() => @@ -85,16 +112,17 @@ public class InventoryPanel : MonoBehaviour { if (ship.CargoBays.Any()) { - ContextMenu.AddDropdown(ship.Name, - ship.CargoBays - .Select((bay, index) => - ($"Bay {index}", () => Display(bay), true)) - .Prepend(("Equipment", () => Display(ship), true))); + var options = ship.CargoBays + .Where(bay => bay != _displayedCargo) + .Select((bay, index) => + ($"Bay {index}", () => Display(bay), true)); + if(ship != _displayedEntity) options = options.Prepend(("Equipment", () => Display(ship), true)); + ContextMenu.AddDropdown(ship.Name, options); } - else ContextMenu.AddOption(ship.Name, () => Display(ship)); + else if(ship != _displayedEntity) ContextMenu.AddOption(ship.Name, () => Display(ship)); } - if(GameManager.DockingBay!=null) + if(GameManager.DockingBay!=null && _displayedCargo!=GameManager.DockingBay) ContextMenu.AddOption(GameManager.DockingBay.Name, () => Display(GameManager.DockingBay)); ContextMenu.Show(); @@ -131,6 +159,7 @@ public class InventoryPanel : MonoBehaviour { Clear(); } + public void Clear() { @@ -150,28 +179,34 @@ public class InventoryPanel : MonoBehaviour _subscriptions.Clear(); + TemperatureDisplay.gameObject.SetActive(false); + if(Title) Title.text = "None"; } - public void Display(Entity entity, bool hud = false) + public void Display(Entity entity, bool hud = false, bool thermal = false) { Clear(); + _thermal = thermal; _hud = hud; _displayedEntity = entity; + _displayedCargo = null; _firstRect = null; if(Title) Title.text = entity.Name; var hullData = GameManager.ItemManager.GetData(entity.Hull) as HullData; + if (FitToContent) { var gridRect = Grid.GetComponent(); var rect = gridRect.rect; Grid.cellSize = Vector2.one * (int) min(rect.width / (hullData.Shape.Width + 1), rect.height / (hullData.Shape.Height + 1)); } + _temperatureTexture = new Texture2D( hullData.Shape.Width+2, hullData.Shape.Height+2, @@ -181,9 +216,18 @@ public class InventoryPanel : MonoBehaviour TemperatureDisplay.texture = _temperatureTexture; var tempRect = TemperatureDisplay.rectTransform; tempRect.sizeDelta = Grid.cellSize * new Vector2(hullData.Shape.Width + 2, hullData.Shape.Height + 2); - //tempRect.anchoredPosition = - //FakeOccupancy = new Shape(hullData.Shape.Width, hullData.Shape.Height); - //IgnoreOccupancy = new Shape(hullData.Shape.Width, hullData.Shape.Height); + + if (Current) + { + Current.gameObject.SetActive(true); + Current.targetGraphic.color = entity == GameManager.CurrentShip ? ToggleEnabledColor : ToggleDisabledColor; + } + if (Thermal) + { + Thermal.gameObject.SetActive(true); + Thermal.targetGraphic.color = thermal ? ToggleEnabledColor : ToggleDisabledColor; + } + Grid.constraintCount = hullData.Shape.Width; foreach (var v in hullData.Shape.AllCoordinates) { @@ -201,18 +245,50 @@ public class InventoryPanel : MonoBehaviour cell.Background.color = CellBackgroundColor; if (!_firstRect) _firstRect = cell.GetComponent(); - cell.PointerClickTrigger.OnPointerClickAsObservable() - .Subscribe(data => _onClick?.OnNext(new InventoryEntityEventData(data, v, entity))); - cell.BeginDragTrigger.OnBeginDragAsObservable() - .Subscribe(data => _onBeginDrag?.OnNext(new InventoryEntityEventData(data, v, entity))); - cell.DragTrigger.OnDragAsObservable() - .Subscribe(data => _onDrag?.OnNext(new InventoryEntityEventData(data, v, entity))); - cell.EndDragTrigger.OnEndDragAsObservable() - .Subscribe(data => _onEndDrag?.OnNext(new InventoryEntityEventData(data, v, entity))); - cell.PointerEnterTrigger.OnPointerEnterAsObservable() - .Subscribe(data => _onPointerEnter?.OnNext(new InventoryEntityEventData(data, v, entity))); - cell.PointerExitTrigger.OnPointerExitAsObservable() - .Subscribe(data => _onPointerExit?.OnNext(new InventoryEntityEventData(data, v, entity))); + if (!thermal) + { + cell.PointerClickTrigger.OnPointerClickAsObservable() + .Subscribe(data => _onClick?.OnNext(new InventoryEntityEventData(data, v, entity))); + cell.BeginDragTrigger.OnBeginDragAsObservable() + .Subscribe(data => _onBeginDrag?.OnNext(new InventoryEntityEventData(data, v, entity))); + cell.DragTrigger.OnDragAsObservable() + .Subscribe(data => _onDrag?.OnNext(new InventoryEntityEventData(data, v, entity))); + cell.EndDragTrigger.OnEndDragAsObservable() + .Subscribe(data => _onEndDrag?.OnNext(new InventoryEntityEventData(data, v, entity))); + cell.PointerEnterTrigger.OnPointerEnterAsObservable() + .Subscribe(data => _onPointerEnter?.OnNext(new InventoryEntityEventData(data, v, entity))); + cell.PointerExitTrigger.OnPointerExitAsObservable() + .Subscribe(data => _onPointerExit?.OnNext(new InventoryEntityEventData(data, v, entity))); + } + else + { + cell.PointerClickTrigger.OnPointerClickAsObservable().Subscribe(data => + { + var rect = cell.GetComponent(); + var point = Rect.PointToNormalized(rect.rect, rect.InverseTransformPoint(data.position)); + Debug.Log($"Clicked at pos {data.position}, normalized {point}"); + if (hullData.Shape[int2(v.x - 1, v.y)] && point.x < ThermalToggleRegionSize) + { + entity.HullConductivity[v.x - 1, v.y].x = !entity.HullConductivity[v.x - 1, v.y].x; + RefreshCells(new []{v,int2(v.x - 1, v.y)}); + } + if (hullData.Shape[int2(v.x + 1, v.y)] && point.x > 1 - ThermalToggleRegionSize) + { + entity.HullConductivity[v.x, v.y].x = !entity.HullConductivity[v.x, v.y].x; + RefreshCells(new []{v,int2(v.x + 1, v.y)}); + } + if (hullData.Shape[int2(v.x, v.y - 1)] && point.y < ThermalToggleRegionSize) + { + entity.HullConductivity[v.x, v.y - 1].y = !entity.HullConductivity[v.x, v.y - 1].y; + RefreshCells(new []{v,int2(v.x, v.y - 1)}); + } + if (hullData.Shape[int2(v.x, v.y + 1)] && point.y > 1 - ThermalToggleRegionSize) + { + entity.HullConductivity[v.x, v.y].y = !entity.HullConductivity[v.x, v.y].y; + RefreshCells(new []{v,int2(v.x, v.y + 1)}); + } + }); + } CellInstances.Add(v, cell); } } @@ -255,7 +331,6 @@ public class InventoryPanel : MonoBehaviour HitType.Armor => Settings.ArmorHitColor, HitType.Hardpoint => Settings.HardpointHitColor, HitType.Gear => Settings.GearHitColor, - HitType.Thermal => Settings.ThermalHitColor, _ => Color.white }; float startTime = Time.time; @@ -276,7 +351,13 @@ public class InventoryPanel : MonoBehaviour Clear(); _displayedCargo = cargo; + _displayedEntity = null; TemperatureDisplay.gameObject.SetActive(false); + + if (Current) + Current.gameObject.SetActive(false); + if (Thermal) + Thermal.gameObject.SetActive(false); if(Title) Title.text = cargo.Name; @@ -372,9 +453,30 @@ public class InventoryPanel : MonoBehaviour if (item != null) spriteIndex += 1 << 8; + + if (_thermal) + { + bool ThermalMatch(int2 offset) + { + if (!hullData.Shape[v + offset]) return false; + var i = (offset.x, offset.y); + return i switch + { + (1, 0) => _displayedEntity.HullConductivity[v.x, v.y].x, + (-1, 0) => _displayedEntity.HullConductivity[v.x-1, v.y].x, + (0, 1) => _displayedEntity.HullConductivity[v.x, v.y].y, + (0, -1) => _displayedEntity.HullConductivity[v.x, v.y-1].y, + _ => false + }; + } + spriteIndex = 0; + for(int i = 0; i < 4; i++) + if (ThermalMatch(_offsets[i])) + spriteIndex += 1 << i; + } CellInstances[v].Background.sprite = NodeBackgroundTextures[bgSpriteIndex]; - CellInstances[v].Icon.sprite = NodeTextures[spriteIndex]; + CellInstances[v].Icon.sprite = _thermal ? ThermalTextures[spriteIndex] : NodeTextures[spriteIndex]; CellInstances[v].Icon.color = GetColor(v); } } diff --git a/Economy.Shared.Unity.csproj b/Economy.Shared.Unity.csproj index 5d74a50a0..bd12f6228 100644 --- a/Economy.Shared.Unity.csproj +++ b/Economy.Shared.Unity.csproj @@ -90,6 +90,7 @@ + @@ -149,6 +150,7 @@ + @@ -313,6 +315,7 @@ + @@ -516,9 +519,6 @@ - - - diff --git a/MessagePack.csproj b/MessagePack.csproj index 843c16dac..784e2be15 100644 --- a/MessagePack.csproj +++ b/MessagePack.csproj @@ -378,9 +378,6 @@ C:/Program Files/Unity/Hub/Editor/2020.2.1f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll - - C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll - E:/Projects/Aetheria-Economy/Assets/Plugins/Remotion.Linq.dll diff --git a/Substance.EditorHelper.csproj b/Substance.EditorHelper.csproj index 16e202bce..14c467c96 100644 --- a/Substance.EditorHelper.csproj +++ b/Substance.EditorHelper.csproj @@ -282,9 +282,6 @@ C:/Program Files/Unity/Hub/Editor/2020.2.1f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll - - C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll - E:/Projects/Aetheria-Economy/Assets/Plugins/Remotion.Linq.dll diff --git a/Substance.Platform.csproj b/Substance.Platform.csproj index 103d701d8..ba6cea1f8 100644 --- a/Substance.Platform.csproj +++ b/Substance.Platform.csproj @@ -282,9 +282,6 @@ C:/Program Files/Unity/Hub/Editor/2020.2.1f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll - - C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll - E:/Projects/Aetheria-Economy/Assets/Plugins/Remotion.Linq.dll diff --git a/UniRx.csproj b/UniRx.csproj index cf031a9b5..0b006e6ba 100644 --- a/UniRx.csproj +++ b/UniRx.csproj @@ -521,9 +521,6 @@ C:/Program Files/Unity/Hub/Editor/2020.2.1f1/Editor/Data/PlaybackEngines/WindowsStandaloneSupport/UnityEditor.WindowsStandalone.Extensions.dll - - C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/16.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll - E:/Projects/Aetheria-Economy/Assets/Plugins/Remotion.Linq.dll