"""
Termina.QOL.exe.py
Check us out at: https://terminaqol.neocities.org/
"""

import sys, shutil, json, base64, questionary
from questionary import Style
from pathlib import Path

questionary_style = Style([
    ('qmark', 'fg:#A79F9E bold'),
    ('question', 'fg:#FFBC00 bold'),
    ('answer', 'fg:#fff bg:#0606FF bold'),
    ('pointer', 'fg:#fff bold'),
    ('highlighted', 'fg:#fff bg:#0606FF bold'),
    ('selected', 'fg:#fff bg:#0606FF'),
    ('instruction', 'fg:#A79F9E'),
    ('text', '')
])

folder_root = Path(__file__).resolve().parent
folder_data = folder_root / 'www' / 'data'
folder_backup = folder_root / 'mod_backup'

if not folder_data.is_dir() or not any(folder_data.iterdir()):
    questionary.print('\nNo files found.', style='fg:#F76767')
    print('Make sure to place this script in the folder of Fear & Hunger 2: Termina.')
    print('Be careful. Prehevil will not be as forgiving...\n')
    questionary.press_any_key_to_continue().ask()
    sys.exit()

commonevents_data = folder_data / 'CommonEvents.json'
items_data = folder_data / 'Items.json'
file_maps = list(folder_data.glob('Map*.json'))

files_per_mod = {
      'no_default_choices':         [commonevents_data, items_data] + file_maps,
      'pause_after_consumable':     [commonevents_data],
      'brown_vial_outside_combat':  [items_data],
      'sawing_duration':            file_maps
}

mod_options = [
    ('no_default_choices',          'No default choice selected in dialogues'),
    ('pause_after_consumable',      'Pause after drinking vials or eating'),
    ('brown_vial_outside_combat',   'Brown vials available outside combat'),
    ('sawing_duration',             'Change the time duration of sawing'),]
if folder_backup.exists():
    mod_options.append(('restore_backup','Restore the backup (Undo all mods first)'))

def flee():
    questionary.print('No changes were done.', style='fg:#FFBC00 bold')
    print('You abandon the questions and try to flee.\nYou flee successfully!')
    questionary.press_any_key_to_continue().ask()
    sys.exit()

def mod_no_default_choices(files_data):
    changes = 0
    if isinstance(files_data, dict):
        if files_data.get('code') == 102:
            if files_data['parameters'][2] != -1:
                files_data['parameters'][2] = -1
                changes += 1
        for value in files_data.values():
            changes += mod_no_default_choices(value)
    elif isinstance(files_data, list):
        for item in files_data:
            changes += mod_no_default_choices(item)
    return changes

def mod_pause_after_consumable(commonevents_data, inventory=False): 
    target_events = {'BOTTLE BACK', 'FOOD_small', 'FOOD_medium', 'FOOD_large'}
    item_screen = {'code': 355, 'indent': 1, 'parameters': ['SceneManager.push(Scene_Item)']}
    menu_screen = {'code': 355, 'indent': 1, 'parameters': ['SceneManager.push(Scene_Menu)']}
    to_insert = [item_screen, menu_screen] if inventory else [menu_screen]

    changes = 0
    for entry in commonevents_data:
        if not isinstance(entry, dict):
                    continue
        if entry.get('name') in target_events:
            event_commands_list = entry['list']
            if (event_commands_list[-2].get('code') == 355 and
                event_commands_list[-2].get('parameters') == menu_screen['parameters']):
                continue
            removed_last_command = event_commands_list.pop()
            event_commands_list.extend(to_insert)
            event_commands_list.append(removed_last_command)
            changes += 1
    return changes

def mod_brown_vial_outside_combat(items_data):
    changes = 0
    for entry in items_data:
        if not isinstance(entry, dict):
            continue
        item_note = entry.get('note', '')
        if '<Picture: icon_brownvial>' in item_note and '<Menu Category: Items>' in item_note:
            if entry.get('occasion') == 1:
                entry['occasion'] = 0
                changes += 1
    return changes

sawing_head_sound_file = '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'

def mod_sawing_extract_audio(path):
    if not path.exists():
        with open(path, 'wb') as audio_file:
            audio_file.write(base64.b64decode(sawing_head_sound_file))
        print('Extracted saw_sound_02_short.rpgmvo to "\\www\\audio\\se".')

