Add sensual location background assets
This commit is contained in:
@@ -57,10 +57,12 @@ def validate_asset_image(path: Path, min_width: int, min_height: int, label: str
|
||||
|
||||
def main() -> None:
|
||||
characters_doc = load_json(DATA / "characters.json")
|
||||
locations_doc = load_json(DATA / "locations.json")
|
||||
assets_doc = load_json(DATA / "character_assets.json")
|
||||
|
||||
character_ids = [character["id"] for character in characters_doc["characters"]]
|
||||
character_id_set = set(character_ids)
|
||||
location_ids = {location["id"] for location in locations_doc["locations"]}
|
||||
asset_entries = assets_doc["assets"]
|
||||
asset_ids = [entry["character_id"] for entry in asset_entries]
|
||||
|
||||
@@ -158,12 +160,64 @@ def main() -> None:
|
||||
f"{cg_set['set_id']} revision candidate {affection_min}",
|
||||
)
|
||||
|
||||
location_asset_path = DATA / "location_assets.json"
|
||||
location_accepted = 0
|
||||
location_revision_count = 0
|
||||
if location_asset_path.exists():
|
||||
location_assets_doc = load_json(location_asset_path)
|
||||
location_minimum = location_assets_doc["minimum_dimensions"]
|
||||
location_min_width = location_minimum["width"]
|
||||
location_min_height = location_minimum["height"]
|
||||
|
||||
contact_sheet = ROOT / location_assets_doc["contact_sheet"]
|
||||
if not contact_sheet.exists():
|
||||
fail(f"location contact sheet is missing: {contact_sheet}")
|
||||
png_dimensions(contact_sheet)
|
||||
|
||||
location_asset_entries = location_assets_doc["assets"]
|
||||
asset_location_ids = [entry["location_id"] for entry in location_asset_entries]
|
||||
if set(asset_location_ids) != location_ids:
|
||||
missing = sorted(location_ids.difference(asset_location_ids))
|
||||
extra = sorted(set(asset_location_ids).difference(location_ids))
|
||||
fail(f"location asset manifest mismatch; missing={missing}, extra={extra}")
|
||||
|
||||
if len(asset_location_ids) != len(set(asset_location_ids)):
|
||||
fail("location asset manifest contains duplicate location ids")
|
||||
|
||||
for entry in location_asset_entries:
|
||||
status = entry["status"]
|
||||
if status not in {"accepted", "needs_revision", "pending", "rejected"}:
|
||||
fail(f"{entry['location_id']} has invalid location asset status {status}")
|
||||
|
||||
path_value = entry.get("path")
|
||||
if status == "accepted":
|
||||
location_accepted += 1
|
||||
if not path_value:
|
||||
fail(f"{entry['location_id']} accepted location asset lacks a path")
|
||||
validate_asset_image(
|
||||
ROOT / path_value,
|
||||
location_min_width,
|
||||
location_min_height,
|
||||
entry["location_id"],
|
||||
)
|
||||
elif status == "needs_revision":
|
||||
location_revision_count += 1
|
||||
if path_value:
|
||||
validate_asset_image(
|
||||
ROOT / path_value,
|
||||
location_min_width,
|
||||
location_min_height,
|
||||
f"{entry['location_id']} revision candidate",
|
||||
)
|
||||
|
||||
print(
|
||||
"Validated character asset manifest: "
|
||||
f"{accepted}/{len(asset_entries)} accepted, "
|
||||
f"{revision_count} needs revision, "
|
||||
f"{date_cg_accepted} accepted date CG tiers, "
|
||||
f"{date_cg_revision_count} date CG tiers need revision."
|
||||
f"{date_cg_revision_count} date CG tiers need revision, "
|
||||
f"{location_accepted} accepted location backgrounds, "
|
||||
f"{location_revision_count} location backgrounds need revision."
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user