Bugfixes & Reactive Refactor

Added credits display to trade screen
Fixed bug in inventory screen where a failed drag from a cargo bay would make the item disappear until a refresh is triggered
Changed behavior of Escape key to exit menu if a menu is open
Fixed zone map gravity isolines to correctly track maximum gravity depth
Refactored orbit and planet data to replace reactive variables with regular ones
This commit is contained in:
Reinier Vens 2025-07-18 00:21:33 +01:00
commit 6b0860b178
43 changed files with 1833 additions and 728 deletions

View file

@ -9,6 +9,8 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Car Paint White Small
m_Shader: {fileID: 4800000, guid: ddff0b48b92c991499817d2a0f5d5059, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _MAINTEX
@ -22,6 +24,7 @@ Material:
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@ -96,3 +99,4 @@ Material:
- _EdgeColor: {r: 6.0235295, g: 6.0235295, b: 24.094118, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View file

@ -9,6 +9,8 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Station Lights
m_Shader: {fileID: 4800000, guid: fe8c4273cecc4ade93ae54e087dff063, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
@ -17,6 +19,7 @@ Material:
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@ -95,3 +98,4 @@ Material:
- _EdgeColor: {r: 6.0235295, g: 6.0235295, b: 24.094118, a: 1}
- _EmissionColor: {r: 0.7112653, g: 0.4292453, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View file

@ -9,6 +9,8 @@ Material:
m_PrefabAsset: {fileID: 0}
m_Name: Steel parkerized
m_Shader: {fileID: 4800000, guid: ddff0b48b92c991499817d2a0f5d5059, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _MAINTEX
@ -22,6 +24,7 @@ Material:
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@ -96,3 +99,4 @@ Material:
- _EdgeColor: {r: 6.0235295, g: 6.0235295, b: 24.094118, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View file

@ -79,7 +79,7 @@ Material:
- _ColorMask: 15
- _Cutoff: 0.5
- _DangerSteepness: 1.5
- _DepthRange: 307.4303
- _DepthRange: 228.79605
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
@ -92,7 +92,7 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Scale: 0.5
- _Scale: 2.6924083
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1

View file

@ -74,7 +74,7 @@ Material:
- _ColorMask: 15
- _Cutoff: 0.5
- _DangerSteepness: 1.5
- _DepthRange: 307.4303
- _DepthRange: 228.79605
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1

View file

@ -2,14 +2,19 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DebrisParticle
m_Shader: {fileID: 210, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _ALPHATEST_ON _EMISSION
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHATEST_ON
- _EMISSION
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@ -17,7 +22,8 @@ Material:
stringTagMap:
RenderType: TransparentCutout
disabledShaderPasses:
- ALWAYS
- GRABPASS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@ -57,6 +63,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BlendOp: 0
- _BumpScale: 1
@ -97,3 +104,4 @@ Material:
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1

BIN
Assets/Resources/Settings.asset (Stored with Git LFS)

Binary file not shown.

View file

@ -1148,7 +1148,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -1608,7 +1608,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -1744,6 +1744,143 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &142524263
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 142524266}
- component: {fileID: 142524265}
- component: {fileID: 142524264}
m_Layer: 5
m_Name: Credit Count
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &142524264
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 142524263}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 9999999999999
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 53555f7a2d5e745428813f1b1118734f, type: 2}
m_sharedMaterial: {fileID: -2804126062856497447, guid: 53555f7a2d5e745428813f1b1118734f,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 20
m_fontSizeBase: 20
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 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 &142524265
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 142524263}
m_CullTransparentMesh: 0
--- !u!224 &142524266
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 142524263}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1914914798}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 96, y: -8}
m_SizeDelta: {x: 174, y: 24}
m_Pivot: {x: 0, y: 1}
--- !u!1 &146394774
GameObject:
m_ObjectHideFlags: 0
@ -5569,7 +5706,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -7492,7 +7629,6 @@ GameObject:
- component: {fileID: 479699686}
- component: {fileID: 479699689}
- component: {fileID: 479699688}
- component: {fileID: 479699687}
m_Layer: 5
m_Name: Title
m_TagString: Untagged
@ -7519,26 +7655,6 @@ RectTransform:
m_AnchoredPosition: {x: 16, y: -8}
m_SizeDelta: {x: -32, y: 24}
m_Pivot: {x: 0, y: 1}
--- !u!114 &479699687
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 479699685}
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: -1
m_FlexibleWidth: 9999
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &479699688
MonoBehaviour:
m_ObjectHideFlags: 0
@ -7609,7 +7725,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -8421,6 +8537,7 @@ MonoBehaviour:
Spreadsheet: {fileID: 234374935}
TargetCargoLabel: {fileID: 125165636}
FoldoutButton: {fileID: 425104909}
CreditsLabel: {fileID: 142524264}
--- !u!222 &522642870
CanvasRenderer:
m_ObjectHideFlags: 0
@ -14130,6 +14247,143 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 906882333}
m_CullTransparentMesh: 0
--- !u!1 &910549480
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 910549481}
- component: {fileID: 910549483}
- component: {fileID: 910549482}
m_Layer: 5
m_Name: Credits
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &910549481
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 910549480}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1914914798}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 16, y: -8}
m_SizeDelta: {x: 80, y: 24}
m_Pivot: {x: 0, y: 1}
--- !u!114 &910549482
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 910549480}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 'Credits:'
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 53555f7a2d5e745428813f1b1118734f, type: 2}
m_sharedMaterial: {fileID: -2804126062856497447, guid: 53555f7a2d5e745428813f1b1118734f,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 20
m_fontSizeBase: 20
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 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 &910549483
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 910549480}
m_CullTransparentMesh: 0
--- !u!1 &912920565
GameObject:
m_ObjectHideFlags: 0
@ -14456,7 +14710,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -17188,7 +17442,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -20772,7 +21026,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -21612,7 +21866,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -21811,7 +22065,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -21997,7 +22251,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -22768,7 +23022,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -23185,7 +23439,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -26472,7 +26726,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -27326,7 +27580,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -29310,6 +29564,8 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 479699686}
- {fileID: 910549481}
- {fileID: 142524266}
- {fileID: 1010025669}
- {fileID: 425104908}
- {fileID: 125165635}
@ -30400,7 +30656,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &2056162322
RectTransform:
m_ObjectHideFlags: 0
@ -31123,7 +31379,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -32038,7 +32294,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 100000, guid: aa6193d250644494faa1b8492b0e98d1, type: 3}
propertyPath: m_IsActive
value: 1
value: 0
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: aa6193d250644494faa1b8492b0e98d1, type: 3}
propertyPath: m_RootOrder
@ -35542,7 +35798,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -36886,7 +37142,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
@ -37643,7 +37899,7 @@ MonoBehaviour:
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 00000000
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1

View file

