This repository has been archived on 2026-05-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AgrarianGameArchive/Data/Tiles/tile_registry.schema.json
T

315 lines
7.2 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://agrarian.local/schemas/tile_registry.schema.json",
"title": "Agrarian Terrain Tile Registry",
"type": "object",
"required": ["schema_version", "grid_scheme", "tiles"],
"additionalProperties": false,
"properties": {
"schema_version": {
"type": "integer",
"minimum": 1
},
"grid_scheme": {
"type": "string",
"minLength": 1
},
"tiles": {
"type": "array",
"items": {
"$ref": "#/$defs/tile"
}
}
},
"$defs": {
"tile_status": {
"type": "string",
"enum": [
"unknown",
"queued",
"source_data_found",
"generated",
"validated",
"packaged",
"published",
"deprecated",
"blocked"
]
},
"tile": {
"type": "object",
"required": [
"tile_id",
"display_name",
"grid",
"status",
"biome_primary",
"generation_version",
"package_version",
"neighbors",
"sources"
],
"additionalProperties": false,
"properties": {
"tile_id": {
"type": "string",
"pattern": "^[a-z0-9_]+$"
},
"display_name": {
"type": "string"
},
"grid": {
"$ref": "#/$defs/grid"
},
"status": {
"$ref": "#/$defs/tile_status"
},
"biome_primary": {
"type": "string"
},
"biome_secondary": {
"type": "array",
"items": {
"type": "string"
}
},
"resource_hints": {
"type": "array",
"items": {
"type": "string"
}
},
"generation_version": {
"type": "integer",
"minimum": 0
},
"package_version": {
"type": "integer",
"minimum": 0
},
"neighbors": {
"type": "object",
"additionalProperties": false,
"properties": {
"n": { "type": "string" },
"ne": { "type": "string" },
"e": { "type": "string" },
"se": { "type": "string" },
"s": { "type": "string" },
"sw": { "type": "string" },
"w": { "type": "string" },
"nw": { "type": "string" }
}
},
"sources": {
"type": "array",
"items": {
"$ref": "#/$defs/source"
}
},
"solar_metadata": {
"$ref": "#/$defs/solar_metadata"
},
"growing_season_metadata": {
"$ref": "#/$defs/growing_season_metadata"
},
"weather_lookup_metadata": {
"$ref": "#/$defs/weather_lookup_metadata"
},
"notes": {
"type": "string"
}
}
},
"grid": {
"type": "object",
"required": [
"projection",
"utm_zone",
"easting_min_m",
"northing_min_m",
"easting_max_m",
"northing_max_m",
"tile_size_m",
"center_latitude",
"center_longitude"
],
"additionalProperties": false,
"properties": {
"projection": {
"type": "string"
},
"utm_zone": {
"type": "string"
},
"easting_min_m": {
"type": "integer"
},
"northing_min_m": {
"type": "integer"
},
"easting_max_m": {
"type": "integer"
},
"northing_max_m": {
"type": "integer"
},
"tile_size_m": {
"type": "integer",
"const": 1000
},
"center_latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"center_longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
}
}
},
"solar_metadata": {
"type": "object",
"required": [
"time_zone_id",
"standard_utc_offset_hours",
"daylight_utc_offset_hours",
"solar_model"
],
"additionalProperties": false,
"properties": {
"time_zone_id": {
"type": "string"
},
"standard_utc_offset_hours": {
"type": "number",
"minimum": -12,
"maximum": 14
},
"daylight_utc_offset_hours": {
"type": "number",
"minimum": -12,
"maximum": 14
},
"solar_model": {
"type": "string"
}
}
},
"growing_season_metadata": {
"type": "object",
"required": [
"growing_zone_label",
"climate_profile",
"growing_season_start_day",
"growing_season_end_day",
"frost_free_days",
"crop_safety_buffer_days"
],
"additionalProperties": false,
"properties": {
"growing_zone_label": {
"type": "string"
},
"climate_profile": {
"type": "string"
},
"growing_season_start_day": {
"type": "integer",
"minimum": 1,
"maximum": 366
},
"growing_season_end_day": {
"type": "integer",
"minimum": 1,
"maximum": 366
},
"frost_free_days": {
"type": "integer",
"minimum": 0,
"maximum": 366
},
"min_average_growing_temp_c": {
"type": "number"
},
"crop_safety_buffer_days": {
"type": "integer",
"minimum": 0,
"maximum": 90
},
"data_basis": {
"type": "string"
}
}
},
"weather_lookup_metadata": {
"type": "object",
"required": [
"lookup_latitude",
"lookup_longitude",
"coordinate_source",
"primary_provider",
"fallback_provider_eligible",
"lookup_rule"
],
"additionalProperties": false,
"properties": {
"lookup_latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lookup_longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"coordinate_source": {
"type": "string",
"enum": ["tile_center", "manual_override", "provider_grid_point"]
},
"primary_provider": {
"type": "string"
},
"fallback_provider": {
"type": "string"
},
"fallback_provider_eligible": {
"type": "boolean"
},
"lookup_rule": {
"type": "string"
}
}
},
"source": {
"type": "object",
"required": ["source_kind", "source_name", "coverage_status"],
"additionalProperties": false,
"properties": {
"source_kind": {
"type": "string"
},
"source_name": {
"type": "string"
},
"source_uri": {
"type": "string"
},
"license_name": {
"type": "string"
},
"source_version": {
"type": "string"
},
"coverage_status": {
"type": "string",
"enum": ["needed", "candidate", "confirmed", "missing", "not_applicable"]
}
}
}
}
}