From 1e9a49b301cd3eb65e1ffd12d263f8ce516836d1 Mon Sep 17 00:00:00 2001 From: Ben C Date: Tue, 1 Mar 2022 16:57:59 -0500 Subject: [PATCH] Added star_system_schema.json --- NewHorizons/schema.json | 862 ++++++++++++++-------------- NewHorizons/star_system_schema.json | 19 + 2 files changed, 450 insertions(+), 431 deletions(-) create mode 100644 NewHorizons/star_system_schema.json diff --git a/NewHorizons/schema.json b/NewHorizons/schema.json index 10caf551..8eb576f5 100644 --- a/NewHorizons/schema.json +++ b/NewHorizons/schema.json @@ -44,26 +44,26 @@ } } }, - "colourPart": { + "colorPart": { "type": "integer", "default": 0, "minimum": 0, "maximum": 255 }, - "colour": { + "color": { "type": "object", "properties": { "R": { - "$ref": "#/$defs/colourPart" + "$ref": "#/$defs/colorPart" }, "G": { - "$ref": "#/$defs/colourPart" + "$ref": "#/$defs/colorPart" }, "B": { - "$ref": "#/$defs/colourPart" + "$ref": "#/$defs/colorPart" }, "A": { - "$ref": "#/$defs/colourPart" + "$ref": "#/$defs/colorPart" } } }, @@ -98,7 +98,7 @@ "description": "Average surface size" }, "colour": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of the terrain." } } @@ -195,7 +195,7 @@ "description": "Scale height of the atmosphere" }, "cloudTint": { - "$ref": "#/$defs/colour" + "$ref": "#/$defs/color" }, "cloud": { "type": "string", @@ -220,7 +220,7 @@ "description": "If the top layer should have shadows" }, "fogTint": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of fog on the planet." }, "fogDensity": { @@ -251,7 +251,7 @@ "description": "Whether we use an atmospheric shader on the planet." }, "atmosphereTint": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of atmospheric shader on the planet." } } @@ -315,7 +315,7 @@ "description": "Is the body meant to stay in one place without moving?" }, "tint": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of the orbit-line in the map view." }, "trackingOrbitLine": { @@ -420,15 +420,15 @@ "minimum": 0 }, "tint": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of the star." }, "solarFlareTint": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of the solar flares." }, "lightTint": { - "$ref": "#/$defs/colour", + "$ref": "#/$defs/color", "description": "Colour of the light given off." }, "solarLuminosity": { @@ -492,441 +492,441 @@ } } } - } - }, - "details": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" - }, - "assetBundle": { - "type": "string", - "description": "Relative filepath to an asset-bundle" - }, - "position": { - "$ref": "#/$defs/vector3" - }, - "rotation": { - "$ref": "#/$defs/vector3", - "description": "Euler angle degrees" + }, + "details": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Either the path in the scene hierarchy of the item to copy or the path to the object in the supplied asset bundle" + }, + "assetBundle": { + "type": "string", + "description": "Relative filepath to an asset-bundle" + }, + "position": { + "$ref": "#/$defs/vector3" + }, + "rotation": { + "$ref": "#/$defs/vector3", + "description": "Euler angle degrees" + }, + "scale": { + "type": "number", + "default": 1 + }, + "alignToNormal": { + "type": "boolean", + "description": "Do we override rotation and try to automatically align this object to stand upright on the body's surface?", + "default": false + }, + "generateColliders": { + "type": "bool", + "default": false, + "description": "For each mesh filter found here should we make a mesh collider?" + } }, "scale": { "type": "number", "default": 1 - }, - "alignToNormal": { - "type": "boolean", - "description": "Do we override rotation and try to automatically align this object to stand upright on the body's surface?", - "default": false - }, - "generateColliders": { - "type": "bool", - "default": false, - "description": "For each mesh filter found here should we make a mesh collider?" - } - }, - "scale": { - "type": "number", - "default": 1 - } - } - } - }, - "dialogue": { - "type": "array", - "items": { - "type": "object", - "properties": { - "position": { - "$ref": "#/$defs/vector3" - }, - "radius": { - "type": "number", - "default": 0 - }, - "xmlFile": { - "type": "string" - }, - "remoteTriggerPosition": { - "$ref": "#/$defs/vector3" - } - } - } - }, - "reveal": { - "type": "array", - "description": "A set of volumes that reveal ship log fact", - "items": { - "type": "object", - "properties": { - "revealOn": { - "type": "string", - "enum": ["enter", "observe", "snapshot"], - "description": "'enter', 'observe', or 'snapshot' what needs to be done to the volume to unlock the facts" - }, - "reveals": { - "type": "array", - "description": "A list of facts to reveal", - "items": { - "type": "string" - } - }, - "position": { - "$ref": "#/$defs/vector3", - "description": "The position to place the volume at" - }, - "radius": { - "type": "number", - "description": "The radius of the volume", - "default": 1.0 - }, - "maxDistance": { - "type": "number", - "description": "The max distance the user can be away from the volume to reveal the fact (snapshot and observe only)" - }, - "maxAngle": { - "$ref": "#/$defs/angle", - "description": "The max view angle (in degrees) the player can see the volume with to unlock the fact", - "default": 180.0 - } - } - } - }, - "entryLocation": { - "type": "array", - "description": "A set of locations for ship log entries", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the entry this location is for" - }, - "cloaked": { - "type": "bool", - "description": "Whether this entry location is in a cloaking field", - "default": false - }, - "position": { - "$ref": "#/$defs/vector3", - "description": "The position of this entry location" - } - } - } - } - }, - "Spawn": { - "type": "object", - "properties": { - "playerSpawnPoint": { - "$ref": "#/$defs/vector3" - }, - "shipSpawnPoint": { - "$ref": "#/$defs/vector3" - }, - "starWithSuit": { - "type": "boolean", - "default": false - } - } - }, - "Signal": { - "type": "object", - "properties": { - "signals": { - "type": "array", - "items": { - "type": "object", - "properties": { - "position": { - "$ref": "#/$defs/vector3" - }, - "frequency": { - "type": "string", - "enum": [ - "Default", - "Traveler", - "Quantum", - "EscapePod", - "Statue", - "WarpCore", - "HideAndSeek", - "Radio" - ] - }, - "name": { - "type": "string" - }, - "audioClip": { - "type": "string", - "description": "Name of an existing AudioClip in the game" - }, - "audioFilePath": { - "type": "string", - "description": "Relative filepath to the .wav file to use as the audio. Mutually exclusive with audioClip" - }, - "reveals": { - "type": "string", - "description": "A ship log fact to reveal when the signal is identified" - }, - "sourceRadius": { - "type": "number", - "default": 1, - "description": "Radius of the sphere giving off the signal" - }, - "detectionRadius": { - "type": "number", - "minimum": 0, - "description": "How close the player must get to the signal to detect it" - }, - "identificationRadius": { - "type": "number", - "minimum": 0, - "description": "How close the player must get to the signal to identify it" - }, - "onlyAudibleToScope": { - "type": "boolean", - "default": true, - "description": "False if the player can hear the signal without equipping the signal-scope" - }, - "insideCloak": { - "type": "boolean", - "default": false, - "description": "Only set to true if you are putting this signal inside a cloaking field" } } - } - } - } - }, - "Singularity": { - "type": "object", - "properties": { - "size": { - "type": "number", - "default": 0, - "minimum": 0 - }, - "pairedSingularity": { - "type": "string", - "description": "The name of the white hole or black hole that is paired to this one. If you don't set a value, entering will kill the player" - }, - "targetStarSystem": { - "type": "string", - "description": "If you want a black hole to load a new star system scene, put it's name here. Optional." - }, - "type": { - "type": "string", - "enum": [ - "BlackHole", - "WhiteHole" - ] - }, - "position": { - "$ref": "#/$defs/vector3" - } - } - }, - "Water": { - "type": "object", - "properties": { - "size": { - "type": "number", - "default": 0 - }, - "tint": { - "$ref": "#/$defs/colour" - }, - "curve": { - "$ref": "#/$defs/curve" - } - } - }, - "Lava": { - "type": "object", - "properties": { - "size": { - "type": "number", - "default": 0 - }, - "tint": { - "$ref": "#/$defs/colour" - }, - "curve": { - "$ref": "#/$defs/curve" - } - } - }, - "Sand": { - "type": "object", - "properties": { - "size": { - "type": "number", - "default": 0 - }, - "tint": { - "$ref": "#/$defs/colour" - }, - "curve": { - "$ref": "#/$defs/curve" - } - } - }, - "Funnel": { - "type": "object", - "properties": { - "target": { - "type": "string", - "description": "The body that the funnel is pouring onto" - }, - "type": { - "type": "string", - "enum": [ - "Sand", - "Water", - "Lava", - "Star" - ], - "default": "Sand" - }, - "tint": { - "$ref": "#/$defs/colour" - }, - "curve": { - "$ref": "#/$defs/curve" - } - } - }, - "ShipLog": { - "type": "object", - "properties": { - "xmlFile": { - "type": "string", - "description": "The xml file to load ship log entries from" - }, - "spriteFolder": { - "type": "string", - "description": "A path to the folder where entry sprites are stored" - }, - "initialReveal": { - "type": "array", - "description": "A list of fact IDs to reveal when the game starts", - "items": { - "type": "string" - } - }, - "entryPositions": { - "type": "array", - "description": "A set of positions to use instead of automatic layout in rumor mode", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The name of the entry to apply the position to" - }, - "position": { - "$ref": "#/$defs/vector2" + }, + "dialogue": { + "type": "array", + "items": { + "type": "object", + "properties": { + "position": { + "$ref": "#/$defs/vector3" + }, + "radius": { + "type": "number", + "default": 0 + }, + "xmlFile": { + "type": "string" + }, + "remoteTriggerPosition": { + "$ref": "#/$defs/vector3" + } } } - } - }, - "MapMode": { - "type": "object", - "properties": { - "revealedSprite": { - "type": "string", - "description": "The path to the sprite to show when the planet is revealed in map mode" - }, - "outlineSprite": { - "type": "string", - "description": "The path to the sprite to show when the planet is unexplored in map mode" - }, - "manualPosition": { - "$ref": "#/$defs/vector2", - "description": "Manually place this planet at the specified position" - }, - "manualNavigationPosition": { - "$ref": "#/$defs/wholeVector2", - "description": "Specify where this planet is in terms of navigation" - }, - "scale": { - "type": "number", - "description": "Scale to apply to the planet in map mode", - "default": 1 - }, - "invisibleWhenHidden": { - "type": "bool", - "description": "Hide the planet completely if unexplored instead of showing an outline", - "default": false - }, - "offset": { - "type": "number", - "description": "Extra distance to apply to this object in map mode", - "default": 0 - }, - "remove": { - "type": "boolean", - "description": "Completely remove this planet (and it's children) from map mode", - "default": false - }, - "details": { - "type": "array", - "description": "Place non-selectable object in map mode (like sand funnels)", - "items": { - "type": "object", - "properties": { - "revealedSprite": { - "type": "string", - "description": "The sprite to show when the parent AstroBody is revealed" - }, - "outlineSprite": { - "type": "string", - "description": "The sprite to show when the parent AstroBody is rumored/unexplored" - }, - "rotation": { - "$ref": "#/$defs/angle", - "description": "The angle in degrees to rotate the detail" - }, - "invisibleWhenHidden": { - "type": "boolean", - "description": "Whether to completely hide this detail when the parent AstroBody is unexplored", - "default": false - }, - "position": { - "$ref": "#/$defs/vector2", - "description": "The position (relative to the parent) to place the detail" - }, - "scale": { - "$ref": "#/$defs/vector2", - "description": "The amount to scale the x and y axis of the detail by" + }, + "reveal": { + "type": "array", + "description": "A set of volumes that reveal ship log fact", + "items": { + "type": "object", + "properties": { + "revealOn": { + "type": "string", + "enum": ["enter", "observe", "snapshot"], + "description": "'enter', 'observe', or 'snapshot' what needs to be done to the volume to unlock the facts" + }, + "reveals": { + "type": "array", + "description": "A list of facts to reveal", + "items": { + "type": "string" } + }, + "position": { + "$ref": "#/$defs/vector3", + "description": "The position to place the volume at" + }, + "radius": { + "type": "number", + "description": "The radius of the volume", + "default": 1.0 + }, + "maxDistance": { + "type": "number", + "description": "The max distance the user can be away from the volume to reveal the fact (snapshot and observe only)" + }, + "maxAngle": { + "$ref": "#/$defs/angle", + "description": "The max view angle (in degrees) the player can see the volume with to unlock the fact", + "default": 180.0 + } + } + } + }, + "entryLocation": { + "type": "array", + "description": "A set of locations for ship log entries", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the entry this location is for" + }, + "cloaked": { + "type": "bool", + "description": "Whether this entry location is in a cloaking field", + "default": false + }, + "position": { + "$ref": "#/$defs/vector3", + "description": "The position of this entry location" } } } } - }, - "Curiosities": { - "type": "array", - "description": "A set of colours to apply to curiosities", - "items": { + } + }, + "Spawn": { + "type": "object", + "properties": { + "playerSpawnPoint": { + "$ref": "#/$defs/vector3" + }, + "shipSpawnPoint": { + "$ref": "#/$defs/vector3" + }, + "starWithSuit": { + "type": "boolean", + "default": false + } + } + }, + "Signal": { + "type": "object", + "properties": { + "signals": { + "type": "array", + "items": { + "type": "object", + "properties": { + "position": { + "$ref": "#/$defs/vector3" + }, + "frequency": { + "type": "string", + "enum": [ + "Default", + "Traveler", + "Quantum", + "EscapePod", + "Statue", + "WarpCore", + "HideAndSeek", + "Radio" + ] + }, + "name": { + "type": "string" + }, + "audioClip": { + "type": "string", + "description": "Name of an existing AudioClip in the game" + }, + "audioFilePath": { + "type": "string", + "description": "Relative filepath to the .wav file to use as the audio. Mutually exclusive with audioClip" + }, + "reveals": { + "type": "string", + "description": "A ship log fact to reveal when the signal is identified" + }, + "sourceRadius": { + "type": "number", + "default": 1, + "description": "Radius of the sphere giving off the signal" + }, + "detectionRadius": { + "type": "number", + "minimum": 0, + "description": "How close the player must get to the signal to detect it" + }, + "identificationRadius": { + "type": "number", + "minimum": 0, + "description": "How close the player must get to the signal to identify it" + }, + "onlyAudibleToScope": { + "type": "boolean", + "default": true, + "description": "False if the player can hear the signal without equipping the signal-scope" + }, + "insideCloak": { + "type": "boolean", + "default": false, + "description": "Only set to true if you are putting this signal inside a cloaking field" + } + } + } + } + } + }, + "Singularity": { + "type": "object", + "properties": { + "size": { + "type": "number", + "default": 0, + "minimum": 0 + }, + "pairedSingularity": { + "type": "string", + "description": "The name of the white hole or black hole that is paired to this one. If you don't set a value, entering will kill the player" + }, + "targetStarSystem": { + "type": "string", + "description": "If you want a black hole to load a new star system scene, put it's name here. Optional." + }, + "type": { + "type": "string", + "enum": [ + "BlackHole", + "WhiteHole" + ] + }, + "position": { + "$ref": "#/$defs/vector3" + } + } + }, + "Water": { + "type": "object", + "properties": { + "size": { + "type": "number", + "default": 0 + }, + "tint": { + "$ref": "#/$defs/color" + }, + "curve": { + "$ref": "#/$defs/curve" + } + } + }, + "Lava": { + "type": "object", + "properties": { + "size": { + "type": "number", + "default": 0 + }, + "tint": { + "$ref": "#/$defs/color" + }, + "curve": { + "$ref": "#/$defs/curve" + } + } + }, + "Sand": { + "type": "object", + "properties": { + "size": { + "type": "number", + "default": 0 + }, + "tint": { + "$ref": "#/$defs/color" + }, + "curve": { + "$ref": "#/$defs/curve" + } + } + }, + "Funnel": { + "type": "object", + "properties": { + "target": { + "type": "string", + "description": "The body that the funnel is pouring onto" + }, + "type": { + "type": "string", + "enum": [ + "Sand", + "Water", + "Lava", + "Star" + ], + "default": "Sand" + }, + "tint": { + "$ref": "#/$defs/color" + }, + "curve": { + "$ref": "#/$defs/curve" + } + } + }, + "ShipLog": { + "type": "object", + "properties": { + "xmlFile": { + "type": "string", + "description": "The xml file to load ship log entries from" + }, + "spriteFolder": { + "type": "string", + "description": "A path to the folder where entry sprites are stored" + }, + "initialReveal": { + "type": "array", + "description": "A list of fact IDs to reveal when the game starts", + "items": { + "type": "string" + } + }, + "entryPositions": { + "type": "array", + "description": "A set of positions to use instead of automatic layout in rumor mode", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The name of the entry to apply the position to" + }, + "position": { + "$ref": "#/$defs/vector2" + } + } + } + }, + "MapMode": { "type": "object", "properties": { - "id": { + "revealedSprite": { "type": "string", - "description": "The ID of the curiosity to apply the colour to" + "description": "The path to the sprite to show when the planet is revealed in map mode" }, - "colour": { - "$ref": "#/$defs/colour", - "description": "The colour to apply to entries with this curiosity" + "outlineSprite": { + "type": "string", + "description": "The path to the sprite to show when the planet is unexplored in map mode" }, - "highlightColour": { - "$ref": "#/$defs/colour", - "description": "The colour to apply to highlighted entries with this curiosity" + "manualPosition": { + "$ref": "#/$defs/vector2", + "description": "Manually place this planet at the specified position" + }, + "manualNavigationPosition": { + "$ref": "#/$defs/wholeVector2", + "description": "Specify where this planet is in terms of navigation" + }, + "scale": { + "type": "number", + "description": "Scale to apply to the planet in map mode", + "default": 1 + }, + "invisibleWhenHidden": { + "type": "bool", + "description": "Hide the planet completely if unexplored instead of showing an outline", + "default": false + }, + "offset": { + "type": "number", + "description": "Extra distance to apply to this object in map mode", + "default": 0 + }, + "remove": { + "type": "boolean", + "description": "Completely remove this planet (and it's children) from map mode", + "default": false + }, + "details": { + "type": "array", + "description": "Place non-selectable object in map mode (like sand funnels)", + "items": { + "type": "object", + "properties": { + "revealedSprite": { + "type": "string", + "description": "The sprite to show when the parent AstroBody is revealed" + }, + "outlineSprite": { + "type": "string", + "description": "The sprite to show when the parent AstroBody is rumored/unexplored" + }, + "rotation": { + "$refs": "#/$defs/angle", + "description": "The angle in degrees to rotate the detail" + }, + "invisibleWhenHidden": { + "type": "boolean", + "description": "Whether to completely hide this detail when the parent AstroBody is unexplored", + "default": false + }, + "position": { + "$ref": "#/$defs/vector2", + "description": "The position (relative to the parent) to place the detail" + }, + "scale": { + "$ref": "#/$defs/vector2", + "description": "The amount to scale the x and y axis of the detail by" + } + } + } + } + } + }, + "Curiosities": { + "type": "array", + "description": "A set of colors to apply to curiosities", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the curiosity to apply the color to" + }, + "color": { + "$ref": "#/$defs/color", + "description": "The color to apply to entries with this curiosity" + }, + "highlightColor": { + "$ref": "#/$defs/color", + "description": "The color to apply to highlighted entries with this curiosity" + } } } } diff --git a/NewHorizons/star_system_schema.json b/NewHorizons/star_system_schema.json new file mode 100644 index 00000000..0948e660 --- /dev/null +++ b/NewHorizons/star_system_schema.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "description": "Configuration for a specific star system", + "properties": { + "canEnterViaWarpDrive": { + "type": "boolean", + "description": "Whether this system can be warped to via the warp drive" + }, + "startHere": { + "type": "boolean", + "description": "Set to true if you want to spawn here after dying, not Timber Hearth. You can still warp back to the main star system." + }, + "factRequiredForWarp": { + "type": "string", + "description": "Set to the FactID that must be revealed before it can be warped to. Don't set \"CanEnterViaWarpDrive\" to false if you're using this, that would make no sense." + } + } +}