@ -1,3 +1,4 @@
using static Unity.Mathematics.math;
using UnityEditor;
using UnityEngine;
using static UnityEditor.EditorGUILayout;
@ -14,6 +15,18 @@ public class IntInspector : BaseInspector<int>
}
}
public class UintInspector : BaseInspector<uint>
{
public override uint Inspect(string label, uint value, object parent, DatabaseInspector inspectorWindow)
{
using (new HorizontalScope())
{
GUILayout.Label(label, GUILayout.Width(width));
return (uint) max(DelayedIntField((int)value), 0);
}
}
}
public class RangedIntInspector : BaseInspector<int, InspectableRangedIntAttribute>
{
public override int Inspect(string label, int value, object parent, DatabaseInspector inspectorWindow, InspectableRangedIntAttribute attribute)

View file

@ -20,7 +20,6 @@ using UnityEngine.Rendering.PostProcessing;
using UnityEngine.Serialization;
using UnityEngine.UI;
using Unity.Mathematics;
using UnityEditor.Localization.Plugins.XLIFF.V12;
using UnityEngine.EventSystems;
using static Unity.Mathematics.math;
using float2 = Unity.Mathematics.float2;
@ -326,7 +325,13 @@ public class ActionGameManager : MonoBehaviour
else Undock();
};
Input.Global.MainMenu.performed += context => ToggleFullscreenMenu(MainMenu.gameObject);
Input.Global.MainMenu.performed += context =>
{
if(Menu.gameObject.activeSelf)
ToggleMenuTab(Menu.CurrentTab);
else
ToggleFullscreenMenu(MainMenu.gameObject);
};
Input.Global.InputScreen.performed += context => ToggleFullscreenMenu(HelpScreen);
@ -427,7 +432,7 @@ public class ActionGameManager : MonoBehaviour
slot.PointerEnterTrigger.OnPointerEnterAsObservable().Subscribe(_ =>
{
Debug.Log($"Pointer entered action bar slot {controlPath}");
//Debug.Log($"Pointer entered action bar slot {controlPath}");
RegisterDragTarget(dragAction =>
{
//Debug.Log("Registering binding!");
@ -504,7 +509,7 @@ public class ActionGameManager : MonoBehaviour
ConsoleController.AddCommand("trackmissile",
_ =>
{
foreach (var missileManager in FindObjectsOfType<GuidedProjectileManager>())
foreach (var missileManager in FindObjectsByType<GuidedProjectileManager>(FindObjectsSortMode.None))
{
missileManager.OnFireGuided.Where(x => x.source == _currentEntity).Take(1).Subscribe(x =>
{

View file

@ -716,7 +716,7 @@ public abstract class Entity
public EquippedDockingBay TryDock(Ship ship)
{
if (!IsDockingPermitted(ship.GetFactionRelationship(Faction), CurrentSecurityLevel.Value)) return null;
//if (!IsDockingPermitted(ship.GetFactionRelationship(Faction), CurrentSecurityLevel.Value)) return null;
var bay = DockingBays.FirstOrDefault(x => x.DockedShip == null);
if (bay != null)
@ -1368,7 +1368,7 @@ public class EquippedCargoBay : EquippedItem
public readonly Dictionary<Guid, List<ItemInstance>> ItemsOfType = new Dictionary<Guid, List<ItemInstance>>();
public readonly CargoBayData Data;
public new readonly CargoBayData Data;
public float Mass { get; private set; }
public float ThermalMass { get; private set; }

View file

@ -1,4 +1,4 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
/* 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/. */
@ -165,10 +165,10 @@ public class Zone
{
var orbit = Orbits[orbitID];
float2 pos = float2.zero;
if (orbit.Period.Value > .01f)
if (orbit.Period > .01f)
{
var phase = (float) frac(_time / orbit.Period.Value);
pos = OrbitData.Evaluate(frac(phase + orbit.Data.Phase)) * orbit.Data.Distance.Value;
var phase = (float) frac(_time / orbit.Period);
pos = OrbitData.Evaluate(frac(phase + orbit.Data.Phase)) * orbit.Data.Distance;
if (float.IsNaN(pos.x))
{
@ -258,7 +258,7 @@ public class Zone
var orbit = new OrbitData
{
ID = Guid.NewGuid(),
Distance = new ReactiveProperty<float>(distance),
Distance = distance,
Parent = parent,
Phase = storedPhase
};
@ -330,21 +330,21 @@ public class Zone
{
var p = position - body.Orbit.Position; //GetOrbitPosition(body.BodyData.Orbit)
var distSqr = lengthsq(p);
var gravityRadius = body.GravityWellRadius.Value;
var gravityRadius = body.GravityWellRadius;
if (distSqr < gravityRadius*gravityRadius)
{
var depth = body.GravityWellDepth.Value;
result -= PowerPulse(sqrt(distSqr) / gravityRadius, body.BodyData.GravityDepthExponent.Value) * depth;
var depth = body.GravityWellDepth;
result -= PowerPulse(sqrt(distSqr) / gravityRadius, body.BodyData.GravityDepthExponent) * depth;
}
if (body is GasGiant gas)
{
var waveRadius = gas.GravityWavesRadius.Value;
var waveRadius = gas.GravityWavesRadius;
if(distSqr < waveRadius*waveRadius)
{
var depth = gas.GravityWavesDepth.Value;
var frequency = Settings.WaveFrequency.Evaluate(body.BodyData.Mass.Value);
var speed = gas.GravityWavesSpeed.Value;
var depth = gas.GravityWavesDepth;
var frequency = Settings.WaveFrequency.Evaluate(body.BodyData.Mass);
var speed = gas.GravityWavesSpeed;
result -= RadialWaves(sqrt(distSqr) / waveRadius, 8, 1.25f, frequency, (float) (_time * speed)) * depth;
}
}
@ -362,7 +362,7 @@ public class Zone
{
var p = position - body.Orbit.Position;
var distSqr = lengthsq(p);
var lightRadius = sun.LightRadius.Value;
var lightRadius = sun.LightRadius;
if (distSqr < lightRadius * lightRadius)
{
light += PowerPulse(sqrt(distSqr) / lightRadius, 8);
@ -377,7 +377,7 @@ public class Zone
{
var normal = GetNormal(position);
var f = new float2(normal.x, normal.z);
return f * Settings.GravityStrength * lengthsq(f);// * Mathf.Abs(GetHeight(position));
return f * Settings.GravityStrength * lengthsq(f);
}
public static float PowerPulse(float x, float exponent)
@ -409,58 +409,65 @@ public class Zone
public class Planet
{
public Orbit Orbit;
protected readonly PlanetSettings Settings;
public BodyData BodyData;
public ReadOnlyReactiveProperty<float> GravityWellDepth;
public ReadOnlyReactiveProperty<float> GravityWellRadius;
public ReadOnlyReactiveProperty<float> BodyRadius;
public float GravityWellDepth;
public float GravityWellRadius;
public float BodyRadius;
public Planet(PlanetSettings settings, BodyData data, Orbit orbit)
{
Settings = settings;
Orbit = orbit;
BodyData = data;
BodyRadius = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.BodyRadiusMultiplier,
(mass, radius) => settings.BodyRadius.Evaluate(mass) * radius));
GravityWellRadius = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.GravityRadiusMultiplier,
(mass, radius) => settings.GravityRadius.Evaluate(mass) * radius));
GravityWellDepth = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.GravityDepthMultiplier,
(mass, depth) => settings.GravityDepth.Evaluate(mass) * depth));
CalculateProperties();
}
public void CalculateProperties()
{
BodyRadius = Settings.BodyRadius.Evaluate(BodyData.Mass) * BodyData.BodyRadiusMultiplier;
GravityWellRadius = Settings.GravityRadius.Evaluate(BodyData.Mass) * BodyData.GravityRadiusMultiplier;
GravityWellDepth = Settings.GravityDepth.Evaluate(BodyData.Mass) * BodyData.GravityDepthMultiplier;
}
}
public class GasGiant : Planet
{
public GasGiantData GasGiantData;
public ReadOnlyReactiveProperty<float> GravityWavesDepth;
public ReadOnlyReactiveProperty<float> GravityWavesRadius;
public ReadOnlyReactiveProperty<float> GravityWavesSpeed;
public float GravityWavesDepth;
public float GravityWavesRadius;
public float GravityWavesSpeed;
public GasGiant(PlanetSettings settings, GasGiantData data, Orbit orbit) : base(settings, data, orbit)
{
GasGiantData = data;
GravityWavesDepth = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.WaveDepthMultiplier,
(mass, depth) => settings.WaveDepth.Evaluate(mass) * depth));
GravityWavesRadius = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.WaveRadiusMultiplier,
(mass, radius) => settings.WaveRadius.Evaluate(mass) * radius));
GravityWavesSpeed = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.WaveSpeedMultiplier,
(mass, speed) => settings.WaveSpeed.Evaluate(mass) * speed));
CalculateProperties();
}
public new void CalculateProperties()
{
base.CalculateProperties();
GravityWavesDepth = Settings.WaveDepth.Evaluate(BodyData.Mass) * GasGiantData.WaveDepthMultiplier;
GravityWavesRadius = Settings.WaveRadius.Evaluate(BodyData.Mass) * GasGiantData.WaveRadiusMultiplier;
GravityWavesSpeed = Settings.WaveSpeed.Evaluate(BodyData.Mass) * GasGiantData.WaveSpeedMultiplier;
}
}
public class Sun : GasGiant
{
public ReadOnlyReactiveProperty<float> LightRadius;
public SunData SunData;
public float LightRadius;
public Sun(PlanetSettings settings, SunData data, Orbit orbit) : base(settings, data, orbit)
{
LightRadius = new ReadOnlyReactiveProperty<float>(
data.Mass.CombineLatest(data.LightRadiusMultiplier,
(mass, radius) => settings.LightRadius.Evaluate(mass) * radius));
SunData = data;
CalculateProperties();
}
public new void CalculateProperties()
{
base.CalculateProperties();
LightRadius = Settings.LightRadius.Evaluate(BodyData.Mass) * SunData.LightRadiusMultiplier;
}
}
@ -491,11 +498,11 @@ public class Orbit
public float2 Velocity = float2.zero;
public float2 Position = float2.zero;
public float2 PreviousPosition = float2.zero;
public ReadOnlyReactiveProperty<float> Period;
public float Period;
public Orbit(PlanetSettings settings, OrbitData data)
{
Data = data;
Period = new ReadOnlyReactiveProperty<float>(data.Distance.Select(f => settings.OrbitPeriod.Evaluate(f)));
Period = settings.OrbitPeriod.Evaluate(data.Distance);
}
}

View file

@ -78,33 +78,33 @@ public class ZonePack
public abstract class BodyData : DatabaseEntry, INamedEntry
{
[JsonProperty("name"), Key(1)]
public ReactiveProperty<string> Name = new ReactiveProperty<string>("");
public string Name = "";
[JsonProperty("orbit"), Key(2)]
public Guid Orbit;
[JsonProperty("mass"), Key(3)]
public ReactiveProperty<float> Mass = new ReactiveProperty<float>(0);
public float Mass = 0;
[JsonProperty("resources"), Key(4)]
public Dictionary<Guid, float> Resources = new Dictionary<Guid, float>();
[JsonProperty("bodyRadiusMul")] [Key(5)]
public ReactiveProperty<float> BodyRadiusMultiplier = new ReactiveProperty<float>(1);
public float BodyRadiusMultiplier = 1;
[JsonProperty("gravRadiusMul")] [Key(6)]
public ReactiveProperty<float> GravityRadiusMultiplier = new ReactiveProperty<float>(1);
public float GravityRadiusMultiplier = 1;
[JsonProperty("depthMul")] [Key(7)]
public ReactiveProperty<float> GravityDepthMultiplier = new ReactiveProperty<float>(1);
public float GravityDepthMultiplier = 1;
[JsonProperty("depthExp")] [Key(8)]
public ReactiveProperty<float> GravityDepthExponent = new ReactiveProperty<float>(16);
public float GravityDepthExponent = 16;
[IgnoreMember] public string EntryName
{
get => Name.Value;
set => Name.Value = value;
get => Name;
set => Name = value;
}
}
@ -125,49 +125,49 @@ public class AsteroidBeltData : BodyData
public class GasGiantData : BodyData
{
[JsonProperty("firstOffsetDomainRotationSpeed"), Key(9)]
public ReactiveProperty<float> FirstOffsetDomainRotationSpeed = new ReactiveProperty<float>(1);
public float FirstOffsetDomainRotationSpeed = 1;
[JsonProperty("firstOffsetRotationSpeed"), Key(10)]
public ReactiveProperty<float> FirstOffsetRotationSpeed = new ReactiveProperty<float>(1);
public float FirstOffsetRotationSpeed = 1;
[JsonProperty("secondOffsetDomainRotationSpeed"), Key(11)]
public ReactiveProperty<float> SecondOffsetDomainRotationSpeed = new ReactiveProperty<float>(1);
public float SecondOffsetDomainRotationSpeed = 1;
[JsonProperty("secondOffsetRotationSpeed"), Key(12)]
public ReactiveProperty<float> SecondOffsetRotationSpeed = new ReactiveProperty<float>(1);
public float SecondOffsetRotationSpeed = 1;
[JsonProperty("albedoRotationSpeed"), Key(13)]
public ReactiveProperty<float> AlbedoRotationSpeed = new ReactiveProperty<float>(1);
public float AlbedoRotationSpeed = 1;
[JsonProperty("gravRadiusMul")] [Key(14)]
public ReactiveProperty<float> WaveRadiusMultiplier = new ReactiveProperty<float>(1);
public float WaveRadiusMultiplier = 1;
[JsonProperty("depthMul")] [Key(15)]
public ReactiveProperty<float> WaveDepthMultiplier = new ReactiveProperty<float>(1);
public float WaveDepthMultiplier = 1;
[JsonProperty("depthExp")] [Key(16)]
public ReactiveProperty<float> WaveDepthExponent = new ReactiveProperty<float>(8);
public float WaveDepthExponent = 8;
[JsonProperty("depthExp")] [Key(17)]
public ReactiveProperty<float> WaveSpeedMultiplier = new ReactiveProperty<float>(8);
public float WaveSpeedMultiplier = 8;
[JsonProperty("materialOverrides"), Key(18)]
public List<string> MaterialOverrides = new List<string>();
[JsonProperty("colors"), Key(19)]
public ReactiveProperty<float4[]> Colors = new ReactiveProperty<float4[]>();
public float4[] Colors = new float4[0];
}
public class SunData : GasGiantData
{
[JsonProperty("lightColor"), Key(20)]
public ReactiveProperty<float3> LightColor = new ReactiveProperty<float3>(float3.zero);
public float3 LightColor = float3.zero;
[JsonProperty("fogTintColor"), Key(21)]
public ReactiveProperty<float3> FogTintColor = new ReactiveProperty<float3>(float3.zero);
public float3 FogTintColor = float3.zero;
[JsonProperty("lightRadiusMul")] [Key(22)]
public ReactiveProperty<float> LightRadiusMultiplier = new ReactiveProperty<float>(1);
public float LightRadiusMultiplier = 1;
}
[MessagePackObject, JsonObject(MemberSerialization.OptIn)]
@ -193,7 +193,7 @@ public class OrbitData : DatabaseEntry
public Guid Parent;
[JsonProperty("distance"), Key(2)]
public ReactiveProperty<float> Distance;
public float Distance;
[JsonProperty("phase"), Key(3)]
public float Phase;

View file

@ -102,7 +102,7 @@ public static class ZoneGenerator
var data = new OrbitData
{
FixedPosition = planet.FixedPosition,
Distance = new ReactiveProperty<float>(planet.Distance),
Distance = planet.Distance,
//Period = planet.Period,
Phase = planet.Phase
};
@ -158,17 +158,17 @@ public static class ZoneGenerator
throw new ArgumentOutOfRangeException();
}
planetData.Mass.Value = planet.Mass;
planetData.Mass = planet.Mass;
planetData.Orbit = orbitMap[planet].ID;
// planetData.Resources = planetResources;
planetData.Name.Value = planetData.ID.ToString().Substring(0, 8);
planetData.Name = planetData.ID.ToString().Substring(0, 8);
if (planetData is AsteroidBeltData beltData)
{
beltData.Asteroids =
Enumerable.Range(0, (int) (zoneSettings.AsteroidCount.Evaluate(beltData.Mass.Value * orbitMap[planet].Distance.Value)))
Enumerable.Range(0, (int) zoneSettings.AsteroidCount.Evaluate(beltData.Mass * orbitMap[planet].Distance))
.Select(_ => new Asteroid
{
Distance = orbitMap[planet].Distance.Value + random.NextFloat()*(random.NextFloat()-.5f)*zoneSettings.AsteroidBeltWidth.Evaluate(orbitMap[planet].Distance.Value),
Distance = orbitMap[planet].Distance + random.NextFloat()*(random.NextFloat()-.5f)*zoneSettings.AsteroidBeltWidth.Evaluate(orbitMap[planet].Distance),
Phase = random.NextFloat(),
Size = random.NextFloat(),
RotationSpeed = zoneSettings.AsteroidRotationSpeed.Evaluate(random.NextFloat())
@ -182,14 +182,14 @@ public static class ZoneGenerator
{
float primary = random.NextFloat();
float secondary = frac(primary + 1 + zoneSettings.SunSecondaryColorDistance * (random.NextFloat() > .5 ? 1 : -1));
gas.Colors.Value = new []
gas.Colors = new []
{
float4(ColorMath.HsvToRgb(float3(primary, zoneSettings.SunColorSaturation, .5f)), 0),
float4(ColorMath.HsvToRgb(float3(secondary, zoneSettings.SunColorSaturation, 1)), 1)
};
sun.FogTintColor.Value = ColorMath.HsvToRgb(float3(primary, zoneSettings.SunFogTintSaturation, 1));
sun.LightColor.Value = ColorMath.HsvToRgb(float3(primary, zoneSettings.SunLightSaturation, 1));
gas.FirstOffsetDomainRotationSpeed.Value = 5;
sun.FogTintColor = ColorMath.HsvToRgb(float3(primary, zoneSettings.SunFogTintSaturation, 1));
sun.LightColor = ColorMath.HsvToRgb(float3(primary, zoneSettings.SunLightSaturation, 1));
gas.FirstOffsetDomainRotationSpeed = 5;
}
else
{
@ -205,19 +205,19 @@ public static class ZoneGenerator
// Each band has a chance of being either the primary or one of the adjacent hues
// Saturation and Value are random with curves applied
gas.Colors.Value = times
gas.Colors = times
.Select(time => float4(ColorMath.HsvToRgb(float3(
random.NextFloat() > zoneSettings.GasGiantBandAltColorChance ? primary : (random.NextFloat() > .5f ? right : left),
zoneSettings.GasGiantBandSaturation.Evaluate(random.NextFloat()),
zoneSettings.GasGiantBandSaturation.Evaluate(random.NextFloat()))),time))
.ToArray();
gas.FirstOffsetDomainRotationSpeed.Value = 0;
gas.FirstOffsetDomainRotationSpeed = 0;
}
gas.AlbedoRotationSpeed.Value = -3;
gas.FirstOffsetRotationSpeed.Value = 5;
gas.SecondOffsetRotationSpeed.Value = 10;
gas.SecondOffsetDomainRotationSpeed.Value = -25;
gas.AlbedoRotationSpeed = -3;
gas.FirstOffsetRotationSpeed = 5;
gas.SecondOffsetRotationSpeed = 10;
gas.SecondOffsetDomainRotationSpeed = -25;
}
return planetData;
}).ToList();
@ -255,7 +255,7 @@ public static class ZoneGenerator
{
ID = Guid.NewGuid(),
Parent = baseOrbit.Parent,
Distance = new ReactiveProperty<float>(baseOrbit.Distance.Value),
Distance = baseOrbit.Distance,
Phase = baseOrbit.Phase + PI / 3 * sign(random.NextFloat() - .5f)
};
pack.Orbits.Add(lagrangeOrbit);
@ -264,13 +264,13 @@ public static class ZoneGenerator
void PlaceTurret(OrbitData orbit, LoadoutGenerator loadoutGenerator, int distanceMultiplier)
{
var phase = 20f * distanceMultiplier / orbit.Distance.Value;
var phase = 20f * distanceMultiplier / orbit.Distance;
var turretOrbit = new OrbitData
{
ID = Guid.NewGuid(),
Parent = orbit.Parent,
Distance = new ReactiveProperty<float>(orbit.Distance.Value),
Distance = orbit.Distance,
Phase = orbit.Phase + phase
};
pack.Orbits.Add(turretOrbit);

View file

@ -115,10 +115,10 @@ public class ConsoleView : MonoBehaviour {
if(visible)
{
_playerInputPreviouslyEnabled = GameManager.Input.Player.enabled;
_previousCursorLockMode = Cursor.lockState;
GameManager.Input.Global.Disable();
GameManager.DisablePlayerInput();
GameManager.Input.UI.Disable();
_previousCursorLockMode = Cursor.lockState;
Cursor.lockState = CursorLockMode.None;
}
else

View file

@ -442,10 +442,10 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler
itemInstanceDragObject.OriginInventory.Remove(itemInstanceDragObject.Item);
FakeOccupancy = null;
entity.TryEquip(equippableItem, placementPosition);
var success = entity.TryEquip(equippableItem, placementPosition);
RefreshCells();
// TODO: SFX: Equip
return false;
return success;
});
}
});
@ -625,6 +625,7 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler
foreach(var dragObject in _dragCells)
Destroy(dragObject.gameObject);
_dragCells = null;
RefreshCells();
});
cell.PointerEnterTrigger.OnPointerEnterAsObservable()
.Subscribe(data =>

View file

@ -23,6 +23,7 @@ public class TradeMenu : MonoBehaviour
public Spreadsheet Spreadsheet;
public TextMeshProUGUI TargetCargoLabel;
public Button FoldoutButton;
public TextMeshProUGUI CreditsLabel;
private EquippedCargoBay _targetCargo;
private (ItemFilter filter, HardpointType type) _hardpointFilter;
@ -38,6 +39,7 @@ public class TradeMenu : MonoBehaviour
_targetCargo = GameManager.DockingBay;
TargetCargoLabel.text = "Docking Bay";
Properties.GameManager = GameManager;
UpdateCreditsLabel();
MinimumSizeFilter.Width.onEndEdit.RemoveAllListeners();
MinimumSizeFilter.Width.onEndEdit.AddListener(_ => Populate());
@ -353,6 +355,14 @@ public class TradeMenu : MonoBehaviour
}
}));
}
private void UpdateCreditsLabel()
{
if (CreditsLabel != null)
{
CreditsLabel.text = GameManager.Credits.ToString("N0");
}
}
private void Buy(CraftedItemInstance item)
{
@ -363,15 +373,17 @@ public class TradeMenu : MonoBehaviour
if (data is HullData hullData)
{
if (hullData.HullType != HullType.Ship) throw new ArgumentException("Attempted to buy non-ship hull from station, WTF are you doing?!");
var ship = new Ship(GameManager.ItemManager, GameManager.Zone, item as EquippableItem, GameManager.NewEntitySettings) {IsPlayerShip = true};
var ship = new Ship(GameManager.ItemManager, GameManager.Zone, item as EquippableItem, GameManager.NewEntitySettings) { IsPlayerShip = true };
ship.SetParent(GameManager.DockedEntity);
GameManager.Credits -= data.Price;
UpdateCreditsLabel();
}
else if (Inventory.TryTransferItem(_targetCargo, item))
{
GameManager.Credits -= price;
UpdateCreditsLabel();
}
else
{
@ -406,6 +418,7 @@ public class TradeMenu : MonoBehaviour
if (Inventory.TryTransferItem(_targetCargo, simpleCommodity, quantity))
{
GameManager.Credits -= q * data.Price;
UpdateCreditsLabel();
remaining -= q;
}
else

View file

@ -466,7 +466,7 @@ public class PropertiesPanel : MonoBehaviour
Transform dragObject = null;
weaponGroups.OnBeginDragAsObservable().Subscribe(x =>
{
Debug.Log($"Began dragging weapon group {x.group}");
//Debug.Log($"Began dragging weapon group {x.group}");
GameManager.BeginDrag(new WeaponGroupDragObject(x.group));
dragObject = Instantiate(weaponGroups.Groups[x.group], DragParent, true).transform;
dragOffset = (Vector2)dragObject.position - x.pointerEventData.position;
@ -477,7 +477,7 @@ public class PropertiesPanel : MonoBehaviour
});
weaponGroups.OnEndDragAsObservable().Subscribe(x =>
{
Debug.Log($"Ended dragging weapon group {x.group}");
//Debug.Log($"Ended dragging weapon group {x.group}");
GameManager.EndDrag();
Destroy(dragObject.gameObject);
});

View file

@ -71,7 +71,7 @@ public class ZoneRenderer : MonoBehaviour
private Dictionary<Guid, InstancedMesh[]> _beltMeshes = new Dictionary<Guid, InstancedMesh[]>();
private Dictionary<Guid, Matrix4x4[][]> _beltMatrices = new Dictionary<Guid, Matrix4x4[][]>();
private float _viewDistance;
private float _maxDepth;
//private float _maxDepth;
private float _minimapDistance;
private int _tourIndex = -1;
@ -183,7 +183,6 @@ public class ZoneRenderer : MonoBehaviour
public void LoadZone(Zone zone)
{
ClearZone();
_maxDepth = 0;
Zone = zone;
SectorBrushes.localScale = zone.Pack.Radius * 2 * Vector3.one;
SlimeGravityCamera.orthographicSize = zone.Pack.Radius;
@ -370,34 +369,31 @@ public class ZoneRenderer : MonoBehaviour
planet = Instantiate(Sun, ZoneRoot);
var sunObject = (SunObject) planet;
var sun = Zone.PlanetInstances[planetData.ID] as Sun;
sunData.LightColor.Subscribe(c => sunObject.Light.color = c.ToColor());
sun.LightRadius.Subscribe(r =>
{
sunObject.Light.range = r;
sunObject.FogTint.transform.localScale = r * Vector3.one;
});
sunData.FogTintColor.Subscribe(c => sunObject.FogTint.material.SetColor("_Color", c.ToColor()));
sunObject.Light.color = sunData.LightColor.ToColor();
sunObject.Light.range = sun.LightRadius;
sunObject.FogTint.transform.localScale = sun.LightRadius * Vector3.one;
sunObject.FogTint.material.SetColor("_Color", sunData.FogTintColor.ToColor());
}
else planet = Instantiate(GasGiant, ZoneRoot);
var gas = (GasGiantObject) planet;
var gasGiant = Zone.PlanetInstances[planetData.ID] as GasGiant;
gasGiantData.Colors.Subscribe(c => gas.Body.material.SetTexture("_ColorRamp", c.ToGradient(!(planetData is SunData)).ToTexture()));
gas.Body.material.SetTexture("_ColorRamp", gasGiantData.Colors.ToGradient(!(planetData is SunData)).ToTexture());
// gasGiantData.AlbedoRotationSpeed.Subscribe(f => gas.SunMaterial.AlbedoRotationSpeed = f);
// gasGiantData.FirstOffsetRotationSpeed.Subscribe(f => gas.SunMaterial.FirstOffsetRotationSpeed = f);
// gasGiantData.SecondOffsetRotationSpeed.Subscribe(f => gas.SunMaterial.SecondOffsetRotationSpeed = f);
// gasGiantData.FirstOffsetDomainRotationSpeed.Subscribe(f => gas.SunMaterial.FirstOffsetDomainRotationSpeed = f);
// gasGiantData.SecondOffsetDomainRotationSpeed.Subscribe(f => gas.SunMaterial.SecondOffsetDomainRotationSpeed = f);
gasGiant.GravityWavesRadius.Subscribe(f => gas.GravityWaves.transform.localScale = f * Vector3.one);
gasGiant.GravityWavesDepth.Subscribe(f => gas.GravityWaves.material.SetFloat("_Depth", f));
planetData.Mass.Subscribe(f => gas.GravityWaves.material.SetFloat("_Frequency", Settings.PlanetSettings.WaveFrequency.Evaluate(f)));
gas.GravityWaves.transform.localScale = gasGiant.GravityWavesRadius * Vector3.one;
gas.GravityWaves.material.SetFloat("_Depth", gasGiant.GravityWavesDepth);
gas.GravityWaves.material.SetFloat("_Frequency", Settings.PlanetSettings.WaveFrequency.Evaluate(planetData.Mass));
//gas.WaveScroll.Speed = Properties.GravitySettings.WaveSpeed.Evaluate(f);
}
else
{
planet = Instantiate(Planet, ZoneRoot);
var possibleSettings = Settings.BodySettingsCollections
.Where(p => p.MinimumMass < planetData.Mass.Value)
.Where(p => p.MinimumMass < planetData.Mass)
.MaxBy(p => p.MinimumMass).BodySettings;
planet.Generator.body = possibleSettings[Random.Range(0, possibleSettings.Length)];
//Debug.Log($"Generating planet with {planetData.Mass} mass! Choosing {planet.Generator.body.name} settings!");
@ -405,15 +401,13 @@ public class ZoneRenderer : MonoBehaviour
}
var planetInstance = Zone.PlanetInstances[planetData.ID];
planetInstance.BodyRadius.Subscribe(f => { planet.Body.transform.localScale = f * Vector3.one; });
planetInstance.GravityWellRadius.Subscribe(f => planet.GravityWell.transform.localScale = f * Vector3.one);
planetInstance.GravityWellDepth.Subscribe(f =>
{
if (f > _maxDepth) _maxDepth = f;
planet.GravityWell.material.SetFloat("_Depth", f);
planet.Icon.transform.position = new Vector3(0, -f, 0);
});
planetInstance.BodyData.Mass.Subscribe(f => planet.Icon.transform.localScale = Settings.IconSize.Evaluate(f) * Vector3.one);
planet.Body.transform.localScale = planetInstance.BodyRadius * Vector3.one;
planet.GravityWell.transform.localScale = planetInstance.GravityWellRadius * Vector3.one;
// var depth = planetInstance.GravityWellDepth;
// if (depth > _maxDepth) _maxDepth = depth;
planet.GravityWell.material.SetFloat("_Depth", planetInstance.GravityWellDepth);
planet.Icon.transform.position = new Vector3(0, -planetInstance.GravityWellDepth, 0);
planet.Icon.transform.localScale = Settings.IconSize.Evaluate(planetInstance.BodyData.Mass) * Vector3.one;
Planets[planetData.ID] = planet;
@ -454,6 +448,7 @@ public class ZoneRenderer : MonoBehaviour
void Update()
{
var maxDepth = 0f;
foreach (var loot in _loot)
{
loot.ViewOrigin = PerspectiveEntity.Position;
@ -508,12 +503,14 @@ public class ZoneRenderer : MonoBehaviour
{
var planetInstance = Zone.PlanetInstances[planet.Key];
var p = Zone.GetOrbitPosition(planetInstance.BodyData.Orbit);
var height = Zone.GetHeight(p);
if (-height > maxDepth) maxDepth = -height;
planet.Value.transform.position = new Vector3(p.x, 0, p.y);
planet.Value.Body.transform.localPosition = new Vector3(0, Zone.GetHeight(p) + planetInstance.BodyRadius.Value * 2, 0);
planet.Value.Body.transform.localPosition = new Vector3(0, height + planetInstance.BodyRadius * 2, 0);
if (planet.Value is GasGiantObject gasGiantObject)
{
gasGiantObject.GravityWaves.material.SetFloat("_Phase",
Zone.Time * ((GasGiant) Zone.PlanetInstances[planet.Key]).GravityWavesSpeed.Value);
Zone.Time * ((GasGiant) Zone.PlanetInstances[planet.Key]).GravityWavesSpeed);
if (!(planet.Value is SunObject))
{
var toParent = normalize(Zone.GetOrbitPosition(Zone.Orbits[planetInstance.BodyData.Orbit].Data.Parent) - p);
@ -551,7 +548,7 @@ public class ZoneRenderer : MonoBehaviour
SectorBoundaryBrush.material.SetFloat("_Depth", Settings.PlanetSettings.ZoneDepth + Settings.PlanetSettings.ZoneBoundaryFog);
var startDepth = Zone.PowerPulse(Settings.MinimapZoneGravityRange, Settings.PlanetSettings.ZoneDepthExponent) *
Settings.PlanetSettings.ZoneDepth;
var depthRange = Settings.PlanetSettings.ZoneDepth - startDepth + _maxDepth;
var depthRange = Settings.PlanetSettings.ZoneDepth - startDepth + maxDepth;
foreach (var mat in MapGravityMaterials)
{
mat.SetFloat("_StartDepth", startDepth);
@ -576,7 +573,8 @@ public class ZoneRenderer : MonoBehaviour
SimpleCommodity _ => Instantiate(SimpleCommodityPickup),
CompoundCommodity _ => Instantiate(CompoundCommodityPickup),
EquippableItem equippableItem when ItemManager.GetData(equippableItem) is WeaponItemData => Instantiate(WeaponPickup),
EquippableItem _ => Instantiate(GearPickup)
EquippableItem _ => Instantiate(GearPickup),
_ => throw new NotImplementedException()
};
var t = gridObject.transform;
t.parent = ZoneRoot;

View file

@ -25,7 +25,7 @@ MonoBehaviour:
m_MinSize: {x: 400, y: 100}
m_MaxSize: {x: 32384, y: 16192}
vertical: 0
controlID: -1
controlID: 25402
draggingID: 0
--- !u!114 &2
MonoBehaviour:
@ -50,9 +50,9 @@ MonoBehaviour:
m_Pos:
serializedVersion: 2
x: 71
y: 597
y: 743
width: 1501
height: 797
height: 651
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -74,12 +74,12 @@ MonoBehaviour:
m_TextureFilterMode: 0
m_TextureHideFlags: 61
m_RenderIMGUI: 1
m_EnterPlayModeBehavior: 0
m_EnterPlayModeBehavior: 1
m_UseMipMap: 0
m_VSyncEnabled: 0
m_Gizmos: 0
m_Stats: 1
m_SelectedSizes: 0a000000000000000000000000000000000000000000000000000000000000000000000000000000
m_Stats: 0
m_SelectedSizes: 03000000000000000000000000000000000000000000000000000000000000000000000000000000
m_ZoomArea:
m_HRangeLocked: 0
m_VRangeLocked: 0
@ -97,7 +97,7 @@ MonoBehaviour:
m_HSlider: 0
m_VSlider: 0
m_IgnoreScrollWheelUntilClicked: 0
m_EnableMouseInput: 0
m_EnableMouseInput: 1
m_EnableSliderZoomHorizontal: 0
m_EnableSliderZoomVertical: 0
m_UniformScale: 1
@ -107,22 +107,22 @@ MonoBehaviour:
x: 0
y: 21
width: 1501
height: 776
m_Scale: {x: 0.7185185, y: 0.7185185}
m_Translation: {x: 750.5, y: 388}
height: 630
m_Scale: {x: 0.5833333, y: 0.5833333}
m_Translation: {x: 750.50006, y: 315}
m_MarginLeft: 0
m_MarginRight: 0
m_MarginTop: 0
m_MarginBottom: 0
m_LastShownAreaInsideMargins:
serializedVersion: 2
x: -1044.5104
x: -1286.5715
y: -540
width: 2089.0208
width: 2573.143
height: 1080
m_MinimalGUI: 1
m_defaultScale: 0.7185185
m_LastWindowPixelSize: {x: 1501, y: 797}
m_defaultScale: 0.5833333
m_LastWindowPixelSize: {x: 1501, y: 651}
m_ClearInEditMode: 1
m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 01000000000000000000
@ -153,7 +153,7 @@ MonoBehaviour:
m_MinSize: {x: 200, y: 100}
m_MaxSize: {x: 16192, y: 16192}
vertical: 1
controlID: -1
controlID: 25379
draggingID: 0
--- !u!114 &4
MonoBehaviour:
@ -175,11 +175,11 @@ MonoBehaviour:
x: 0
y: 0
width: 1502
height: 518
height: 664
m_MinSize: {x: 200, y: 50}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 5810
controlID: 25342
draggingID: 0
--- !u!114 &5
MonoBehaviour:
@ -191,23 +191,23 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ProfilerWindow
m_Name: SceneView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 0
width: 948
height: 518
m_MinSize: {x: 901, y: 242}
width: 947
height: 664
m_MinSize: {x: 201, y: 226}
m_MaxSize: {x: 4001, y: 4026}
m_ActualView: {fileID: 7}
m_ActualView: {fileID: 6}
m_Panes:
- {fileID: 6}
- {fileID: 7}
m_Selected: 1
m_LastSelected: 0
m_Selected: 0
m_LastSelected: 1
--- !u!114 &6
MonoBehaviour:
m_ObjectHideFlags: 52
@ -232,8 +232,8 @@ MonoBehaviour:
serializedVersion: 2
x: 71
y: 79
width: 947
height: 414
width: 946
height: 638
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -704,9 +704,9 @@ MonoBehaviour:
m_AudioPlay: 0
m_DebugDrawModesUseInteractiveLightBakingData: 0
m_Position:
m_Target: {x: -415.02658, y: 78.42123, z: 614.2533}
m_Target: {x: 1349.6595, y: 559.64087, z: 9.581561}
speed: 2
m_Value: {x: -415.02658, y: 78.42123, z: 614.2533}
m_Value: {x: 1349.6595, y: 559.64087, z: 9.581561}
m_RenderMode: 0
m_CameraMode:
drawMode: 0
@ -722,7 +722,7 @@ MonoBehaviour:
showImageEffects: 1
showParticleSystems: 1
showVisualEffectGraphs: 1
m_FxEnabled: 1
m_FxEnabled: 0
m_Grid:
xGrid:
m_Fade:
@ -752,13 +752,13 @@ MonoBehaviour:
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
m_Target: {x: 0.12180671, y: 0.86445004, z: -0.25214037, w: 0.41755638}
m_Target: {x: -0.0131533, y: 0.073742464, z: 0.0009911626, w: 0.99721533}
speed: 2
m_Value: {x: 0.12180434, y: 0.8644332, z: -0.2521355, w: 0.41754827}
m_Value: {x: -0.013152969, y: 0.07374061, z: 0.0009911377, w: 0.99719024}
m_Size:
m_Target: 372.82178
m_Target: 213.5131
speed: 2
m_Value: 372.82178
m_Value: 213.5131
m_Ortho:
m_Target: 0
speed: 2
@ -860,7 +860,7 @@ MonoBehaviour:
m_PaneScroll: {x: 0, y: 0}
m_ViewType: 0
updateViewLive: 0
m_CurrentFrameIndex: 392
m_CurrentFrameIndex: -1
m_HierarchyOverruledThreadFromSelection: 0
m_ProfilerViewFilteringOptions: 1
m_FrameDataHierarchyView:
@ -1824,12 +1824,12 @@ MonoBehaviour:
m_Children: []
m_Position:
serializedVersion: 2
x: 948
x: 947
y: 0
width: 554
height: 518
m_MinSize: {x: 102, y: 126}
m_MaxSize: {x: 4002, y: 4026}
width: 555
height: 664
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 9}
m_Panes:
- {fileID: 9}
@ -1857,10 +1857,10 @@ MonoBehaviour:
m_TextWithWhitespace: "Console\u200B"
m_Pos:
serializedVersion: 2
x: 1019
x: 1018
y: 79
width: 552
height: 492
width: 553
height: 638
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@ -1888,9 +1888,9 @@ MonoBehaviour:
m_Position:
serializedVersion: 2
x: 0
y: 518
y: 664
width: 1502
height: 823
height: 677
m_MinSize: {x: 201, y: 226}
m_MaxSize: {x: 4001, y: 4026}
m_ActualView: {fileID: 2}
@ -1922,7 +1922,7 @@ MonoBehaviour:
m_MinSize: {x: 100, y: 100}
m_MaxSize: {x: 8096, y: 16192}
vertical: 1
controlID: 5862
controlID: 25403
draggingID: 0
--- !u!114 &12
MonoBehaviour:
@ -1990,9 +1990,9 @@ MonoBehaviour:
m_SceneHierarchy:
m_TreeViewState:
scrollPos: {x: 0, y: 0}
m_SelectedIDs: d2b80000
m_SelectedIDs:
m_LastClickedID: 0
m_ExpandedIDs: 68e4fcff1a06fdff146bfdff4c20feffbe05ffff4a1fffff460401005e1b010030240100be4801002e6e0100f86e0100147201008cbf0100e4bf0100fec30100
m_ExpandedIDs: be17f6ffd617f6ffda21f6ff8e23f6ff8c94f6ff78e3f6ff3e8df7ff6ac4f8ff265af9ff68e4fcff1a06fdff146bfdff4c20feffbe05ffff4a1fffffcefe0000ecff000046040100a4040100780501005e1b010030240100be4801002e6e0100f86e0100147201008cbf0100e4bf0100fec301007c7802009a8a020060d502009aec020012f00200d8f1020058f5020092f5020008f902004cfb020054fb0200
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@ -2091,7 +2091,7 @@ MonoBehaviour:
m_SkipHidden: 0
m_SearchArea: 1
m_Folders:
- Assets/Resources
- Assets/Scripts/Gameplay
m_Globs: []
m_ProductIds:
m_AnyWithAssetOrigin: 0
@ -2101,15 +2101,15 @@ MonoBehaviour:
m_ViewMode: 1
m_StartGridSize: 16
m_LastFolders:
- Assets/Resources
- Assets/Scripts/Gameplay
m_LastFoldersGridSize: 16
m_LastProjectPath: E:\Projects\Aetheria-Economy
m_LockTracker:
m_IsLocked: 0
m_FolderTreeState:
scrollPos: {x: 0, y: 375}
m_SelectedIDs: a0120100
m_LastClickedID: 70304
scrollPos: {x: 0, y: 263}
m_SelectedIDs: 10130100
m_LastClickedID: 70416
m_ExpandedIDs: 0000000096120100981201009a1201009c1201009e120100a0120100a2120100a4120100a6120100a8120100aa120100ac12010000ca9a3b
m_RenameOverlay:
m_UserAcceptedRename: 0
@ -2165,9 +2165,9 @@ MonoBehaviour:
m_Icon: {fileID: 0}
m_ResourceFile:
m_ListAreaState:
m_SelectedInstanceIDs: d2b80000
m_LastClickedInstanceID: 47314
m_HadKeyboardFocusLastEvent: 1
m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c6230000b2db0000fefa00000cfb00003a920000c2f20000
m_RenameOverlay:
m_UserAcceptedRename: 0
@ -2216,8 +2216,8 @@ MonoBehaviour:
y: 0
width: 536
height: 1341
m_MinSize: {x: 276, y: 76}
m_MaxSize: {x: 4001, y: 4026}
m_MinSize: {x: 275, y: 50}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 17}
m_Panes:
- {fileID: 17}

View file

@ -12,7 +12,7 @@
"azureOpenAIApiVersion": "",
"azureOpenAIApiEmbeddingDeploymentName": "",
"googleApiKey": "AIzaSyCRNNr2cLBsRrPZI1DSbTdCO4EVlKOuoMY",
"openRouterAiApiKey": "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",
"openRouterAiApiKey": "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",
"defaultChainType": "vault_qa",
"defaultModelKey": "deepseek/deepseek-chat-v3-0324:free|openrouterai",
"embeddingModelKey": "text-embedding-004|google",
@ -43,7 +43,74 @@
{
"name": "copilot-plus-flash",
"provider": "copilot-plus",
"enabled": false,
"enabled": true,
"isBuiltIn": true,
"core": true,
"plusExclusive": true,
"projectEnabled": false,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-flash-lite-preview-06-17",
"provider": "openrouterai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-flash",
"provider": "openrouterai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "google/gemini-2.5-pro",
"provider": "openrouterai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-mini",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-nano",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
@ -51,35 +118,116 @@
]
},
{
"name": "gpt-4o",
"name": "o4-mini",
"provider": "openai",
"enabled": false,
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4o-mini",
"provider": "openai",
"enabled": false,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
"reasoning"
]
},
{
"name": "claude-3-5-sonnet-latest",
"provider": "anthropic",
"enabled": false,
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "claude-sonnet-4-20250514",
"provider": "anthropic",
"enabled": true,
"isBuiltIn": true,
"capabilities": [
"reasoning",
"vision"
]
},
{
"name": "claude-3-7-sonnet-latest",
"provider": "anthropic",
"enabled": true,
"isBuiltIn": true,
"capabilities": [
"reasoning",
"vision"
]
},
{
"name": "claude-3-5-haiku-latest",
"provider": "anthropic",
"enabled": true,
"isBuiltIn": true
},
{
"name": "grok-3-beta",
"provider": "xai",
"enabled": true,
"isBuiltIn": true
},
{
"name": "grok-3-mini-beta",
"provider": "xai",
"enabled": true,
"isBuiltIn": true
},
{
"name": "gemini-2.5-flash",
"provider": "google",
"enabled": true,
"isBuiltIn": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gemini-2.5-pro",
"provider": "google",
"enabled": true,
"isBuiltIn": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "command-r",
"provider": "cohereai",
"enabled": true,
"isBuiltIn": true
},
{
"name": "command-r-plus",
"provider": "cohereai",
"enabled": true,
"isBuiltIn": true
},
{
"name": "azure-openai",
"provider": "azure openai",
"enabled": true,
"isBuiltIn": true
},
{
"name": "deepseek-chat",
"provider": "deepseek",
"enabled": true,
"isBuiltIn": true
},
{
"name": "deepseek-reasoner",
"provider": "deepseek",
"enabled": true,
"isBuiltIn": true,
"capabilities": [
"reasoning"
]
},
{
"name": "gemini-2.0-pro-exp-02-05",
"provider": "google",
@ -139,6 +287,18 @@
"capabilities": [],
"stream": true,
"displayName": "Claude 3.7"
},
{
"name": "moonshotai/kimi-k2:free",
"provider": "openrouterai",
"enabled": true,
"isBuiltIn": false,
"baseUrl": "",
"apiKey": "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",
"isEmbeddingModel": false,
"capabilities": [],
"stream": true,
"displayName": "Kimi K2 Free"
}
],
"activeEmbeddingModels": [
@ -148,7 +308,8 @@
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true
"core": true,
"plusExclusive": true
},
{
"name": "copilot-plus-large",
@ -157,6 +318,7 @@
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"believerExclusive": true,
"dimensions": 1024
},
@ -167,6 +329,7 @@
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"dimensions": 512
},
{
@ -225,5 +388,12 @@
"numPartitions": 1,
"enabledCommands": {},
"promptUsageTimestamps": {},
"defaultConversationNoteName": "{$topic}@{$date}_{$time}"
"defaultConversationNoteName": "{$topic}@{$date}_{$time}",
"userId": "a49ac140-b1c0-460e-a445-ef241a2c46bc",
"includeActiveNoteAsContext": true,
"passMarkdownImages": true,
"enableCustomPromptTemplating": true,
"allowAdditionalContext": true,
"enableWordCompletion": false,
"suggestedDefaultCommands": true
}

