Added Japanese
parent
21be1547c6
commit
b3b382c76d
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue