Complete early roadmap foundation and calendar helpers
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate growing-zone metadata for existing Agrarian terrain tiles.
|
||||
|
||||
Only source-backed/generated tiles with explicit profiles are emitted. That
|
||||
keeps the Earth-scale path repeatable without fetching or calculating metadata
|
||||
for placeholder squares that do not exist in-game yet.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
REGISTRY_PATH = ROOT / "Data" / "Tiles" / "ground_zero_tiles.json"
|
||||
OUTPUT_PATH = ROOT / "Data" / "Tiles" / "tile_growing_zone_metadata.json"
|
||||
GROWING_READY_STATUSES = {"source_data_found", "generated", "validated", "packaged", "published"}
|
||||
GROWING_ZONE_OVERRIDES = {
|
||||
"gz_us_ca_pacifica_utm10n_e544_n4160": {
|
||||
"growing_zone_label": "USDA 10a",
|
||||
"climate_profile": "coastal_mediterranean_mild",
|
||||
"growing_season_start_day": 46,
|
||||
"growing_season_end_day": 350,
|
||||
"frost_free_days": 305,
|
||||
"min_average_growing_temp_c": 7.0,
|
||||
"crop_safety_buffer_days": 14,
|
||||
"data_basis": "MVP conservative coastal Pacifica profile; replace with authoritative zone/temperature datasets during regional expansion.",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
registry = json.loads(REGISTRY_PATH.read_text(encoding="utf-8"))
|
||||
records = []
|
||||
|
||||
for tile in registry.get("tiles", []):
|
||||
tile_id = tile.get("tile_id")
|
||||
status = tile.get("status")
|
||||
if status not in GROWING_READY_STATUSES or tile_id not in GROWING_ZONE_OVERRIDES:
|
||||
continue
|
||||
|
||||
grid = tile.get("grid", {})
|
||||
records.append(
|
||||
{
|
||||
"tile_id": tile_id,
|
||||
"center_latitude": grid.get("center_latitude"),
|
||||
"center_longitude": grid.get("center_longitude"),
|
||||
**GROWING_ZONE_OVERRIDES[tile_id],
|
||||
}
|
||||
)
|
||||
|
||||
OUTPUT_PATH.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"schema_version": 1,
|
||||
"generated_at_utc": datetime.now(timezone.utc).replace(microsecond=0).isoformat().replace("+00:00", "Z"),
|
||||
"source_registry": str(REGISTRY_PATH.relative_to(ROOT)),
|
||||
"generation_rule": "Only tiles with real source status and explicit growing-zone data are emitted.",
|
||||
"tiles": records,
|
||||
},
|
||||
indent=2,
|
||||
)
|
||||
+ "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
print(f"Wrote {len(records)} tile growing-zone metadata record(s) to {OUTPUT_PATH.relative_to(ROOT)}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user