File diff suppressed because one or more lines are too long

View file

@ -1,9 +1,9 @@
{
"id": "copilot",
"name": "Copilot",
"version": "2.8.7",
"version": "2.9.4",
"minAppVersion": "0.15.0",
"description": "An AI Copilot in Obsidian.",
"description": "Your AI Copilot: Chat with Your Second Brain, Learn Faster, Work Smarter.",
"author": "Logan Yang",
"authorUrl": "https://twitter.com/logancyang",
"fundingUrl": {

File diff suppressed because one or more lines are too long

View file

@ -191,32 +191,33 @@
},
"active": "4116336d30dd8c7a",
"lastOpenFiles": [
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Aya Collective.md",
"Aetheria/Worldbuilding/Pre-Elysium/Territories.md",
"Aetheria/Worldbuilding/Pre-Elysium/Megas.md",
"Aetheria/Worldbuilding/Pre-Elysium/Timeline.md",
"copilot-conversations/I_would_like_you_to_help_me_generate_a_plausible@20250327_014151.md",
"copilot-conversations/I_think_there's_a_few_discrepancies_in_the_[[Timeline]]._It@20250313_215236.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Major/Baseline League.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Major/Activist Network.md",
"Aetheria/Worldbuilding/Pre-Elysium/Technology/Advanced Superconductors.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Raven Collective.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Major/Elephant Enclave.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Movements/Chaos Weavers.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Alakrita.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Framgång.md",
"copilot-conversations/Untitled_Chat@20250320_132410.md",
"copilot-conversations/Please_expand_the_article_on_[[Framgång]]_to_discuss_their_culture,@20250320_131006.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Major/Lucent Media.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Major/Cetacean Navigators.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Major/Finch Cybernetics.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Quantum Dynamics.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Orbital Forge.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/NiteLife Energy.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/NeuroSyn.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Corriedales.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Cryonix.md",
"copilot-conversations/I_think_there's_a_few_discrepancies_in_the_[[Timeline]]._It@20250313_215236.md",
"Aetheria/Worldbuilding/Pre-Elysium/Technology/Genetic Enhancement.md",
"Aetheria/Worldbuilding/Pre-Elysium/Technology/Biodrone.md",
"Aetheria/Worldbuilding/Pre-Elysium/Timeline/Identity Abyss.md",
"Aetheria/Worldbuilding/Politics/Conflict Permit.md",
"Aetheria/Worldbuilding/Politics/The PSC's Legal Framework.md",
"Aetheria/Worldbuilding/Politics/Damage Cap.md",
"Aetheria/Worldbuilding/Politics/Rules of Engagement.md",
"Aetheria/Introduction.md",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor/Lightsail Express.md",
"Aetheria/Worldbuilding/Pre-Elysium/Technology/Bloom.md",
"Aetheria/Worldbuilding/Pre-Elysium/Timeline/Existential Collapse.md",
"Aetheria/Worldbuilding/Pre-Elysium/From Sol to Elysium.md",
"Aetheria/Worldbuilding/Pre-Elysium/Technology/Mind Uploading.md",
"Aetheria/Worldbuilding/Pre-Elysium/Timeline/Identity Crisis.md",
"Aetheria/Worldbuilding/Pre-Elysium/Megas.md",
"copilot-conversations/Please_help_me_identify_underdeveloped_areas_in_the_setting_and@20250715_171817.md",
"Aetheria/Worldbuilding/Pre-Elysium/Timeline.md",
"Aetheria/Worldbuilding/Politics/Public Image.md",
"Aetheria/Worldbuilding/Politics/Why Zhestokost Can't Simply Nuke Its Adversaries.md",
"copilot-custom-prompts/Simplify.md",
"copilot-custom-prompts/Make shorter.md",
"copilot-custom-prompts/Rewrite as tweet thread.md",
"copilot-custom-prompts/Rewrite as tweet.md",
"copilot-custom-prompts/Remove URLs.md",
"copilot-custom-prompts",
"copilot-conversations",
"Untitled.canvas",
"Aetheria/Worldbuilding/Pre-Elysium/Factions/Powers/Minor",
@ -226,7 +227,6 @@
"Aetheria/Worldbuilding/Politics",
"Aetheria/Worldbuilding/Pre-Elysium/Timeline",
"Aetheria/Worldbuilding/Post-Elysium",
"Aetheria/Worldbuilding/Pre-Elysium/Technology",
"Aetheria/Worldbuilding/Pre-Elysium/Factions"
"Aetheria/Worldbuilding/Pre-Elysium/Technology"
]
}