def mod_sawing_duration(maps_data, new_duration_frames, shortening_heads_only):
    changes = 0

    def matches_sawing_duration(command):
        return (command.get('code') == 230
                and command.get('parameters')
                and command['parameters'][0] == 205)

    def found_head_sawing(commands, index):
        if index == 0:
            return False
        previous_command = commands[index - 1]
        return (isinstance(previous_command, dict)
                and previous_command.get('code') == 250
                and previous_command.get('parameters')
                and previous_command['parameters'][0].get('name') == 'saw_sound_02')

    def search_and_apply_changes(entry):
        nonlocal changes
        if isinstance(entry, dict):
            for child in entry.values():
                search_and_apply_changes(child)
        elif isinstance(entry, list):
            for index, command in enumerate(entry):
                if isinstance(command, dict) and matches_sawing_duration(command):
                    if found_head_sawing(entry, index) or not shortening_heads_only:
                        command['parameters'][0] = new_duration_frames
                        if found_head_sawing(entry, index):
                            entry[index - 1]['parameters'][0]['name'] = 'saw_sound_02_short'
                        changes += 1
                search_and_apply_changes(command)

    search_and_apply_changes(maps_data)
    return changes

count_no_default = 0
count_pause_inv  = 0
count_pause_menu = 0
count_brown_vial = 0
count_saw_all    = 0
count_saw_head   = 0

questionary.print('> https://terminaqol.neocities.org/', style='fg:#A79F9E bold')
selected = questionary.checkbox(
    'You find yourself in a mod for Fear and Hunger 2: Termina.'
    '\n\nYou search a bookcase.'
    '\nYou find an empty scroll.'
    '\nYou thought those stopped existing a long time ago.'
    '\nO LORD TEACH...',
    choices=[
        {'name': display, 'value': value}
        for value, display in mod_options
    ], style=questionary_style, instruction=' (Use Space to select, Enter to confirm)'
).ask()

chosen_mods = selected or []
files_to_mod = {}
for mod in chosen_mods:
    if mod == 'restore_backup':
        continue
    for file in files_per_mod[mod]:
        if file not in files_to_mod:
            files_to_mod[file] = []
        files_to_mod[file].append(mod)

if not chosen_mods:
    print('\nYou stopped before writing on the scroll.')
    print('Did you forget to press Space to select a mod first?')
    questionary.press_any_key_to_continue().ask()
    sys.exit()

if 'restore_backup' in chosen_mods:
    if any(mod != 'restore_backup' for mod in chosen_mods):
        print('\nIf chosen alongside other mods, the backup runs before they are applied.')
        print('This will undo any previous changes by this mod and fix issues before continuing.')
    answer_backup = questionary.confirm('Are you sure you wish to restore the backup?', default=True, style=questionary_style).ask()
    if answer_backup is None:
        flee()
    if answer_backup is False:
        chosen_mods.remove('restore_backup')
    else:
        for file in folder_backup.iterdir():
            shutil.copy(file, folder_data)
        shutil.rmtree(folder_backup)

if 'pause_after_consumable' in chosen_mods:
    print('\nBefore we continue, one more question regarding pausing after a consumable.')
    answer_pause = questionary.select(
            'Would you rather go back to the menu or stay in the inventory?',
            choices = ['Pause to the menu','Stay in the inventory'], style=questionary_style
        ).ask()
    if answer_pause is None:
        flee()

if 'sawing_duration' in chosen_mods:
    print('\nBefore we continue, two more questions regarding sawing.')
    answer_sawing = questionary.select(
        'Change the duration of all sawing of enemies or just their heads?',
        choices = ['Of heads only','Any sawing'], style=questionary_style
    ).ask()
    if answer_sawing is None:
        flee()
    print('\nGood. Now set the new duration, in frames.')
    print('The default sawing duration is 205 frames.')
    print('The gods do not recommend going under 25.')
    while True:
        duration = questionary.text('Set the new duration (Empty for 25): ').ask()
        if duration is None:
                flee()
        if duration == '':
            duration = 25
            break
        try:
            duration = int(duration)
            if duration > 0:
                break
            questionary.print('\nThe gods do not recommend going back in time.', style='fg:#F76767')
            print('Try again with a positive number.')
        except ValueError:
            questionary.print('\nThe gods do not approve of your experimentation.', style='fg:#F76767')
            print('Try again with a proper, whole number.')

