Added Japanese

pull/645/head
Lugiad 2024-05-11 01:36:29 +02:00 committed by GitHub
parent 21be1547c6
commit b3b382c76d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 230 additions and 226 deletions

View File

@ -1,226 +1,230 @@
import i18next from "i18next"; import i18next from "i18next";
import BattleScene from "../battle-scene"; import BattleScene from "../battle-scene";
import { hasTouchscreen } from "../touch-controls"; import { hasTouchscreen } from "../touch-controls";
import { updateWindowType } from "../ui/ui-theme"; import { updateWindowType } from "../ui/ui-theme";
import { PlayerGender } from "./game-data"; import { PlayerGender } from "./game-data";
import { Mode } from "#app/ui/ui"; import { Mode } from "#app/ui/ui";
import SettingsUiHandler from "#app/ui/settings-ui-handler"; import SettingsUiHandler from "#app/ui/settings-ui-handler";
export enum Setting { export enum Setting {
Game_Speed = "GAME_SPEED", Game_Speed = "GAME_SPEED",
Master_Volume = "MASTER_VOLUME", Master_Volume = "MASTER_VOLUME",
BGM_Volume = "BGM_VOLUME", BGM_Volume = "BGM_VOLUME",
SE_Volume = "SE_VOLUME", SE_Volume = "SE_VOLUME",
Language = "LANGUAGE", Language = "LANGUAGE",
Damage_Numbers = "DAMAGE_NUMBERS", Damage_Numbers = "DAMAGE_NUMBERS",
UI_Theme = "UI_THEME", UI_Theme = "UI_THEME",
Window_Type = "WINDOW_TYPE", Window_Type = "WINDOW_TYPE",
Tutorials = "TUTORIALS", Tutorials = "TUTORIALS",
Enable_Retries = "ENABLE_RETRIES", Enable_Retries = "ENABLE_RETRIES",
Sprite_Set = "SPRITE_SET", Sprite_Set = "SPRITE_SET",
Move_Animations = "MOVE_ANIMATIONS", Move_Animations = "MOVE_ANIMATIONS",
Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS", Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS",
EXP_Gains_Speed = "EXP_GAINS_SPEED", EXP_Gains_Speed = "EXP_GAINS_SPEED",
EXP_Party_Display = "EXP_PARTY_DISPLAY", EXP_Party_Display = "EXP_PARTY_DISPLAY",
HP_Bar_Speed = "HP_BAR_SPEED", HP_Bar_Speed = "HP_BAR_SPEED",
Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS", Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS",
Player_Gender = "PLAYER_GENDER", Player_Gender = "PLAYER_GENDER",
Gamepad_Support = "GAMEPAD_SUPPORT", Gamepad_Support = "GAMEPAD_SUPPORT",
Swap_A_and_B = "SWAP_A_B", // Swaps which gamepad button handles ACTION and CANCEL Swap_A_and_B = "SWAP_A_B", // Swaps which gamepad button handles ACTION and CANCEL
Touch_Controls = "TOUCH_CONTROLS", Touch_Controls = "TOUCH_CONTROLS",
Vibration = "VIBRATION" Vibration = "VIBRATION"
} }
export interface SettingOptions { export interface SettingOptions {
[key: string]: string[] [key: string]: string[]
} }
export interface SettingDefaults { export interface SettingDefaults {
[key: string]: integer [key: string]: integer
} }
export const settingOptions: SettingOptions = { export const settingOptions: SettingOptions = {
[Setting.Game_Speed]: [ '1x', '1.25x', '1.5x', '2x', '2.5x', '3x', '4x', '5x' ], [Setting.Game_Speed]: [ '1x', '1.25x', '1.5x', '2x', '2.5x', '3x', '4x', '5x' ],
[Setting.Master_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'), [Setting.Master_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'),
[Setting.BGM_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'), [Setting.BGM_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'),
[Setting.SE_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'), [Setting.SE_Volume]: new Array(11).fill(null).map((_, i) => i ? (i * 10).toString() : 'Mute'),
[Setting.Language]: [ 'English', 'Change' ], [Setting.Language]: [ 'English', 'Change' ],
[Setting.Damage_Numbers]: [ 'Off', 'Simple', 'Fancy' ], [Setting.Damage_Numbers]: [ 'Off', 'Simple', 'Fancy' ],
[Setting.UI_Theme]: [ 'Default', 'Legacy' ], [Setting.UI_Theme]: [ 'Default', 'Legacy' ],
[Setting.Window_Type]: new Array(5).fill(null).map((_, i) => (i + 1).toString()), [Setting.Window_Type]: new Array(5).fill(null).map((_, i) => (i + 1).toString()),
[Setting.Tutorials]: [ 'Off', 'On' ], [Setting.Tutorials]: [ 'Off', 'On' ],
[Setting.Enable_Retries]: [ 'Off', 'On' ], [Setting.Enable_Retries]: [ 'Off', 'On' ],
[Setting.Sprite_Set]: [ 'Consistent', 'Mixed Animated' ], [Setting.Sprite_Set]: [ 'Consistent', 'Mixed Animated' ],
[Setting.Move_Animations]: [ 'Off', 'On' ], [Setting.Move_Animations]: [ 'Off', 'On' ],
[Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ], [Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ],
[Setting.EXP_Gains_Speed]: [ 'Normal', 'Fast', 'Faster', 'Skip' ], [Setting.EXP_Gains_Speed]: [ 'Normal', 'Fast', 'Faster', 'Skip' ],
[Setting.EXP_Party_Display]: [ 'Normal', 'Level Up Notification', 'Skip' ], [Setting.EXP_Party_Display]: [ 'Normal', 'Level Up Notification', 'Skip' ],
[Setting.HP_Bar_Speed]: [ 'Normal', 'Fast', 'Faster', 'Instant' ], [Setting.HP_Bar_Speed]: [ 'Normal', 'Fast', 'Faster', 'Instant' ],
[Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ], [Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ],
[Setting.Player_Gender]: [ 'Boy', 'Girl' ], [Setting.Player_Gender]: [ 'Boy', 'Girl' ],
[Setting.Gamepad_Support]: [ 'Auto', 'Disabled' ], [Setting.Gamepad_Support]: [ 'Auto', 'Disabled' ],
[Setting.Swap_A_and_B]: [ 'Enabled', 'Disabled' ], [Setting.Swap_A_and_B]: [ 'Enabled', 'Disabled' ],
[Setting.Touch_Controls]: [ 'Auto', 'Disabled' ], [Setting.Touch_Controls]: [ 'Auto', 'Disabled' ],
[Setting.Vibration]: [ 'Auto', 'Disabled' ] [Setting.Vibration]: [ 'Auto', 'Disabled' ]
}; };
export const settingDefaults: SettingDefaults = { export const settingDefaults: SettingDefaults = {
[Setting.Game_Speed]: 3, [Setting.Game_Speed]: 3,
[Setting.Master_Volume]: 5, [Setting.Master_Volume]: 5,
[Setting.BGM_Volume]: 10, [Setting.BGM_Volume]: 10,
[Setting.SE_Volume]: 10, [Setting.SE_Volume]: 10,
[Setting.Language]: 0, [Setting.Language]: 0,
[Setting.Damage_Numbers]: 0, [Setting.Damage_Numbers]: 0,
[Setting.UI_Theme]: 0, [Setting.UI_Theme]: 0,
[Setting.Window_Type]: 0, [Setting.Window_Type]: 0,
[Setting.Tutorials]: 1, [Setting.Tutorials]: 1,
[Setting.Enable_Retries]: 0, [Setting.Enable_Retries]: 0,
[Setting.Sprite_Set]: 0, [Setting.Sprite_Set]: 0,
[Setting.Move_Animations]: 1, [Setting.Move_Animations]: 1,
[Setting.Show_Stats_on_Level_Up]: 1, [Setting.Show_Stats_on_Level_Up]: 1,
[Setting.EXP_Gains_Speed]: 0, [Setting.EXP_Gains_Speed]: 0,
[Setting.EXP_Party_Display]: 0, [Setting.EXP_Party_Display]: 0,
[Setting.HP_Bar_Speed]: 0, [Setting.HP_Bar_Speed]: 0,
[Setting.Fusion_Palette_Swaps]: 1, [Setting.Fusion_Palette_Swaps]: 1,
[Setting.Player_Gender]: 0, [Setting.Player_Gender]: 0,
[Setting.Gamepad_Support]: 0, [Setting.Gamepad_Support]: 0,
[Setting.Swap_A_and_B]: 1, // Set to 'Disabled' by default [Setting.Swap_A_and_B]: 1, // Set to 'Disabled' by default
[Setting.Touch_Controls]: 0, [Setting.Touch_Controls]: 0,
[Setting.Vibration]: 0 [Setting.Vibration]: 0
}; };
export const reloadSettings: Setting[] = [ Setting.UI_Theme, Setting.Language, Setting.Sprite_Set ]; export const reloadSettings: Setting[] = [ Setting.UI_Theme, Setting.Language, Setting.Sprite_Set ];
export function setSetting(scene: BattleScene, setting: Setting, value: integer): boolean { export function setSetting(scene: BattleScene, setting: Setting, value: integer): boolean {
switch (setting) { switch (setting) {
case Setting.Game_Speed: case Setting.Game_Speed:
scene.gameSpeed = parseFloat(settingOptions[setting][value].replace('x', '')); scene.gameSpeed = parseFloat(settingOptions[setting][value].replace('x', ''));
break; break;
case Setting.Master_Volume: case Setting.Master_Volume:
scene.masterVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; scene.masterVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0;
scene.updateSoundVolume(); scene.updateSoundVolume();
break; break;
case Setting.BGM_Volume: case Setting.BGM_Volume:
scene.bgmVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; scene.bgmVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0;
scene.updateSoundVolume(); scene.updateSoundVolume();
break; break;
case Setting.SE_Volume: case Setting.SE_Volume:
scene.seVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; scene.seVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0;
scene.updateSoundVolume(); scene.updateSoundVolume();
break; break;
case Setting.Damage_Numbers: case Setting.Damage_Numbers:
scene.damageNumbersMode = value; scene.damageNumbersMode = value;
break; break;
case Setting.UI_Theme: case Setting.UI_Theme:
scene.uiTheme = value; scene.uiTheme = value;
break; break;
case Setting.Window_Type: case Setting.Window_Type:
updateWindowType(scene, parseInt(settingOptions[setting][value])); updateWindowType(scene, parseInt(settingOptions[setting][value]));
break; break;
case Setting.Tutorials: case Setting.Tutorials:
scene.enableTutorials = settingOptions[setting][value] === 'On'; scene.enableTutorials = settingOptions[setting][value] === 'On';
break; break;
case Setting.Enable_Retries: case Setting.Enable_Retries:
scene.enableRetries = settingOptions[setting][value] === 'On'; scene.enableRetries = settingOptions[setting][value] === 'On';
break; break;
case Setting.Sprite_Set: case Setting.Sprite_Set:
scene.experimentalSprites = !!value; scene.experimentalSprites = !!value;
if (value) if (value)
scene.initExpSprites(); scene.initExpSprites();
break; break;
case Setting.Move_Animations: case Setting.Move_Animations:
scene.moveAnimations = settingOptions[setting][value] === 'On'; scene.moveAnimations = settingOptions[setting][value] === 'On';
break; break;
case Setting.Show_Stats_on_Level_Up: case Setting.Show_Stats_on_Level_Up:
scene.showLevelUpStats = settingOptions[setting][value] === 'On'; scene.showLevelUpStats = settingOptions[setting][value] === 'On';
break; break;
case Setting.EXP_Gains_Speed: case Setting.EXP_Gains_Speed:
scene.expGainsSpeed = value; scene.expGainsSpeed = value;
break; break;
case Setting.EXP_Party_Display: case Setting.EXP_Party_Display:
scene.expParty = value; scene.expParty = value;
break; break;
case Setting.HP_Bar_Speed: case Setting.HP_Bar_Speed:
scene.hpBarSpeed = value; scene.hpBarSpeed = value;
break; break;
case Setting.Fusion_Palette_Swaps: case Setting.Fusion_Palette_Swaps:
scene.fusionPaletteSwaps = !!value; scene.fusionPaletteSwaps = !!value;
break; break;
case Setting.Player_Gender: case Setting.Player_Gender:
if (scene.gameData) { if (scene.gameData) {
const female = settingOptions[setting][value] === 'Girl'; const female = settingOptions[setting][value] === 'Girl';
scene.gameData.gender = female ? PlayerGender.FEMALE : PlayerGender.MALE; scene.gameData.gender = female ? PlayerGender.FEMALE : PlayerGender.MALE;
scene.trainer.setTexture(scene.trainer.texture.key.replace(female ? 'm' : 'f', female ? 'f' : 'm')); scene.trainer.setTexture(scene.trainer.texture.key.replace(female ? 'm' : 'f', female ? 'f' : 'm'));
} else } else
return false; return false;
break; break;
case Setting.Gamepad_Support: case Setting.Gamepad_Support:
// if we change the value of the gamepad support, we call a method in the inputController to // if we change the value of the gamepad support, we call a method in the inputController to
// activate or deactivate the controller listener // activate or deactivate the controller listener
scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled'); scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled');
break; break;
case Setting.Swap_A_and_B: case Setting.Swap_A_and_B:
scene.abSwapped = settingOptions[setting][value] !== 'Disabled'; scene.abSwapped = settingOptions[setting][value] !== 'Disabled';
break; break;
case Setting.Touch_Controls: case Setting.Touch_Controls:
scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen();
const touchControls = document.getElementById('touchControls'); const touchControls = document.getElementById('touchControls');
if (touchControls) if (touchControls)
touchControls.classList.toggle('visible', scene.enableTouchControls); touchControls.classList.toggle('visible', scene.enableTouchControls);
break; break;
case Setting.Vibration: case Setting.Vibration:
scene.enableVibration = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); scene.enableVibration = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen();
break; break;
case Setting.Language: case Setting.Language:
if (value) { if (value) {
if (scene.ui) { if (scene.ui) {
const cancelHandler = () => { const cancelHandler = () => {
scene.ui.revertMode(); scene.ui.revertMode();
(scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(Object.values(Setting).indexOf(Setting.Language), 0, true); (scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(Object.values(Setting).indexOf(Setting.Language), 0, true);
}; };
const changeLocaleHandler = (locale: string) => { const changeLocaleHandler = (locale: string) => {
i18next.changeLanguage(locale); i18next.changeLanguage(locale);
localStorage.setItem('prLang', locale); localStorage.setItem('prLang', locale);
cancelHandler(); cancelHandler();
scene.reset(true, false, true); scene.reset(true, false, true);
}; };
scene.ui.setOverlayMode(Mode.OPTION_SELECT, { scene.ui.setOverlayMode(Mode.OPTION_SELECT, {
options: [ options: [
{ {
label: 'English', label: 'English',
handler: () => changeLocaleHandler('en') handler: () => changeLocaleHandler('en')
}, },
{ {
label: 'Español', label: 'Español',
handler: () => changeLocaleHandler('es') handler: () => changeLocaleHandler('es')
}, },
{ {
label: 'Italiano', label: 'Italiano',
handler: () => changeLocaleHandler('it') handler: () => changeLocaleHandler('it')
}, },
{ {
label: 'Français', label: 'Français',
handler: () => changeLocaleHandler('fr') handler: () => changeLocaleHandler('fr')
}, },
{ {
label: 'Deutsch', label: 'Deutsch',
handler: () => changeLocaleHandler('de') handler: () => changeLocaleHandler('de')
}, },
{ {
label: '简体中文', label: '简体中文',
handler: () => changeLocaleHandler('zh_CN') handler: () => changeLocaleHandler('zh_CN')
}, },
{ {
label: 'Cancel', label: 'にほんご',
handler: () => cancelHandler() handler: () => changeLocaleHandler('jp')
} },
] {
}); label: 'Cancel',
return false; handler: () => cancelHandler()
} }
} ]
break; });
} return false;
}
return true; }
} break;
}
return true;
}