dofile("\100\097\116\097\047\115\099\114\105\112\116\115\047\108\105\098\047\109\111\100\095\115\101\116\116\105\110\103\115\046\108\117\097")local L="\110\111\105\116\097-\115\116\114\101\097\107-\101\120\112\108\111\114\101\114"local P=ModSettingGet("\110\111\105\116\097-\115\116\114\101\097\107-\101\120\112\108\111\114\101\114\046\115\116\114\101\097\107\095\109\111\100\101")=="\099\117\115\116\111\109"mod_settings_version=1 local function Y()local L=GameTextGet("\036\099\117\114\114\101\110\116\095\108\097\110\103\117\097\103\101")if L=="\069\110\103\108\105\115\104"then return"\101\110"end if L=="\209\128\209\131\209\129\209\129\208\186\208\184\208\185"then return"\114\117"end if L=="\080\111\114\116\117\103\117\195\170\115 \040\066\114\097\115\105\108\041"then return"\112\116-\098\114"end if L=="\069\115\112\097\195\177\111\108"then return"\101\115-\101\115"end if L=="\068\101\117\116\115\099\104"then return"\100\101"end if L=="\070\114\097\110\195\167\097\105\115"then return"\102\114-\102\114"end if L=="\073\116\097\108\105\097\110\111"then return"\105\116"end if L=="\080\111\108\115\107\097"then return"\112\108"end if L=="\231\174\128\228\189\147\228\184\173\230\150\135"then return"\122\104-\099\110"end if L=="\230\151\165\230\156\172\232\170\158"then return"\106\097"end if L=="\237\149\156\234\181\173\236\150\180"then return"\107\111"end return"\101\110"end local B={streak_mode={ui_name={ja="\233\129\184\230\138\158\227\129\149\227\130\140\227\129\166\227\129\132\227\130\139\227\131\172\227\130\174\227\131\165\227\131\172\227\131\188\227\130\183\227\131\167\227\131\179"};ui_description={ja="\233\129\138\227\129\182\227\131\172\227\130\174\227\131\165\227\131\172\227\131\188\227\130\183\227\131\167\227\131\179\227\130\146\233\129\184\230\138\158\227\129\151\227\129\166\227\129\143\227\129\160\227\129\149\227\129\132"}},customize_game_mode={ui_name={ja="\060\232\169\179\231\180\176\232\168\173\229\174\154\062"};ui_description={ja=""}},fix_glass_cannon_enemy={ui_name={ja="\230\149\181\227\131\145\227\131\188\227\130\175\227\128\140\227\130\172\227\131\169\227\130\185\227\130\173\227\131\163\227\131\142\227\131\179\227\128\141\227\129\174\228\191\174\230\173\163\227\130\146\233\129\169\229\191\156\227\129\153\227\130\139"},ui_description={ja="\230\149\181\227\131\145\227\131\188\227\130\175\227\128\140\227\130\172\227\131\169\227\130\185\227\130\173\227\131\163\227\131\142\227\131\179\227\128\141\227\129\175\229\128\141\231\142\135\232\168\136\231\174\151\227\129\140\233\150\147\233\129\149\227\129\163\227\129\166\227\129\132\227\130\139\229\143\175\232\131\189\230\128\167\227\129\140\233\171\152\227\129\132\227\129\159\227\130\129\227\128\129\n\230\156\172\230\157\165\230\131\179\229\174\154\227\129\149\227\130\140\227\129\166\227\129\132\227\129\159\227\129\167\227\129\130\227\130\141\227\129\134\229\128\164\227\129\171\228\191\174\230\173\163\227\129\151\227\129\190\227\129\153\227\128\130\n\227\129\190\227\129\159\227\128\129\230\177\154\227\130\140\231\173\137\227\129\174\232\170\173\227\129\191\232\190\188\227\129\190\227\130\140\227\129\166\227\129\132\227\129\170\227\129\139\227\129\163\227\129\159\227\130\170\227\131\151\227\130\183\227\131\167\227\131\179\227\130\130\233\129\169\229\191\156\227\129\149\227\129\155\227\129\190\227\129\153\227\128\130"}},disable_dragon_in_jungle={ui_name={ja="\227\130\184\227\131\163\227\131\179\227\130\176\227\131\171\227\129\167\227\131\137\227\131\169\227\130\180\227\131\179\227\129\140\227\129\167\227\130\139\229\149\143\233\161\140\227\130\146\228\191\174\230\173\163\227\129\153\227\130\139"};ui_description={ja="\227\131\138\227\130\164\227\131\136\227\131\161\227\130\162\227\129\167\227\129\175\227\130\184\227\131\163\227\131\179\227\130\176\227\131\171\227\129\171\227\129\166\227\131\137\227\131\169\227\130\180\227\131\179\227\129\174\227\130\185\227\131\157\227\131\188\227\131\179\227\130\168\227\131\170\227\130\162\227\129\140\229\174\154\231\190\169\227\129\149\227\130\140\227\129\166\227\129\132\227\129\190\227\129\153\227\128\130\n\227\129\157\227\129\174\227\129\159\227\130\129\227\131\144\227\130\164\227\130\170\227\131\188\227\131\160\230\155\184\227\129\141\230\143\155\227\129\136\227\129\171\227\130\136\227\130\138\227\128\129\227\131\137\227\131\169\227\130\180\227\131\179\227\129\140\229\135\186\231\143\190\227\129\153\227\130\139\229\143\175\232\131\189\230\128\167\227\129\140\227\129\130\227\130\138\227\129\190\227\129\153\227\128\130\n\227\130\184\227\131\163\227\131\179\227\130\176\227\131\171\227\129\174\227\131\144\227\130\164\227\130\170\227\131\188\227\131\160\227\129\171\232\168\173\229\174\154\227\129\149\227\130\140\227\129\166\227\129\132\227\130\139\227\131\137\227\131\169\227\130\180\227\131\179\227\129\174\227\130\185\227\131\157\227\131\188\227\131\179\227\130\146\231\132\161\229\138\185\229\140\150\227\129\151\227\129\190\227\129\153\227\128\130"}},disable_holiday_effects={ui_name={ja="\229\173\163\231\175\128\227\130\164\227\131\153\227\131\179\227\131\136\227\130\146\231\132\161\229\138\185\229\140\150\227\129\153\227\130\139"};ui_description={ja="\230\172\161\227\129\174\227\130\164\227\131\153\227\131\179\227\131\136\227\130\146\231\132\161\229\138\185\229\140\150\227\129\151\227\129\190\227\129\153\227\128\130\n\050\230\156\136\049\052\230\151\165 \227\131\144\227\131\172\227\131\179\227\130\191\227\130\164\227\131\179\227\131\135\227\131\188 \n\227\130\164\227\131\188\227\130\185\227\130\191\227\131\188"}}}local function s(L,Y,B,s,y,E)P=E=="\099\117\115\116\111\109"end mod_settings={{id="\115\116\114\101\097\107\095\109\111\100\101",ui_name=B.streak_mode.ui_name[Y()];ui_description=B.streak_mode.ui_description[Y()];value_default="\110\111\114\109\097\108";values={{"\110\111\114\109\097\108";"\110\111\114\109\097\108"},{"\110\105\103\104\116\109\097\114\101";"\110\105\103\104\116\109\097\114\101"},{"\099\117\115\116\111\109","\099\117\115\116\111\109"}},scope=MOD_SETTING_SCOPE_NEW_GAME;change_fn=s};{id="\111\112\116\105\111\110\046\099\117\115\116\111\109\105\122\101\095\103\097\109\101\095\109\111\100\101\095\116\105\116\108\101";ui_name=B.customize_game_mode.ui_name[Y()];ui_description=B.customize_game_mode.ui_description[Y()],not_setting=true;hidden=true};{id="\111\112\116\105\111\110\046\102\105\120\095\103\108\097\115\115\095\099\097\110\110\111\110\095\101\110\101\109\121",ui_name=B.fix_glass_cannon_enemy.ui_name[Y()],ui_description=B.fix_glass_cannon_enemy.ui_description[Y()],value_default=false,scope=MOD_SETTING_SCOPE_NEW_GAME,hidden=true};{id="\111\112\116\105\111\110\046\100\105\115\097\098\108\101\095\100\114\097\103\111\110\095\105\110\095\106\117\110\103\108\101";ui_name=B.disable_dragon_in_jungle.ui_name[Y()],ui_description=B.disable_dragon_in_jungle.ui_description[Y()];value_default=false,scope=MOD_SETTING_SCOPE_NEW_GAME;hidden=true},{id="\111\112\116\105\111\110\046\100\105\115\097\098\108\101\095\104\111\108\105\100\097\121\095\101\102\102\101\099\116\115",ui_name=B.disable_holiday_effects.ui_name[Y()];ui_description=B.disable_holiday_effects.ui_description[Y()];value_default=false,scope=MOD_SETTING_SCOPE_NEW_GAME;hidden=true}}local function y(L)for L,Y in ipairs(L)do local B="\111\112\116\105\111\110\046"if Y.id and Y.id:sub(1,#B)==B then if P then Y.hidden=false else Y.hidden=true end end end end y(mod_settings)function ModSettingsUpdate(P)local Y=mod_settings_get_version(L)mod_settings_update(L,mod_settings,P)end function ModSettingsGuiCount()return mod_settings_gui_count(L,mod_settings)end function ModSettingsGui(P,Y)y(mod_settings)mod_settings_gui(L,mod_settings,P,Y)end
dofile("data/scripts/lib/mod_settings.lua")

local mod_id = "noita-streak-explorer"
local is_selected_custom_game_mode = ModSettingGet("noita-streak-explorer.streak_mode") == "custom"
mod_settings_version = 1

-- Localize
local function language()
  local current_language = GameTextGet("$current_language")
  if current_language == "English" then
    return "en"
  end
  if current_language == "русский" then
    return "ru"
  end
  if current_language == "Português (Brasil)" then
    return "pt-br"
  end
  if current_language == "Español" then
    return "es-es"
  end
  if current_language == "Deutsch" then
    return "de"
  end
  if current_language == "Français" then
    return "fr-fr"
  end
  if current_language == "Italiano" then
    return "it"
  end
  if current_language == "Polska" then
    return "pl"
  end
  if current_language == "简体中文" then
    return "zh-cn"
  end
  if current_language == "日本語" then
    return "ja"
  end
  if current_language == "한국어" then
    return "ko"
  end

  return "en"
end

local settings_text = {
  streak_mode = {
    ui_name = {
      ja = "選択されているレギュレーション",
    },
    ui_description = {
      ja = "遊ぶレギュレーションを選択してください",
    },
  },
  customize_game_mode = {
    ui_name = {
      ja = "<詳細設定>",
    },
    ui_description = {
      ja = "",
    },
  },
  fix_glass_cannon_enemy = {
    ui_name = {
      ja = "敵パーク「ガラスキャノン」の修正を適応する",
    },
    ui_description = {
      ja = "敵パーク「ガラスキャノン」は倍率計算が間違っている可能性が高いため、\n本来想定されていたであろう値に修正します。\nまた、汚れ等の読み込まれていなかったオプションも適応させます。",
    },
  },
  disable_dragon_in_jungle = {
    ui_name = {
      ja = "ジャングルでドラゴンがでる問題を修正する",
    },
    ui_description = {
      ja = "ナイトメアではジャングルにてドラゴンのスポーンエリアが定義されています。\nそのためバイオーム書き換えにより、ドラゴンが出現する可能性があります。\nジャングルのバイオームに設定されているドラゴンのスポーンを無効化します。",
    },
  },
  disable_holiday_effects = {
    ui_name = {
      ja = "季節イベントを無効化する",
    },
    -- TODO 他のイベントも記載する
    ui_description = {
      ja = "次のイベントを無効化します。\n2月14日 バレンタインデー \nイースター",
    },
  },
}

local function mod_setting_change_game_mode_callback(_mod_id, _gui, _in_main_menu, _game_mode_setting, _old_mode_name, new_mode_name)
  is_selected_custom_game_mode = new_mode_name == "custom"
end

mod_settings = {
  {
    id = "streak_mode",
    ui_name = settings_text.streak_mode.ui_name[language()],
    ui_description = settings_text.streak_mode.ui_description[language()],
    value_default = "normal",
    values = { { "normal", "normal" }, { "nightmare", "nightmare" }, { "custom", "custom" } },
    scope = MOD_SETTING_SCOPE_NEW_GAME,
    change_fn = mod_setting_change_game_mode_callback,
  },
  {
    id = "option.customize_game_mode_title",
    ui_name = settings_text.customize_game_mode.ui_name[language()],
    ui_description = settings_text.customize_game_mode.ui_description[language()],
    not_setting = true,
    hidden = true,
  },
  -- NOTE: ここからストリークの各オプションを書いていく
  {
    id = "option.fix_glass_cannon_enemy",
    ui_name = settings_text.fix_glass_cannon_enemy.ui_name[language()],
    ui_description = settings_text.fix_glass_cannon_enemy.ui_description[language()],
    value_default = false,
    scope = MOD_SETTING_SCOPE_NEW_GAME,
    hidden = true,
  },
  {
    id = "option.disable_dragon_in_jungle",
    ui_name = settings_text.disable_dragon_in_jungle.ui_name[language()],
    ui_description = settings_text.disable_dragon_in_jungle.ui_description[language()],
    value_default = false,
    scope = MOD_SETTING_SCOPE_NEW_GAME,
    hidden = true,
  },
  {
    id = "option.disable_holiday_effects",
    ui_name = settings_text.disable_holiday_effects.ui_name[language()],
    ui_description = settings_text.disable_holiday_effects.ui_description[language()],
    value_default = false,
    scope = MOD_SETTING_SCOPE_NEW_GAME,
    hidden = true,
  },
}

local function draw_detail_when_custom_mode(target_mod_settings)
  for _, setting in ipairs(target_mod_settings) do
    local prefix = "option."
    if setting.id and setting.id:sub(1, #prefix) == prefix then
      if is_selected_custom_game_mode then
        setting.hidden = false
      else
        setting.hidden = true
      end
    end
  end
end
draw_detail_when_custom_mode(mod_settings)

-- This function is called to ensure the correct setting values are visible to the game via ModSettingGet(). your mod's settings don't work if you don't have a function like this defined in settings.lua.
-- This function is called:
--		- when entering the mod settings menu (init_scope will be MOD_SETTINGS_SCOPE_ONLY_SET_DEFAULT)
-- 		- before mod initialization when starting a new game (init_scope will be MOD_SETTING_SCOPE_NEW_GAME)
--		- when entering the game after a restart (init_scope will be MOD_SETTING_SCOPE_RESTART)
--		- at the end of an update when mod settings have been changed via ModSettingsSetNextValue() and the game is unpaused (init_scope will be MOD_SETTINGS_SCOPE_RUNTIME)
function ModSettingsUpdate(init_scope)
  -- selene: allow(unused_variable)
  local old_version = mod_settings_get_version(mod_id) -- This can be used to migrate some settings between mod versions.
  mod_settings_update(mod_id, mod_settings, init_scope)
end

-- This function should return the number of visible setting UI elements.
-- Your mod's settings wont be visible in the mod settings menu if this function isn't defined correctly.
-- If your mod changes the displayed settings dynamically, you might need to implement custom logic.
-- The value will be used to determine whether or not to display various UI elements that link to mod settings.
-- At the moment it is fine to simply return 0 or 1 in a custom implementation, but we don't guarantee that will be the case in the future.
-- This function is called every frame when in the settings menu.
function ModSettingsGuiCount()
  return mod_settings_gui_count(mod_id, mod_settings)
end

-- This function is called to display the settings UI for this mod. Your mod's settings wont be visible in the mod settings menu if this function isn't defined correctly.
function ModSettingsGui(gui, in_main_menu)
  draw_detail_when_custom_mode(mod_settings)

  mod_settings_gui(mod_id, mod_settings, gui, in_main_menu)
end
