import re

def fix_file(path, replacements):
    with open(path, 'r', encoding='utf-8') as f:
        content = f.read()
    for old, new in replacements:
        content = content.replace(old, new)
    with open(path, 'w', encoding='utf-8') as f:
        f.write(content)

# Fix CombatController
fix_file('client/cocos/assets/scripts/combat/CombatController.ts', [
    ('CANONICAL_SKILLS[String(loadout.baseSkillId)]', '(CANONICAL_SKILLS as any)[String(loadout.baseSkillId)]'),
    ('SUPPORT_SKILLS[String(sId)]', '(SUPPORT_SKILLS as any)[String(sId)]'),
    (\"this.animFSM.setState('attack', true, { playbackRate: ctx.animationSpeedMulti });\", \"this.animFSM.setState('attack', true); // TODO: pass playbackRate\")
])

# Fix data files window assignments and any type issues
def fix_data(path, name):
    with open(path, 'r', encoding='utf-8') as f:
        content = f.read()
    content = re.sub(rf'window\.{name}\s*=.*?;', '', content)
    content = re.sub(r'function get[a-zA-Z_]+\(id\)', 'function getById(id: any)', content)
    content = re.sub(r'function filterByElement\(elem\)', 'function filterByElement(elem: any)', content)
    content = re.sub(r'function getSkillsByTag\(tag\)', 'function getSkillsByTag(tag: any)', content)
    with open(path, 'w', encoding='utf-8') as f:
        f.write(content)

fix_data('client/cocos/assets/scripts/data/skill_catalog.ts', 'SkillCatalog')
fix_data('client/cocos/assets/scripts/data/skill_tags.ts', 'SkillTags')
fix_data('client/cocos/assets/scripts/data/support_skill_catalog.ts', 'SupportSkillCatalog')
