using EscapeFromTarkovCheat.Utils;
using System.Collections.Generic;

namespace EscapeFromTarkovCheat.Data
{
    internal class LocalisationData
    {
        public Locale locale;
        public Dictionary<StringKey, string> data = new Dictionary<StringKey, string>();

        private void zh_CN() {
            data.Add(StringKey.MAIN_TITLE, "Stoopid Cheat V1");
            data.Add(StringKey.MENU_PLAYER_VISUAL_TITLE, "玩家视觉菜单");
            data.Add(StringKey.MENU_MISC_VISUAL_TITLE, "杂项视觉菜单");
            data.Add(StringKey.MENU_AIMBOT_TITLE, "自瞄视觉菜单");
            data.Add(StringKey.MENU_MISCELLANEOUS_TITLE, "杂项菜单");
            data.Add(StringKey.MENU_SKILLS_TITLE, "技能编辑器");
            data.Add(StringKey.MENU_ITEMS_TITLE, "物品菜单");
            data.Add(StringKey.MENU_MAIN_DESC_TOGGLE, "按 Insert 键开关菜单");
            data.Add(StringKey.MENU_MAIN_HINT_UNLOCK, "按 数字键盘 4 解锁所有门");
            data.Add(StringKey.MENU_MAIN_HINT_HEAL, "按 数字键盘 1 治疗");
            data.Add(StringKey.MENU_MAIN_BUTTON_PLAYER_VISUAL, GetByKey(StringKey.MENU_PLAYER_VISUAL_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_MISC_VISUAL, GetByKey(StringKey.MENU_MISC_VISUAL_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_AIMBOT, GetByKey(StringKey.MENU_AIMBOT_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_MISCELLANEOUS, GetByKey(StringKey.MENU_MISCELLANEOUS_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_SKILLS, GetByKey(StringKey.MENU_SKILLS_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_ITEMS, GetByKey(StringKey.MENU_ITEMS_TITLE));
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYERS, "绘制玩家");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_BOX, "绘制玩家方框");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_NAME, "绘制玩家名");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_LINE, "绘制玩家射线");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_HEALTH, "绘制玩家血量");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_SKELETON, "绘制玩家骨骼");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_RANGE, "玩家距离范围");
            data.Add(StringKey.MENU_MISC_VISUAL_DRAWLOOTITEMS, "绘制杂散物资");
            data.Add(StringKey.MENU_MISC_VISUAL_LOOTITEMRANGE, "杂散物资距离范围");
            data.Add(StringKey.MENU_MISC_VISUAL_DRAWCONTAINERS, "绘制容器");
            data.Add(StringKey.MENU_MISC_VISUAL_CONTAINERRANGE, "容器距离范围");
            data.Add(StringKey.MENU_MISC_VISUAL_DRAWEP, "绘制撤离点");
            data.Add(StringKey.MENU_AIMBOT_TOGGLE, "自瞄");
            data.Add(StringKey.MENU_AIMBOT_SMOOTH, "自瞄平滑");
            data.Add(StringKey.MENU_AIMBOT_DRAWFOV, "绘制自瞄范围");
            data.Add(StringKey.MENU_AIMBOT_FOVRANGE, "自瞄视野范围");
            data.Add(StringKey.MENU_AIMBOT_AIMINGRANGE, "瞄准上限距离");
            data.Add(StringKey.MENU_AIMBOT_VISIBLEONLY, "仅瞄准可见目标");
            data.Add(StringKey.MENU_AIMBOT_SILENT, "静默瞄准");
            data.Add(StringKey.MENU_AIMBOT_NORECOIL, "无后座");
            data.Add(StringKey.MENU_MISCELLANEOUS_GODMODE, "锁血");
            data.Add(StringKey.MENU_MISCELLANEOUS_STAMINA, "无限耐");
            data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK, "角色加速");
            data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK_ADDITION, "速度加成量");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_HEAL, $"回满血 [{Settings.InstaHeal}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_UNLOCK, $"解锁 20米 内所有门 [{Settings.UnlockDoors}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_KILL, $"全场活光光 [{Settings.KillSwitch}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TPENEMIES, $"吸星大法 [{Settings.TpEnemies}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TRADERSTANDING, $"全部商人好感增加 0.1 [{Settings.IncreaseTraderStandingKey}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_ADDXP, "添加经验");
            data.Add(StringKey.MENU_MISCELLANEOUS_XPINRAID, "本局经验：");
            data.Add(StringKey.MENU_MISCELLANEOUS_XPADDITION, "经验添加量：");
            data.Add(StringKey.MENU_SKILLS_BUTTON_MAXALL, "技能全满");
            data.Add(StringKey.MENU_SKILLS_HINT_INRAID, "请在战局中使用！");
            data.Add(StringKey.MENU_SKILLS_STRENGTH, "力量");
            data.Add(StringKey.MENU_SKILLS_STRESSRESIST, "抗压");
            data.Add(StringKey.MENU_SKILLS_MAGDRILLS, "弹匣训练");
            data.Add(StringKey.MENU_SKILLS_MELEE, "近战");
            data.Add(StringKey.MENU_SKILLS_HIDEOUT, "藏身处管理");
            data.Add(StringKey.MENU_SKILLS_CRAFTING, "工艺");
            data.Add(StringKey.MENU_SKILLS_HEAVYVESTS, "重型护甲");
            data.Add(StringKey.MENU_SKILLS_LIGHTVESTS, "轻型护甲");
            data.Add(StringKey.MENU_SKILLS_LMG, "轻机枪");
            data.Add(StringKey.MENU_SKILLS_ASSAULT, "突击步枪");
            data.Add(StringKey.MENU_SKILLS_PISTOL, "手枪");
            data.Add(StringKey.MENU_SKILLS_PERCEPTION, "感知");
            data.Add(StringKey.MENU_SKILLS_SNIPER, "狙击步枪");
            data.Add(StringKey.MENU_SKILLS_SNIPING, "狙击");
            data.Add(StringKey.MENU_SKILLS_ENDURANCE, "耐力");
            data.Add(StringKey.MENU_SKILLS_THROWING, "投掷物");
            data.Add(StringKey.MENU_SKILLS_CHARISMA, "魅力");
            data.Add(StringKey.MENU_SKILLS_HEALTH, "健康");
            data.Add(StringKey.MENU_SKILLS_VITALITY, "活力");
            data.Add(StringKey.MENU_SKILLS_METABOLISM, "代谢");
            data.Add(StringKey.MENU_SKILLS_IMMUNITY, "免疫");
            data.Add(StringKey.MENU_SKILLS_SURGERY, "手术");
            data.Add(StringKey.MENU_SKILLS_INTELLECT, "智力");
            data.Add(StringKey.MENU_SKILLS_ATTENTION, "专注");
            data.Add(StringKey.MENU_SKILLS_REVOLVER, "左轮手枪");
            data.Add(StringKey.MENU_SKILLS_SHOTGUN, "霰弹枪");
            data.Add(StringKey.MENU_SKILLS_HMG, "重机枪");
            data.Add(StringKey.MENU_SKILLS_DMR, "精确射手步枪");
            data.Add(StringKey.MENU_SKILLS_AIMDRILLS, "瞄准训练");
            data.Add(StringKey.MENU_SKILLS_SEARCH, "搜索");
            data.Add(StringKey.MENU_SKILLS_WEAPONTREATMENT, "武器维护");
            data.Add(StringKey.MENU_SKILLS_TROUBLESHOOTING, "故障排除");
            data.Add(StringKey.MENU_SKILLS_COVERTMOVEMENT, "隐蔽行动");
            data.Add(StringKey.MENU_SKILLS_SMG, "冲锋枪");
            data.Add(StringKey.MENU_ITEMS_BUTTON_TPLOOTS, $"吸物资 [{Settings.TpLoots}]");
            data.Add(StringKey.MENU_ITEMS_BUTTON_AIRDROP, $"摇空投 [{Settings.CallAirdrop}]");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_TITLE, "物品栏编辑器");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_SEARCH, "搜索物品 ID");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_GET, "从背包中寻找");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_STRINGS, "搜索结果");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_CHANGES, "要提交的更改(按物品ID、宽和高的顺序)");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_COMMIT, "提交更改");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_SETFIR, "全部带勾");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_TITLE, "物品复制器");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK, "更改堆叠为 x");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_RESETSTACK, "重置堆叠为 1");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTRUBLE, "快速设置堆叠40万(卢布)");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTEUROUSD, "快速设置堆叠5万(欧美元)");

            // 撤离点
            data.Add(StringKey.DATA_EP_ACTIVE, "激活");
            data.Add(StringKey.DATA_EP_TIMER, "倒计时");
            data.Add(StringKey.DATA_EP_CLOSED, "已关闭");
            data.Add(StringKey.DATA_EP_PENDING, "等待中");
            data.Add(StringKey.DATA_EP_OPEN, "开放");
            data.Add(StringKey.DATA_EP_REQUIREMENT, "需要前置");

            // 人机类型
            data.Add(StringKey.DATA_PLAYERTYPE_BOT, "普通人机");
            data.Add(StringKey.DATA_PLAYERTYPE_GUARD, "保镖");
            data.Add(StringKey.DATA_PLAYERTYPE_BEAR, "玩家 俄军");
            data.Add(StringKey.DATA_PLAYERTYPE_USEC, "玩家 美军");
            data.Add(StringKey.DATA_PLAYERTYPE_PMC, "玩家");
            data.Add(StringKey.DATA_PLAYERTYPE_BOSS, "BOSS");
        }
        private void en_US()
        {
            data.Add(StringKey.MAIN_TITLE, "Stoopid Cheat V1");
            data.Add(StringKey.MENU_PLAYER_VISUAL_TITLE, "Player Visual");
            data.Add(StringKey.MENU_MISC_VISUAL_TITLE, "Misc Visual");
            data.Add(StringKey.MENU_AIMBOT_TITLE, "Aimbot");
            data.Add(StringKey.MENU_MISCELLANEOUS_TITLE, "Miscellaneous");
            data.Add(StringKey.MENU_SKILLS_TITLE, "Skill Editor");
            data.Add(StringKey.MENU_ITEMS_TITLE, "Items");
            data.Add(StringKey.MENU_MAIN_DESC_TOGGLE, "Insert For Menu");
            data.Add(StringKey.MENU_MAIN_HINT_UNLOCK, "Num 4 to Open Doors");
            data.Add(StringKey.MENU_MAIN_HINT_HEAL, "Num 1 to Heal");
            data.Add(StringKey.MENU_MAIN_BUTTON_PLAYER_VISUAL, GetByKey(StringKey.MENU_PLAYER_VISUAL_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_MISC_VISUAL, GetByKey(StringKey.MENU_MISC_VISUAL_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_AIMBOT, GetByKey(StringKey.MENU_AIMBOT_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_MISCELLANEOUS, GetByKey(StringKey.MENU_MISCELLANEOUS_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_SKILLS, GetByKey(StringKey.MENU_SKILLS_TITLE));
            data.Add(StringKey.MENU_MAIN_BUTTON_ITEMS, GetByKey(StringKey.MENU_ITEMS_TITLE));
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYERS, "Draw Players");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_BOX, "Draw Player Box");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_NAME, "Draw Player Name");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_LINE, "Draw Player Line");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_HEALTH, "Draw Player Health");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_SKELETON, "Draw Player Skeleton");
            data.Add(StringKey.MENU_PLAYER_VISUAL_DRAWPLAYER_RANGE, "Player Distance");
            data.Add(StringKey.MENU_MISC_VISUAL_DRAWLOOTITEMS, "Draw Loot Items");
            data.Add(StringKey.MENU_MISC_VISUAL_LOOTITEMRANGE, "Loot Item Distance");
            data.Add(StringKey.MENU_MISC_VISUAL_DRAWCONTAINERS, "Draw Containers");
            data.Add(StringKey.MENU_MISC_VISUAL_CONTAINERRANGE, "Container Distance");
            data.Add(StringKey.MENU_MISC_VISUAL_DRAWEP, "Draw Extraction");
            data.Add(StringKey.MENU_AIMBOT_TOGGLE, "Aimbot");
            data.Add(StringKey.MENU_AIMBOT_SMOOTH, "Aimbot Smooth");
            data.Add(StringKey.MENU_AIMBOT_DRAWFOV, "Draw FOV");
            data.Add(StringKey.MENU_AIMBOT_FOVRANGE, "Aimbot FOV");
            data.Add(StringKey.MENU_AIMBOT_AIMINGRANGE, "Aim Targets In: ");
            data.Add(StringKey.MENU_AIMBOT_VISIBLEONLY, "Aim Visible Targets Only");
            data.Add(StringKey.MENU_AIMBOT_SILENT, "Silent Aim");
            data.Add(StringKey.MENU_AIMBOT_NORECOIL, "No Recoil");
            data.Add(StringKey.MENU_MISCELLANEOUS_GODMODE, "God Mode");
            data.Add(StringKey.MENU_MISCELLANEOUS_STAMINA, "Infinite Stamina");
            data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK, "Speed Hack");
            data.Add(StringKey.MENU_MISCELLANEOUS_SPEEDHACK_ADDITION, "Speed Boost");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_HEAL, $"Heal Yourself [{Settings.InstaHeal}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_UNLOCK, $"Unlock All Doors In 20m [{Settings.UnlockDoors}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_KILL, $"Kill Every Living Thing [{Settings.KillSwitch}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TPENEMIES, $"Teleport All Enemies To You [{Settings.TpEnemies}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_TRADERSTANDING, $"Increase Standings For All Traders By 0.1 [{Settings.IncreaseTraderStandingKey}]");
            data.Add(StringKey.MENU_MISCELLANEOUS_BUTTON_ADDXP, "Add Exp To Player");
            data.Add(StringKey.MENU_MISCELLANEOUS_XPINRAID, "Current Exp In Raid: ");
            data.Add(StringKey.MENU_MISCELLANEOUS_XPADDITION, "Exp Addition: ");
            data.Add(StringKey.MENU_SKILLS_BUTTON_MAXALL, "Max All Skills");
            data.Add(StringKey.MENU_SKILLS_HINT_INRAID, "Use it only in raids!");
            data.Add(StringKey.MENU_SKILLS_STRENGTH, "Strength");
            data.Add(StringKey.MENU_SKILLS_STRESSRESIST, "Stress Resistance");
            data.Add(StringKey.MENU_SKILLS_MAGDRILLS, "Mag Drills");
            data.Add(StringKey.MENU_SKILLS_MELEE, "Melee");
            data.Add(StringKey.MENU_SKILLS_HIDEOUT, "Hideout Management");
            data.Add(StringKey.MENU_SKILLS_CRAFTING, "Crafting");
            data.Add(StringKey.MENU_SKILLS_HEAVYVESTS, "Heavy Vests");
            data.Add(StringKey.MENU_SKILLS_LIGHTVESTS, "Light Vests");
            data.Add(StringKey.MENU_SKILLS_LMG, "Light Machine Guns");
            data.Add(StringKey.MENU_SKILLS_ASSAULT, "Assult Rifles");
            data.Add(StringKey.MENU_SKILLS_PISTOL, "Pistols");
            data.Add(StringKey.MENU_SKILLS_PERCEPTION, "Perception");
            data.Add(StringKey.MENU_SKILLS_SNIPER, "Bolt-action Rifles");
            data.Add(StringKey.MENU_SKILLS_SNIPING, "Sniping");
            data.Add(StringKey.MENU_SKILLS_ENDURANCE, "Endurance");
            data.Add(StringKey.MENU_SKILLS_THROWING, "Throwables");
            data.Add(StringKey.MENU_SKILLS_CHARISMA, "Charisma");
            data.Add(StringKey.MENU_SKILLS_HEALTH, "Health");
            data.Add(StringKey.MENU_SKILLS_VITALITY, "Vitality");
            data.Add(StringKey.MENU_SKILLS_METABOLISM, "Metabolism");
            data.Add(StringKey.MENU_SKILLS_IMMUNITY, "Immunity");
            data.Add(StringKey.MENU_SKILLS_SURGERY, "Surgery");
            data.Add(StringKey.MENU_SKILLS_INTELLECT, "Intellect");
            data.Add(StringKey.MENU_SKILLS_ATTENTION, "Attention");
            data.Add(StringKey.MENU_SKILLS_REVOLVER, "Revolvers");
            data.Add(StringKey.MENU_SKILLS_SHOTGUN, "Shotguns");
            data.Add(StringKey.MENU_SKILLS_HMG, "Heavy Machine Guns");
            data.Add(StringKey.MENU_SKILLS_DMR, "DMRs");
            data.Add(StringKey.MENU_SKILLS_AIMDRILLS, "Aim Drills");
            data.Add(StringKey.MENU_SKILLS_SEARCH, "Search");
            data.Add(StringKey.MENU_SKILLS_WEAPONTREATMENT, "Weapon Maintenance");
            data.Add(StringKey.MENU_SKILLS_TROUBLESHOOTING, "Troubleshooting");
            data.Add(StringKey.MENU_SKILLS_COVERTMOVEMENT, "Covert Movement");
            data.Add(StringKey.MENU_SKILLS_SMG, "Submachine Guns");
            data.Add(StringKey.MENU_ITEMS_BUTTON_TPLOOTS, $"Teleport All Loots To You [{Settings.TpLoots}]");
            data.Add(StringKey.MENU_ITEMS_BUTTON_AIRDROP, $"Call Air Drop [{Settings.CallAirdrop}]");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_TITLE, "Inventory Editor");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_SEARCH, "Search ID");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_GET, "Get Items From Backpack");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_STRINGS, "Item Strings");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_CHANGES, "Changes To Be Made (In Order Of ID, Width And Height)");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_COMMIT, "Commit Changes");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_BUTTON_SETFIR, "Set Whole Inventory Found In Raid");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_TITLE, "Item Dupe");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK, "Dupe Stack x");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_RESETSTACK, "Reset Stack To 1");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTRUBLE, "Fast Stack 400k(RUB)");
            data.Add(StringKey.MENU_ITEMS_INVEDITOR_DUPE_BUTTON_SETSTACK_FASTEUROUSD, "Fast Stack 50k(EUR,USD)");

            // Exfiltration Points
            data.Add(StringKey.DATA_EP_ACTIVE, "Active");
            data.Add(StringKey.DATA_EP_TIMER, "Timer");
            data.Add(StringKey.DATA_EP_CLOSED, "Closed");
            data.Add(StringKey.DATA_EP_PENDING, "Pending");
            data.Add(StringKey.DATA_EP_OPEN, "Open");
            data.Add(StringKey.DATA_EP_REQUIREMENT, "Requirement");

            // Bot Types
            data.Add(StringKey.DATA_PLAYERTYPE_BOT, "BOT");
            data.Add(StringKey.DATA_PLAYERTYPE_GUARD, "GUARD");
            data.Add(StringKey.DATA_PLAYERTYPE_BEAR, "PMC BEAR");
            data.Add(StringKey.DATA_PLAYERTYPE_USEC, "PMC USEC");
            data.Add(StringKey.DATA_PLAYERTYPE_PMC, "PMC");
            data.Add(StringKey.DATA_PLAYERTYPE_BOSS, "BOSS");
        }

        public LocalisationData(Locale locale) {
            this.locale = locale;
            switch (locale) {
                case Locale.CHINESE:
                    zh_CN();
                    break;
                case Locale.ENGLISH:
                    en_US();
                    break;
                default:
                    en_US();
                    break;
            }
        }

        public string GetByKey(StringKey key) {
            string o;
            if (data.TryGetValue(key, out o)) return o;
            return $"{key}";
        }
    }
}
