from typing import Literal, TypeAlias

DefPortraitDict: dict[str, int] = {
    "Marine": 0,
    "Ghost": 1,
    "Firebat": 2,
    "Vulture": 3,
    "Spider Mine": 4,
    "Goliath": 5,
    "Siege Tank": 6,
    "SCV": 7,
    "Wraith": 8,
    "Science Vessel": 9,
    "Dropship": 10,
    "Battlecruiser": 11,
    "Sarah Kerrigan": 12,
    "Jim Raynor": 13,
    "Edmund Duke": 14,
    "Civilian": 15,
    "Arcturus Mengsk": 16,
    "Terran Advisor": 17,
    "Larva": 18,
    "Egg": 19,
    "Zergling": 20,
    "Hydralisk": 21,
    "Ultralisk": 22,
    "Broodling": 23,
    "Drone": 24,
    "Overlord": 25,
    "Mutalisk": 26,
    "Guardian": 27,
    "Queen": 28,
    "Defiler": 29,
    "Scourge": 30,
    "Cocoon": 31,
    "Mature Chrysalis": 32,
    "Infested Terran": 33,
    "Zasz": 34,
    "Daggoth": 35,
    "Infested Kerrigan": 36,
    "Hunter Killer": 37,
    "Overmind": 38,
    "Probe": 39,
    "Zealot": 40,
    "Dragoon": 41,
    "High Templar": 42,
    "Archon": 43,
    "Shuttle": 44,
    "Scout": 45,
    "Arbiter": 46,
    "Carrier": 47,
    "Interceptor": 48,
    "Dark Templar": 49,
    "Fenix (Zealot)": 50,
    "Fenix (Dragoon)": 51,
    "Zeratul": 52,
    "Tassadar": 53,
    "Gantrithor": 54,
    "Observer": 55,
    "Reaver": 56,
    "Scarab": 57,
    "Khaydarin Crystal Formation": 58,
    "Aldaris": 59,
    "Protoss Advisor": 60,
    "Merc Biker": 61,
    "Rhynadon": 62,
    "Bengalaas": 63,
    "Ragnasaur": 64,
    "Cargo Ship": 65,
    "Merc Gunship": 66,
    "Raider": 67,
    "Grom Biker": 68,
    "Space Critter": 69,
    "Sally": 70,
    "Greedo": 71,
    "Boskk": 72,
    "Peter": 73,
    "Independent Advisor": 74,
    "Terran Gas Tank": 75,
    "Protoss Gas Orb": 76,
    "Zerg Gas Sac": 77,
    "Mineral Cluster": 78,
    "Data Disc": 79,
    "Psi Emitter": 80,
    "Khaydarin Crystal": 81,
    # Flag color follows player color, not fixed.
    # "Flag (Red)": 82,
    # "Flag (Blue)": 83,
    # "Flag (Teal)": 84,
    # "Flag (Purple)": 85,
    # "Flag (Orange)": 86,
    # "Flag (Brown)": 87,
    # "Flag (White)": 88,
    # "Flag (Yellow)": 89,
    "Flag P1": 82,
    "Flag P2": 83,
    "Flag P3": 84,
    "Flag P4": 85,
    "Flag P5": 86,
    "Flag P6": 87,
    "Flag P7": 88,
    "Flag P8": 89,
    "Medic": 90,
    "Valkyrie": 91,
    "Dugalle": 92,
    "Stukov": 93,
    "Duran": 94,
    "Artanis": 95,
    "Raszagal": 96,
    "Devourer": 97,
    "Lurker": 98,
    "Dark Archon": 99,
    "Corsair": 100,
    "Scantid": 101,
    "Kakaru": 102,
    "Ursadon": 103,
    "Uraj Crystal": 104,
    "Khalis Crystal": 105,
    # "Flag (Green)": 106,
    # "Flag (Bright Yellow)": 107,
    # "Flag (Tan)": 108,
    # "Flag (Blue)": 109,
    "Flag P9": 106,
    "Flag P10": 107,
    "Flag P11": 108,
    "Flag P12": 109,
    "Marine - Talking": 110,
    "Ghost - Talking": 111,
    "Firebat - Talking": 112,
    "Vulture - Talking": 113,
    "Spider Mine - Talking": 114,
    "Goliath - Talking": 115,
    "Siege Tank - Talking": 116,
    "SCV - Talking": 117,
    "Wraith - Talking": 118,
    "Science Vessel - Talking": 119,
    "Dropship - Talking": 120,
    "Battlecruiser - Talking": 121,
    "Sarah Kerrigan - Talking": 122,
    "Jim Raynor  - Talking": 123,
    "Edmund Duke - Talking": 124,
    "Civilian - Talking": 125,
    "Arcturus Mengsk - Talking": 126,
    "Terran Advisor - Talking": 127,
    "Larva - Talking": 128,
    "Egg - Talking": 129,
    "Zergling - Talking": 130,
    "Hydralisk - Talking": 131,
    "Ultralisk - Talking": 132,
    "Broodling - Talking": 133,
    "Drone - Talking": 134,
    "Overlord - Talking": 135,
    "Mutalisk - Talking": 136,
    "Guardian - Talking": 137,
    "Queen - Talking": 138,
    "Defiler - Talking": 139,
    "Scourge - Talking": 140,
    "Cocoon - Talking": 141,
    "Mature Chrysalis - Talking": 142,
    "Infested Terran - Talking": 143,
    "Zasz - Talking": 144,
    "Daggoth - Talking": 145,
    "Infested Kerrigan - Talking": 146,
    "Hunter Killer - Talking": 147,
    "Overmind - Talking": 148,
    "Probe - Talking": 149,
    "Zealot - Talking": 150,
    "Dragoon - Talking": 151,
    "High Templar - Talking": 152,
    "Archon - Talking": 153,
    "Shuttle - Talking": 154,
    "Scout - Talking": 155,
    "Arbiter - Talking": 156,
    "Carrier - Talking": 157,
    "Interceptor - Talking": 158,
    "Dark Templar - Talking": 159,
    "Fenix (Zealot) - Talking": 160,
    "Fenix (Dragoon) - Talking": 161,
    "Zeratul - Talking": 162,
    "Tassadar - Talking": 163,
    "Gantrithor - Talking": 164,
    "Observer - Talking": 165,
    "Reaver - Talking": 166,
    "Scarab - Talking": 167,
    "Khaydarin Crystal Formation - Talking": 168,
    "Aldaris - Talking": 169,
    "Protoss Advisor - Talking": 170,
    "Merc Biker - Talking": 171,
    "Rhynadon - Talking": 172,
    "Bengalaas - Talking": 173,
    "Ragnasaur - Talking": 174,
    "Cargo Ship - Talking": 175,
    "Merc Gunship - Talking": 176,
    "Raider - Talking": 177,
    "Grom Biker - Talking": 178,
    "Space Critter - Talking": 179,
    "Sally - Talking": 180,
    "Greedo - Talking": 181,
    "Boskk - Talking": 182,
    "Peter - Talking": 183,
    "Independent Advisor - Talking": 184,
    "Terran Gas Tank - Talking": 185,
    "Protoss Gas Orb - Talking": 186,
    "Zerg Gas Sac - Talking": 187,
    "Mineral Cluster - Talking": 188,
    "Data Disc - Talking": 189,
    "Psi Emitter - Talking": 190,
    "Khaydarin Crystal - Talking": 191,
    # "Flag (Red) - Talking": 192,
    # "Flag (Blue) - Talking": 193,
    # "Flag (Teal) - Talking": 194,
    # "Flag (Purple) - Talking": 195,
    # "Flag (Orange) - Talking": 196,
    # "Flag (Brown) - Talking": 197,
    # "Flag (White) - Talking": 198,
    # "Flag (Yellow) - Talking": 199,
    "Flag P1 - Talking": 192,
    "Flag P2 - Talking": 193,
    "Flag P3 - Talking": 194,
    "Flag P4 - Talking": 195,
    "Flag P5 - Talking": 196,
    "Flag P6 - Talking": 197,
    "Flag P7 - Talking": 198,
    "Flag P8 - Talking": 199,
    "Medic - Talking": 200,
    "Valkyrie - Talking": 201,
    "Dugalle - Talking": 202,
    "Stukov - Talking": 203,
    "Duran - Talking": 204,
    "Artanis - Talking": 205,
    "Raszagal - Talking": 206,
    "Devourer - Talking": 207,
    "Lurker - Talking": 208,
    "Dark Archon - Talking": 209,
    "Corsair - Talking": 210,
    "Scantid - Talking": 211,
    "Kakaru - Talking": 212,
    "Ursadon - Talking": 213,
    "Uraj Crystal - Talking": 214,
    "Khalis Crystal - Talking": 215,
    # "Flag (Green) - Talking": 216,
    # "Flag (Bright Yellow) - Talking": 217,
    # "Flag (Tan) - Talking": 218,
    # "Flag (Blue) - Talkin": 219,
    "Flag P9 - Talking": 216,
    "Flag P10 - Talking": 217,
    "Flag P11 - Talking": 218,
    "Flag P12 - Talking": 219,
    "None": 65535,
}