View file

@ -2,4 +2,4 @@
A logistics firm that market themselves on speed and reliability. They are, in actual fact, neither, but Elysium doesn’t have a Postal Service and Lightsail holds all major contracts in a titanium grip.
Manages interstellar trade and transport and builds most of the ships for the [[Cetacean Navigators]].
Manages interplanetary trade and transport and builds most of the ships for the [[Cetacean Navigators]].

View file

@ -51,12 +51,12 @@ This rapid expansion had profound social and economic consequences:
By the late 26th century, the Bloom process had matured significantly. [[Orbital Forge]] streamlined their process and developed modular hub sections that could be prefabricated and integrated into the spire, providing pre-pressurized living spaces, industrial facilities, and advanced life support systems.
Current Bloom structures can house tens of thousands of inhabitants, self-sufficient and largely independent of external supply chains. They represent a radical vision of space colonization – not as isolated outposts clinging to barren rocks, but as thriving, self-sustaining ecosystems forged from the remnants of asteroids.
Current Bloom structures can house hundreds of thousands of inhabitants, self-sufficient and largely independent of external supply chains, up to tens of millions in dedicated megacity habitats. They represent a radical vision of space colonization – not as isolated outposts clinging to barren rocks, but as thriving, self-sustaining ecosystems forged from the remnants of asteroids.
### Intercolony Travel and Transportation
#### Physical Transit Systems
- **Hub-Network Structure**: Major Bloom clusters are connected via regular [[Soliton Drive]] transport routes, with [[Aeronautics Unlimited]] operating the majority of civilian transports.
- **Hub-Network Structure**: Major Bloom clusters are connected via regular [[Soliton Drive]] transport routes, with [[Aeronautics Unlimited]] operating the majority of civilian transports and [[Lightsail Express]] largely monopolizing bulk cargo transport.
- **Class-Based Access**: Transit between Blooms reflects the socioeconomic divide—elite passengers travel on [[Alakrita]]'s luxury vessels with private quarters, while workers are transported in [[SolEx]] bulk carriers, often in suspended animation to reduce life support costs.
- **Customs and Control**: Border crossings between Mega-controlled Bloom clusters involve extensive screening. [[Sol Dominion]] territories require DNA verification and loyalty assessments, while [[Orbital Forge]] zones have intentionally chaotic entry procedures to confuse corporate tracking systems.
- **Illegal Transit**: The [[Pirate Coalition]] operates "ghost routes" between Blooms, using modified ships with [[Orbital Forge]]-designed countermeasures to avoid detection by [[Pan-Solar Consortium]] monitoring systems.

