import type { GameId } from "@/native/ZoneBinds.ts";
import type { CommonAssetType } from "@/native/AssetBinds.ts";

const ASSET_TYPES_BY_GAME: Record<GameId, CommonAssetType[]> = {
  iw3: [
    "xmodel_pieces",
    "phys_preset",
    "xanim",
    "xmodel",
    "material",
    "technique_set",
    "image",
    "sound",
    "sound_curve",
    "loaded_sound",
    "clip_map",
    "clip_map",
    "com_world",
    "game_world_sp",
    "game_world_mp",
    "map_ents",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "menu_list",
    "menu",
    "localize_entry",
    "weapon",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "ai_type",
    "mp_type",
    "character",
    "xmodel_alias",
    "raw_file",
    "string_table",
  ],
  iw4: [
    "phys_preset",
    "phys_coll_map",
    "xanim",
    "xmodel_surfs",
    "xmodel",
    "material",
    "pixel_shader",
    "vertex_shader",
    "vertex_decl",
    "technique_set",
    "image",
    "sound",
    "sound_curve",
    "loaded_sound",
    "clip_map",
    "clip_map",
    "com_world",
    "game_world_sp",
    "game_world_mp",
    "map_ents",
    "fx_world",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "menu_list",
    "menu",
    "localize_entry",
    "weapon",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "ai_type",
    "mp_type",
    "character",
    "xmodel_alias",
    "raw_file",
    "string_table",
    "leaderboard",
    "structured_data_def",
    "tracer",
    "vehicle",
    "addon_map_ents",
  ],
  iw5: [
    "phys_preset",
    "phys_coll_map",
    "xanim",
    "xmodel_surfs",
    "xmodel",
    "material",
    "pixel_shader",
    "vertex_shader",
    "vertex_decl",
    "technique_set",
    "image",
    "sound",
    "sound_curve",
    "loaded_sound",
    "clip_map",
    "com_world",
    "glass_world",
    "path_data",
    "vehicle_track",
    "map_ents",
    "fx_world",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "menu_list",
    "menu",
    "localize_entry",
    "attachment",
    "weapon",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "surface_fx",
    "ai_type",
    "mp_type",
    "character",
    "xmodel_alias",
    "raw_file",
    "script",
    "string_table",
    "leaderboard",
    "structured_data_def",
    "tracer",
    "vehicle",
    "addon_map_ents",
  ],
  qos: [
    "xmodel_pieces",
    "phys_preset",
    "phys_constraints",
    "destructible_def",
    "xanim",
    "xmodel",
    "material",
    "technique_set",
    "image",
    "sound",
    "sound_curve",
    "clip_map",
    "clip_map",
    "com_world",
    "game_world_sp",
    "game_world_mp",
    "map_ents",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "menu_list",
    "menu",
    "localize_entry",
    "weapon",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "ai_type",
    "mp_type",
    "character",
    "xmodel_alias",
    "raw_file",
    "string_table",
    "xml_tree",
    "scene_animation",
    "cutscene",
    "custom_camera",
  ],
  t4: [
    "xmodel_pieces",
    "phys_preset",
    "phys_constraints",
    "destructible_def",
    "xanim",
    "xmodel",
    "material",
    "technique_set",
    "image",
    "sound",
    "loaded_sound",
    "clip_map",
    "clip_map",
    "com_world",
    "game_world_sp",
    "game_world_mp",
    "map_ents",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "menu_list",
    "menu",
    "localize_entry",
    "weapon",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "ai_type",
    "mp_type",
    "character",
    "xmodel_alias",
    "raw_file",
    "string_table",
    "pack_index",
  ],
  t5: [
    "xmodel_pieces",
    "phys_preset",
    "phys_constraints",
    "destructible_def",
    "xanim",
    "xmodel",
    "material",
    "technique_set",
    "image",
    "sound",
    "sound_patch",
    "clip_map",
    "clip_map",
    "com_world",
    "game_world_sp",
    "game_world_mp",
    "map_ents",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "menu_list",
    "menu",
    "localize_entry",
    "weapon",
    "weapon_def",
    "weapon_variant",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "ai_type",
    "mp_type",
    "mp_body",
    "mp_head",
    "character",
    "xmodel_alias",
    "raw_file",
    "string_table",
    "pack_index",
    "xglobals",
    "ddl",
    "glasses",
    "emblem_set",
  ],
  t6: [
    "xmodel_pieces",
    "phys_preset",
    "phys_constraints",
    "destructible_def",
    "xanim",
    "xmodel",
    "material",
    "technique_set",
    "image",
    "sound",
    "sound_patch",
    "clip_map",
    "clip_map",
    "com_world",
    "game_world_sp",
    "game_world_mp",
    "map_ents",
    "gfx_world",
    "light_def",
    "ui_map",
    "font",
    "font_icon",
    "menu_list",
    "menu",
    "localize_entry",
    "weapon",
    "weapon_def",
    "weapon_variant",
    "weapon_full",
    "attachment",
    "attachment_unique",
    "weapon_camo",
    "sound_driver_globals",
    "fx",
    "impact_fx",
    "ai_type",
    "mp_type",
    "mp_body",
    "mp_head",
    "character",
    "xmodel_alias",
    "raw_file",
    "string_table",
    "leaderboard",
    "xglobals",
    "ddl",
    "glasses",
    "emblem_set",
    "script",
    "key_value_pairs",
    "vehicle",
    "memory_block",
    "addon_map_ents",
    "tracer",
    "skinned_verts",
    "qdb",
    "slug",
    "footstep_table",
    "footstep_fx_table",
    "zbarrier",
  ],
};

export function getAssetTypesByGame(game: GameId): CommonAssetType[] {
  return ASSET_TYPES_BY_GAME[game] ?? [];
}
