"""Apply only the player art fields, preserving independent editor drafts."""
import json
from pathlib import Path

root = Path(__file__).resolve().parents[2]
for relative in ['data/game_data_master.json', 'tools/game-data-manager/data/draft.json']:
    path = root / relative
    text = path.read_text(encoding='utf-8-sig')
    before = json.loads(text)
    assert before['player_configs']['default_player']['model_3d']['path'] == 'res://assets/models/player/clockwork_balloonkeep.glb'
    text = text.replace('"path": "res://assets/models/player/clockwork_balloonkeep.glb"',
                        '"path": "res://assets/models/player/intro_cook/intro_cook.glb"', 1)
    marker = '"animations": {\n                    "walk": "Walking",\n                    "attack": "Triple_Combo_Attack",\n                    "dash": "RunFast"\n                }'
    replacement = '"animations": {\n                    "idle": "Idle",\n                    "walk": "Walking",\n                    "attack": "Triple_Combo_Attack",\n                    "dash": "RunFast",\n                    "hurt": "Hurt"\n                }'
    assert text.count(marker) == 1
    text = text.replace(marker, replacement, 1)
    after = json.loads(text)
    comparison = json.loads(text)
    comparison['player_configs']['default_player']['model_3d'] = before['player_configs']['default_player']['model_3d']
    assert comparison == before, 'Unexpected gameplay or draft changes'
    path.write_text(text, encoding='utf-8', newline='\n')
    print('Configured', relative)