questionary.print('\nApplying mods...', style='fg:#FFBC00 bg:#3A2C1F bold')
entries_changed_total = 0
for file_targeted, mods_chosen in files_to_mod.items():
    files_backup = folder_backup / file_targeted.name
    if not files_backup.exists():
        folder_backup.mkdir(parents=True, exist_ok=True)
        shutil.copy(file_targeted, files_backup)
    
    print(f'Reading {file_targeted.name}...')
    try:
        with open(file_targeted, 'r', encoding='utf-8') as reading_file:
            files_content = json.load(reading_file)

    except json.JSONDecodeError:
        print(f'\nERROR: {file_targeted.name} seems to be corrupted.')
        print('Please restore the original file from the backup folder "mod_backup".')
        print(f'It is recommended to apply ALL mods related to that {file_targeted.name} to avoid issues.')
        print('The script will now stop. Good luck.')
        questionary.press_any_key_to_continue().ask()
        sys.exit(1)

    for mod in mods_chosen:
        if mod == 'no_default_choices':
            count_no_default += mod_no_default_choices(files_content)
        elif mod == 'pause_after_consumable' and answer_pause == 'Stay in the inventory':
            count_pause_inv += mod_pause_after_consumable(files_content, inventory=True)
        elif mod == 'pause_after_consumable' and answer_pause == 'Pause to the menu':
            count_pause_menu += mod_pause_after_consumable(files_content, inventory=False)
        elif mod == 'brown_vial_outside_combat':
            count_brown_vial += mod_brown_vial_outside_combat(files_content)
        elif mod == 'sawing_duration' and answer_sawing == 'Any sawing':
            count_saw_all += mod_sawing_duration(files_content, duration, shortening_heads_only=False)
        elif mod == 'sawing_duration' and answer_sawing == 'Of heads only':
            count_saw_head += mod_sawing_duration(files_content, duration, shortening_heads_only=True)

    with open(file_targeted, 'w', encoding='utf-8') as writing_file:
        json.dump(files_content, writing_file, separators=(',', ':'), ensure_ascii=False)

    entries_in_files = (count_no_default + count_pause_inv + count_pause_menu + count_brown_vial + count_saw_all + count_saw_head)
    entries_changed_total += entries_in_files
    if entries_in_files > 0:
        print(f' >> {entries_in_files} modifications in {file_targeted.name}.')

def nochanges(name): return print(f'No changes to {name}, mod already applied or unsuccessful.')
questionary.print('\nMods applied:', style='fg:#FFBC00 bg:#3A2C1F bold')
if 'restore_backup' in chosen_mods:
    print(f'Backup restored to data {folder_data}.\nBackup folder removed.')
if 'no_default_choices' in chosen_mods:
    if count_no_default > 0:
        print('No dialogue will have choices selected by default.')
    else:
        nochanges('dialogue choices')
if 'pause_after_consumable' in chosen_mods:
    if answer_pause == 'Stay in the inventory':
        if count_pause_inv > 0:
            print('The inventory will open after using a consumable.')
        else:
            nochanges('pausing after drinking or eating')
    else:
        if count_pause_menu > 0:
            print('The menu will open after using a consumable.')
        else:
            nochanges('pausing after drinking or eating')
if 'brown_vial_outside_combat' in chosen_mods:
    if count_brown_vial > 0:
        print('You can now use the Brown vial outside combat.')
    else:
        nochanges('Brown vial usage')
if 'sawing_duration' in chosen_mods:
    if 'Of heads only' in answer_sawing:
        if count_saw_head > 0:
            print(f'Duration of head sawing changed to {duration}.')
        else:
            nochanges('head sawing')
    else:
        if count_saw_head > 0:
            print(f'Duration of all sawing changed to {duration}.')
        else:
            nochanges('all sawing')
    mod_sawing_extract_audio(folder_root / 'www' / 'audio' / 'se' / 'saw_sound_02_short.rpgmvo')
if any(mod != 'restore_backup' for mod in chosen_mods):
    print(f'\nTotal changes done: {entries_changed_total}.\nOriginal files backed up to "{folder_backup}".\n')

questionary.press_any_key_to_continue().ask()