DefaultPortrait: TypeAlias = Literal[
    "Marine",
    "Ghost",
    "Firebat",
    "Vulture",
    "Spider Mine",
    "Goliath",
    "Siege Tank",
    "SCV",
    "Wraith",
    "Science Vessel",
    "Dropship",
    "Battlecruiser",
    "Sarah Kerrigan",
    "Jim Raynor",
    "Edmund Duke",
    "Civilian",
    "Arcturus Mengsk",
    "Terran Advisor",
    "Larva",
    "Egg",
    "Zergling",
    "Hydralisk",
    "Ultralisk",
    "Broodling",
    "Drone",
    "Overlord",
    "Mutalisk",
    "Guardian",
    "Queen",
    "Defiler",
    "Scourge",
    "Cocoon",
    "Mature Chrysalis",
    "Infested Terran",
    "Zasz",
    "Daggoth",
    "Infested Kerrigan",
    "Hunter Killer",
    "Overmind",
    "Probe",
    "Zealot",
    "Dragoon",
    "High Templar",
    "Archon",
    "Shuttle",
    "Scout",
    "Arbiter",
    "Carrier",
    "Interceptor",
    "Dark Templar",
    "Fenix (Zealot)",
    "Fenix (Dragoon)",
    "Zeratul",
    "Tassadar",
    "Gantrithor",
    "Observer",
    "Reaver",
    "Scarab",
    "Khaydarin Crystal Formation",
    "Aldaris",
    "Protoss Advisor",
    "Merc Biker",
    "Rhynadon",
    "Bengalaas",
    "Ragnasaur",
    "Cargo Ship",
    "Merc Gunship",
    "Raider",
    "Grom Biker",
    "Space Critter",
    "Sally",
    "Greedo",
    "Boskk",
    "Peter",
    "Independent Advisor",
    "Terran Gas Tank",
    "Protoss Gas Orb",
    "Zerg Gas Sac",
    "Mineral Cluster",
    "Data Disc",
    "Psi Emitter",
    "Khaydarin Crystal",
    "Flag P1",
    "Flag P2",
    "Flag P3",
    "Flag P4",
    "Flag P5",
    "Flag P6",
    "Flag P7",
    "Flag P8",
    "Medic",
    "Valkyrie",
    "Dugalle",
    "Stukov",
    "Duran",
    "Artanis",
    "Raszagal",
    "Devourer",
    "Lurker",
    "Dark Archon",
    "Corsair",
    "Scantid",
    "Kakaru",
    "Ursadon",
    "Uraj Crystal",
    "Khalis Crystal",
    "Flag P9",
    "Flag P10",
    "Flag P11",
    "Flag P12",
    "Marine - Talking",
    "Ghost - Talking",
    "Firebat - Talking",
    "Vulture - Talking",
    "Spider Mine - Talking",
    "Goliath - Talking",
    "Siege Tank - Talking",
    "SCV - Talking",
    "Wraith - Talking",
    "Science Vessel - Talking",
    "Dropship - Talking",
    "Battlecruiser - Talking",
    "Sarah Kerrigan - Talking",
    "Jim Raynor  - Talking",
    "Edmund Duke - Talking",
    "Civilian - Talking",
    "Arcturus Mengsk - Talking",
    "Terran Advisor - Talking",
    "Larva - Talking",
    "Egg - Talking",
    "Zergling - Talking",
    "Hydralisk - Talking",
    "Ultralisk - Talking",
    "Broodling - Talking",
    "Drone - Talking",
    "Overlord - Talking",
    "Mutalisk - Talking",
    "Guardian - Talking",
    "Queen - Talking",
    "Defiler - Talking",
    "Scourge - Talking",
    "Cocoon - Talking",
    "Mature Chrysalis - Talking",
    "Infested Terran - Talking",
    "Zasz - Talking",
    "Daggoth - Talking",
    "Infested Kerrigan - Talking",
    "Hunter Killer - Talking",
    "Overmind - Talking",
    "Probe - Talking",
    "Zealot - Talking",
    "Dragoon - Talking",
    "High Templar - Talking",
    "Archon - Talking",
    "Shuttle - Talking",
    "Scout - Talking",
    "Arbiter - Talking",
    "Carrier - Talking",
    "Interceptor - Talking",
    "Dark Templar - Talking",
    "Fenix (Zealot) - Talking",
    "Fenix (Dragoon) - Talking",
    "Zeratul - Talking",
    "Tassadar - Talking",
    "Gantrithor - Talking",
    "Observer - Talking",
    "Reaver - Talking",
    "Scarab - Talking",
    "Khaydarin Crystal Formation - Talking",
    "Aldaris - Talking",
    "Protoss Advisor - Talking",
    "Merc Biker - Talking",
    "Rhynadon - Talking",
    "Bengalaas - Talking",
    "Ragnasaur - Talking",
    "Cargo Ship - Talking",
    "Merc Gunship - Talking",
    "Raider - Talking",
    "Grom Biker - Talking",
    "Space Critter - Talking",
    "Sally - Talking",
    "Greedo - Talking",
    "Boskk - Talking",
    "Peter - Talking",
    "Independent Advisor - Talking",
    "Terran Gas Tank - Talking",
    "Protoss Gas Orb - Talking",
    "Zerg Gas Sac - Talking",
    "Mineral Cluster - Talking",
    "Data Disc - Talking",
    "Psi Emitter - Talking",
    "Khaydarin Crystal - Talking",
    "Flag P1 - Talking",
    "Flag P2 - Talking",
    "Flag P3 - Talking",
    "Flag P4 - Talking",
    "Flag P5 - Talking",
    "Flag P6 - Talking",
    "Flag P7 - Talking",
    "Flag P8 - Talking",
    "Medic - Talking",
    "Valkyrie - Talking",
    "Dugalle - Talking",
    "Stukov - Talking",
    "Duran - Talking",
    "Artanis - Talking",
    "Raszagal - Talking",
    "Devourer - Talking",
    "Lurker - Talking",
    "Dark Archon - Talking",
    "Corsair - Talking",
    "Scantid - Talking",
    "Kakaru - Talking",
    "Ursadon - Talking",
    "Uraj Crystal - Talking",
    "Khalis Crystal - Talking",
    "Flag P9 - Talking",
    "Flag P10 - Talking",
    "Flag P11 - Talking",
    "Flag P12 - Talking",
    "None",
]
