diff --git a/Aetheria.Shared.Unity.csproj b/Aetheria.Shared.Unity.csproj index 6c2d70788..ab7380a3e 100644 --- a/Aetheria.Shared.Unity.csproj +++ b/Aetheria.Shared.Unity.csproj @@ -252,6 +252,7 @@ + diff --git a/Assets/Materials/UI/Map Gravity Lines.mat b/Assets/Materials/UI/Map Gravity Lines.mat index a21223d9f..749d876be 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: 1.441227 + - _Scale: 0.5 - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 diff --git a/Assets/Prefabs/UI/Properties Panel/Fancy/Curve Field.prefab b/Assets/Prefabs/UI/Properties Panel/Fancy/Curve Field.prefab index b2dbe6954..ea233162a 100644 --- a/Assets/Prefabs/UI/Properties Panel/Fancy/Curve Field.prefab +++ b/Assets/Prefabs/UI/Properties Panel/Fancy/Curve Field.prefab @@ -184,9 +184,9 @@ RectTransform: m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 8, y: -4} - m_SizeDelta: {x: 128, y: 18.64} + m_SizeDelta: {x: -16, y: 18.64} m_Pivot: {x: 0, y: 1} --- !u!222 &7248497949783907356 CanvasRenderer: @@ -495,9 +495,9 @@ RectTransform: m_RootOrder: 4 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: 4} - m_SizeDelta: {x: -4, y: -8} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 9} + m_SizeDelta: {x: -4, y: 1.5} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &5150349052900313155 CanvasRenderer: @@ -520,14 +520,14 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 0.85, g: 0.95199996, b: 1, a: 0.32156864} + m_Color: {r: 0.85, g: 0.95199996, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 51c246761190b2349b69b5f87681c62a, type: 3} + m_Sprite: {fileID: 21300000, guid: ea8a1213adadb5a4fba6b1785033a34b, type: 3} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -916,7 +916,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 7c96f826a29855143bed2f0c15b198e6, type: 3} + m_Sprite: {fileID: 21300000, guid: e0e5557671b85144099aa4c15740eca5, type: 3} m_improveResolution: 0 m_Resolution: 0.03439772 m_useNativeSize: 1 diff --git a/Assets/Resources/Aetheria.inputactions b/Assets/Resources/Aetheria.inputactions index b5efc5dd7..dda305f65 100644 --- a/Assets/Resources/Aetheria.inputactions +++ b/Assets/Resources/Aetheria.inputactions @@ -1111,13 +1111,21 @@ "id": "2e2023b8-ce3b-4cb3-a12a-ff4ac610f11b", "actions": [ { - "name": "Map Toggle", + "name": "Zone Map", "type": "Button", "id": "e43f020b-dec0-43d2-a83b-1390d45819be", "expectedControlType": "Button", "processors": "", "interactions": "" }, + { + "name": "Galaxy Map", + "type": "Button", + "id": "d198f18c-8c55-4a31-a694-4959c763f664", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, { "name": "Inventory", "type": "Button", @@ -1151,7 +1159,7 @@ "interactions": "", "processors": "", "groups": "Keyboard&Mouse", - "action": "Map Toggle", + "action": "Zone Map", "isComposite": false, "isPartOfComposite": false }, @@ -1187,6 +1195,17 @@ "action": "MainMenu", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "f90929d5-d8d1-40dc-acc7-7ae294971d12", + "path": "/m", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Galaxy Map", + "isComposite": false, + "isPartOfComposite": false } ] } diff --git a/Assets/Resources/Settings.asset b/Assets/Resources/Settings.asset index 5c959526a..fa7a35d76 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:f927571ef9726e262bfc172d9bc8828c928b710d83dd36420c2ae217ffe39dfc -size 11597 +oid sha256:e88b31e49996b44a93bc845588151847eb73a8902c5939b54f4755ece6a7622d +size 11764 diff --git a/Assets/Resources/Sprites/Attribution.txt b/Assets/Resources/Sprites/Attribution.txt index d410495a9..03524509d 100644 --- a/Assets/Resources/Sprites/Attribution.txt +++ b/Assets/Resources/Sprites/Attribution.txt @@ -74,6 +74,8 @@ capacitor by Giovanny Mine by Creaticca Creative Agency pattern by Andrejs Kirma edit by The Icon Z +Resize by Markus +Rotate by Rohith M Other diff --git a/Assets/Resources/Sprites/Icons/Resize1.png b/Assets/Resources/Sprites/Icons/Resize1.png new file mode 100644 index 000000000..390055a13 --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Resize1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1327779757daae78e7b89efc83d81a0b9908510b0d9ff7327e8490c57b0f0897 +size 4798 diff --git a/Assets/Resources/Sprites/Icons/Resize1.png.meta b/Assets/Resources/Sprites/Icons/Resize1.png.meta new file mode 100644 index 000000000..e8db2989f --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Resize1.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 55bed7a5ff978bf4c8cbda9971585df0 +TextureImporter: + internalIDToNameTable: [] + 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: 1 + 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: 32 + 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: 32 + 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: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Icons/Rotate.png b/Assets/Resources/Sprites/Icons/Rotate.png new file mode 100644 index 000000000..07b5b537b --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Rotate.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79aa28f9bb1437130d8d687445c1724840a6d3323213b993a37bb85c55c8d17b +size 12602 diff --git a/Assets/Resources/Sprites/Icons/Rotate.png.meta b/Assets/Resources/Sprites/Icons/Rotate.png.meta new file mode 100644 index 000000000..ff0dd4a9c --- /dev/null +++ b/Assets/Resources/Sprites/Icons/Rotate.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: 4b33557baae0da54a96c0aa97bf752ee +TextureImporter: + internalIDToNameTable: [] + 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: 1 + 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: 32 + 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: 32 + 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: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/line-basic.png b/Assets/Resources/Sprites/line-basic.png new file mode 100644 index 000000000..6153c41ab --- /dev/null +++ b/Assets/Resources/Sprites/line-basic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4fd163e3670d64804a01c6286c7f5e86572c2394db1f6a1425c320d72e72014 +size 1836 diff --git a/Assets/Resources/Sprites/line-basic.png.meta b/Assets/Resources/Sprites/line-basic.png.meta new file mode 100644 index 000000000..be7ffef0c --- /dev/null +++ b/Assets/Resources/Sprites/line-basic.png.meta @@ -0,0 +1,108 @@ +fileFormatVersion: 2 +guid: e0e5557671b85144099aa4c15740eca5 +TextureImporter: + internalIDToNameTable: [] + 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: 1 + 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: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/ARPG.unity b/Assets/Scenes/ARPG.unity index 14e1c109c..767880601 100644 --- a/Assets/Scenes/ARPG.unity +++ b/Assets/Scenes/ARPG.unity @@ -1430,6 +1430,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 125191966} m_CullTransparentMesh: 0 +--- !u!1 &126433269 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 126433270} + - component: {fileID: 126433272} + - component: {fileID: 126433271} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &126433270 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126433269} + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 691045497} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: 14, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &126433271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126433269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 55bed7a5ff978bf4c8cbda9971585df0, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &126433272 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 126433269} + m_CullTransparentMesh: 0 --- !u!1 &133322211 GameObject: m_ObjectHideFlags: 0 @@ -2231,7 +2306,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: dc8c6f7a85945d242bd4cbd92df0a7d4, type: 3} + m_Sprite: {fileID: 21300000, guid: 8ebf281ca9b898f4f9a209b6ee01c843, type: 3} m_Type: 0 m_PreserveAspect: 1 m_FillCenter: 1 @@ -3251,11 +3326,11 @@ RectTransform: - {fileID: 2044077502} - {fileID: 197007679} m_Father: {fileID: 746825913} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 90.5, y: -9} + m_AnchoredPosition: {x: 90.5, y: -25} m_SizeDelta: {x: 181, y: 18} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &232470598 @@ -4764,6 +4839,140 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ac0b09e7857660247b1477e93731de29, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &383790463 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 383790464} + - component: {fileID: 383790466} + - component: {fileID: 383790465} + m_Layer: 5 + m_Name: Strafe RPM + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &383790464 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383790463} + 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: 691045497} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: -16, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &383790465 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383790463} + 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: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 18,000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3fb7d873bb5a7944bb9a7c73c430c44b, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: b9d2f6c9804cec1489502dcc1c19ec54, 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: 10 + m_fontSizeBase: 10 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 6 + m_fontSizeMax: 16 + 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!222 &383790466 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 383790463} + m_CullTransparentMesh: 0 --- !u!1 &388927454 GameObject: m_ObjectHideFlags: 0 @@ -5489,6 +5698,8 @@ MonoBehaviour: OverrideIconBlinkSpeed: 0 ShieldIcon: {fileID: 0} HeatsinkBackground: {fileID: 0} + AetherDriveUi: {fileID: 0} + AetherDriveUiSpacer: {fileID: 0} EnergyLabel: {fileID: 0} CockpitTemperatureLabel: {fileID: 0} RadiatorTemperatureLabel: {fileID: 0} @@ -5497,12 +5708,18 @@ MonoBehaviour: VisibilityLabel: {fileID: 858665366} HullDurabilityLabel: {fileID: 2101419019} DistanceLabel: {fileID: 517688448} + ForwardRPMLabel: {fileID: 0} + StrafeRPMLabel: {fileID: 0} + TurnRPMLabel: {fileID: 0} SensorCooldownFill: {fileID: 0} EnergyFill: {fileID: 0} HullDurabilityFill: {fileID: 1904825248} HeatstrokeMeterFill: {fileID: 0} HypothermiaMeterFill: {fileID: 0} HeatstrokeLimitFill: {fileID: 0} + ForwardRPMFill: {fileID: 0} + StrafeRPMFill: {fileID: 0} + TurnRPMFill: {fileID: 0} TriggerGroups: {fileID: 1399423353} TriggerGroupsFadeDuration: 0.5 TriggerGroupsPersistDuration: 5 @@ -6374,6 +6591,7 @@ MonoBehaviour: CellBackgroundColor: {r: 0, g: 0, b: 0, a: 0.9490196} MinTempRange: 0 DoubleClickTime: 0.5 + HitDamageThreshold: 1 EmptyCells: [] --- !u!1 &411347518 GameObject: @@ -9574,8 +9792,10 @@ MonoBehaviour: IncrementField: {fileID: 5486709585343280439, guid: 9c14c92a1a08b0a4fb4f6aa6f8504082, type: 3} StatSheet: {fileID: 0} + CurveField: {fileID: 0} Content: {fileID: 620555923} SelectedChild: {fileID: 0} + GameManager: {fileID: 0} CancelClickCatcher: {fileID: 1420548305} ButtonGroup: {fileID: 947321577} Cancel: {fileID: 1176624628} @@ -10760,6 +10980,105 @@ RectTransform: m_AnchoredPosition: {x: 64, y: 0} m_SizeDelta: {x: 14, y: 0} m_Pivot: {x: 0, y: 0.5} +--- !u!1 &691045496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 691045497} + - component: {fileID: 691045500} + - component: {fileID: 691045499} + - component: {fileID: 691045498} + m_Layer: 5 + m_Name: Strafe + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &691045497 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691045496} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1542388328} + - {fileID: 126433270} + - {fileID: 383790464} + m_Father: {fileID: 1735948312} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 90.5, y: 0} + m_SizeDelta: {x: 59, y: 14} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &691045498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691045496} + 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.011764706} + 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: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &691045499 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691045496} + m_CullTransparentMesh: 1 +--- !u!114 &691045500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 691045496} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 16 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &693745763 GameObject: m_ObjectHideFlags: 0 @@ -11218,6 +11537,105 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 719842150} m_CullTransparentMesh: 1 +--- !u!1 &723697980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 723697981} + - component: {fileID: 723697984} + - component: {fileID: 723697983} + - component: {fileID: 723697982} + m_Layer: 5 + m_Name: Forward + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &723697981 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 723697980} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1946192591} + - {fileID: 1463754850} + - {fileID: 1558236436} + m_Father: {fileID: 1735948312} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 29.5, y: -0} + m_SizeDelta: {x: 59, y: 14} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &723697982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 723697980} + 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.011764706} + 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: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &723697983 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 723697980} + m_CullTransparentMesh: 1 +--- !u!114 &723697984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 723697980} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 16 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &732687889 GameObject: m_ObjectHideFlags: 0 @@ -11432,7 +11850,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Moving Thing + m_text: Confirmation Dialog m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 53555f7a2d5e745428813f1b1118734f, type: 2} m_sharedMaterial: {fileID: -2804126062856497447, guid: 53555f7a2d5e745428813f1b1118734f, @@ -11538,6 +11956,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 1735948312} - {fileID: 232470597} m_Father: {fileID: 60313920} m_RootOrder: 1 @@ -12080,6 +12499,71 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 776416423} m_CullTransparentMesh: 1 +--- !u!1 &779460299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 779460300} + - component: {fileID: 779460301} + m_Layer: 5 + m_Name: Weapon Groups Container + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &779460300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779460299} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 964827173} + - {fileID: 1376734759} + - {fileID: 1399423350} + m_Father: {fileID: 1558520822} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 129, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!114 &779460301 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779460299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 --- !u!1 &783543864 GameObject: m_ObjectHideFlags: 0 @@ -13205,6 +13689,81 @@ MonoBehaviour: m_FlexibleWidth: -1 m_FlexibleHeight: -1 m_LayoutPriority: 1 +--- !u!1 &853400335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 853400336} + - component: {fileID: 853400338} + - component: {fileID: 853400337} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &853400336 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853400335} + 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: 1214607512} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: 10, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &853400337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853400335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 4b33557baae0da54a96c0aa97bf752ee, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &853400338 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 853400335} + m_CullTransparentMesh: 0 --- !u!1 &858665364 GameObject: m_ObjectHideFlags: 0 @@ -14085,6 +14644,140 @@ MonoBehaviour: Tab: 0 Text: {fileID: 931657853} RequireDock: 0 +--- !u!1 &932757481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 932757482} + - component: {fileID: 932757484} + - component: {fileID: 932757483} + m_Layer: 5 + m_Name: Turn RPM + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &932757482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932757481} + 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: 1214607512} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: -16, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &932757483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932757481} + 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: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 18,000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3fb7d873bb5a7944bb9a7c73c430c44b, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: b9d2f6c9804cec1489502dcc1c19ec54, 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: 10 + m_fontSizeBase: 10 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 6 + m_fontSizeMax: 16 + 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!222 &932757484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 932757481} + m_CullTransparentMesh: 0 --- !u!1 &933815652 GameObject: m_ObjectHideFlags: 0 @@ -14738,6 +15431,62 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &964827172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 964827173} + - component: {fileID: 964827174} + m_Layer: 5 + m_Name: Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &964827173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 964827172} + 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: 779460300} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 64.5, y: -28} + m_SizeDelta: {x: 129, y: 56} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &964827174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 964827172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 56 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &970624069 GameObject: m_ObjectHideFlags: 0 @@ -15452,6 +16201,8 @@ MonoBehaviour: ShipPanel: {fileID: 7628189704109037582} TargetShipPanel: {fileID: 410701133} Dialog: {fileID: 620555924} + Context: {fileID: 0} + Dropdown: {fileID: 0} IntroDuration: 10 --- !u!4 &1009503730 Transform: @@ -15979,6 +16730,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1012981707} m_CullTransparentMesh: 0 +--- !u!1 &1013676407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1013676408} + - component: {fileID: 1013676410} + - component: {fileID: 1013676409} + m_Layer: 5 + m_Name: Turn Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1013676408 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1013676407} + 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: 1214607512} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.8, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1013676409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1013676407} + 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.101960786} + 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: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1013676410 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1013676407} + m_CullTransparentMesh: 0 --- !u!1 &1029396710 GameObject: m_ObjectHideFlags: 0 @@ -17781,6 +18607,105 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1187424823} m_CullTransparentMesh: 0 +--- !u!1 &1214607511 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1214607512} + - component: {fileID: 1214607515} + - component: {fileID: 1214607514} + - component: {fileID: 1214607513} + m_Layer: 5 + m_Name: Turn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1214607512 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214607511} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1013676408} + - {fileID: 853400336} + - {fileID: 932757482} + m_Father: {fileID: 1735948312} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 151.5, y: 0} + m_SizeDelta: {x: 59, y: 14} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1214607513 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214607511} + 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.011764706} + 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: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1214607514 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214607511} + m_CullTransparentMesh: 1 +--- !u!114 &1214607515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1214607511} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 16 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &1218822609 GameObject: m_ObjectHideFlags: 0 @@ -19426,6 +20351,62 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1367229140} m_CullTransparentMesh: 0 +--- !u!1 &1376734758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1376734759} + - component: {fileID: 1376734760} + m_Layer: 5 + m_Name: RPM Spacer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1376734759 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376734758} + 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: 779460300} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 64.5, y: -64} + m_SizeDelta: {x: 129, y: 16} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1376734760 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1376734758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 16 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &1378019500 GameObject: m_ObjectHideFlags: 0 @@ -19659,7 +20640,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1396909587 RectTransform: m_ObjectHideFlags: 0 @@ -20074,7 +21055,6 @@ GameObject: m_Component: - component: {fileID: 1399423350} - component: {fileID: 1399423352} - - component: {fileID: 1399423351} - component: {fileID: 1399423353} m_Layer: 5 m_Name: Weapon Groups @@ -20096,28 +21076,14 @@ RectTransform: m_Children: - {fileID: 133322212} - {fileID: 1564656281} - m_Father: {fileID: 1558520822} - m_RootOrder: 0 + m_Father: {fileID: 779460300} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 439, y: 204} - m_SizeDelta: {x: 128, y: 16} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -72} + m_SizeDelta: {x: 129, y: 18} m_Pivot: {x: 0, y: 1} ---- !u!114 &1399423351 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1399423349} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 --- !u!114 &1399423352 MonoBehaviour: m_ObjectHideFlags: 0 @@ -20912,6 +21878,81 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1281fe44325f9b548aa42dc331b17266, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1463754849 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1463754850} + - component: {fileID: 1463754852} + - component: {fileID: 1463754851} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1463754850 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463754849} + 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: 723697981} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: 14, y: -2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1463754851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463754849} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 55bed7a5ff978bf4c8cbda9971585df0, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1463754852 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1463754849} + m_CullTransparentMesh: 0 --- !u!1 &1464157084 GameObject: m_ObjectHideFlags: 0 @@ -22051,6 +23092,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1539162433} m_CullTransparentMesh: 1 +--- !u!1 &1542388327 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1542388328} + - component: {fileID: 1542388330} + - component: {fileID: 1542388329} + m_Layer: 5 + m_Name: Strafe Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1542388328 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542388327} + 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: 691045497} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.8, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1542388329 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542388327} + 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.101960786} + 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: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1542388330 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542388327} + m_CullTransparentMesh: 0 --- !u!1 &1547889398 GameObject: m_ObjectHideFlags: 0 @@ -22566,6 +23682,140 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1558182380} m_CullTransparentMesh: 1 +--- !u!1 &1558236435 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1558236436} + - component: {fileID: 1558236438} + - component: {fileID: 1558236437} + m_Layer: 5 + m_Name: Forward RPM + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1558236436 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558236435} + 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: 723697981} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: -16, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1558236437 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558236435} + 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: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 18,000 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 3fb7d873bb5a7944bb9a7c73c430c44b, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: b9d2f6c9804cec1489502dcc1c19ec54, 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: 10 + m_fontSizeBase: 10 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 6 + m_fontSizeMax: 16 + 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!222 &1558236438 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1558236435} + m_CullTransparentMesh: 0 --- !u!1 &1558520821 GameObject: m_ObjectHideFlags: 0 @@ -22593,7 +23843,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 1399423350} + - {fileID: 779460300} - {fileID: 7628189704109037581} m_Father: {fileID: 346000247} m_RootOrder: 2 @@ -22809,8 +24059,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 63.5, y: -8} - m_SizeDelta: {x: 127, y: 16} + m_AnchoredPosition: {x: 64, y: -9} + m_SizeDelta: {x: 128, y: 18} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1564656282 MonoBehaviour: @@ -22866,7 +24116,7 @@ MonoBehaviour: m_MinWidth: -1 m_MinHeight: -1 m_PreferredWidth: -1 - m_PreferredHeight: 16 + m_PreferredHeight: 18 m_FlexibleWidth: -1 m_FlexibleHeight: -1 m_LayoutPriority: 1 @@ -24937,6 +26187,92 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1733988258} m_CullTransparentMesh: 1 +--- !u!1 &1735948311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1735948312} + - component: {fileID: 1735948314} + - component: {fileID: 1735948313} + m_Layer: 5 + m_Name: RPM Display + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1735948312 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735948311} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 723697981} + - {fileID: 691045497} + - {fileID: 1214607512} + m_Father: {fileID: 746825913} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 90.5, y: -7} + m_SizeDelta: {x: 181, y: 14} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1735948313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735948311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 2 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &1735948314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735948311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 14 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &1741914909 GameObject: m_ObjectHideFlags: 0 @@ -27196,6 +28532,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1943948574} m_CullTransparentMesh: 0 +--- !u!1 &1946192590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1946192591} + - component: {fileID: 1946192593} + - component: {fileID: 1946192592} + m_Layer: 5 + m_Name: Forward Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1946192591 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946192590} + 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: 723697981} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0.8, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1946192592 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946192590} + 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.101960786} + 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: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1946192593 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946192590} + m_CullTransparentMesh: 0 --- !u!1 &1952022815 GameObject: m_ObjectHideFlags: 0 @@ -33785,8 +35196,10 @@ MonoBehaviour: IncrementField: {fileID: 5486709585343280439, guid: 9c14c92a1a08b0a4fb4f6aa6f8504082, type: 3} StatSheet: {fileID: 0} + CurveField: {fileID: 0} Content: {fileID: 3255828831356619720} SelectedChild: {fileID: 0} + GameManager: {fileID: 0} --- !u!114 &5496444666756201237 MonoBehaviour: m_ObjectHideFlags: 0 @@ -35432,6 +36845,7 @@ MonoBehaviour: CellBackgroundColor: {r: 0, g: 0, b: 0, a: 0.9490196} MinTempRange: 0 DoubleClickTime: 0.5 + HitDamageThreshold: 1 EmptyCells: [] --- !u!114 &7628189704109037583 MonoBehaviour: @@ -35467,6 +36881,8 @@ MonoBehaviour: OverrideIconBlinkSpeed: 10 ShieldIcon: {fileID: 19222411} HeatsinkBackground: {fileID: 661332569} + AetherDriveUi: {fileID: 1735948311} + AetherDriveUiSpacer: {fileID: 1376734758} EnergyLabel: {fileID: 804489113} CockpitTemperatureLabel: {fileID: 212527384} RadiatorTemperatureLabel: {fileID: 1752418078} @@ -35475,12 +36891,18 @@ MonoBehaviour: VisibilityLabel: {fileID: 2122035461} HullDurabilityLabel: {fileID: 697075017} DistanceLabel: {fileID: 0} + ForwardRPMLabel: {fileID: 1558236437} + StrafeRPMLabel: {fileID: 383790465} + TurnRPMLabel: {fileID: 932757483} SensorCooldownFill: {fileID: 1943948575} EnergyFill: {fileID: 271575215} HullDurabilityFill: {fileID: 753112995} HeatstrokeMeterFill: {fileID: 1029396711} HypothermiaMeterFill: {fileID: 79341832} HeatstrokeLimitFill: {fileID: 933815653} + ForwardRPMFill: {fileID: 1946192591} + StrafeRPMFill: {fileID: 1542388328} + TurnRPMFill: {fileID: 1013676408} TriggerGroups: {fileID: 1399423353} TriggerGroupsFadeDuration: 0.5 TriggerGroupsPersistDuration: 5 diff --git a/Assets/Scenes/Main Menu.unity b/Assets/Scenes/Main Menu.unity index 89f4dbcab..8f51544c7 100644 --- a/Assets/Scenes/Main Menu.unity +++ b/Assets/Scenes/Main Menu.unity @@ -802,8 +802,8 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 741153267} - m_LocalRotation: {x: 0.015506903, y: 0.9502416, z: -0.30741313, w: 0.04793323} - m_LocalPosition: {x: -117.51999, y: -77.08743, z: 149.09026} + m_LocalRotation: {x: 0.015506932, y: 0.9502416, z: -0.30741316, w: 0.04793331} + m_LocalPosition: {x: -117.520035, y: -77.087425, z: 149.09027} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 412917866} @@ -1234,8 +1234,8 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 965376321} - m_LocalRotation: {x: 0.015506903, y: 0.9502416, z: -0.30741313, w: 0.04793323} - m_LocalPosition: {x: -117.51999, y: -77.08743, z: 149.09026} + m_LocalRotation: {x: 0.015506932, y: 0.9502416, z: -0.30741316, w: 0.04793331} + m_LocalPosition: {x: -117.520035, y: -77.087425, z: 149.09027} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} diff --git a/Assets/Scripts/AetheriaInput.cs b/Assets/Scripts/AetheriaInput.cs index 9f288fb63..095b75dac 100644 --- a/Assets/Scripts/AetheriaInput.cs +++ b/Assets/Scripts/AetheriaInput.cs @@ -1124,13 +1124,21 @@ public class @AetheriaInput : IInputActionCollection, IDisposable ""id"": ""2e2023b8-ce3b-4cb3-a12a-ff4ac610f11b"", ""actions"": [ { - ""name"": ""Map Toggle"", + ""name"": ""Zone Map"", ""type"": ""Button"", ""id"": ""e43f020b-dec0-43d2-a83b-1390d45819be"", ""expectedControlType"": ""Button"", ""processors"": """", ""interactions"": """" }, + { + ""name"": ""Galaxy Map"", + ""type"": ""Button"", + ""id"": ""d198f18c-8c55-4a31-a694-4959c763f664"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """" + }, { ""name"": ""Inventory"", ""type"": ""Button"", @@ -1164,7 +1172,7 @@ public class @AetheriaInput : IInputActionCollection, IDisposable ""interactions"": """", ""processors"": """", ""groups"": ""Keyboard&Mouse"", - ""action"": ""Map Toggle"", + ""action"": ""Zone Map"", ""isComposite"": false, ""isPartOfComposite"": false }, @@ -1200,6 +1208,17 @@ public class @AetheriaInput : IInputActionCollection, IDisposable ""action"": ""MainMenu"", ""isComposite"": false, ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""f90929d5-d8d1-40dc-acc7-7ae294971d12"", + ""path"": ""/m"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Galaxy Map"", + ""isComposite"": false, + ""isPartOfComposite"": false } ] } @@ -1284,7 +1303,8 @@ public class @AetheriaInput : IInputActionCollection, IDisposable m_UI_Drag = m_UI.FindAction("Drag", throwIfNotFound: true); // Global m_Global = asset.FindActionMap("Global", throwIfNotFound: true); - m_Global_MapToggle = m_Global.FindAction("Map Toggle", throwIfNotFound: true); + m_Global_ZoneMap = m_Global.FindAction("Zone Map", throwIfNotFound: true); + m_Global_GalaxyMap = m_Global.FindAction("Galaxy Map", throwIfNotFound: true); m_Global_Inventory = m_Global.FindAction("Inventory", throwIfNotFound: true); m_Global_Dock = m_Global.FindAction("Dock", throwIfNotFound: true); m_Global_MainMenu = m_Global.FindAction("MainMenu", throwIfNotFound: true); @@ -1651,7 +1671,8 @@ public class @AetheriaInput : IInputActionCollection, IDisposable // Global private readonly InputActionMap m_Global; private IGlobalActions m_GlobalActionsCallbackInterface; - private readonly InputAction m_Global_MapToggle; + private readonly InputAction m_Global_ZoneMap; + private readonly InputAction m_Global_GalaxyMap; private readonly InputAction m_Global_Inventory; private readonly InputAction m_Global_Dock; private readonly InputAction m_Global_MainMenu; @@ -1659,7 +1680,8 @@ public class @AetheriaInput : IInputActionCollection, IDisposable { private @AetheriaInput m_Wrapper; public GlobalActions(@AetheriaInput wrapper) { m_Wrapper = wrapper; } - public InputAction @MapToggle => m_Wrapper.m_Global_MapToggle; + public InputAction @ZoneMap => m_Wrapper.m_Global_ZoneMap; + public InputAction @GalaxyMap => m_Wrapper.m_Global_GalaxyMap; public InputAction @Inventory => m_Wrapper.m_Global_Inventory; public InputAction @Dock => m_Wrapper.m_Global_Dock; public InputAction @MainMenu => m_Wrapper.m_Global_MainMenu; @@ -1672,9 +1694,12 @@ public class @AetheriaInput : IInputActionCollection, IDisposable { if (m_Wrapper.m_GlobalActionsCallbackInterface != null) { - @MapToggle.started -= m_Wrapper.m_GlobalActionsCallbackInterface.OnMapToggle; - @MapToggle.performed -= m_Wrapper.m_GlobalActionsCallbackInterface.OnMapToggle; - @MapToggle.canceled -= m_Wrapper.m_GlobalActionsCallbackInterface.OnMapToggle; + @ZoneMap.started -= m_Wrapper.m_GlobalActionsCallbackInterface.OnZoneMap; + @ZoneMap.performed -= m_Wrapper.m_GlobalActionsCallbackInterface.OnZoneMap; + @ZoneMap.canceled -= m_Wrapper.m_GlobalActionsCallbackInterface.OnZoneMap; + @GalaxyMap.started -= m_Wrapper.m_GlobalActionsCallbackInterface.OnGalaxyMap; + @GalaxyMap.performed -= m_Wrapper.m_GlobalActionsCallbackInterface.OnGalaxyMap; + @GalaxyMap.canceled -= m_Wrapper.m_GlobalActionsCallbackInterface.OnGalaxyMap; @Inventory.started -= m_Wrapper.m_GlobalActionsCallbackInterface.OnInventory; @Inventory.performed -= m_Wrapper.m_GlobalActionsCallbackInterface.OnInventory; @Inventory.canceled -= m_Wrapper.m_GlobalActionsCallbackInterface.OnInventory; @@ -1688,9 +1713,12 @@ public class @AetheriaInput : IInputActionCollection, IDisposable m_Wrapper.m_GlobalActionsCallbackInterface = instance; if (instance != null) { - @MapToggle.started += instance.OnMapToggle; - @MapToggle.performed += instance.OnMapToggle; - @MapToggle.canceled += instance.OnMapToggle; + @ZoneMap.started += instance.OnZoneMap; + @ZoneMap.performed += instance.OnZoneMap; + @ZoneMap.canceled += instance.OnZoneMap; + @GalaxyMap.started += instance.OnGalaxyMap; + @GalaxyMap.performed += instance.OnGalaxyMap; + @GalaxyMap.canceled += instance.OnGalaxyMap; @Inventory.started += instance.OnInventory; @Inventory.performed += instance.OnInventory; @Inventory.canceled += instance.OnInventory; @@ -1772,7 +1800,8 @@ public class @AetheriaInput : IInputActionCollection, IDisposable } public interface IGlobalActions { - void OnMapToggle(InputAction.CallbackContext context); + void OnZoneMap(InputAction.CallbackContext context); + void OnGalaxyMap(InputAction.CallbackContext context); void OnInventory(InputAction.CallbackContext context); void OnDock(InputAction.CallbackContext context); void OnMainMenu(InputAction.CallbackContext context); diff --git a/Assets/Scripts/Gameplay/ActionGameManager.cs b/Assets/Scripts/Gameplay/ActionGameManager.cs index 5ad585922..17ff9fac0 100644 --- a/Assets/Scripts/Gameplay/ActionGameManager.cs +++ b/Assets/Scripts/Gameplay/ActionGameManager.cs @@ -63,6 +63,8 @@ public class ActionGameManager : MonoBehaviour public static Sector CurrentSector; + + public GameSettings Settings; //public string StarterShipTemplate = "Longinus"; public float2 Sensitivity; @@ -104,6 +106,8 @@ public class ActionGameManager : MonoBehaviour public InventoryPanel ShipPanel; public InventoryPanel TargetShipPanel; public ConfirmationDialog Dialog; + public ContextMenu Context; + public DropdownMenu Dropdown; public float IntroDuration; @@ -160,17 +164,11 @@ public class ActionGameManager : MonoBehaviour File.WriteAllBytes(Path.Combine(_loadoutPath.FullName, $"{pack.Name}.loadout"), MessagePackSerializer.Serialize(pack)); } - private void OnApplicationQuit() - { - if(CurrentSector!=null) - { - SaveState(); - } - } + private void OnApplicationQuit() => SaveState(); public void SaveState() { - PlayerSettings.CurrentRun = new SavedGame(CurrentSector, Zone, DockedEntity??CurrentEntity); + PlayerSettings.SavedRun = CurrentSector == null ? null : new SavedGame(CurrentSector, Zone, DockedEntity ?? CurrentEntity); SavePlayerSettings(); } @@ -208,57 +206,15 @@ public class ActionGameManager : MonoBehaviour ZoneRenderer.MinimapDistance = Settings.MinimapZoomLevels[_zoomLevelIndex]; }; - Input.Global.MapToggle.performed += context => + Input.Global.ZoneMap.performed += context => { - if (EventSystem.current.currentSelectedGameObject?.GetComponent() != null) return; - if (MainMenu.gameObject.activeSelf) return; - if (Menu.gameObject.activeSelf && Menu.CurrentTab == MenuTab.Map) - { - Cursor.lockState = CursorLockMode.Locked; - Menu.gameObject.SetActive(false); - if (CurrentEntity != null && CurrentEntity.Parent == null) - { - Input.Player.Enable(); - GameplayUI.gameObject.SetActive(true); - - SchematicDisplay.ShowShip(CurrentEntity); - ShipPanel.Display(CurrentEntity, true); - } - - return; - } - - Cursor.lockState = CursorLockMode.None; - Input.Player.Disable(); - GameplayUI.gameObject.SetActive(false); - Menu.ShowTab(MenuTab.Map); + ToggleMenuTab(MenuTab.Map); MenuMap.Position = CurrentEntity.Position.xz; }; - Input.Global.Inventory.performed += context => - { - if (EventSystem.current.currentSelectedGameObject?.GetComponent() != null) return; - if (MainMenu.gameObject.activeSelf) return; - if (Menu.gameObject.activeSelf && Menu.CurrentTab == MenuTab.Inventory) - { - Cursor.lockState = CursorLockMode.Locked; - Menu.gameObject.SetActive(false); - if (CurrentEntity != null && CurrentEntity.Parent == null) - { - Input.Player.Enable(); - GameplayUI.gameObject.SetActive(true); - - SchematicDisplay.ShowShip(CurrentEntity); - ShipPanel.Display(CurrentEntity, true); - } - return; - } + Input.Global.Inventory.performed += context => ToggleMenuTab(MenuTab.Inventory); - Cursor.lockState = CursorLockMode.None; - Input.Player.Disable(); - Menu.ShowTab(MenuTab.Inventory); - GameplayUI.gameObject.SetActive(false); - }; + Input.Global.GalaxyMap.performed += context => ToggleMenuTab(MenuTab.Galaxy); Input.Global.Dock.performed += context => { @@ -317,33 +273,10 @@ public class ActionGameManager : MonoBehaviour Input.Player.EnterWormhole.performed += context => { - if(CurrentEntity is Ship ship) + foreach (var wormhole in ZoneRenderer.WormholeInstances.Keys) { - foreach (var wormhole in ZoneRenderer.WormholeInstances.Keys) - { - if (length(wormhole.Position - CurrentEntity.Position.xz) < Settings.GameplaySettings.WormholeExitRadius) - { - var oldZone = Zone; - // var wormholeCameraFollow = new GameObject("Wormhole Camera Follow").transform; - // wormholeCameraFollow.position = new Vector3(wormhole.Position.x, -50, wormhole.Position.y); - // wormholeCameraFollow.rotation = Quaternion.LookRotation(Vector3.down, ship.LookDirection); - // WormholeCamera.enabled = true; - // WormholeCamera.Follow = wormholeCameraFollow; - // FollowCamera.enabled = false; - ship.EnterWormhole(wormhole.Position); - ship.OnEnteredWormhole += () => - { - PopulateLevel(wormhole.Target); - foreach(var zone in wormhole.Target.AdjacentZones) - CurrentSector.DiscoveredZones.Add(zone); - SectorMap.QueueZoneReveal(wormhole.Target.AdjacentZones); - ship.ExitWormhole(ZoneRenderer.WormholeInstances.Keys.First(w=>w.Target==oldZone.SectorZone).Position, - Settings.GameplaySettings.WormholeExitVelocity * ItemManager.Random.NextFloat2Direction()); - CurrentEntity.Zone = Zone; - SaveState(); - }; - } - } + if (!(length(wormhole.Position - CurrentEntity.Position.xz) < Settings.GameplaySettings.WormholeExitRadius)) continue; + EnterWormhole(wormhole); } }; @@ -625,6 +558,30 @@ public class ActionGameManager : MonoBehaviour }); } + private void EnterWormhole(Wormhole wormhole) + { + if (!(CurrentEntity is Ship ship)) return; + // var wormholeCameraFollow = new GameObject("Wormhole Camera Follow").transform; + // wormholeCameraFollow.position = new Vector3(wormhole.Position.x, -50, wormhole.Position.y); + // wormholeCameraFollow.rotation = Quaternion.LookRotation(Vector3.down, ship.LookDirection); + // WormholeCamera.enabled = true; + // WormholeCamera.Follow = wormholeCameraFollow; + // FollowCamera.enabled = false; + ship.EnterWormhole(wormhole.Position); + ship.OnEnteredWormhole += () => + { + var oldZone = Zone; + PopulateLevel(wormhole.Target); + foreach (var zone in wormhole.Target.AdjacentZones) + CurrentSector.DiscoveredZones.Add(zone); + SectorMap.QueueZoneReveal(wormhole.Target.AdjacentZones); + ship.ExitWormhole(ZoneRenderer.WormholeInstances.Keys.First(w => w.Target == oldZone.SectorZone).Position, + Settings.GameplaySettings.WormholeExitVelocity * ItemManager.Random.NextFloat2Direction()); + CurrentEntity.Zone = Zone; + SaveState(); + }; + } + public void PopulateLevel(SectorZone sectorZone) { if (sectorZone == null) throw new ArgumentNullException(nameof(sectorZone)); @@ -661,11 +618,36 @@ public class ActionGameManager : MonoBehaviour } } + private void ToggleMenuTab(MenuTab tab) + { + if (EventSystem.current.currentSelectedGameObject?.GetComponent() != null) return; + if (MainMenu.gameObject.activeSelf) return; + if (Menu.gameObject.activeSelf && Menu.CurrentTab == tab) + { + Cursor.lockState = CursorLockMode.Locked; + Menu.gameObject.SetActive(false); + if (CurrentEntity != null && CurrentEntity.Parent == null) + { + Input.Player.Enable(); + GameplayUI.gameObject.SetActive(true); + + SchematicDisplay.ShowShip(CurrentEntity); + ShipPanel.Display(CurrentEntity, true); + } + return; + } + + Cursor.lockState = CursorLockMode.None; + Input.Player.Disable(); + Menu.ShowTab(tab); + GameplayUI.gameObject.SetActive(false); + } + private void StartGame() { if (CurrentSector != null) { - if (PlayerSettings.CurrentRun == null) + if (PlayerSettings.SavedRun == null) { SectorMap.QueueZoneReveal(CurrentSector.Entrance.AdjacentZones.Prepend(CurrentSector.Entrance)); PopulateLevel(CurrentSector.Entrance); @@ -688,8 +670,8 @@ public class ActionGameManager : MonoBehaviour foreach(var group in CurrentSector.DiscoveredZones .GroupBy(dz=>dz.Distance[CurrentSector.Entrance])) SectorMap.QueueZoneReveal(group); - PopulateLevel(CurrentSector.Zones[PlayerSettings.CurrentRun.CurrentZone]); - var targetEntity = Zone.Entities[PlayerSettings.CurrentRun.CurrentZoneEntity]; + PopulateLevel(CurrentSector.Zones[PlayerSettings.SavedRun.CurrentZone]); + var targetEntity = Zone.Entities[PlayerSettings.SavedRun.CurrentZoneEntity]; if (targetEntity is OrbitalEntity orbitalEntity) { CurrentEntity = targetEntity.Children.First(c => c is Ship {IsPlayerShip: true}); @@ -913,42 +895,7 @@ public class ActionGameManager : MonoBehaviour _visibleHostileIndicators.Remove(removeEvent.Value); })); - _shipSubscriptions.Add(CurrentEntity.Death.Subscribe(cause => - { - var deathTime = Time.time; - UnbindEntity(); - CurrentEntity = null; - VolumeRenderer.EnableDepth = false; - MainMenu.gameObject.SetActive(true); - Menu.gameObject.SetActive(false); - PlayerSettings.CurrentRun = null; - SavePlayerSettings(); - Observable.EveryUpdate() - .Where(_ => Time.time - deathTime < DeathPPTransitionTime) - .Subscribe(_ => - { - var t = (Time.time - deathTime) / DeathPPTransitionTime; - if(cause==CauseOfDeath.Heatstroke) - { - HeatstrokePP.weight = 1 - t; - SevereHeatstrokePP.weight = 1 - t; - } - else if (cause == CauseOfDeath.Hypothermia) - { - HypothermiaPP.weight = 1 - t; - SevereHypothermiaPP.weight = 1 - t; - } - DeathPP.weight = t; - }, - () => - { - HeatstrokePP.weight = 0; - SevereHeatstrokePP.weight = 0; - HypothermiaPP.weight = 0; - SevereHypothermiaPP.weight = 0; - DeathPP.weight = 1; - }); - })); + _shipSubscriptions.Add(CurrentEntity.Death.Subscribe(Die)); _lockingIndicators = CurrentEntity.GetBehaviors() .Select(x => @@ -958,6 +905,43 @@ public class ActionGameManager : MonoBehaviour }).ToArray(); } + private void Die(CauseOfDeath cause) + { + var deathTime = Time.time; + UnbindEntity(); + CurrentEntity = null; + VolumeRenderer.EnableDepth = false; + MainMenu.gameObject.SetActive(true); + Menu.gameObject.SetActive(false); + CurrentSector = null; + SavePlayerSettings(); + Observable.EveryUpdate() + .Where(_ => Time.time - deathTime < DeathPPTransitionTime) + .Subscribe(_ => + { + var t = (Time.time - deathTime) / DeathPPTransitionTime; + if(cause==CauseOfDeath.Heatstroke) + { + HeatstrokePP.weight = 1 - t; + SevereHeatstrokePP.weight = 1 - t; + } + else if (cause == CauseOfDeath.Hypothermia) + { + HypothermiaPP.weight = 1 - t; + SevereHypothermiaPP.weight = 1 - t; + } + DeathPP.weight = t; + }, + () => + { + HeatstrokePP.weight = 0; + SevereHeatstrokePP.weight = 0; + HypothermiaPP.weight = 0; + SevereHypothermiaPP.weight = 0; + DeathPP.weight = 1; + }); + } + public void SaveZone(string name) => File.WriteAllBytes( Path.Combine(_gameDataDirectory.FullName, $"{name}.zone"), MessagePackSerializer.Serialize(Zone.PackZone())); diff --git a/Assets/Scripts/ServerShared/AetheriaMath.cs b/Assets/Scripts/ServerShared/AetheriaMath.cs index 0080b3a80..0056ade65 100644 --- a/Assets/Scripts/ServerShared/AetheriaMath.cs +++ b/Assets/Scripts/ServerShared/AetheriaMath.cs @@ -12,6 +12,16 @@ public static class AetheriaMath { return source * exp(-lambda * dt); } + + public static float3 Decay(float3 source, float lambda, float dt) + { + return source * exp(-lambda * dt); + } + + public static float3 Decay(float3 source, float3 lambda, float dt) + { + return source * exp(-lambda * dt); + } public static float Damp(float a, float b, float lambda, float dt) { diff --git a/Assets/Scripts/ServerShared/Behaviors/AetherDrive.cs b/Assets/Scripts/ServerShared/Behaviors/AetherDrive.cs new file mode 100644 index 000000000..130f3868c --- /dev/null +++ b/Assets/Scripts/ServerShared/Behaviors/AetherDrive.cs @@ -0,0 +1,121 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ + +using MessagePack; +using Newtonsoft.Json; +using Unity.Mathematics; +using static Unity.Mathematics.math; + +[Inspectable, MessagePackObject, JsonObject(MemberSerialization.OptIn), EntityTypeRestriction(HullType.Ship), RuntimeInspectable] +public class AetherDriveData : BehaviorData +{ + [Inspectable, JsonProperty("diameters"), Key(1)] + public float3 RotorDiameter; + + [Inspectable, JsonProperty("masses"), Key(2)] + public float3 RotorMass; + + [Inspectable, JsonProperty("rpm"), Key(3), RuntimeInspectable] + public PerformanceStat MaximumRpm; + + [Inspectable, JsonProperty("couplingLambdas"), Key(4)] + public float3 CouplingLambda; + + [Inspectable, JsonProperty("couplingEfficiency"), Key(5), RuntimeInspectable] + public PerformanceStat CouplingEfficiency; + + [Inspectable, JsonProperty("torque"), Key(6), RuntimeInspectable] + public PerformanceStat Torque; + + [Inspectable, JsonProperty("torqueProfile"), Key(7), RuntimeInspectable] + public BezierCurve TorqueProfile; + + [Inspectable, JsonProperty("draw"), Key(8), RuntimeInspectable] + public PerformanceStat EnergyDraw; + + [Inspectable, JsonProperty("passiveCoupling"), Key(9), RuntimeInspectable] + public PerformanceStat PassiveCoupling; + + public override IBehavior CreateInstance(EquippedItem item) + { + return new AetherDrive(this, item); + } +} + +public class AetherDrive : IBehavior +{ + private AetherDriveData _data; + private float3 _axis; + + public EquippedItem Item { get; } + public float3 Thrust { get; private set; } + public float3 Rpm { get; private set; } + public float MaximumRpm { get; private set; } + + public BehaviorData Data => _data; + public AetherDriveData DriveData => _data; + + public float3 Axis + { + get => _axis; + set => _axis = clamp(value, -1, 1); + } + + public AetherDrive(AetherDriveData data, EquippedItem item) + { + _data = data; + Item = item; + } + + public bool Execute(float dt) + { + var rotorSpeed = Rpm * _data.RotorDiameter / 100; + + var forward = normalize(Item.Entity.Direction); + var right = forward.Rotate(ItemRotation.Clockwise); + + var speed = float2(dot(Item.Entity.Velocity, forward), dot(Item.Entity.Velocity, right)); + var couplingEfficiency = Item.Evaluate(_data.CouplingEfficiency); + var efficiency = float3(saturate(1 - speed / max(rotorSpeed.xy, 1) * sign(_axis.xy)) * couplingEfficiency, 1); + + Thrust = (Rpm - AetheriaMath.Decay(Rpm, _data.CouplingLambda, dt)) * _data.RotorMass * efficiency; + + var couplingLambda = _data.CouplingLambda * max(abs(_axis), Item.Evaluate(_data.PassiveCoupling)); + var previousRpm = Rpm; + Rpm = AetheriaMath.Decay(Rpm, couplingLambda, dt); + var rpmLoss = previousRpm - Rpm; + var force = rpmLoss * _data.RotorMass * efficiency; + + var heat = rpmLoss * _data.RotorMass * (1 - couplingEfficiency); + Item.AddHeat((heat.x + heat.y + heat.z)*Item.ItemManager.GameplaySettings.AetherHeatMultiplier); + + Item.Entity.Velocity += forward * (_axis.x * force.x / Item.Entity.Mass); + Item.Entity.Velocity += right * (_axis.y * force.y / Item.Entity.Mass); + Item.Entity.Direction = mul(Item.Entity.Direction, + Unity.Mathematics.float2x2.Rotate(force.z * _axis.z * Item.ItemManager.GameplaySettings.AetherTorqueMultiplier / Item.Entity.Mass)); + + if(float.IsNaN(Item.Entity.Velocity.x)) + Item.ItemManager.Log("FUCK FUCK FUCK FUCK"); + + MaximumRpm = Item.Evaluate(_data.MaximumRpm); + var torqueProfile = float3( + _data.TorqueProfile.Evaluate(Rpm.x / MaximumRpm), + _data.TorqueProfile.Evaluate(Rpm.y / MaximumRpm), + _data.TorqueProfile.Evaluate(Rpm.z / MaximumRpm)); + var potentialTorque = Item.Evaluate(_data.Torque) * torqueProfile; + var potentialRpmDelta = potentialTorque / length(_data.RotorMass) * dt; + var actualRpmDelta = min(MaximumRpm - Rpm, potentialRpmDelta); + var torqueRatio = actualRpmDelta / potentialRpmDelta; + var draw = torqueRatio * Item.Evaluate(_data.EnergyDraw) / 3; + + if (Item.Entity.TryConsumeEnergy((draw.x + draw.y + draw.z)*dt)) + { + Rpm += actualRpmDelta; + return true; + } + + + return false; + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/Behaviors/AetherDrive.cs.meta b/Assets/Scripts/ServerShared/Behaviors/AetherDrive.cs.meta new file mode 100644 index 000000000..96fd33b04 --- /dev/null +++ b/Assets/Scripts/ServerShared/Behaviors/AetherDrive.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2022c838bbc64a0d86cfbd477e6a379c +timeCreated: 1618332827 \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/Behaviors/AutoWeapon.cs b/Assets/Scripts/ServerShared/Behaviors/AutoWeapon.cs index 1d744209b..f1edb9c78 100644 --- a/Assets/Scripts/ServerShared/Behaviors/AutoWeapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/AutoWeapon.cs @@ -22,11 +22,11 @@ public class AutoWeapon : InstantWeapon { } - public override bool Execute(float delta) + public override bool Execute(float dt) { if(_firing && _burstRemaining == 0 && _cooldown < 0) Trigger(); - return base.Execute(delta); + return base.Execute(dt); } } diff --git a/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs b/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs index d79d9c3fd..aef3e82ab 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs @@ -15,7 +15,7 @@ using static Unity.Mathematics.noise; public interface IBehavior { - bool Execute(float delta); + bool Execute(float dt); BehaviorData Data { get; } } @@ -96,7 +96,7 @@ public abstract class PersistentBehaviorData Union(9, typeof(WearData)), Union(10, typeof(VelocityConversionData)), Union(11, typeof(VelocityLimitData)), - // Union(13, typeof(PatrolControllerData)), + Union(12, typeof(AetherDriveData)), // Union(14, typeof(TowingControllerData)), Union(15, typeof(CooldownData)), Union(16, typeof(HeatData)), diff --git a/Assets/Scripts/ServerShared/Behaviors/Capacitor.cs b/Assets/Scripts/ServerShared/Behaviors/Capacitor.cs index a75a53105..e6eade882 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Capacitor.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Capacitor.cs @@ -47,7 +47,7 @@ public class Capacitor : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { Capacity = Item.Evaluate(_data.Capacity); Efficiency = Item.Evaluate(_data.Efficiency); diff --git a/Assets/Scripts/ServerShared/Behaviors/ChargedWeapon.cs b/Assets/Scripts/ServerShared/Behaviors/ChargedWeapon.cs index 8ddd997e9..ca0c909f4 100644 --- a/Assets/Scripts/ServerShared/Behaviors/ChargedWeapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/ChargedWeapon.cs @@ -112,14 +112,14 @@ public class ChargedWeapon : InstantWeapon, IEventBehavior Velocity *= lerp(1, _data.ChargeFiringVelocityMultiplier, saturate(_charge)); } - public override bool Execute(float delta) + public override bool Execute(float dt) { if (_charging) { - _charge += delta / ChargeTime; + _charge += dt / ChargeTime; if (!_charged) { - Item.AddHeat(ChargeHeat * (delta / ChargeTime)); + Item.AddHeat(ChargeHeat * (dt / ChargeTime)); if(_charge > 1) { _charged = true; @@ -136,7 +136,7 @@ public class ChargedWeapon : InstantWeapon, IEventBehavior Item.EquippableItem.Durability -= _data.FailureDamage; } } - return base.Execute(delta); + return base.Execute(dt); } public override void Activate() diff --git a/Assets/Scripts/ServerShared/Behaviors/Cockpit.cs b/Assets/Scripts/ServerShared/Behaviors/Cockpit.cs index 528e664d9..372d11d32 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Cockpit.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Cockpit.cs @@ -32,7 +32,7 @@ public class Cockpit : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { return true; } diff --git a/Assets/Scripts/ServerShared/Behaviors/ConstantWeapon.cs b/Assets/Scripts/ServerShared/Behaviors/ConstantWeapon.cs index af35f25e5..473ed5eba 100644 --- a/Assets/Scripts/ServerShared/Behaviors/ConstantWeapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/ConstantWeapon.cs @@ -62,12 +62,12 @@ public class ConstantWeapon : Weapon, IProgressBehavior, IEventBehavior _data = data; } - public override bool Execute(float delta) + public override bool Execute(float dt) { - base.Execute(delta); + base.Execute(dt); if (_firing) { - if (!Item.Entity.TryConsumeEnergy(Item.Evaluate(_data.Energy) * delta)) + if (!Item.Entity.TryConsumeEnergy(Item.Evaluate(_data.Energy) * dt)) { _firing = false; OnStopFiring?.Invoke(); @@ -77,7 +77,7 @@ public class ConstantWeapon : Weapon, IProgressBehavior, IEventBehavior { if (_reloading) { - _reload -= delta / _data.ReloadTime; + _reload -= dt / _data.ReloadTime; if (_reload < 0) { _reloading = false; @@ -86,7 +86,7 @@ public class ConstantWeapon : Weapon, IProgressBehavior, IEventBehavior return false; } - _ammoInterval -= delta / _data.AmmoInterval; + _ammoInterval -= dt / _data.AmmoInterval; if (_ammoInterval < 0) { _ammoInterval = 1; @@ -115,10 +115,10 @@ public class ConstantWeapon : Weapon, IProgressBehavior, IEventBehavior } } - var dmg = Item.Wear * delta; + var dmg = Item.Wear * dt; Item.EquippableItem.Durability -= dmg; Item.Entity.ItemDamage.OnNext((Item, dmg)); - Item.AddHeat(Item.Evaluate(_data.Heat) * delta); + Item.AddHeat(Item.Evaluate(_data.Heat) * dt); Item.Entity.VisibilitySources[this] = Item.Evaluate(_data.Visibility); } return true; diff --git a/Assets/Scripts/ServerShared/Behaviors/Cooldown.cs b/Assets/Scripts/ServerShared/Behaviors/Cooldown.cs index 0b63b2f79..47f6da01f 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Cooldown.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Cooldown.cs @@ -38,7 +38,7 @@ public class Cooldown : IBehavior, IAlwaysUpdatedBehavior, IProgressBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { if (_cooldown < 0) { diff --git a/Assets/Scripts/ServerShared/Behaviors/EnergyDraw.cs b/Assets/Scripts/ServerShared/Behaviors/EnergyDraw.cs index 909c7e9d1..382139155 100644 --- a/Assets/Scripts/ServerShared/Behaviors/EnergyDraw.cs +++ b/Assets/Scripts/ServerShared/Behaviors/EnergyDraw.cs @@ -36,8 +36,8 @@ public class EnergyDraw : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { - return Item.Entity.TryConsumeEnergy(Item.Evaluate(_data.EnergyDraw) * (_data.PerSecond ? delta : 1)); + return Item.Entity.TryConsumeEnergy(Item.Evaluate(_data.EnergyDraw) * (_data.PerSecond ? dt : 1)); } } \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/Behaviors/Heat.cs b/Assets/Scripts/ServerShared/Behaviors/Heat.cs index 7bcd353bb..49c0082fb 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Heat.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Heat.cs @@ -36,9 +36,9 @@ public class Heat : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { - Item.AddHeat(Item.Evaluate(_data.Heat) * (_data.PerSecond ? delta : 1)); + Item.AddHeat(Item.Evaluate(_data.Heat) * (_data.PerSecond ? dt : 1)); return true; } diff --git a/Assets/Scripts/ServerShared/Behaviors/HeatStorage.cs b/Assets/Scripts/ServerShared/Behaviors/HeatStorage.cs index ba19424f2..956a65adf 100644 --- a/Assets/Scripts/ServerShared/Behaviors/HeatStorage.cs +++ b/Assets/Scripts/ServerShared/Behaviors/HeatStorage.cs @@ -31,7 +31,7 @@ public class HeatStorage : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { return true; } diff --git a/Assets/Scripts/ServerShared/Behaviors/InstantWeapon.cs b/Assets/Scripts/ServerShared/Behaviors/InstantWeapon.cs index b2624ef72..e8a5637fa 100644 --- a/Assets/Scripts/ServerShared/Behaviors/InstantWeapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/InstantWeapon.cs @@ -136,12 +136,12 @@ public class InstantWeapon : Weapon, IProgressBehavior, IEventBehavior } - public override bool Execute(float delta) + public override bool Execute(float dt) { - base.Execute(delta); + base.Execute(dt); if (_coolingDown) { - _cooldown -= delta / (_data.MagazineSize > 0 && _ammo == 0 ? _data.ReloadTime : Cooldown); + _cooldown -= dt / (_data.MagazineSize > 0 && _ammo == 0 ? _data.ReloadTime : Cooldown); if (_cooldown < 0) { _coolingDown = false; @@ -155,7 +155,7 @@ public class InstantWeapon : Weapon, IProgressBehavior, IEventBehavior } } - _burstTimer += delta; + _burstTimer += dt; while (_burstRemaining > 0 && _burstTimer > 0) { // If multiple ammo is consumed per burst, perform ammo and energy consumption here diff --git a/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs b/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs index 8c29be978..52b05af7e 100644 --- a/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs +++ b/Assets/Scripts/ServerShared/Behaviors/ItemUsage.cs @@ -33,7 +33,7 @@ public class ItemUsage : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { var cargo = Item.Entity.FindItemInCargo(_data.Item); if (cargo == null) return false; diff --git a/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs b/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs index 46a6bc5fa..fca86aebd 100644 --- a/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/LockWeapon.cs @@ -61,7 +61,7 @@ public class LockWeapon : InstantWeapon _data = data; } - public override bool Execute(float delta) + public override bool Execute(float dt) { if (_target != Item.Entity.Target.Value) { @@ -81,12 +81,12 @@ public class LockWeapon : InstantWeapon if (degrees < LockAngle) { var lerp = 1 - unlerp(0, 90, degrees); - _lock = saturate(_lock + pow(lerp, DirectionImpact) * delta * LockSpeed * pow(Item.Entity.EntityInfoGathered[Item.Entity.Target.Value], SensorImpact)); + _lock = saturate(_lock + pow(lerp, DirectionImpact) * dt * LockSpeed * pow(Item.Entity.EntityInfoGathered[Item.Entity.Target.Value], SensorImpact)); } - else _lock = saturate(_lock - delta * Decay); + else _lock = saturate(_lock - dt * Decay); } - return base.Execute(delta); + return base.Execute(dt); } } diff --git a/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs b/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs index 413c11ac4..40426583a 100644 --- a/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs +++ b/Assets/Scripts/ServerShared/Behaviors/MiningTool.cs @@ -48,7 +48,7 @@ public class MiningTool : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { Range = Item.Evaluate(_data.Range); var belt = Item.Entity.Zone.AsteroidBelts[AsteroidBelt]; @@ -60,7 +60,7 @@ public class MiningTool : IBehavior Item.Entity, AsteroidBelt, Asteroid, - Item.Evaluate(_data.DamagePerSecond) * delta, + Item.Evaluate(_data.DamagePerSecond) * dt, Item.Evaluate(_data.Efficiency), Item.Evaluate(_data.Penetration)); return true; diff --git a/Assets/Scripts/ServerShared/Behaviors/Radiator.cs b/Assets/Scripts/ServerShared/Behaviors/Radiator.cs index 164bf4175..e5a9065e5 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Radiator.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Radiator.cs @@ -51,7 +51,7 @@ public class Radiator : IBehavior, IAlwaysUpdatedBehavior, IInitializableBehavio Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { PumpedHeat = Item.Evaluate(_data.PumpedHeat); WasteHeat = Item.Evaluate(_data.WasteHeat); @@ -63,7 +63,7 @@ public class Radiator : IBehavior, IAlwaysUpdatedBehavior, IInitializableBehavio // Temperature ratio would cause more waste heat than pump capacity, stop executing if (tempRatio > PumpedHeat / WasteHeat) return true; - if (!Item.Entity.TryConsumeEnergy(EnergyUsage * tempRatio * delta)) return false; + if (!Item.Entity.TryConsumeEnergy(EnergyUsage * tempRatio * dt)) return false; var pumpedHeat = PumpedHeat * max(itemTemperature - _data.TemperatureFloor, 0); @@ -72,8 +72,8 @@ public class Radiator : IBehavior, IAlwaysUpdatedBehavior, IInitializableBehavio var wasteHeat = WasteHeat * tempRatio; - Item.AddHeat((wasteHeat - pumpedHeat) * delta); - Temperature += pumpedHeat / Item.ItemManager.GetThermalMass(Item.EquippableItem) * delta; + Item.AddHeat((wasteHeat - pumpedHeat) * dt); + Temperature += pumpedHeat / Item.ItemManager.GetThermalMass(Item.EquippableItem) * dt; return true; } diff --git a/Assets/Scripts/ServerShared/Behaviors/Reactor.cs b/Assets/Scripts/ServerShared/Behaviors/Reactor.cs index ca7859a6b..20df3c4a7 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Reactor.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Reactor.cs @@ -71,9 +71,9 @@ public class Reactor : IBehavior, IOrderedBehavior Draw += energy; } - public bool Execute(float delta) + public bool Execute(float dt) { - var charge = Item.Evaluate(_data.Charge) * delta; + var charge = Item.Evaluate(_data.Charge) * dt; var efficiency = Item.Evaluate(_data.Efficiency); // This behavior executes last, so any components drawing power have already done so diff --git a/Assets/Scripts/ServerShared/Behaviors/Reflector.cs b/Assets/Scripts/ServerShared/Behaviors/Reflector.cs index 01482a022..eea92e1be 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Reflector.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Reflector.cs @@ -36,7 +36,7 @@ public class Reflector : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { Item.Entity.VisibilitySources[this] = Item.Evaluate(_data.CrossSection) * Item.Entity.Zone.GetLight(Item.Entity.Position.xz); diff --git a/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs b/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs index 571cf52fe..452885047 100644 --- a/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs +++ b/Assets/Scripts/ServerShared/Behaviors/ResourceScanner.cs @@ -61,7 +61,7 @@ public class ResourceScanner : IBehavior, IAlwaysUpdatedBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { var planetData = Item.Entity.Zone.Planets[ScanTarget]; if (planetData != null) @@ -72,7 +72,7 @@ public class ResourceScanner : IBehavior, IAlwaysUpdatedBehavior Asteroid < beltData.Asteroids.Length && length(Item.Entity.Position.xz - Item.Entity.Zone.AsteroidBelts[ScanTarget].Positions[Asteroid].xz) < Range) { - _scanTime += delta; + _scanTime += dt; if (_scanTime > ScanDuration) { // TODO: Implement Scanning! @@ -86,7 +86,7 @@ public class ResourceScanner : IBehavior, IAlwaysUpdatedBehavior { if(length(Item.Entity.Position.xz - Item.Entity.Zone.GetOrbitPosition(planetData.Orbit)) < Range) { - _scanTime += delta; + _scanTime += dt; if (_scanTime > ScanDuration) { //Context.ItemData.Get(Entity.Corporation).PlanetSurveyFloor[ScanTarget] = MinimumDensity; diff --git a/Assets/Scripts/ServerShared/Behaviors/Sensor.cs b/Assets/Scripts/ServerShared/Behaviors/Sensor.cs index 2bf78c9a0..c1456302e 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Sensor.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Sensor.cs @@ -99,11 +99,11 @@ public class Sensor : IBehavior, IEventBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { if (_pinging) { - _pingLerp += delta / _data.PingDuration; + _pingLerp += dt / _data.PingDuration; _pingRadius = lerp(0, Item.Evaluate(_data.PingRange), pow(_pingLerp, _data.PingRadiusExponent)); if (_pingLerp > 1) { @@ -112,7 +112,7 @@ public class Sensor : IBehavior, IEventBehavior } } - _pingCooldown -= delta / Item.Evaluate(_data.PingCooldown); + _pingCooldown -= dt / Item.Evaluate(_data.PingCooldown); // TODO: Handle Active Detection / Visibility From Reflected Radiance var hardpoint = Item.Entity.Hardpoints[Item.Position.x, Item.Position.y]; @@ -145,9 +145,9 @@ public class Sensor : IBehavior, IEventBehavior entity.Visibility * Item.Evaluate(_data.Sensitivity) * _data.SensitivityCurve.Evaluate(angle / PI) * - delta / dist); + dt / dist); } - next *= 1 - Item.ItemManager.GameplaySettings.TargetInfoDecay * delta; + next *= 1 - Item.ItemManager.GameplaySettings.TargetInfoDecay * dt; //Context.Log($"{entity.Name} visibility {(int)(previous * 100)}% -> {(int)(next * 100)}%"); Item.Entity.EntityInfoGathered[entity] = next; } diff --git a/Assets/Scripts/ServerShared/Behaviors/Shield.cs b/Assets/Scripts/ServerShared/Behaviors/Shield.cs index 0ef02801c..a1dc6069e 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Shield.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Shield.cs @@ -39,7 +39,7 @@ public class Shield : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { Efficiency = Item.Evaluate(_data.Efficiency); EnergyUsage = Item.Evaluate(_data.EnergyUsage); diff --git a/Assets/Scripts/ServerShared/Behaviors/StatModifier.cs b/Assets/Scripts/ServerShared/Behaviors/StatModifier.cs index e40dd3b44..f065f96ca 100644 --- a/Assets/Scripts/ServerShared/Behaviors/StatModifier.cs +++ b/Assets/Scripts/ServerShared/Behaviors/StatModifier.cs @@ -77,7 +77,7 @@ public class StatModifier : IBehavior, IInitializableBehavior, IDisposableBehavi } } - public bool Execute(float delta) + public bool Execute(float dt) { foreach (var stat in _stats) (_data.Type == StatModifierType.Constant diff --git a/Assets/Scripts/ServerShared/Behaviors/Switch.cs b/Assets/Scripts/ServerShared/Behaviors/Switch.cs index 9d5686ae4..41d6d019a 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Switch.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Switch.cs @@ -32,7 +32,7 @@ public class Switch : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { return Activated; } diff --git a/Assets/Scripts/ServerShared/Behaviors/Thermotoggle.cs b/Assets/Scripts/ServerShared/Behaviors/Thermotoggle.cs index 4fe226352..cdb1d7e49 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Thermotoggle.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Thermotoggle.cs @@ -42,7 +42,7 @@ public class Thermotoggle : IBehavior TargetTemperature = data.TargetTemperature; } - public bool Execute(float delta) + public bool Execute(float dt) { return Item.Temperature < TargetTemperature ^ _data.HighPass; } diff --git a/Assets/Scripts/ServerShared/Behaviors/Thruster.cs b/Assets/Scripts/ServerShared/Behaviors/Thruster.cs index ab3e68f87..601d3be99 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Thruster.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Thruster.cs @@ -63,15 +63,15 @@ public class Thruster : IAnalogBehavior Thrust = Item.Evaluate(_data.Thrust); } - public bool Execute(float delta) + public bool Execute(float dt) { if(_input > .01f && Item.Entity.TryConsumeEnergy(_input * Item.Evaluate(_data.EnergyUsage))) { Thrust = Item.Evaluate(_data.Thrust); - Item.Entity.Velocity -= Item.Entity.Direction.Rotate(Item.EquippableItem.Rotation) * _input * Thrust / Item.Entity.Mass * delta; + Item.Entity.Velocity -= Item.Entity.Direction.Rotate(Item.EquippableItem.Rotation) * _input * Thrust / Item.Entity.Mass * dt; Item.Entity.Direction = mul(Item.Entity.Direction, - Unity.Mathematics.float2x2.Rotate(_input * Torque * Thrust * Item.ItemManager.GameplaySettings.TorqueMultiplier / Item.Entity.Mass * delta)); - Item.AddHeat(_input * Item.Evaluate(_data.Heat) * delta); + Unity.Mathematics.float2x2.Rotate(_input * Torque * Thrust * Item.ItemManager.GameplaySettings.TorqueMultiplier / Item.Entity.Mass * dt)); + Item.AddHeat(_input * Item.Evaluate(_data.Heat) * dt); var vis = _input * Item.Evaluate(_data.Visibility); if (!Item.Entity.VisibilitySources.ContainsKey(this) || vis > Item.Entity.VisibilitySources[this]) Item.Entity.VisibilitySources[this] = vis; diff --git a/Assets/Scripts/ServerShared/Behaviors/Trigger.cs b/Assets/Scripts/ServerShared/Behaviors/Trigger.cs index 007588214..d70111c97 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Trigger.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Trigger.cs @@ -32,7 +32,7 @@ public class Trigger : IBehavior, IActivatedBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { if (_pulled) { diff --git a/Assets/Scripts/ServerShared/Behaviors/TurretController.cs b/Assets/Scripts/ServerShared/Behaviors/TurretController.cs index c13ea7df8..a7d9b0801 100644 --- a/Assets/Scripts/ServerShared/Behaviors/TurretController.cs +++ b/Assets/Scripts/ServerShared/Behaviors/TurretController.cs @@ -65,7 +65,7 @@ public class TurretController : IBehavior } } - public bool Execute(float delta) + public bool Execute(float dt) { if (Item.Entity.Target.Value != null) { diff --git a/Assets/Scripts/ServerShared/Behaviors/VelocityConversion.cs b/Assets/Scripts/ServerShared/Behaviors/VelocityConversion.cs index 4214c7955..2e6d61c15 100644 --- a/Assets/Scripts/ServerShared/Behaviors/VelocityConversion.cs +++ b/Assets/Scripts/ServerShared/Behaviors/VelocityConversion.cs @@ -33,7 +33,7 @@ public class VelocityConversion : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { return true; } diff --git a/Assets/Scripts/ServerShared/Behaviors/VelocityLimit.cs b/Assets/Scripts/ServerShared/Behaviors/VelocityLimit.cs index 72e9cdaf1..78cc75935 100644 --- a/Assets/Scripts/ServerShared/Behaviors/VelocityLimit.cs +++ b/Assets/Scripts/ServerShared/Behaviors/VelocityLimit.cs @@ -37,7 +37,7 @@ public class VelocityLimit : IBehavior Limit = Item.Evaluate(_data.TopSpeed); } - public bool Execute(float delta) + public bool Execute(float dt) { Limit = Item.Evaluate(_data.TopSpeed); if (length(Item.Entity.Velocity) > Limit) diff --git a/Assets/Scripts/ServerShared/Behaviors/Visibility.cs b/Assets/Scripts/ServerShared/Behaviors/Visibility.cs index c075e4ee6..57c31ab8d 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Visibility.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Visibility.cs @@ -38,7 +38,7 @@ public class Visibility : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { Item.Entity.VisibilitySources[this] = Item.Evaluate(_data.Visibility); return true; diff --git a/Assets/Scripts/ServerShared/Behaviors/Weapon.cs b/Assets/Scripts/ServerShared/Behaviors/Weapon.cs index a5b923011..3a7ebe28e 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Weapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Weapon.cs @@ -118,7 +118,7 @@ public abstract class Weapon : IActivatedBehavior Velocity = Item.Evaluate(_data.Velocity); } - public virtual bool Execute(float delta) + public virtual bool Execute(float dt) { UpdateStats(); return true; diff --git a/Assets/Scripts/ServerShared/Behaviors/Wear.cs b/Assets/Scripts/ServerShared/Behaviors/Wear.cs index 224fc1f20..4e9ccee87 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Wear.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Wear.cs @@ -34,11 +34,11 @@ public class Wear : IBehavior Item = item; } - public bool Execute(float delta) + public bool Execute(float dt) { if (_data.PerSecond) { - var dmg = Item.Wear * delta; + var dmg = Item.Wear * dt; Item.EquippableItem.Durability -= dmg; Item.Entity.ItemDamage.OnNext((Item, dmg)); } diff --git a/Assets/Scripts/ServerShared/Enums.cs b/Assets/Scripts/ServerShared/Enums.cs index aeb4bde24..bc44b397a 100644 --- a/Assets/Scripts/ServerShared/Enums.cs +++ b/Assets/Scripts/ServerShared/Enums.cs @@ -41,7 +41,7 @@ public enum HardpointType Tool, Thermal, Thruster, - WarpThruster, + WarpDrive, Reactor, Radiator, Shield, @@ -49,7 +49,8 @@ public enum HardpointType Energy, Ballistic, Launcher, - ControlModule + ControlModule, + AetherDrive } public enum WeaponType diff --git a/Assets/Scripts/ServerShared/ItemData.cs b/Assets/Scripts/ServerShared/ItemData.cs index 05d26a8f0..df8d9a81c 100644 --- a/Assets/Scripts/ServerShared/ItemData.cs +++ b/Assets/Scripts/ServerShared/ItemData.cs @@ -430,6 +430,9 @@ public class HullData : EquippableItemData [Inspectable, JsonProperty("armor"), Key(24)] public float Armor; + [Inspectable, JsonProperty("drag"), Key(25)] + public float Drag; + [IgnoreMember] public Shape InteriorCells { diff --git a/Assets/Scripts/ServerShared/LoadoutGenerator.cs b/Assets/Scripts/ServerShared/LoadoutGenerator.cs index 2ac662de3..e0999e55f 100644 --- a/Assets/Scripts/ServerShared/LoadoutGenerator.cs +++ b/Assets/Scripts/ServerShared/LoadoutGenerator.cs @@ -70,8 +70,9 @@ public class LoadoutGenerator } var cargo = entity.CargoBays.First(); - var inventory = RandomItems(16, 1, - data => !(data is HullData hull && hull.HullType != HullType.Ship) && !(data is CargoBayData)) + IEnumerable inventory = RandomItems(16, 1, + data => !(data is HullData hull && hull.HullType != HullType.Ship) && !(data is CargoBayData)); + inventory = inventory .OrderByDescending(item=>item.Shape.Coordinates.Length); foreach (var item in inventory) { @@ -86,6 +87,7 @@ public class LoadoutGenerator { return ItemManager.ItemData.GetAll() .Where(item => + item.Price > 0 && (hullFilter?.Invoke(item) ?? true) && item.HullType == type && (Faction == null || item.Manufacturer == Faction.ID || Faction.Allegiance.ContainsKey(item.Manufacturer))) @@ -101,9 +103,11 @@ public class LoadoutGenerator public T[] RandomItems(int count, float sizeExponent, Predicate filter = null) where T : EquippableItemData { return ItemManager.ItemData.GetAll() - .Where(item => Sector.ContainsFaction(item.Manufacturer) && - (Faction == null || Faction.Allegiance.ContainsKey(item.Manufacturer)) && - (filter?.Invoke(item) ?? true)) + .Where(item => + item.Price > 0 && + Sector.ContainsFaction(item.Manufacturer) && + (Faction == null || Faction.Allegiance.ContainsKey(item.Manufacturer)) && + (filter?.Invoke(item) ?? true)) .WeightedRandomElements(ref Random, item => (Faction == null || item.Manufacturer == Faction.ID ? 1 : Faction.Allegiance[item.Manufacturer]) * // Prioritize items from allied manufacturers pow(item.Shape.Coordinates.Length, sizeExponent) / // Prioritize larger items diff --git a/Assets/Scripts/ServerShared/PlayerSettings.cs b/Assets/Scripts/ServerShared/PlayerSettings.cs index daea4cb1b..b5d224e0a 100644 --- a/Assets/Scripts/ServerShared/PlayerSettings.cs +++ b/Assets/Scripts/ServerShared/PlayerSettings.cs @@ -6,7 +6,7 @@ using MessagePack; public class PlayerSettings { [Key(0)] public string Name = "Anonymous"; - [Key(1)] public SavedGame CurrentRun; + [Key(1)] public SavedGame SavedRun; [Key(2)] public TemperatureUnit TemperatureUnit = TemperatureUnit.Celsius; [Key(3)] public int SignificantDigits = 3; diff --git a/Assets/Scripts/ServerShared/Settings.cs b/Assets/Scripts/ServerShared/Settings.cs index 8643cfe6c..0ebe881b8 100644 --- a/Assets/Scripts/ServerShared/Settings.cs +++ b/Assets/Scripts/ServerShared/Settings.cs @@ -176,6 +176,8 @@ public class GameplaySettings public ExponentialLerp LockSpinSpeed; public float TorqueFloor; public float TorqueMultiplier; + public float AetherTorqueMultiplier; + public float AetherHeatMultiplier; public float VisibilityDecay; public float TargetInfoDecay; public float TargetDetectionInfoThreshold; diff --git a/Assets/Scripts/ServerShared/Ship.cs b/Assets/Scripts/ServerShared/Ship.cs index dd6132640..6dd7f00a1 100644 --- a/Assets/Scripts/ServerShared/Ship.cs +++ b/Assets/Scripts/ServerShared/Ship.cs @@ -35,6 +35,8 @@ public class Ship : Entity private HashSet _leftThrusters; private HashSet _clockwiseThrusters; private HashSet _counterClockwiseThrusters; + private HashSet _aetherDriveItems; + private HashSet _aetherDrives; private bool _exitingWormhole = false; private bool _enteringWormhole = false; @@ -51,9 +53,9 @@ public class Ship : Entity public float ClockwiseTorque { get; private set; } public float CounterClockwiseTorque { get; private set; } public float LeftStrafeTotalTorque { get; private set; } - private Thruster[] LeftStrafeTorqueThrusters; + private List LeftStrafeTorqueThrusters = new List(); public float RightStrafeTotalTorque { get; private set; } - private Thruster[] RightStrafeTorqueThrusters; + private List RightStrafeTorqueThrusters = new List(); public float TurnTime(float2 direction) { @@ -89,91 +91,90 @@ public class Ship : Entity public override void Activate() { base.Activate(); + + _aetherDrives = new HashSet(GetBehaviors()); + _aetherDriveItems = new HashSet(_aetherDrives.Select(x => x.Item)); _allThrusters = GetBehaviors().ToArray(); _thrusterItems = new HashSet(_allThrusters.Select(x=>x.Item)); _forwardThrusters = new HashSet(_allThrusters .Where(x => x.Item.EquippableItem.Rotation == ItemRotation.Reversed)); - RecalculateForwardThrust(); - foreach (var thruster in _forwardThrusters) - thruster.Item.Online.Skip(1).Subscribe(b => RecalculateForwardThrust()); _reverseThrusters = new HashSet(_allThrusters .Where(x => x.Item.EquippableItem.Rotation == ItemRotation.None)); - RecalculateReverseThrust(); - foreach (var thruster in _reverseThrusters) - thruster.Item.Online.Skip(1).Subscribe(b => RecalculateReverseThrust()); _rightThrusters = new HashSet(_allThrusters .Where(x => x.Item.EquippableItem.Rotation == ItemRotation.CounterClockwise)); - RecalculateRightStrafeThrust(); - foreach (var thruster in _rightThrusters) - thruster.Item.Online.Skip(1).Subscribe(b => RecalculateRightStrafeThrust()); _leftThrusters = new HashSet(_allThrusters .Where(x => x.Item.EquippableItem.Rotation == ItemRotation.Clockwise)); - RecalculateLeftStrafeThrust(); - foreach (var thruster in _leftThrusters) - thruster.Item.Online.Skip(1).Subscribe(b => RecalculateLeftStrafeThrust()); _counterClockwiseThrusters = new HashSet(_allThrusters .Where(x => x.Torque < -ItemManager.GameplaySettings.TorqueFloor)); - RecalculateCounterClockwiseTorque(); - foreach (var thruster in _counterClockwiseThrusters) - thruster.Item.Online.Skip(1).Subscribe(b => RecalculateCounterClockwiseTorque()); _clockwiseThrusters = new HashSet(_allThrusters .Where(x => x.Torque > ItemManager.GameplaySettings.TorqueFloor)); - RecalculateClockwiseTorque(); - foreach (var thruster in _clockwiseThrusters) - thruster.Item.Online.Skip(1).Subscribe(b => RecalculateClockwiseTorque()); } public Ship(ItemManager itemManager, Zone zone, EquippableItem hull, EntitySettings settings) : base(itemManager, zone, hull, settings) { - void CheckForThruster(EquippedItem item) - { - if (_thrusterItems.Contains(item)) - { - foreach (var behavior in item.Behaviors) - { - if (behavior is Thruster thruster) - { - if (_forwardThrusters.Contains(thruster)) RecalculateForwardThrust(); - if (_reverseThrusters.Contains(thruster)) RecalculateReverseThrust(); - if (_rightThrusters.Contains(thruster)) RecalculateRightStrafeThrust(); - if (_leftThrusters.Contains(thruster)) RecalculateLeftStrafeThrust(); - if (_clockwiseThrusters.Contains(thruster)) RecalculateClockwiseTorque(); - if (_counterClockwiseThrusters.Contains(thruster)) RecalculateCounterClockwiseTorque(); - } - } - } - } + ItemDestroyed.Where(item=>_thrusterItems.Contains(item)).Subscribe(RemoveThruster); + ItemDestroyed.Where(item=>_aetherDriveItems.Contains(item)).Subscribe(RemoveAetherDrive); + } - ItemDamage.Select(x => x.item).Subscribe(CheckForThruster); + private void RemoveAetherDrive(EquippedItem item) + { + _aetherDriveItems.Remove(item); + _aetherDrives.Remove(item.GetBehavior()); + } + + private void RemoveThruster(EquippedItem item) + { + _thrusterItems.Remove(item); + var thruster = item.GetBehavior(); + if (_forwardThrusters.Contains(thruster)) _forwardThrusters.Remove(thruster); + if (_reverseThrusters.Contains(thruster)) _reverseThrusters.Remove(thruster); + if (_rightThrusters.Contains(thruster)) _rightThrusters.Remove(thruster); + if (_leftThrusters.Contains(thruster)) _leftThrusters.Remove(thruster); + if (_clockwiseThrusters.Contains(thruster)) _clockwiseThrusters.Remove(thruster); + if (_counterClockwiseThrusters.Contains(thruster)) _counterClockwiseThrusters.Remove(thruster); } #region ThrustCalculation + + private void RecalculateThrust() + { + RecalculateForwardThrust(); + RecalculateReverseThrust(); + RecalculateLeftStrafeThrust(); + RecalculateRightStrafeThrust(); + RecalculateClockwiseTorque(); + RecalculateCounterClockwiseTorque(); + } private void RecalculateForwardThrust() { ForwardThrust = 0; foreach (var thruster in _forwardThrusters) - { - if(thruster.Item.Active.Value) + if (thruster.Item.Active.Value) ForwardThrust += thruster.Thrust; - } + + foreach (var drive in _aetherDrives) + if (drive.Item.Active.Value) + ForwardThrust += drive.Thrust.x; } private void RecalculateReverseThrust() { ReverseThrust = 0; foreach (var thruster in _reverseThrusters) - { - if(thruster.Item.Active.Value) + if (thruster.Item.Active.Value) ReverseThrust += thruster.Thrust; - } + + foreach (var drive in _aetherDrives) + if (drive.Item.Active.Value) + ReverseThrust += drive.Thrust.x; } private void RecalculateLeftStrafeThrust() @@ -188,9 +189,14 @@ public class Ship : Entity LeftStrafeTotalTorque += thruster.Torque * thruster.Thrust; } } - LeftStrafeTorqueThrusters = _leftThrusters - .Where(x => abs(sign(x.Torque) - sign(LeftStrafeTotalTorque)) < .01f) - .ToArray(); + LeftStrafeTorqueThrusters.Clear(); + foreach(var thruster in _leftThrusters) + if (abs(sign(thruster.Torque) - sign(LeftStrafeTotalTorque)) < .01f) + LeftStrafeTorqueThrusters.Add(thruster); + + foreach (var drive in _aetherDrives) + if (drive.Item.Active.Value) + LeftStrafeThrust += drive.Thrust.y; } private void RecalculateRightStrafeThrust() @@ -205,29 +211,38 @@ public class Ship : Entity RightStrafeTotalTorque += thruster.Torque * thruster.Thrust; } } - RightStrafeTorqueThrusters = _rightThrusters - .Where(x => abs(sign(x.Torque) - sign(RightStrafeTotalTorque)) < .01f) - .ToArray(); + RightStrafeTorqueThrusters.Clear(); + foreach(var thruster in _rightThrusters) + if (abs(sign(thruster.Torque) - sign(RightStrafeTotalTorque)) < .01f) + RightStrafeTorqueThrusters.Add(thruster); + + foreach (var drive in _aetherDrives) + if (drive.Item.Active.Value) + RightStrafeThrust += drive.Thrust.y; } private void RecalculateClockwiseTorque() { ClockwiseTorque = 0; foreach (var thruster in _clockwiseThrusters) - { - if(thruster.Item.Active.Value) + if (thruster.Item.Active.Value) ClockwiseTorque += thruster.Torque; - } + + foreach (var drive in _aetherDrives) + if (drive.Item.Active.Value) + ClockwiseTorque += drive.Thrust.z; } private void RecalculateCounterClockwiseTorque() { CounterClockwiseTorque = 0; foreach (var thruster in _counterClockwiseThrusters) - { - if(thruster.Item.Active.Value) + if (thruster.Item.Active.Value) CounterClockwiseTorque -= thruster.Torque; - } + + foreach (var drive in _aetherDrives) + if (drive.Item.Active.Value) + CounterClockwiseTorque += drive.Thrust.z; } #endregion @@ -236,8 +251,9 @@ public class Ship : Entity { if (_active && !_exitingWormhole && !_enteringWormhole) { + RecalculateThrust(); foreach (var thruster in _allThrusters) thruster.Axis = 0; - var rightThrusterTorqueCompensation = abs(RightStrafeTotalTorque) / RightStrafeTorqueThrusters.Length; + var rightThrusterTorqueCompensation = abs(RightStrafeTotalTorque) / RightStrafeTorqueThrusters.Count; foreach (var thruster in _rightThrusters) { var thrust = 0f; @@ -246,7 +262,7 @@ public class Ship : Entity thrust -= MovementDirection.x * (rightThrusterTorqueCompensation / (abs(thruster.Torque) * thruster.Thrust)); thruster.Axis = thrust; } - var leftThrusterTorqueCompensation = abs(LeftStrafeTotalTorque) / LeftStrafeTorqueThrusters.Length; + var leftThrusterTorqueCompensation = abs(LeftStrafeTotalTorque) / LeftStrafeTorqueThrusters.Count; foreach (var thruster in _leftThrusters) { var thrust = 0f; @@ -269,7 +285,14 @@ public class Ship : Entity foreach (var thruster in _clockwiseThrusters) thruster.Axis += deltaRot; foreach (var thruster in _counterClockwiseThrusters) thruster.Axis += -deltaRot; + + foreach (var drive in _aetherDrives) + drive.Axis = float3(MovementDirection.y, MovementDirection.x, deltaRot); } + + var velocityMagnitude = length(Velocity); + if(velocityMagnitude > .01f) + Velocity = normalize(Velocity) * AetheriaMath.Decay(velocityMagnitude, HullData.Drag, delta); Position.xz += Velocity * delta; diff --git a/Assets/Scripts/UI/ConfirmationDialog.cs b/Assets/Scripts/UI/ConfirmationDialog.cs index fea00c611..dd09ab0c5 100644 --- a/Assets/Scripts/UI/ConfirmationDialog.cs +++ b/Assets/Scripts/UI/ConfirmationDialog.cs @@ -49,6 +49,7 @@ public class ConfirmationDialog : PropertiesPanel else _onCancel?.Invoke(); CancelClickCatcher?.gameObject.SetActive(false); gameObject.SetActive(false); + ActionGameManager.Instance?.Input.Global.Enable(); } public void MoveToCursor() @@ -71,5 +72,6 @@ public class ConfirmationDialog : PropertiesPanel ButtonGroup.SetActive(onConfirm!=null || onCancel!=null); CancelClickCatcher?.gameObject.SetActive(true); + ActionGameManager.Instance?.Input.Global.Disable(); } } diff --git a/Assets/Scripts/UI/ConsoleView.cs b/Assets/Scripts/UI/ConsoleView.cs index a2b5b2f8c..dd5c438d8 100644 --- a/Assets/Scripts/UI/ConsoleView.cs +++ b/Assets/Scripts/UI/ConsoleView.cs @@ -136,7 +136,11 @@ public class ConsoleView : MonoBehaviour { LogTextArea.text = string.Join("\n", newLog); // if (AcceptingInput) // LogTextArea.text += "\n\n> " + _inputString; - Observable.NextFrame().Subscribe(_ => Scroll.verticalNormalizedPosition = 0); + Observable.NextFrame().Subscribe(_ => + { + if(Scroll) + Scroll.verticalNormalizedPosition = 0; + }); } } diff --git a/Assets/Scripts/UI/ContextMenu.cs b/Assets/Scripts/UI/ContextMenu.cs index 300d04029..2c782ace4 100644 --- a/Assets/Scripts/UI/ContextMenu.cs +++ b/Assets/Scripts/UI/ContextMenu.cs @@ -48,6 +48,7 @@ public class ContextMenu : MonoBehaviour Destroy(_dropdown); CancelClickCatcher.gameObject.SetActive(false); gameObject.SetActive(false); + ActionGameManager.Instance?.Input.Global.Enable(); } public void Clear() @@ -128,5 +129,6 @@ public class ContextMenu : MonoBehaviour rect.position = (Parent != null ? ForcePosition : (Vector3) mousePosition) + Vector3.up * deltaY; if (Parent==null) CancelClickCatcher.gameObject.SetActive(true); + ActionGameManager.Instance?.Input.Global.Disable(); } } diff --git a/Assets/Scripts/UI/DropdownMenu.cs b/Assets/Scripts/UI/DropdownMenu.cs index faff072a4..a39ed216b 100644 --- a/Assets/Scripts/UI/DropdownMenu.cs +++ b/Assets/Scripts/UI/DropdownMenu.cs @@ -36,6 +36,7 @@ public class DropdownMenu : MonoBehaviour { CancelClickCatcher.gameObject.SetActive(false); gameObject.SetActive(false); + ActionGameManager.Instance?.Input.Global.Enable(); } public void Clear() @@ -74,5 +75,6 @@ public class DropdownMenu : MonoBehaviour rect.sizeDelta = parent.sizeDelta; rect.position = pivotTop ? corners[0] : corners[1]; CancelClickCatcher.gameObject.SetActive(true); + ActionGameManager.Instance?.Input.Global.Disable(); } } diff --git a/Assets/Scripts/UI/MainMenu.cs b/Assets/Scripts/UI/MainMenu.cs index 28a947a34..07e804c7c 100644 --- a/Assets/Scripts/UI/MainMenu.cs +++ b/Assets/Scripts/UI/MainMenu.cs @@ -92,11 +92,11 @@ public class MainMenu : MonoBehaviour _nextMenu.panel.Title.text = TitleSubtitle("aetheria", "terminus"); if (!InGame) { - if(ActionGameManager.PlayerSettings.CurrentRun != null) + if(ActionGameManager.PlayerSettings.SavedRun != null) _nextMenu.panel.AddButton("Continue", () => { - ActionGameManager.CurrentSector = new Sector(ActionGameManager.CultCache, ActionGameManager.PlayerSettings.CurrentRun); + ActionGameManager.CurrentSector = new Sector(ActionGameManager.CultCache, ActionGameManager.PlayerSettings.SavedRun); SceneManager.LoadScene("ARPG"); }); else @@ -119,7 +119,7 @@ public class MainMenu : MonoBehaviour var task = Task.Run(() => new Sector(Settings.SectorGenerationSettings, ActionGameManager.CultCache, 0, setState)); task.ContinueWith(task => Observable.NextFrame().Subscribe(_ => { - ActionGameManager.PlayerSettings.CurrentRun = null; + ActionGameManager.PlayerSettings.SavedRun = null; ActionGameManager.CurrentSector = task.Result; SceneManager.LoadScene("ARPG"); })); diff --git a/Assets/Scripts/UI/SchematicDisplay.cs b/Assets/Scripts/UI/SchematicDisplay.cs index 092498d05..b3d345e1d 100644 --- a/Assets/Scripts/UI/SchematicDisplay.cs +++ b/Assets/Scripts/UI/SchematicDisplay.cs @@ -23,14 +23,20 @@ public class SchematicDisplay : MonoBehaviour public GameObject ShieldIcon; public Image HeatsinkBackground; + public GameObject AetherDriveUi; + public GameObject AetherDriveUiSpacer; + public TextMeshProUGUI EnergyLabel; public TextMeshProUGUI CockpitTemperatureLabel; public TextMeshProUGUI RadiatorTemperatureLabel; - [FormerlySerializedAs("HeatsinkTemperatureLabel")] public TextMeshProUGUI HeatStorageTemperatureLabel; + public TextMeshProUGUI HeatStorageTemperatureLabel; public TextMeshProUGUI CargoTemperatureLabel; public TextMeshProUGUI VisibilityLabel; public TextMeshProUGUI HullDurabilityLabel; public TextMeshProUGUI DistanceLabel; + public TextMeshProUGUI ForwardRPMLabel; + public TextMeshProUGUI StrafeRPMLabel; + public TextMeshProUGUI TurnRPMLabel; public RectTransform SensorCooldownFill; public RectTransform EnergyFill; @@ -38,6 +44,9 @@ public class SchematicDisplay : MonoBehaviour public RectTransform HeatstrokeMeterFill; public RectTransform HypothermiaMeterFill; public RectTransform HeatstrokeLimitFill; + public RectTransform ForwardRPMFill; + public RectTransform StrafeRPMFill; + public RectTransform TurnRPMFill; public CanvasGroup TriggerGroups; public float TriggerGroupsFadeDuration = .5f; @@ -55,6 +64,7 @@ public class SchematicDisplay : MonoBehaviour private EquippedCargoBay[] _cargoBays; private SchematicDisplayItem[] _schematicItems; private Graphic[] _groupGraphics; + private AetherDrive _aetherDrive; private int _selectedGroupIndex; private int _selectedItemIndex; @@ -116,6 +126,9 @@ public class SchematicDisplay : MonoBehaviour _cockpit = entity.GetBehavior(); _reactor = entity.GetBehavior(); _capacitors = entity.GetBehaviors().ToArray(); + _aetherDrive = entity.GetBehavior(); + AetherDriveUi.SetActive(_aetherDrive != null); + AetherDriveUiSpacer.SetActive(_aetherDrive != null); _radiators = entity.GetBehaviors().ToArray(); if (_radiators.Length == 0) @@ -268,6 +281,18 @@ public class SchematicDisplay : MonoBehaviour EnergyFill.anchorMax = new Vector2(charge / maxCharge, 1); EnergyLabel.text = $"{((int)charge).ToString()}/{((int)maxCharge).ToString()} + ({((int)_reactor.Draw).ToString()})"; } + + if (_aetherDrive != null) + { + ForwardRPMLabel.text = ActionGameManager.PlayerSettings.Format(_aetherDrive.Rpm.x); + ForwardRPMFill.anchorMax = new Vector2(_aetherDrive.Rpm.x / _aetherDrive.MaximumRpm, 1); + + StrafeRPMLabel.text = ActionGameManager.PlayerSettings.Format(_aetherDrive.Rpm.y); + StrafeRPMFill.anchorMax = new Vector2(_aetherDrive.Rpm.y / _aetherDrive.MaximumRpm, 1); + + TurnRPMLabel.text = ActionGameManager.PlayerSettings.Format(_aetherDrive.Rpm.z); + TurnRPMFill.anchorMax = new Vector2(_aetherDrive.Rpm.z / _aetherDrive.MaximumRpm, 1); + } } else { diff --git a/GameData/AetherDB.msgpack b/GameData/AetherDB.msgpack index b06527dc5..c2455d053 100644 --- a/GameData/AetherDB.msgpack +++ b/GameData/AetherDB.msgpack @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6998b1baab572766bf9a35358b7ba34f6d53d67c85ed8eb388dfc334b52c72fe -size 75109 +oid sha256:21ce7bd21f283b5deb556e09791445df142f9ca3025499205ae4a4d9b0b1afd2 +size 76200 diff --git a/GameData/PlayerSettings.msgpack b/GameData/PlayerSettings.msgpack index 241d80ee6..2505783c8 100644 --- a/GameData/PlayerSettings.msgpack +++ b/GameData/PlayerSettings.msgpack @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4837af8686704ae9bcc731ac076fe9db437881a5a1a217f65012aeaf777a99d7 -size 18061 +oid sha256:0cf5ad8787020982cacb09d4ce84cfa9bb0ae60d9ce09b901f8ac28a4de6421f +size 18270 diff --git a/RethinkDB.csproj b/RethinkDB.csproj index 1ccf35b55..b5ef29462 100644 --- a/RethinkDB.csproj +++ b/RethinkDB.csproj @@ -249,8 +249,8 @@ - +