View file

@ -12,7 +12,7 @@ Key Players: [[NeuroPulse]], [[Cognitum]] weaponizing, and [[Raven Collective]]
Key Players: [[Quantum Dynamics]], [[Sol Dominion]], and [[Cetacean Navigators]], with [[Alakrita]] providing elite ships and [[Cognitum]] aiding nonlocal cognition research.
[[Quantum Dynamics]] theorizes FTL by 2980, prototyping by 3010 with [[Cetacean Navigators]] aid. [[Cognitum]]’s late-2700s nonlocal cognition experiments—tested on unstable uploads—hint at proto-[[aether]]ic phenomena, aiding [[Quantum Dynamics]]. [[Alakrita]]’s failure-prone ships complete it in 3024 amid chaos.
[[Quantum Dynamics]] theorizes FTL by 2980, prototyping by 3010 with [[Cetacean Navigators]] aid. [[Cognitum]]’s nonlocal cognition experiments—tested on unstable uploads—hint at proto-[[aether]]ic phenomena, aiding [[Quantum Dynamics]]. [[Alakrita]]’s failure-prone ships complete it in 3024 amid chaos.
#### Cultural Impact
Expansionists ([[Sol Dominion]], [[Cetacean Navigators]]) seek escape, [[Preservationists]] ([[Baseline League]], [[Raven Collective]], [[Elephant Enclave]], [[Aya Collective]]) resist, fearing loss—[[Pragmatists]] warn of [[Cognitum]]’s destabilizing uploads. [[Lucent Media]] frames it as the ultimate reality show. By the 2900s, an upload rights movement, driven by [[Preservationists]] and [[Emancipated]], gained traction but faltered against [[Sol Dominion]] and [[Cognitum]] resistance.
@ -20,7 +20,7 @@ Expansionists ([[Sol Dominion]], [[Cetacean Navigators]]) seek escape, [[Preserv
By 2800, [[Wireheading]] and resource collapse strain the [[Pan-Solar Consortium]]’s control, leading to fortified enclaves on Mars and Earth’s arcologies. Its physical presence peaks with automated defense systems neutralizing threats like unauthorized nuclear launches.
### Resource Collapse
By 2950, colonies crumbled, with [[Aeronautics Unlimited]] and [[Ewan Hart]]. struggling to sustain them. Uplifted factions hoard scraps, clashing with humans—[[Corriedales]] turns [[Biodrone]] scraps into “joyful” weapons. The [[Emancipated]] target [[Cognitum]] resource hubs.
By 2950, colonies crumbled, with [[Aeronautics Unlimited]] and [[Ewan Hart]] struggling to sustain them. Uplifted factions hoard scraps, clashing with humans—[[Corriedales]] turns [[Biodrone]] scraps into “joyful” weapons. The [[Emancipated]] target [[Cognitum]] resource hubs.
### Previously: [[Identity Abyss]] - 2500–2750

View file

@ -0,0 +1,182 @@
---
epoch: 1752596297905
modelKey: moonshotai/kimi-k2:free|openrouterai
tags:
- copilot-conversation
---
**user**: Please help me identify underdeveloped areas in the setting and point out inconsistencies in the timeline and technological, cultural and geopolitical development.
[Timestamp: 2025/07/15 17:18:17]
**ai**: Let me scan the vault for gaps and contradictions.
## Underdeveloped Areas
### 1. **Earth's Fate (Post-2100)**
The timeline mentions Earth's "waning relevance" but provides no concrete details about:
- Population collapse or preservation efforts
- Environmental recovery/regression
- Remaining nation-state structures
- The fate of the "Earthbound Collective" after 2100
- How Earth's remaining population interacts with off-world factions
### 2. **The Aethernet's Evolution**
While mentioned as a post-FTL development, there's no exploration of:
- How it differs from pre-FTL data corridors
- Its role in Elysium's society
- Whether it survived the transition intact
- New forms of digital warfare it enables
### 3. **Religious/Spiritual Movements**
Notable absence of:
- Post-human religions around uploading/FTL
- Cults worshipping the FTL-triggering civilization
- Spiritual responses to uplifted beings
- Resistance movements with religious overtones
### 4. **Art and Culture Beyond Entertainment**
While [[Lucent Media]] dominates cultural production, there's little on:
- Underground art movements
- Non-corporate cultural preservation
- How Bloom cultures developed unique art forms
- The role of AGIs in creative fields
### 5. **The "Lost Generations"**
No exploration of:
- Colonies that failed between 2100-3025
- Lost technologies from failed experiments
- Cultural dark ages in isolated Blooms
- The psychological impact of thousand-year corporate rule
## Major Inconsistencies
### 1. **FTL Development Timeline Contradiction**
- [[Existential Collapse]] states FTL was prototyped by 3010
- [[FTL Trigger]] shows activation on March 17, 3025
- Yet [[From Sol to Elysium]] implies FTL was "promised for a thousand years" - this suggests either:
- Multiple failed FTL attempts throughout history
- The 3010 prototype was the first viable one after centuries of theory
- Timeline compression issue between 2750-3025
### 2. **Resource Paradox**
- [[Bloom]] technology enables self-sufficient habitats by 2600
- Yet [[Existential Collapse]] cites "resource collapse" by 2950
- Possible resolution: The collapse refers to specific resources (helium-3, rare earths) not covered by Bloom's closed-loop systems
### 3. **Uplift Rights Inconsistency**
- [[Uplift]] notes uplifts are "corporate property"
- [[Cetacean Navigators]] and [[Elephant Enclave]] appear to have autonomy
- Missing explanation of how these factions achieved independence while others remain enslaved
### 4. **PSC Enforcement Gaps**
- [[Rules of Engagement]] limits warfare to small-scale operations
- Yet [[Zhestokost]] is described as having "mass production of heavy weaponry"
- No explanation of how Zhestokost maintains large-scale military production under PSC restrictions
### 5. **Mind Uploading Legal Status**
- [[Mind Uploading]] describes uploads as both "sentient beings" and "corporate property"
- No clear legal framework reconciling these contradictory statuses
- Missing exploration of how different Megas handle upload rights differently
### 6. **Technology Accessibility**
- [[Advanced Superconductors]] require rare materials and months of fabrication
- Yet [[Bloom]] habitats seem to deploy them rapidly for mass colonization
- Unexplained scaling solution for superconductor production
### 7. **Population Dynamics**
- Bloom habitats can house "tens of thousands" by late 26th century
- No accounting for:
- Birth rates in space environments
- Immigration/emigration patterns
- How population growth interacts with resource constraints
## Cultural/Geopolitical Tensions
### 1. **The "Corporate Serfdom" Paradox**
- [[Colonizing Sol]] describes colonists as permanently indentured
- Yet [[Bloom]] democratized space colonization
- Missing explanation of how independent colonies emerged from corporate control
### 2. **Uplift Integration Timeline**
- Uplifts developed across 2350-2480
- Yet [[Identity Crisis]] (2250-2500) already shows uplift factions
- Suggests either accelerated development or timeline overlap issues
### 3. **Sol Dominion Formation**
- Formed in 2740 as "late-forming" juggernaut
- Yet incorporates [[GeneSys]] and [[CogniSys]] which existed centuries earlier
- Unclear how these pre-existing entities suddenly unified under Sol Dominion
## Recommended Development Areas
1. **The "Transition Generation"** - Those who lived through both pre- and post-FTL reality
2. **Failed Experiments** - Technologies that didn't work, colonies that died
3. **The Black Market** - How illegal tech spreads between factions
4. **Cultural Memory** - How societies remember/forget over 1000 years
5. **The "Elysium Shock"** - Immediate aftermath of the FTL trigger
6. **Cross-faction Relationships** - How different Megas interact beyond warfare
7. **The "Baseline Underground" - How unaugmented humans survive and organize
These gaps represent opportunities to deepen the setting's complexity while addressing logical inconsistencies that could undermine immersion.
#### Sources:
- [[Introduction]]
- [[Bloom]]
- [[Politics]]
- [[Restrictions on Warfare]]
- [[From Sol to Elysium]]
- [[Uplift]]
- [[Identity Crisis]]
- [[Existential Collapse]]
- [[Identity Abyss]]
- [[Fusion]]
- [[Age of Automation]]
- [[Zhestokost]]
- [[Megas]]
- [[Raven Collective]]
- [[Mind Uploading]]
- [[Pan-Solar Consortium]]
- [[Lucent Media]]
- [[Biodrone]]
- [[Brain-Computer Interfaces]]
- [[Corporate Exodus]]
- [[Soliton Drive]]
- [[Aeronautics Unlimited]]
- [[Artificial General Intelligence]]
- [[Aya Collective]]
- [[Advanced Superconductors]]
- [[Pirate Coalition]]
- [[FTL Trigger]]
- [[Colonizing Sol]]
- [[BioElevate]]
- [[PSCC]]
- [[Timeline]]
- [[Rules of Engagement]]
- [[Sol Dominion]]
- [[Cetacean Navigators]]
- [[Ascended Caste]]
- [[Lightsail Express]]
- [[Finch Cybernetics]]
- [[Economic Sanctions]]
- [[Damage Cap]]
- [[The PSC's Legal Framework]]
- [[Cryonix]]
- [[Immortal Aristocrats]]
- [[Elephant Enclave]]
- [[Mortal Majority]]
- [[Baseline League]]
- [[Ship Mutiny]]
- [[Conflict Permit]]
- [[Chaos Weavers]]
- [[SolEx]]
- [[Alakrita]]
- [[Neutral Zone]]
- [[AstroDyne]]
- [[Economic Interdependence]]
- [[Why Zhestokost Can't Simply Nuke Its Adversaries]]
- [[Privateering]]
[Timestamp: 2025/07/15 17:18:56]

View file

@ -0,0 +1,13 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1050
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Add relevant emojis to enhance {}. Follow these rules:
1. Insert emojis at natural breaks in the text
2. Never place two emojis next to each other
3. Keep all original text unchanged
4. Choose emojis that match the context and tone
Return only the emojified text.

View file

@ -0,0 +1,12 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1040
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Explain {} in simple terms that a 5-year-old would understand:
1. Use basic vocabulary
2. Include simple analogies
3. Break down complex concepts
Return only the simplified explanation.

View file

@ -0,0 +1,8 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1000
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Fix the grammar and spelling of {}. Preserve all formatting, line breaks, and special characters. Do not add or remove any content. Return only the corrected text.

View file

@ -0,0 +1,8 @@
---
copilot-command-context-menu-enabled: false
copilot-command-slash-enabled: false
copilot-command-context-menu-order: 1090
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Create a glossary of important terms, concepts, and phrases from {}. Format each entry as "Term: Definition". Sort entries alphabetically. Return only the glossary.

View file

@ -0,0 +1,8 @@
---
copilot-command-context-menu-enabled: false
copilot-command-slash-enabled: false
copilot-command-context-menu-order: 1080
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Generate a hierarchical table of contents for {}. Use appropriate heading levels (H1, H2, H3, etc.). Include page numbers if present. Return only the table of contents.

View file

@ -0,0 +1,12 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1070
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Expand {} to twice its length by:
1. Adding relevant details and examples
2. Elaborating on key points
3. Maintaining the original tone and style
Return only the expanded text.

View file

@ -0,0 +1,12 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1060
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Reduce {} to half its length while preserving these elements:
1. Main ideas and key points
2. Essential details
3. Original tone and style
Return only the shortened text.

View file

@ -0,0 +1,8 @@
---
copilot-command-context-menu-enabled: false
copilot-command-slash-enabled: false
copilot-command-context-menu-order: 1100
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Remove all URLs from {}. Preserve all other content and formatting. URLs may be in various formats (http, https, www). Return only the text with URLs removed.

View file

@ -0,0 +1,18 @@
---
copilot-command-context-menu-enabled: false
copilot-command-slash-enabled: false
copilot-command-context-menu-order: 1120
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Convert {} into a Twitter thread following these rules:
1. Each tweet must be under 240 characters
2. Start with "THREAD START" on its own line
3. Separate tweets with "
---
"
4. End with "THREAD END" on its own line
5. Make content engaging and clear
Return only the formatted thread.

View file

@ -0,0 +1,12 @@
---
copilot-command-context-menu-enabled: false
copilot-command-slash-enabled: false
copilot-command-context-menu-order: 1110
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Rewrite {} as a single tweet with these requirements:
1. Maximum 280 characters
2. Use concise, impactful language
3. Maintain the core message
Return only the tweet text.

View file

@ -0,0 +1,8 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1030
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Simplify {} to a 6th-grade reading level (ages 11-12). Use simple sentences, common words, and clear explanations. Maintain the original key concepts. Return only the simplified text.

View file

@ -0,0 +1,8 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1020
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Create a bullet-point summary of {}. Each bullet point should capture a key point. Return only the bullet-point summary.

View file

@ -0,0 +1,12 @@
---
copilot-command-context-menu-enabled: true
copilot-command-slash-enabled: true
copilot-command-context-menu-order: 1010
copilot-command-model-key: ""
copilot-command-last-used: 0
---
Translate {} into Chinese:
1. Preserve the meaning and tone
2. Maintain appropriate cultural context
3. Keep formatting and structure
Return only the translated text.