diff --git a/Makefile b/Makefile index 276c1b2a..5bd6a25a 100644 --- a/Makefile +++ b/Makefile @@ -660,6 +660,11 @@ else BASS_LIBS := lib/bass/libbass.so lib/bass/libbass_fx.so endif +LANG_DIR := lang + +# Remove old lang dir +_ := $(shell rm -rf ./$(BUILD_DIR)/$(LANG_DIR)) + MOD_DIR := mods # Remove old mod dir @@ -1225,6 +1230,9 @@ $(BUILD_DIR)/$(DISCORD_SDK_LIBS): $(BUILD_DIR)/$(BASS_LIBS): @$(CP) -f $(BASS_LIBS) $(BUILD_DIR) +$(BUILD_DIR)/$(LANG_DIR): + @$(CP) -f -r $(LANG_DIR) $(BUILD_DIR) + $(BUILD_DIR)/$(MOD_DIR): @$(CP) -f -r $(MOD_DIR) $(BUILD_DIR) @@ -1591,7 +1599,7 @@ ifeq ($(TARGET_N64),1) $(BUILD_DIR)/$(TARGET).objdump: $(ELF) $(OBJDUMP) -D $< > $@ else - $(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(BUILD_DIR)/$(RPC_LIBS) $(BUILD_DIR)/$(DISCORD_SDK_LIBS) $(BUILD_DIR)/$(BASS_LIBS) $(BUILD_DIR)/$(MOD_DIR) + $(EXE): $(O_FILES) $(MIO0_FILES:.mio0=.o) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(BUILD_DIR)/$(RPC_LIBS) $(BUILD_DIR)/$(DISCORD_SDK_LIBS) $(BUILD_DIR)/$(BASS_LIBS) $(BUILD_DIR)/$(LANG_DIR) $(BUILD_DIR)/$(MOD_DIR) @$(PRINT) "$(GREEN)Linking executable: $(BLUE)$@ $(NO_COL)\n" $(V)$(LD) $(PROF_FLAGS) -L $(BUILD_DIR) -o $@ $(O_FILES) $(ULTRA_O_FILES) $(GODDARD_O_FILES) $(LDFLAGS) $(EXTRA_INCLUDES) endif diff --git a/lang/english.ini b/lang/english.ini new file mode 100644 index 00000000..0b52ae6a --- /dev/null +++ b/lang/english.ini @@ -0,0 +1,272 @@ +[MENU] +BACK = "Back" +CANCEL = "Cancel" +NO = "No" +YES = "Yes" + +[CAMERA] +CAMERA = "CAMERA" +FREE_CAMERA = "Free Camera" +ANALOG_CAMERA = "Analog Camera" +MOUSE_LOOK = "Mouse Look" +INVERT_X = "Invert X" +INVERT_Y = "Invert Y" +X_SENSITIVITY = "X Sensitivity" +Y_SENSITIVITY = "Y Sensitivity" +AGGRESSION = "Aggression" +PAN_LEVEL = "Pan Level" +DECELERATION = "Deceleration" + +[CHEATS] +CHEATS = "CHEATS" +MOON_JUMP = "Moon Jump" +GOD_MODE = "God Mode" +INFINITE_LIVES = "Infinite Lives" +SUPER_SPEED = "Super Speed" +RESPONSIVE_CONTROLS = "Responsive Controls" +RAPID_FIRE = "Rapid Fire (A)" +BLJ_ANYWHERE = "BLJ Anywhere" +ALWAYS_TRIPLE_JUMP = "Always Triple Jump" + +[CONTROLS] +CONTROLS = "CONTROLS" + +N64_BINDS = "N64 Binds" +EXTRA_BINDS = "Extra Binds" +BACKGROUND_GAMEPAD = "Background Gamepad (must restart)" +GAMEPAD = "Gamepad" +DEADZONE = "Deadzone" +RUMBLE_STRENGTH = "Rumble Strength" + +CHAT = "Chat" +PLAYERS = "Players" +D_UP = "D Up" +D_DOWN = "D Down" +D_LEFT = "D Left" +D_RIGHT = "D Right" +X = "X" +Y = "Y" + +UP = "Up" +DOWN = "Down" +LEFT = "Left" +RIGHT = "Right" +A = "A" +B = "B" +START = "Start" +L = "L" +R = "R" +Z = "Z" +C_UP = "C Up" +C_DOWN = "C Down" +C_LEFT = "C Left" +C_RIGHT = "C Right" + +[DISPLAY] +DISPLAY = "DISPLAY" +FULLSCREEN = "Fullscreen" +PRELOAD_TEXTURES = "Preload Textures" +VSYNC = "VSync" +UNCAPPED_FRAMERATE = "Uncapped Framerate" +FRAME_LIMIT = "Frame Limit" +FAST = "Fast" +ACCURATE = "Accurate" +INTERPOLATION = "Interpolation" +NEAREST = "Nearest" +LINEAR = "Linear" +TRIPOINT = "Tripoint" +FILTERING = "Filtering" +D0P5X = "0.5x" +D1X = "1x" +D1P5X = "1.5x" +D3X = "3x" +D10X = "10x" +D100X = "100x" +DRAW_DISTANCE = "Draw Distance" +DYNOS_PACKS = "DynOS Packs" + +[DYNOS] +DYNOS = "DYNOS" + +[HOST_MESSAGE] +INFO_TITLE = "INFO" +WARN_DISCORD = "Invite friends by right clicking their name on Discord and clicking on\n'\\#d0d0ff\\Invite to Game\\#c8c8c8\\'.\n\nYou can invite channels of servers as well by clicking the \\#d0d0ff\\plus\\#c8c8c8\\ button next to the place where you enter chat.\n\nGame Activity \\#ffa0a0\\must be\\#c8c8c8\\ enabled in your\nDiscord user settings.\n\nAppearing offline \\#ffa0a0\\will prevent\\#c8c8c8\\ invites from being sent." +WARN_DISCORD2 = "\\#ffa0a0\\Error:\\#c8c8c8\\ Could not detect Discord.\n\n\\#a0a0a0\\Try closing the game,\nrestarting Discord,\nand opening the game again." +WARN_SOCKET = "Direct connections \\#ffa0a0\\require you\\#c8c8c8\\ to configure port forwarding in your router.\n\nForward port '\\#d0d0ff\\%d\\#c8c8c8\\' for UDP." +HOST = "Host" + +[HOST_MODS] +ROMHACKS = "ROMHACKS" +MODS = "MODS" + +[HOST_SAVE] +SAVE_TITLE = "SAVE" +ERASE_TITLE = "ERASE" +CONFIRM = "Are you sure you want to erase this save slot?" +ERASE = "erase" + +[HOST_SETTINGS] +SETTINGS = "SETTINGS" +NONSOLID = "Non-solid" +SOLID = "Solid" +FRIENDLY_FIRE = "Friendly Fire" +PLAYER_INTERACTION = "Player interaction" +WEAK = "Weak" +NORMAL = "Normal" +TOO_MUCH = "Too much" +KNOCKBACK_STRENGTH = "Knockback strength" +LEAVE_LEVEL = "Leave level" +STAY_IN_LEVEL = "Stay in level" +NONSTOP = "Non-stop" +ON_STAR_COLLECTION = "On star collection" +SKIP_INTRO_CUTSCENE = "Skip intro cutscene" +SHARE_LIVES = "Share lives" +ENABLE_CHEATS = "Enable cheats" +BUBBLE_ON_DEATH = "Bubble on death" +AMOUNT_OF_PLAYERS = "Amount of players" + +[HOST] +SERVER_TITLE = "SERVER" +HOST_TITLE = "HOST" +DISCORD = "Discord" +DIRECT_CONNECTION = "Direct Connection" +NETWORK_SYSTEM = "Network system" +PORT = "Port" +SAVE_SLOT = "Save Slot" +SETTINGS = "Settings" +MODS = "Mods" +ROMHACKS = "Rom-Hacks" +APPLY = "Apply" +HOST = "Host" + +[JOIN_MESSAGE] +JOINING = "JOINING" + +[JOIN] +JOIN_TITLE = "JOIN" +JOIN_DISCORD = "To join a \\#d0d0ff\\Discord\\#c8c8c8\\ lobby:\n\nKeep the game open and click the join button on the invite.\n\nIf the invite says that the game has ended, click the name of the person that sent the invite to refresh it." +JOIN_SOCKET = "Enter \\#d0d0ff\\direct connection\\#c8c8c8\\ IP and port:" +JOIN = "Join" + +[MAIN] +QUIT_TITLE = "QUIT" +QUIT_CONFIRM = "Are you sure you want to quit?" +HOST = "Host" +JOIN = "Join" +OPTIONS = "Options" +QUIT = "Quit" + +[MENU_OPTIONS] +MAIN_MENU = "MAIN MENU" +LEVEL = "Level" +USE_STAGE_MUSIC = "Use Stage Music" +RANDOM_STAGE = "Random Stage" +PLAY_VANILLA_DEMOS = "Play Vanilla Demos" + +[MISC] +DEBUG_TITLE = "DEBUG" +FIXED_COLLISIONS = "Fixed Collisions" +LUA_PROFILER = "Lua Profiler" +DEBUG_PRINT = "Debug Print" +DEBUG_INFO = "Debug Info" +DEBUG_ERRORS = "Debug Errors" +MISC_TITLE = "MISC" +PAUSE_IN_SINGLEPLAYER = "Pause In Singleplayer" +DISABLE_POPUPS = "Disable Popups" +MENU_OPTIONS = "Menu Options" +DEBUG = "Debug" + +[MODLIST] +MODS = "MODS" + +[OPTIONS] +OPTIONS = "OPTIONS" +PLAYER = "Player" +CAMERA = "Camera" +CONTROLS = "Controls" +DISPLAY = "Display" +SOUND = "Sound" +MISC = "Misc" + +[PAUSE] +QUIT_TITLE = "QUIT" +QUIT_HOST = "Are you sure you want to stop hosting?" +QUIT_CLIENT = "Are you sure you want to disconnect?" +PAUSE_TITLE = "PAUSE" +PLAYER = "Player" +DYNOS_PACKS = "DynOS Packs" +OPTIONS = "Options" +CHEATS = "Cheats" +SERVER_SETTINGS = "Server Settings" +RESUME = "Resume" +STOP_HOSTING = "Stop Hosting" +DISCONNECT = "Disconnect" + +[PLAYER] +PLAYER_TITLE = "PLAYER" +OVERALLS = "Overalls" +SHIRT = "Shirt" +GLOVES = "Gloves" +SHOES = "Shoes" +HAIR = "Hair" +SKIN = "Skin" +CAP = "Cap" +PALETTE = "PALETTE" +PART = "Part" +HEX_CODE = "Hex Code" +RED = "Red" +GREEN = "Green" +BLUE = "Blue" +PLAYER = "Player" +NAME = "Name" +MODEL = "Model" +PALETTE_PRESET = "Palette Preset" +EDIT_PALETTE = "Edit Palette" + +[PALETTE] +MARIO = "Mario" +LUIGI = "Luigi" +WALUIGI = "Waluigi" +WARIO = "Wario" +CHUCKYA = "Chuckya" +GOOMBA = "Goomba" +CLOVER = "Clover" +COBALT = "Cobalt" +FURY = "Fury" +HOT_PINK = "Hot Pink" +NICE_PINK = "Nice Pink" +SEAFOAM = "Seafoam" +LILAC = "Lilac" +COPPER = "Copper" +AZURE = "Azure" +BURGUNDY = "Burgundy" +MINT = "Mint" +EGGPLANT = "Eggplant" +ORANGE = "Orange" +ARCTIC = "Arctic" +FIRE_MARIO = "Fire Mario" +FIRE_LUIGI = "Fire Luigi" +FIRE_WALUIGI = "Fire Waluigi" +FIRE_WARIO = "Fire Wario" +BUSY_BEE = "Busy Bee" +FORTRESS = "Fortress" +BATTLEMENTS = "Battlements" +BLUEBERRY_PIE = "Blueberry Pie" +RASPBERRY = "Raspberry" +BUBBLEGUM = "Bubblegum" +ICE_MARIO = "Ice Mario" +ICE_LUIGI = "Ice Luigi" +CUSTOM = "Custom" + +[PLAYER_LIST] +PLAYERS = "PLAYERS" +NAME = "name" +LOCATION = "location" +ACT = "act" + +[SOUND] +SOUND = "SOUND" +MASTER_VOLUME = "Master Volume" +MUSIC_VOLUME = "Music Volume" +SFX_VOLUME = "Sfx Volume" +ENV_VOLUME = "Env Volume" diff --git a/lang/spanish.ini b/lang/spanish.ini new file mode 100644 index 00000000..ae3e6a3a --- /dev/null +++ b/lang/spanish.ini @@ -0,0 +1,272 @@ +[MENU] +BACK = "Atrás" +CANCEL = "Cancelar" +NO = "No" +YES = "Sí" + +[CAMERA] +CAMERA = "CÁMARA" +FREE_CAMERA = "Cámara libre" +ANALOG_CAMERA = "Camara analogica" +MOUSE_LOOK = "Mirada del ratón" +INVERT_X = "Invertir X" +INVERT_Y = "Invertir Y" +X_SENSITIVITY = "Sensibilidad X" +Y_SENSITIVITY = "Sensibilidad Y" +AGGRESSION = "Agresión" +PAN_LEVEL = "Nivel panorámico" +DECELERATION = "Desaceleración" + +[CHEATS] +CHEATS = "TRAMPAS" +MOON_JUMP = "Salto de Luna" +GOD_MODE = "Modo de Dios" +INFINITE_LIVES = "Vidas infinitas" +SUPER_SPEED = "Super velocidad" +RESPONSIVE_CONTROLS = "Controles responsivos" +RAPID_FIRE = "Fuego rápido (A)" +BLJ_ANYWHERE = "BLJ en cualquier lugar" +ALWAYS_TRIPLE_JUMP = "Siempre triple salto" + +[CONTROLS] +CONTROLS = "CONTROLS" + +N64_BINDS = "N64 se une" +EXTRA_BINDS = "Lazos adicionales" +BACKGROUND_GAMEPAD = "Gamepad en segundo plano (debe reiniciarse)" +GAMEPAD = "Control de juegos" +DEADZONE = "Zona muerta" +RUMBLE_STRENGTH = "Fuerza de estruendo" + +CHAT = "Charlar" +PLAYERS = "Jugadores" +D_UP = "D arriba" +D_DOWN = "D abajo" +D_LEFT = "D Izquierda" +D_RIGHT = "D Derecha" +X = "X" +Y = "Y" + +UP = "Arriba" +DOWN = "Abajo" +LEFT = "Izquierda" +RIGHT = "Bien" +A = "A" +B = "B" +START = "Comenzar" +L = "L" +R = "R" +Z = "Z" +C_UP = "Taza" +C_DOWN = "C abajo" +C_LEFT = "C Izquierda" +C_RIGHT = "C Derecha" + +[DISPLAY] +DISPLAY = "MOSTRAR" +FULLSCREEN = "Pantalla completa" +PRELOAD_TEXTURES = "Precargar texturas" +VSYNC = "VSync" +UNCAPPED_FRAMERATE = "Frecuencia de fotogramas sin límite" +FRAME_LIMIT = "Límite de fotogramas" +FAST = "Rápido" +ACCURATE = "Preciso" +INTERPOLATION = "Interpolación" +NEAREST = "Más cercano" +LINEAR = "Lineal" +TRIPOINT = "Tripunto" +FILTERING = "Filtración" +D0P5X = "0.5x" +D1X = "1x" +D1P5X = "1.5x" +D3X = "3x" +D10X = "10x" +D100X = "100x" +DRAW_DISTANCE = "Dibujar distancia" +DYNOS_PACKS = "Paquetes DynOS" + +[DYNOS] +DYNOS = "DYNOS" + +[HOST_MESSAGE] +INFO_TITLE = "INFORMACION" +WARN_DISCORD = "Invita a amigos haciendo clic derecho en su nombre en Discord y haciendo clic en\n'\\#d0d0ff\\Invitar al juego\\#c8c8c8\\'.\n\nTambién puedes invitar a canales de servidores haciendo clic en \\# d0d0ff\\más\\#c8c8c8\\ al lado del lugar donde ingresas al chat.\n\nActividad del juego \\#ffa0a0\\debe estar\\#c8c8c8\\ habilitado en tu\nconfiguración de usuario de Discord.\n\ nAparecer sin conexión \\#ffa0a0\\evitará\\#c8c8c8\\ que se envíen invitaciones". +WARN_DISCORD2 = "\\#ffa0a0\\Error:\\#c8c8c8\\ No se pudo detectar Discord.\n\n\\#a0a0a0\\Intenta cerrar el juego,\nreiniciar Discord\ny abrir el juego nuevamente". +WARN_SOCKET = "Las conexiones directas \\#ffa0a0\\requieren que\\#c8c8c8\\ configure el reenvío de puertos en su enrutador.\n\nReenvíe el puerto '\\#d0d0ff\\%d\\#c8c8c8\\' para UDP". +HOST = "Anfitrión" + +[HOST_MODS] +ROMHACKS = "ROMHACKS" +MODS = "MODIFICACIONES" + +[HOST_SAVE] +SAVE_TITLE = "AHORRAR" +ERASE_TITLE = "BORRAR" +CONFIRM = "¿Estás seguro de que quieres borrar este espacio de guardado?" +ERASE = "borrar" + +[HOST_SETTINGS] +SETTINGS = "AJUSTES" +NONSOLID = "No sólido" +SOLID = "Sólido" +FRIENDLY_FIRE = "Fuego amigo" +PLAYER_INTERACTION = "Interacción del jugador" +WEAK = "Débil" +NORMAL = "Normal" +TOO_MUCH = "Demasiado" +KNOCKBACK_STRENGTH = "Fuerza de retroceso" +LEAVE_LEVEL = "Dejar nivel" +STAY_IN_LEVEL = "Mantente en el nivel" +NONSTOP = "Sin escalas" +ON_STAR_COLLECTION = "Colección de estrellas" +SKIP_INTRO_CUTSCENE = "Saltar escena de introducción" +SHARE_LIVES = "Compartir vidas" +ENABLE_CHEATS = "Habilitar trucos" +BUBBLE_ON_DEATH = "Burbuja sobre la muerte" +AMOUNT_OF_PLAYERS = "Cantidad de jugadores" + +[HOST] +SERVER_TITLE = "SERVIDOR" +HOST_TITLE = "ANFITRIÓN" +DISCORD = "Discord" +DIRECT_CONNECTION = "Conexión directa" +NETWORK_SYSTEM = "Sistema de redes" +PORT = "Puerto" +SAVE_SLOT = "Guardar ranura" +SETTINGS = "Ajustes" +MODS = "Mods" +ROMHACKS = "Rom-Hacks" +APPLY = "Aplicar" +HOST = "Anfitrión" + +[JOIN_MESSAGE] +JOINING = "UNIÓN" + +[JOIN] +JOIN_TITLE = "UNIRSE" +JOIN_DISCORD = "Para unirse a una sala de \\#d0d0ff\\Discord\\#c8c8c8\\:\n\nMantenga el juego abierto y haga clic en el botón para unirse en la invitación.\n\nSi la invitación dice que el juego ha terminado, haga clic en el nombre de la persona que envió la invitación para actualizarla". +JOIN_SOCKET = "Ingrese \\#d0d0ff\\conexión directa\\#c8c8c8\\ IP y puerto:" +JOIN = "Unirse" + +[MAIN] +QUIT_TITLE = "ABANDONAR" +QUIT_CONFIRM = "¿Seguro que quieres salir?" +HOST = "Anfitrión" +JOIN = "Unirse" +OPTIONS = "Opciones" +QUIT = "Abandonar" + +[MENU_OPTIONS] +MAIN_MENU = "MENÚ PRINCIPAL" +LEVEL = "Nivel" +USE_STAGE_MUSIC = "Usar música de escenario" +RANDOM_STAGE = "Etapa aleatoria" +PLAY_VANILLA_DEMOS = "Reproducir demostraciones de vainilla" + +[MISC] +DEBUG_TITLE = "DEPURAR" +FIXED_COLLISIONS = "Colisiones fijas" +LUA_PROFILER = "Perfilador de Lua" +DEBUG_PRINT = "Impresión de depuración" +DEBUG_INFO = "Información de depuración" +DEBUG_ERRORS = "Errores de depuración" +MISC_TITLE = "VARIOS" +PAUSE_IN_SINGLEPLAYER = "Pausar en un jugador" +DISABLE_POPUPS = "Desactivar ventanas emergentes" +MENU_OPTIONS = "Opciones de menú" +DEBUG = "Depurar" + +[MODLIST] +MODS = "MODIFICACIONES" + +[OPTIONS] +OPTIONS = "OPCIONES" +PLAYER = "Jugador" +CAMERA = "Cámara" +CONTROLS = "Controls" +DISPLAY = "Mostrar" +SOUND = "Sonido" +MISC = "Miscelánea" + +[PAUSE] +QUIT_TITLE = "ABANDONAR" +QUIT_HOST = "¿Estás seguro de que quieres dejar de hospedar?" +QUIT_CLIENT = "¿Estás seguro de que quieres desconectarte?" +PAUSE_TITLE = "PAUSA" +PLAYER = "Jugador" +DYNOS_PACKS = "Paquetes DynOS" +OPTIONS = "Opciones" +CHEATS = "Trucos" +SERVER_SETTINGS = "Configuración del servidor" +RESUME = "Reanudar" +STOP_HOSTING = "Dejar de hospedar" +DISCONNECT = "Desconectar" + +[PLAYER] +PLAYER_TITLE = "JUGADOR" +OVERALLS = "Mono" +SHIRT = "Camisa" +GLOVES = "Guantes" +SHOES = "Zapatos" +HAIR = "Cabello" +SKIN = "Piel" +CAP = "Gorra" +PALETTE = "PALETA" +PART = "Parte" +HEX_CODE = "Código hexadecimal" +RED = "Rojo" +GREEN = "Verde" +BLUE = "Azul" +PLAYER = "Jugador" +NAME = "Nombre" +MODEL = "Modelo" +PALETTE_PRESET = "Preajuste de paleta" +EDIT_PALETTE = "Editar paleta" + +[PALETTE] +MARIO = "Mario" +LUIGI = "Luigi" +WALUIGI = "Waluigi" +WARIO = "Wario" +CHUCKYA = "Chuckya" +GOOMBA = "Goomba" +CLOVER = "Trébol" +COBALT = "Cobalto" +FURY = "Furia" +HOT_PINK = "Rosa caliente" +NICE_PINK = "Bonito rosa" +SEAFOAM = "Espuma de mar" +LILAC = "Lila" +COPPER = "Cobre" +AZURE = "Azur" +BURGUNDY = "Borgoña" +MINT = "Menta" +EGGPLANT = "Berenjena" +ORANGE = "Naranja" +ARCTIC = "Ártico" +FIRE_MARIO = "Fuego Mario" +FIRE_LUIGI = "Fuego Luigi" +FIRE_WALUIGI = "Fuego Waluigi" +FIRE_WARIO = "Fuego Wario" +BUSY_BEE = "Abeja ocupada" +FORTRESS = "Fortaleza" +BATTLEMENTS = "Almenas" +BLUEBERRY_PIE = "Pastel de arandanos" +RASPBERRY = "Frambuesa" +BUBBLEGUM = "Chicle" +ICE_MARIO = "Mario de hielo" +ICE_LUIGI = "Luigi de hielo" +CUSTOM = "Costumbre" + +[PLAYER_LIST] +PLAYERS = "JUGADORES" +NAME = "nombre" +LOCATION = "ubicación" +ACT = "acto" + +[SOUND] +SOUND = "SONIDO" +MASTER_VOLUME = "Volumen principal" +MUSIC_VOLUME = "Volumen de la música" +SFX_VOLUME = "Volumen SFX" +ENV_VOLUME = "Volumen envolvente" diff --git a/src/pc/djui/djui.h b/src/pc/djui/djui.h index 54cfa88e..15b4f0f4 100644 --- a/src/pc/djui/djui.h +++ b/src/pc/djui/djui.h @@ -12,6 +12,7 @@ #include "djui_gfx.h" #include "djui_base.h" #include "djui_interactable.h" +#include "djui_language.h" #include "djui_root.h" #include "djui_cursor.h" diff --git a/src/pc/djui/djui_language.c b/src/pc/djui/djui_language.c new file mode 100644 index 00000000..090b408f --- /dev/null +++ b/src/pc/djui/djui_language.c @@ -0,0 +1,19 @@ +#include +#include "djui_unicode.h" +#include "pc/ini.h" +#include "pc/platform.h" + +ini_t* sLang = NULL; + +void djui_language_init(char* filename) { + char path[SYS_MAX_PATH] = ""; + snprintf(path, SYS_MAX_PATH, "%s/lang/%s", sys_exe_path(), filename); + sLang = ini_load(path); +} + +char* djui_language_get(const char *section, const char *key) { + if (!sLang) { return "???"; } + char* value = (char*)ini_get(sLang, section, key); + if (!value) { return "???"; } + return value; +} \ No newline at end of file diff --git a/src/pc/djui/djui_language.h b/src/pc/djui/djui_language.h new file mode 100644 index 00000000..bab35965 --- /dev/null +++ b/src/pc/djui/djui_language.h @@ -0,0 +1,5 @@ +#pragma once +#define DLANG(_SECTION, _KEY) djui_language_get(#_SECTION, #_KEY) + +void djui_language_init(char* filename); +char* djui_language_get(const char *section, const char *key); diff --git a/src/pc/djui/djui_panel_camera.c b/src/pc/djui/djui_panel_camera.c index 11f873d8..2963dfff 100644 --- a/src/pc/djui/djui_panel_camera.c +++ b/src/pc/djui/djui_panel_camera.c @@ -8,23 +8,23 @@ void djui_panel_camera_value_changed(UNUSED struct DjuiBase* caller) { } void djui_panel_camera_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("CAMERA"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CAMERA, CAMERA)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_checkbox_create(body, "Free Camera", &configEnableCamera, djui_panel_camera_value_changed); - djui_checkbox_create(body, "Analog Camera", &configCameraAnalog, djui_panel_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, FREE_CAMERA), &configEnableCamera, djui_panel_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, ANALOG_CAMERA), &configCameraAnalog, djui_panel_camera_value_changed); #ifdef BETTERCAMERA - djui_checkbox_create(body, "Mouse Look", &configCameraMouse, djui_panel_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, MOUSE_LOOK), &configCameraMouse, djui_panel_camera_value_changed); #endif - djui_checkbox_create(body, "Invert X", &configCameraInvertX, djui_panel_camera_value_changed); - djui_checkbox_create(body, "Invert Y", &configCameraInvertY, djui_panel_camera_value_changed); - djui_slider_create(body, "X Sensitivity", &configCameraXSens, 1, 100, djui_panel_camera_value_changed); - djui_slider_create(body, "Y Sensitivity", &configCameraYSens, 1, 100, djui_panel_camera_value_changed); - djui_slider_create(body, "Aggression", &configCameraAggr, 0, 100, djui_panel_camera_value_changed); - djui_slider_create(body, "Pan Level", &configCameraPan, 0, 100, djui_panel_camera_value_changed); - djui_slider_create(body, "Deceleration", &configCameraDegrade, 0, 100, djui_panel_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, INVERT_X), &configCameraInvertX, djui_panel_camera_value_changed); + djui_checkbox_create(body, DLANG(CAMERA, INVERT_Y), &configCameraInvertY, djui_panel_camera_value_changed); + djui_slider_create(body, DLANG(CAMERA, X_SENSITIVITY), &configCameraXSens, 1, 100, djui_panel_camera_value_changed); + djui_slider_create(body, DLANG(CAMERA, Y_SENSITIVITY), &configCameraYSens, 1, 100, djui_panel_camera_value_changed); + djui_slider_create(body, DLANG(CAMERA, AGGRESSION), &configCameraAggr, 0, 100, djui_panel_camera_value_changed); + djui_slider_create(body, DLANG(CAMERA, PAN_LEVEL), &configCameraPan, 0, 100, djui_panel_camera_value_changed); + djui_slider_create(body, DLANG(CAMERA, DECELERATION), &configCameraDegrade, 0, 100, djui_panel_camera_value_changed); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_cheats.c b/src/pc/djui/djui_panel_cheats.c index 67cb171c..dd60ba17 100644 --- a/src/pc/djui/djui_panel_cheats.c +++ b/src/pc/djui/djui_panel_cheats.c @@ -2,19 +2,19 @@ #include "pc/cheats.h" void djui_panel_cheats_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("CHEATS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CHEATS, CHEATS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_checkbox_create(body, "Moon Jump", &gCheats.moonJump, NULL); - djui_checkbox_create(body, "God Mode", &gCheats.godMode, NULL); - djui_checkbox_create(body, "Infinite Lives", &gCheats.infiniteLives, NULL); - djui_checkbox_create(body, "Super Speed", &gCheats.superSpeed, NULL); - djui_checkbox_create(body, "Responsive Controls", &gCheats.responsiveControls, NULL); - djui_checkbox_create(body, "Rapid Fire (A)", &gCheats.rapidFireA, NULL); - djui_checkbox_create(body, "BLJ Anywhere", &gCheats.bljAnywhere, NULL); - djui_checkbox_create(body, "Always Triple Jump", &gCheats.alwaysTripleJump, NULL); + djui_checkbox_create(body, DLANG(CHEATS, MOON_JUMP), &gCheats.moonJump, NULL); + djui_checkbox_create(body, DLANG(CHEATS, GOD_MODE), &gCheats.godMode, NULL); + djui_checkbox_create(body, DLANG(CHEATS, INFINITE_LIVES), &gCheats.infiniteLives, NULL); + djui_checkbox_create(body, DLANG(CHEATS, SUPER_SPEED), &gCheats.superSpeed, NULL); + djui_checkbox_create(body, DLANG(CHEATS, RESPONSIVE_CONTROLS), &gCheats.responsiveControls, NULL); + djui_checkbox_create(body, DLANG(CHEATS, RAPID_FIRE), &gCheats.rapidFireA, NULL); + djui_checkbox_create(body, DLANG(CHEATS, BLJ_ANYWHERE), &gCheats.bljAnywhere, NULL); + djui_checkbox_create(body, DLANG(CHEATS, ALWAYS_TRIPLE_JUMP), &gCheats.alwaysTripleJump, NULL); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_confirm.c b/src/pc/djui/djui_panel_confirm.c index 1c5dc904..8f4633a1 100644 --- a/src/pc/djui/djui_panel_confirm.c +++ b/src/pc/djui/djui_panel_confirm.c @@ -13,8 +13,8 @@ void djui_panel_confirm_create(struct DjuiBase* caller, char* title, char* messa struct DjuiRect* rect1 = djui_rect_container_create(body, 64); { - djui_button_left_create(&rect1->base, "No", DJUI_BUTTON_STYLE_NORMAL, djui_panel_menu_back); - djui_button_right_create(&rect1->base, "Yes", DJUI_BUTTON_STYLE_NORMAL, on_yes_click); + djui_button_left_create(&rect1->base, DLANG(MENU, NO), DJUI_BUTTON_STYLE_NORMAL, djui_panel_menu_back); + djui_button_right_create(&rect1->base, DLANG(MENU, YES), DJUI_BUTTON_STYLE_NORMAL, on_yes_click); } } diff --git a/src/pc/djui/djui_panel_controls.c b/src/pc/djui/djui_panel_controls.c index ee90c55b..90ed9657 100644 --- a/src/pc/djui/djui_panel_controls.c +++ b/src/pc/djui/djui_panel_controls.c @@ -9,12 +9,12 @@ void djui_panel_controls_value_change(UNUSED struct DjuiBase* caller) { } void djui_panel_controls_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("CONTROLS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_button_create(body, "N64 Binds", DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_n64_create); - djui_button_create(body, "Extra Binds", DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_extra_create); - djui_checkbox_create(body, "Background Gamepad (must restart)", &configBackgroundGamepad, NULL); + djui_button_create(body, DLANG(CONTROLS, N64_BINDS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_n64_create); + djui_button_create(body, DLANG(CONTROLS, EXTRA_BINDS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_extra_create); + djui_checkbox_create(body, DLANG(CONTROLS, BACKGROUND_GAMEPAD), &configBackgroundGamepad, NULL); #ifdef HAVE_SDL2 int numJoys = SDL_NumJoysticks(); @@ -31,13 +31,13 @@ void djui_panel_controls_create(struct DjuiBase* caller) { sprintf(&gamepadChoicesLong[index], "%d", i); gamepadChoices[i] = &gamepadChoicesLong[index]; } - djui_selectionbox_create(body, "Gamepad", gamepadChoices, numJoys, &configGamepadNumber, NULL); + djui_selectionbox_create(body, DLANG(CONTROLS, GAMEPAD), gamepadChoices, numJoys, &configGamepadNumber, NULL); #endif - djui_slider_create(body, "Deadzone", &configStickDeadzone, 0, 100, djui_panel_controls_value_change); - djui_slider_create(body, "Rumble Strength", &configRumbleStrength, 0, 100, djui_panel_controls_value_change); + djui_slider_create(body, DLANG(CONTROLS, DEADZONE), &configStickDeadzone, 0, 100, djui_panel_controls_value_change); + djui_slider_create(body, DLANG(CONTROLS, RUMBLE_STRENGTH), &configRumbleStrength, 0, 100, djui_panel_controls_value_change); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_controls_extra.c b/src/pc/djui/djui_panel_controls_extra.c index 0c28fddb..1c79703c 100644 --- a/src/pc/djui/djui_panel_controls_extra.c +++ b/src/pc/djui/djui_panel_controls_extra.c @@ -4,7 +4,7 @@ void djui_panel_controls_extra_create(struct DjuiBase* caller) { f32 bindBodyHeight = 28 * 8 + 1 * 7; - struct DjuiThreePanel* panel = djui_panel_menu_create("CONTROLS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { struct DjuiFlowLayout* bindBody = djui_flow_layout_create(body); @@ -13,17 +13,17 @@ void djui_panel_controls_extra_create(struct DjuiBase* caller) { djui_base_set_color(&bindBody->base, 0, 0, 0, 0); djui_flow_layout_set_margin(bindBody, 1); { - djui_bind_create(&bindBody->base, "Chat", configKeyChat); - djui_bind_create(&bindBody->base, "Players", configKeyPlayerList); - djui_bind_create(&bindBody->base, "D Up", configKeyDUp); - djui_bind_create(&bindBody->base, "D Down", configKeyDDown); - djui_bind_create(&bindBody->base, "D Left", configKeyDLeft); - djui_bind_create(&bindBody->base, "D Right", configKeyDRight); - djui_bind_create(&bindBody->base, "X", configKeyX); - djui_bind_create(&bindBody->base, "Y", configKeyY); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, CHAT), configKeyChat); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, PLAYERS), configKeyPlayerList); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, D_UP), configKeyDUp); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, D_DOWN), configKeyDDown); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, D_LEFT), configKeyDLeft); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, D_RIGHT), configKeyDRight); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, X), configKeyX); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, Y), configKeyY); } - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_controls_n64.c b/src/pc/djui/djui_panel_controls_n64.c index 90d187db..525028a8 100644 --- a/src/pc/djui/djui_panel_controls_n64.c +++ b/src/pc/djui/djui_panel_controls_n64.c @@ -4,7 +4,7 @@ void djui_panel_controls_n64_create(struct DjuiBase* caller) { f32 bindBodyHeight = 28 * 14 + 1 * 13; - struct DjuiThreePanel* panel = djui_panel_menu_create("CONTROLS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { struct DjuiFlowLayout* bindBody = djui_flow_layout_create(body); @@ -13,23 +13,23 @@ void djui_panel_controls_n64_create(struct DjuiBase* caller) { djui_base_set_color(&bindBody->base, 0, 0, 0, 0); djui_flow_layout_set_margin(bindBody, 1); { - djui_bind_create(&bindBody->base, "Up", configKeyStickUp); - djui_bind_create(&bindBody->base, "Down", configKeyStickDown); - djui_bind_create(&bindBody->base, "Left", configKeyStickLeft); - djui_bind_create(&bindBody->base, "Right", configKeyStickRight); - djui_bind_create(&bindBody->base, "A", configKeyA); - djui_bind_create(&bindBody->base, "B", configKeyB); - djui_bind_create(&bindBody->base, "Start", configKeyStart); - djui_bind_create(&bindBody->base, "L", configKeyL); - djui_bind_create(&bindBody->base, "R", configKeyR); - djui_bind_create(&bindBody->base, "Z", configKeyZ); - djui_bind_create(&bindBody->base, "C Up", configKeyCUp); - djui_bind_create(&bindBody->base, "C Down", configKeyCDown); - djui_bind_create(&bindBody->base, "C Left", configKeyCLeft); - djui_bind_create(&bindBody->base, "C Right", configKeyCRight); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, UP), configKeyStickUp); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, DOWN), configKeyStickDown); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, LEFT), configKeyStickLeft); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, RIGHT), configKeyStickRight); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, A), configKeyA); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, B), configKeyB); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, START), configKeyStart); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, L), configKeyL); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, R), configKeyR); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, Z), configKeyZ); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, C_UP), configKeyCUp); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, C_DOWN), configKeyCDown); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, C_LEFT), configKeyCLeft); + djui_bind_create(&bindBody->base, DLANG(CONTROLS, C_RIGHT), configKeyCRight); } - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_display.c b/src/pc/djui/djui_panel_display.c index f16a3195..b2f69682 100644 --- a/src/pc/djui/djui_panel_display.c +++ b/src/pc/djui/djui_panel_display.c @@ -27,24 +27,24 @@ static void djui_panel_display_frame_limit_text_change(struct DjuiBase* caller) } void djui_panel_display_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("DISPLAY"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(DISPLAY, DISPLAY)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_checkbox_create(body, "Fullscreen", &configWindow.fullscreen, djui_panel_display_apply); + djui_checkbox_create(body, DLANG(DISPLAY, FULLSCREEN), &configWindow.fullscreen, djui_panel_display_apply); #ifdef EXTERNAL_DATA - djui_checkbox_create(body, "Preload Textures", &configPrecacheRes, NULL); + djui_checkbox_create(body, DLANG(DISPLAY, PRELOAD_TEXTURES), &configPrecacheRes, NULL); #endif - djui_checkbox_create(body, "VSync", &configWindow.vsync, djui_panel_display_apply); - djui_checkbox_create(body, "Uncapped Framerate", &configUncappedFramerate, djui_panel_display_apply); + djui_checkbox_create(body, DLANG(DISPLAY, VSYNC), &configWindow.vsync, djui_panel_display_apply); + djui_checkbox_create(body, DLANG(DISPLAY, UNCAPPED_FRAMERATE), &configUncappedFramerate, djui_panel_display_apply); struct DjuiRect* rect1 = djui_rect_container_create(body, 32); { if (configFrameLimit < 30) { configFrameLimit = 30; } if (configFrameLimit > 3000) { configFrameLimit = 3000; } - struct DjuiText* text1 = djui_text_create(&rect1->base, "Frame Limit"); + struct DjuiText* text1 = djui_text_create(&rect1->base, DLANG(DISPLAY, FRAME_LIMIT)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_color(&text1->base, 200, 200, 200, 255); djui_base_set_size(&text1->base, 0.485f, 64); @@ -62,20 +62,20 @@ void djui_panel_display_create(struct DjuiBase* caller) { sFrameLimitInput = inputbox1; } - char* interpChoices[2] = { "Fast", "Accurate" }; - struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, "Interpolation", interpChoices, 2, &configInterpolationMode, NULL); + char* interpChoices[2] = { DLANG(DISPLAY, FAST), DLANG(DISPLAY, ACCURATE) }; + struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, DLANG(DISPLAY, INTERPOLATION), interpChoices, 2, &configInterpolationMode, NULL); djui_base_set_enabled(&selectionbox1->base, (configFrameLimit > 30 || (configFrameLimit <= 30 && configUncappedFramerate))); sInterpolationSelectionBox = selectionbox1; - char* filterChoices[3] = { "Nearest", "Linear", "Tripoint" }; - djui_selectionbox_create(body, "Filtering", filterChoices, 3, &configFiltering, NULL); + char* filterChoices[3] = { DLANG(DISPLAY, NEAREST), DLANG(DISPLAY, LINEAR), DLANG(DISPLAY, TRIPOINT) }; + djui_selectionbox_create(body, DLANG(DISPLAY, FILTERING), filterChoices, 3, &configFiltering, NULL); - char* drawDistanceChoices[6] = { "0.5x", "1x", "1.5x", "3x", "10x", "100x" }; - djui_selectionbox_create(body, "Draw Distance", drawDistanceChoices, 6, &configDrawDistance, NULL); + char* drawDistanceChoices[6] = { DLANG(DISPLAY, D0P5X), DLANG(DISPLAY, D1X), DLANG(DISPLAY, D1P5X), DLANG(DISPLAY, D3X), DLANG(DISPLAY, D10X), DLANG(DISPLAY, D100X) }; + djui_selectionbox_create(body, DLANG(DISPLAY, DRAW_DISTANCE), drawDistanceChoices, 6, &configDrawDistance, NULL); - djui_button_create(body, "DynOS Packs", DJUI_BUTTON_STYLE_NORMAL, djui_panel_dynos_create); + djui_button_create(body, DLANG(DISPLAY, DYNOS_PACKS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_dynos_create); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_dynos.c b/src/pc/djui/djui_panel_dynos.c index 8edb139a..ba94e608 100644 --- a/src/pc/djui/djui_panel_dynos.c +++ b/src/pc/djui/djui_panel_dynos.c @@ -9,7 +9,7 @@ static void djui_panel_dynos_apply(struct DjuiBase* caller) { void djui_panel_dynos_create(struct DjuiBase* caller) { int packCount = dynos_pack_get_count(); - struct DjuiThreePanel* panel = djui_panel_menu_create("DYNOS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(DYNOS, DYNOS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { @@ -26,7 +26,7 @@ void djui_panel_dynos_create(struct DjuiBase* caller) { } djui_paginated_calculate_height(paginated); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); panel->bodySize.value = paginated->base.height.value + 16 + 64; } diff --git a/src/pc/djui/djui_panel_host.c b/src/pc/djui/djui_panel_host.c index 57a0ac7e..0f34e6a9 100644 --- a/src/pc/djui/djui_panel_host.c +++ b/src/pc/djui/djui_panel_host.c @@ -67,13 +67,13 @@ static void djui_panel_host_do_host(struct DjuiBase* caller) { void djui_panel_host_create(struct DjuiBase* caller) { struct DjuiBase* defaultBase = NULL; struct DjuiThreePanel* panel = djui_panel_menu_create((gNetworkType == NT_SERVER) - ? "SERVER" - : "HOST"); + ? DLANG(HOST, SERVER_TITLE) + : DLANG(HOST, HOST_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { #ifdef DISCORD_SDK - char* nChoices[2] = { "Discord", "Direct Connection" }; - struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, "Network system", nChoices, 2, &configNetworkSystem, djui_panel_host_network_system_change); + char* nChoices[2] = { DLANG(HOST, DISCORD), DLANG(HOST, DIRECT_CONNECTION) }; + struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, DLANG(HOST, NETWORK_SYSTEM), nChoices, 2, &configNetworkSystem, djui_panel_host_network_system_change); if (gNetworkType == NT_SERVER) { djui_base_set_enabled(&selectionbox1->base, false); } @@ -82,7 +82,7 @@ void djui_panel_host_create(struct DjuiBase* caller) { struct DjuiRect* rect1 = djui_rect_container_create(body, 32); { - struct DjuiText* text1 = djui_text_create(&rect1->base, "Port"); + struct DjuiText* text1 = djui_text_create(&rect1->base, DLANG(HOST, PORT)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_color(&text1->base, 200, 200, 200, 255); djui_base_set_size(&text1->base, 0.485f, 64); @@ -111,7 +111,7 @@ void djui_panel_host_create(struct DjuiBase* caller) { struct DjuiRect* rect2 = djui_rect_container_create(body, 32); { - struct DjuiText* text1 = djui_text_create(&rect2->base, "Save Slot"); + struct DjuiText* text1 = djui_text_create(&rect2->base, DLANG(HOST, SAVE_SLOT)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_color(&text1->base, 200, 200, 200, 255); djui_base_set_size(&text1->base, 0.485f, 64); @@ -124,21 +124,21 @@ void djui_panel_host_create(struct DjuiBase* caller) { djui_base_set_alignment(&button1->base, DJUI_HALIGN_RIGHT, DJUI_VALIGN_TOP); } - djui_button_create(body, "Settings", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_settings_create); + djui_button_create(body, DLANG(HOST, SETTINGS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_settings_create); - struct DjuiButton* button2 = djui_button_create(body, "Mods", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_mods_create); + struct DjuiButton* button2 = djui_button_create(body, DLANG(HOST, MODS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_mods_create); button2->base.tag = 0; - struct DjuiButton* button3 = djui_button_create(body, "Rom-Hacks", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_mods_create); + struct DjuiButton* button3 = djui_button_create(body, DLANG(HOST, ROMHACKS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_mods_create); button3->base.tag = 1; struct DjuiRect* rect3 = djui_rect_container_create(body, 64); { - struct DjuiButton* button1 = djui_button_create(&rect3->base, (gNetworkType == NT_SERVER) ? "Cancel" : "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + struct DjuiButton* button1 = djui_button_create(&rect3->base, (gNetworkType == NT_SERVER) ? DLANG(MENU, CANCEL) : DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); djui_base_set_size(&button1->base, 0.485f, 64); djui_base_set_alignment(&button1->base, DJUI_HALIGN_LEFT, DJUI_VALIGN_TOP); - struct DjuiButton* button2 = djui_button_create(&rect3->base, (gNetworkType == NT_SERVER) ? "Apply" : "Host", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_do_host); + struct DjuiButton* button2 = djui_button_create(&rect3->base, (gNetworkType == NT_SERVER) ? DLANG(HOST, APPLY) : DLANG(HOST, HOST), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_do_host); djui_base_set_size(&button2->base, 0.485f, 64); djui_base_set_alignment(&button2->base, DJUI_HALIGN_RIGHT, DJUI_VALIGN_TOP); diff --git a/src/pc/djui/djui_panel_host_message.c b/src/pc/djui/djui_panel_host_message.c index 8be3416e..f6023a93 100644 --- a/src/pc/djui/djui_panel_host_message.c +++ b/src/pc/djui/djui_panel_host_message.c @@ -11,22 +11,6 @@ #include "audio/external.h" #include "sounds.h" -#ifdef DISCORD_SDK -static char* sWarningDiscord = "\ -Invite friends by right clicking their name on Discord and clicking on\n\ -'\\#d0d0ff\\Invite to Game\\#c8c8c8\\'.\n\n\ -You can invite channels of servers as well by clicking the \\#d0d0ff\\plus\\#c8c8c8\\ button next to the place where you enter chat.\n\n\ -Game Activity \\#ffa0a0\\must be\\#c8c8c8\\ enabled in your\nDiscord user settings.\n\n\ -Appearing offline \\#ffa0a0\\will prevent\\#c8c8c8\\ invites from being sent.\ -"; -static char* sWarningDiscord2 = "\\#ffa0a0\\Error:\\#c8c8c8\\ Could not detect Discord.\n\n\\#a0a0a0\\Try closing the game,\nrestarting Discord,\nand opening the game again."; -#endif - -static char* sWarningSocket = "\ -Direct connections \\#ffa0a0\\require you\\#c8c8c8\\ to configure port forwarding in your router.\n\n\ -Forward port '\\#d0d0ff\\%d\\#c8c8c8\\' for UDP.\ -"; - void djui_panel_do_host(void) { stop_demo(NULL); djui_panel_shutdown(); @@ -72,19 +56,19 @@ void djui_panel_host_message_create(struct DjuiBase* caller) { #ifdef DISCORD_SDK if (!configNetworkSystem) { warningLines = gDiscordFailed ? 5 : 13; - warningMessage = gDiscordFailed ? sWarningDiscord2 : sWarningDiscord; + warningMessage = gDiscordFailed ? DLANG(HOST_MESSAGE, WARN_DISCORD2) : DLANG(HOST_MESSAGE, WARN_DISCORD); hideHostButton = gDiscordFailed; } else #endif { warningLines = 5; warningMessage = calloc(256, sizeof(char)); - sprintf(warningMessage, sWarningSocket, configHostPort); + sprintf(warningMessage, DLANG(HOST_MESSAGE, WARN_SOCKET), configHostPort); } f32 textHeight = 32 * 0.8125f * warningLines + 8; - struct DjuiThreePanel* panel = djui_panel_menu_create("INFO"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(HOST_MESSAGE, INFO_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { struct DjuiText* text1 = djui_text_create(body, warningMessage); @@ -94,8 +78,8 @@ void djui_panel_host_message_create(struct DjuiBase* caller) { struct DjuiRect* rect1 = djui_rect_container_create(body, 64); { - struct DjuiButton* btnHost = djui_button_right_create(&rect1->base, "Host", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_message_do_host); - struct DjuiButton* btnBack = djui_button_left_create(&rect1->base, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + struct DjuiButton* btnHost = djui_button_right_create(&rect1->base, DLANG(HOST_MESSAGE, HOST), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_message_do_host); + struct DjuiButton* btnBack = djui_button_left_create(&rect1->base, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); if (hideHostButton) { djui_base_set_size(&btnBack->base, 1.0f, 64); diff --git a/src/pc/djui/djui_panel_host_mods.c b/src/pc/djui/djui_panel_host_mods.c index fcbf7936..667a3f35 100644 --- a/src/pc/djui/djui_panel_host_mods.c +++ b/src/pc/djui/djui_panel_host_mods.c @@ -91,8 +91,8 @@ void djui_panel_host_mods_create(struct DjuiBase* caller) { mods_update_selectable(); struct DjuiThreePanel* panel = djui_panel_menu_create(isRomHacks - ? "ROMHACKS" - : "MODS" + ? DLANG(HOST_MODS, ROMHACKS) + : DLANG(HOST_MODS, MODS) ); struct DjuiBase* body = djui_three_panel_get_body(panel); { @@ -111,7 +111,7 @@ void djui_panel_host_mods_create(struct DjuiBase* caller) { } djui_paginated_calculate_height(paginated); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); panel->bodySize.value = paginated->base.height.value + 16 + 64; } diff --git a/src/pc/djui/djui_panel_host_save.c b/src/pc/djui/djui_panel_host_save.c index dcdb11d8..b0c56205 100644 --- a/src/pc/djui/djui_panel_host_save.c +++ b/src/pc/djui/djui_panel_host_save.c @@ -28,15 +28,15 @@ static void djui_panel_host_save_erase_yes(struct DjuiBase* caller) { static void djui_panel_host_save_erase(struct DjuiBase* caller) { sEraseButtonTag = caller->tag; djui_panel_confirm_create(caller, - "\\#ff0800\\E\\#1be700\\R\\#00b3ff\\A\\#ffef00\\S\\#ff0800\\E", - "Are you sure you want to erase this save slot?", + DLANG(HOST_SAVE, ERASE_TITLE), + DLANG(HOST_SAVE, CONFIRM), djui_panel_host_save_erase_yes); } void djui_panel_host_save_create(struct DjuiBase* caller) { sSaveButtonCaller = caller; - struct DjuiThreePanel* panel = djui_panel_menu_create("SAVE"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(HOST_SAVE, SAVE_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { for (int i = 0; i < 4; i++) { @@ -48,7 +48,7 @@ void djui_panel_host_save_create(struct DjuiBase* caller) { button1->base.tag = i; sSaveButtons[i] = button1; - struct DjuiButton* button2 = djui_button_create(&rect1->base, "erase", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_save_erase); + struct DjuiButton* button2 = djui_button_create(&rect1->base, DLANG(HOST_SAVE, ERASE), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_save_erase); button2->base.tag = i; djui_base_set_size(&button2->base, 0.24f, 32); djui_base_set_alignment(&button2->base, DJUI_HALIGN_RIGHT, DJUI_VALIGN_TOP); diff --git a/src/pc/djui/djui_panel_host_settings.c b/src/pc/djui/djui_panel_host_settings.c index 5cb325a2..4ca99b9d 100644 --- a/src/pc/djui/djui_panel_host_settings.c +++ b/src/pc/djui/djui_panel_host_settings.c @@ -43,29 +43,29 @@ static void djui_panel_host_player_text_change(struct DjuiBase* caller) { } void djui_panel_host_settings_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("SETTINGS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(HOST_SETTINGS, SETTINGS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - char* iChoices[3] = { "Non-solid", "Solid", "Friendly Fire" }; - djui_selectionbox_create(body, "Player interaction", iChoices, 3, &configPlayerInteraction, NULL); + char* iChoices[3] = { DLANG(HOST_SETTINGS, NONSOLID), DLANG(HOST_SETTINGS, SOLID), DLANG(HOST_SETTINGS, FRIENDLY_FIRE) }; + djui_selectionbox_create(body, DLANG(HOST_SETTINGS, PLAYER_INTERACTION), iChoices, 3, &configPlayerInteraction, NULL); sKnockbackIndex = (configPlayerKnockbackStrength <= 20) ? 0 : ((configPlayerKnockbackStrength <= 40) ? 1 : 2); - char* kChoices[3] = { "Weak", "Normal", "Too much" }; - djui_selectionbox_create(body, "Knockback strength", kChoices, 3, &sKnockbackIndex, djui_panel_host_settings_knockback_change); + char* kChoices[3] = { DLANG(HOST_SETTINGS, WEAK), DLANG(HOST_SETTINGS, NORMAL), DLANG(HOST_SETTINGS, TOO_MUCH) }; + djui_selectionbox_create(body, DLANG(HOST_SETTINGS, KNOCKBACK_STRENGTH), kChoices, 3, &sKnockbackIndex, djui_panel_host_settings_knockback_change); - char* lChoices[3] = { "Leave level", "Stay in level", "Non-stop" }; - djui_selectionbox_create(body, "On star collection", lChoices, 3, &configStayInLevelAfterStar, NULL); + char* lChoices[3] = { DLANG(HOST_SETTINGS, LEAVE_LEVEL), DLANG(HOST_SETTINGS, STAY_IN_LEVEL), DLANG(HOST_SETTINGS, NONSTOP) }; + djui_selectionbox_create(body, DLANG(HOST_SETTINGS, ON_STAR_COLLECTION), lChoices, 3, &configStayInLevelAfterStar, NULL); - djui_checkbox_create(body, "Skip intro cutscene", &configSkipIntro, NULL); - djui_checkbox_create(body, "Share lives", &configShareLives, NULL); - djui_checkbox_create(body, "Enable cheats", &configEnableCheats, NULL); - djui_checkbox_create(body, "Bubble on death", &configBubbleDeath, NULL); + djui_checkbox_create(body, DLANG(HOST_SETTINGS, SKIP_INTRO_CUTSCENE), &configSkipIntro, NULL); + djui_checkbox_create(body, DLANG(HOST_SETTINGS, SHARE_LIVES), &configShareLives, NULL); + djui_checkbox_create(body, DLANG(HOST_SETTINGS, ENABLE_CHEATS), &configEnableCheats, NULL); + djui_checkbox_create(body, DLANG(HOST_SETTINGS, BUBBLE_ON_DEATH), &configBubbleDeath, NULL); struct DjuiRect* rect1 = djui_rect_container_create(body, 32); { - struct DjuiText* text1 = djui_text_create(&rect1->base, "Amount of players"); + struct DjuiText* text1 = djui_text_create(&rect1->base, DLANG(HOST_SETTINGS, AMOUNT_OF_PLAYERS)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_color(&text1->base, 200, 200, 200, 255); djui_base_set_size(&text1->base, 0.485f, 64); @@ -82,7 +82,7 @@ void djui_panel_host_settings_create(struct DjuiBase* caller) { sPlayerAmount = inputbox1; } - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); } diff --git a/src/pc/djui/djui_panel_join.c b/src/pc/djui/djui_panel_join.c index 504a7f76..dca9390b 100644 --- a/src/pc/djui/djui_panel_join.c +++ b/src/pc/djui/djui_panel_join.c @@ -7,18 +7,6 @@ #include "src/pc/configfile.h" #include "src/pc/debuglog.h" -#ifdef DISCORD_SDK -static char* sJoiningDiscord = "\ -To join a \\#d0d0ff\\Discord\\#c8c8c8\\ lobby:\n\n\ -Keep the game open and click the join button on the invite.\n\n\ -If the invite says that the game has ended, click the name of the person that sent the invite to refresh it.\ -"; -#endif - -static char* sJoiningDirect = "\ -Enter \\#d0d0ff\\direct connection\\#c8c8c8\\ IP and port:\ -"; - static struct DjuiInputbox* sInputboxIp = NULL; static bool djui_panel_join_ip_parse_numbers(char** msg) { @@ -166,11 +154,11 @@ void djui_panel_join_create(struct DjuiBase* caller) { #endif struct DjuiBase* defaultBase = NULL; - struct DjuiThreePanel* panel = djui_panel_menu_create("JOIN"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(JOIN, JOIN_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { #ifdef DISCORD_SDK - struct DjuiText* text1 = djui_text_create(body, sJoiningDiscord); + struct DjuiText* text1 = djui_text_create(body, DLANG(JOIN, JOIN_DISCORD)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_size(&text1->base, 1.0f, discordTextHeight); djui_base_set_color(&text1->base, 200, 200, 200, 255); @@ -180,7 +168,7 @@ void djui_panel_join_create(struct DjuiBase* caller) { djui_base_set_size(&rect1->base, 1.0f, 2); djui_base_set_color(&rect1->base, 150, 150, 150, 255); - struct DjuiText* text2 = djui_text_create(body, sJoiningDirect); + struct DjuiText* text2 = djui_text_create(body, DLANG(JOIN, JOIN_SOCKET)); djui_base_set_size_type(&text2->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_size(&text2->base, 1.0f, directTextHeight); djui_base_set_color(&text2->base, 200, 200, 200, 255); @@ -194,11 +182,11 @@ void djui_panel_join_create(struct DjuiBase* caller) { struct DjuiRect* rect2 = djui_rect_container_create(body, 64); { - struct DjuiButton* button1 = djui_button_create(&rect2->base, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + struct DjuiButton* button1 = djui_button_create(&rect2->base, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); djui_base_set_size(&button1->base, 0.485f, 64); djui_base_set_alignment(&button1->base, DJUI_HALIGN_LEFT, DJUI_VALIGN_TOP); - struct DjuiButton* button2 = djui_button_create(&rect2->base, "Join", DJUI_BUTTON_STYLE_NORMAL, djui_panel_join_do_join); + struct DjuiButton* button2 = djui_button_create(&rect2->base, DLANG(JOIN, JOIN), DJUI_BUTTON_STYLE_NORMAL, djui_panel_join_do_join); djui_base_set_size(&button2->base, 0.485f, 64); djui_base_set_alignment(&button2->base, DJUI_HALIGN_RIGHT, DJUI_VALIGN_TOP); defaultBase = &button2->base; diff --git a/src/pc/djui/djui_panel_join_message.c b/src/pc/djui/djui_panel_join_message.c index 3a0df708..a706c5fc 100644 --- a/src/pc/djui/djui_panel_join_message.c +++ b/src/pc/djui/djui_panel_join_message.c @@ -47,7 +47,7 @@ void djui_panel_join_message_create(struct DjuiBase* caller) { u16 directLines = 8; f32 directTextHeight = 32 * 0.8125f * directLines + 8; - struct DjuiThreePanel* panel = djui_panel_menu_create("JOINING"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(JOIN_MESSAGE, JOINING)); struct DjuiBase* body = djui_three_panel_get_body(panel); { struct DjuiText* text1 = djui_text_create(body, "..."); @@ -62,7 +62,7 @@ void djui_panel_join_message_create(struct DjuiBase* caller) { gDownloadProgress = 0; djui_progress_bar_create(body, &gDownloadProgress, 0.0f, 1.0f); - djui_button_create(body, "Cancel", DJUI_BUTTON_STYLE_BACK, djui_panel_join_message_cancel); + djui_button_create(body, DLANG(MENU, CANCEL), DJUI_BUTTON_STYLE_BACK, djui_panel_join_message_cancel); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_main.c b/src/pc/djui/djui_panel_main.c index aa15a96c..139936bd 100644 --- a/src/pc/djui/djui_panel_main.c +++ b/src/pc/djui/djui_panel_main.c @@ -10,8 +10,8 @@ static void djui_panel_main_quit_yes(UNUSED struct DjuiBase* caller) { static void djui_panel_main_quit(struct DjuiBase* caller) { djui_panel_confirm_create(caller, - "QUIT", - "Are you sure you want to quit?", + DLANG(MAIN, QUIT_TITLE), + DLANG(MAIN, QUIT_CONFIRM), djui_panel_main_quit_yes); } @@ -20,12 +20,12 @@ void djui_panel_main_create(struct DjuiBase* caller) { { struct DjuiBase* body = djui_three_panel_get_body(panel); { - struct DjuiButton* button1 = djui_button_create(body, "Host", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_create); + struct DjuiButton* button1 = djui_button_create(body, DLANG(MAIN, HOST), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_create); djui_cursor_input_controlled_center(&button1->base); - djui_button_create(body, "Join", DJUI_BUTTON_STYLE_NORMAL, djui_panel_join_create); - djui_button_create(body, "Options", DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_create); - djui_button_create(body, "Quit", DJUI_BUTTON_STYLE_BACK, djui_panel_main_quit); + djui_button_create(body, DLANG(MAIN, JOIN), DJUI_BUTTON_STYLE_NORMAL, djui_panel_join_create); + djui_button_create(body, DLANG(MAIN, OPTIONS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_create); + djui_button_create(body, DLANG(MAIN, QUIT), DJUI_BUTTON_STYLE_BACK, djui_panel_main_quit); } char* version = get_version_local(); diff --git a/src/pc/djui/djui_panel_menu_options.c b/src/pc/djui/djui_panel_menu_options.c index 8c0f248a..b6ed327d 100644 --- a/src/pc/djui/djui_panel_menu_options.c +++ b/src/pc/djui/djui_panel_menu_options.c @@ -10,7 +10,7 @@ static void djui_panel_random_menu(UNUSED struct DjuiBase* caller) { } void djui_panel_main_menu_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("MAIN MENU"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MENU_OPTIONS, MAIN_MENU)); struct DjuiBase* body = djui_three_panel_get_body(panel); { @@ -33,15 +33,16 @@ void djui_panel_main_menu_create(struct DjuiBase* caller) { "PSS", "TTC", }; - struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, "Level", levelChoices, 17, &configMenuLevel, NULL); + struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, DLANG(MENU_OPTIONS, LEVEL), levelChoices, 17, &configMenuLevel, NULL); djui_base_set_enabled(&selectionbox1->base, !configMenuRandom); sLevelBox = selectionbox1; - - djui_checkbox_create(body, "Use Stage Music", &configMenuSound, NULL); - djui_checkbox_create(body, "Random Stage", &configMenuRandom, djui_panel_random_menu); - djui_checkbox_create(body, "Play Vanilla Demos", &configMenuDemos, stop_demo); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_checkbox_create(body, DLANG(MENU_OPTIONS, USE_STAGE_MUSIC), &configMenuSound, NULL); + djui_checkbox_create(body, DLANG(MENU_OPTIONS, RANDOM_STAGE), &configMenuRandom, djui_panel_random_menu); + djui_checkbox_create(body, DLANG(MENU_OPTIONS, PLAY_VANILLA_DEMOS), &configMenuDemos, stop_demo); + + + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_misc.c b/src/pc/djui/djui_panel_misc.c index 27c02e4d..c7c20332 100644 --- a/src/pc/djui/djui_panel_misc.c +++ b/src/pc/djui/djui_panel_misc.c @@ -5,17 +5,17 @@ #ifdef DEVELOPMENT void djui_panel_options_debug_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("DEBUG"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MISC, DEBUG_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_checkbox_create(body, "Fixed Collisions", (bool*)&gLevelValues.fixCollisionBugs, NULL); - djui_checkbox_create(body, "Lua Profiler", &configLuaProfiler, NULL); - djui_checkbox_create(body, "Debug Print", &configDebugPrint, NULL); - djui_checkbox_create(body, "Debug Info", &configDebugInfo, NULL); - djui_checkbox_create(body, "Debug Errors", &configDebugError, NULL); + djui_checkbox_create(body, DLANG(MISC, FIXED_COLLISIONS), (bool*)&gLevelValues.fixCollisionBugs, NULL); + djui_checkbox_create(body, DLANG(MISC, LUA_PROFILER), &configLuaProfiler, NULL); + djui_checkbox_create(body, DLANG(MISC, DEBUG_PRINT), &configDebugPrint, NULL); + djui_checkbox_create(body, DLANG(MISC, DEBUG_INFO), &configDebugInfo, NULL); + djui_checkbox_create(body, DLANG(MISC, DEBUG_ERRORS), &configDebugError, NULL); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); @@ -23,20 +23,17 @@ void djui_panel_options_debug_create(struct DjuiBase* caller) { #endif void djui_panel_misc_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("MISC"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MISC, MISC_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_checkbox_create(body, "Pause In Singleplayer", &configSingleplayerPause, NULL); - djui_checkbox_create(body, "Disable Popups", &configDisablePopups, NULL); - - djui_button_create(body, "Menu Options", DJUI_BUTTON_STYLE_NORMAL, djui_panel_main_menu_create); - + djui_checkbox_create(body, DLANG(MISC, PAUSE_IN_SINGLEPLAYER), &configSingleplayerPause, NULL); + djui_checkbox_create(body, DLANG(MISC, DISABLE_POPUPS), &configDisablePopups, NULL); + djui_button_create(body, DLANG(MISC, MENU_OPTIONS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_main_menu_create); #ifdef DEVELOPMENT - djui_button_create(body, "Debug", DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_debug_create); + djui_button_create(body, DLANG(MISC, DEBUG), DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_debug_create); #endif - - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_modlist.c b/src/pc/djui/djui_panel_modlist.c index fb082621..39339c54 100644 --- a/src/pc/djui/djui_panel_modlist.c +++ b/src/pc/djui/djui_panel_modlist.c @@ -20,7 +20,7 @@ void djui_panel_modlist_create(UNUSED struct DjuiBase* caller) { if (gActiveMods.entryCount == 0) { return; } f32 bodyHeight = (gActiveMods.entryCount * 32) + (gActiveMods.entryCount - 1) * 4; - struct DjuiThreePanel* panel = djui_panel_menu_create("MODS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MODLIST, MODS)); djui_three_panel_set_body_size(panel, bodyHeight); gDjuiModList = panel; diff --git a/src/pc/djui/djui_panel_options.c b/src/pc/djui/djui_panel_options.c index 1ab439c8..08f0531c 100644 --- a/src/pc/djui/djui_panel_options.c +++ b/src/pc/djui/djui_panel_options.c @@ -8,16 +8,16 @@ void djui_panel_options_back(struct DjuiBase* caller) { } void djui_panel_options_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("OPTIONS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(OPTIONS, OPTIONS)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_button_create(body, "Player", DJUI_BUTTON_STYLE_NORMAL, djui_panel_player_create); - djui_button_create(body, "Camera", DJUI_BUTTON_STYLE_NORMAL, djui_panel_camera_create); - djui_button_create(body, "Controls", DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_create); - djui_button_create(body, "Display", DJUI_BUTTON_STYLE_NORMAL, djui_panel_display_create); - djui_button_create(body, "Sound", DJUI_BUTTON_STYLE_NORMAL, djui_panel_sound_create); - djui_button_create(body, "Misc", DJUI_BUTTON_STYLE_NORMAL, djui_panel_misc_create); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_options_back); + djui_button_create(body, DLANG(OPTIONS, PLAYER), DJUI_BUTTON_STYLE_NORMAL, djui_panel_player_create); + djui_button_create(body, DLANG(OPTIONS, CAMERA), DJUI_BUTTON_STYLE_NORMAL, djui_panel_camera_create); + djui_button_create(body, DLANG(OPTIONS, CONTROLS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_create); + djui_button_create(body, DLANG(OPTIONS, DISPLAY), DJUI_BUTTON_STYLE_NORMAL, djui_panel_display_create); + djui_button_create(body, DLANG(OPTIONS, SOUND), DJUI_BUTTON_STYLE_NORMAL, djui_panel_sound_create); + djui_button_create(body, DLANG(OPTIONS, MISC), DJUI_BUTTON_STYLE_NORMAL, djui_panel_misc_create); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_options_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_pause.c b/src/pc/djui/djui_panel_pause.c index ef60ae5a..00bf2ff3 100644 --- a/src/pc/djui/djui_panel_pause.c +++ b/src/pc/djui/djui_panel_pause.c @@ -22,13 +22,13 @@ static void djui_panel_pause_quit(struct DjuiBase* caller) { if (gNetworkType == NT_SERVER) { djui_panel_confirm_create(caller, - "QUIT", - "Are you sure you want to stop hosting?", + DLANG(PAUSE, QUIT_TITLE), + DLANG(PAUSE, QUIT_HOST), djui_panel_pause_quit_yes); } else { djui_panel_confirm_create(caller, - "QUIT", - "Are you sure you want to disconnect?", + DLANG(PAUSE, QUIT_TITLE), + DLANG(PAUSE, QUIT_CLIENT), djui_panel_pause_quit_yes); } } @@ -37,33 +37,33 @@ void djui_panel_pause_create(struct DjuiBase* caller) { if (gDjuiChatBoxFocus) { djui_chat_box_toggle(); } struct DjuiBase* defaultBase = NULL; - struct DjuiThreePanel* panel = djui_panel_menu_create("PAUSE"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(PAUSE, PAUSE_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { struct DjuiRect* rect1 = djui_rect_container_create(body, 64); { - djui_button_left_create(&rect1->base, "Player", DJUI_BUTTON_STYLE_NORMAL, djui_panel_player_create); - djui_button_right_create(&rect1->base, "DynOS Packs", DJUI_BUTTON_STYLE_NORMAL, djui_panel_dynos_create); + djui_button_left_create(&rect1->base, DLANG(PAUSE, PLAYER), DJUI_BUTTON_STYLE_NORMAL, djui_panel_player_create); + djui_button_right_create(&rect1->base, DLANG(PAUSE, DYNOS_PACKS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_dynos_create); } - struct DjuiButton* button3 = djui_button_create(body, "Options", DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_create); + struct DjuiButton* button3 = djui_button_create(body, DLANG(PAUSE, OPTIONS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_create); defaultBase = &button3->base; if (gServerSettings.enableCheats) { - djui_button_create(body, "Cheats", DJUI_BUTTON_STYLE_NORMAL, djui_panel_cheats_create); + djui_button_create(body, DLANG(PAUSE, CHEATS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_cheats_create); } if (gNetworkType == NT_SERVER) { - djui_button_create(body, "Server Settings", DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_create); + djui_button_create(body, DLANG(PAUSE, SERVER_SETTINGS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_host_create); } - djui_button_create(body, "Resume", DJUI_BUTTON_STYLE_NORMAL, djui_panel_pause_resume); + djui_button_create(body, DLANG(PAUSE, RESUME), DJUI_BUTTON_STYLE_NORMAL, djui_panel_pause_resume); if (gNetworkType == NT_SERVER) { - djui_button_create(body, "Stop Hosting", DJUI_BUTTON_STYLE_BACK, djui_panel_pause_quit); + djui_button_create(body, DLANG(PAUSE, STOP_HOSTING), DJUI_BUTTON_STYLE_BACK, djui_panel_pause_quit); } else { - djui_button_create(body, "Disconnect", DJUI_BUTTON_STYLE_BACK, djui_panel_pause_quit); + djui_button_create(body, DLANG(PAUSE, DISCONNECT), DJUI_BUTTON_STYLE_BACK, djui_panel_pause_quit); } } diff --git a/src/pc/djui/djui_panel_player.c b/src/pc/djui/djui_panel_player.c index 7c4b6fbf..eb4cf8bb 100644 --- a/src/pc/djui/djui_panel_player.c +++ b/src/pc/djui/djui_panel_player.c @@ -114,9 +114,9 @@ void djui_panel_player_edit_palette_destroy(struct DjuiBase* caller) { } static void djui_panel_player_edit_palette_create(struct DjuiBase* caller) { - char* sPartStrings[PLAYER_PART_MAX] = { "Overalls", "Shirt", "Gloves", "Shoes", "Hair", "Skin", "Cap" }; + char* sPartStrings[PLAYER_PART_MAX] = { DLANG(PLAYER, OVERALLS), DLANG(PLAYER, SHIRT), DLANG(PLAYER, GLOVES), DLANG(PLAYER, SHOES), DLANG(PLAYER, HAIR), DLANG(PLAYER, SKIN), DLANG(PLAYER, CAP) }; - struct DjuiThreePanel* panel = djui_panel_menu_create("PALETTE"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(PLAYER, PALETTE)); // Set current palette to custom when clicking on Edit Palette sPalettePresetIndex = PALETTE_CUSTOM; @@ -132,11 +132,11 @@ static void djui_panel_player_edit_palette_create(struct DjuiBase* caller) { { sCurrentPlayerPart = SHIRT; - djui_selectionbox_create(body, "Part", sPartStrings, PLAYER_PART_MAX, &sCurrentPlayerPart, djui_panel_player_edit_palette_part_changed); + djui_selectionbox_create(body, DLANG(PLAYER, PART), sPartStrings, PLAYER_PART_MAX, &sCurrentPlayerPart, djui_panel_player_edit_palette_part_changed); struct DjuiRect* rect1 = djui_rect_container_create(body, 32); { - struct DjuiText* text1 = djui_text_create(&rect1->base, "Hex Code"); + struct DjuiText* text1 = djui_text_create(&rect1->base, DLANG(PLAYER, HEX_CODE)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_color(&text1->base, 200, 200, 200, 255); djui_base_set_size(&text1->base, 0.485f, 64); @@ -152,11 +152,11 @@ static void djui_panel_player_edit_palette_create(struct DjuiBase* caller) { for (int i = 0; i < 3; i++) sSliderChannels[i] = configCustomPalette.parts[SHIRT][i]; - sSliderR = djui_slider_create(body, "Red", &sSliderChannels[0], 0, 255, djui_panel_player_edit_palette_red_changed); - sSliderG = djui_slider_create(body, "Green", &sSliderChannels[1], 0, 255, djui_panel_player_edit_palette_green_changed); - sSliderB = djui_slider_create(body, "Blue", &sSliderChannels[2], 0, 255, djui_panel_player_edit_palette_blue_changed); + sSliderR = djui_slider_create(body, DLANG(PLAYER, RED), &sSliderChannels[0], 0, 255, djui_panel_player_edit_palette_red_changed); + sSliderG = djui_slider_create(body, DLANG(PLAYER, GREEN), &sSliderChannels[1], 0, 255, djui_panel_player_edit_palette_green_changed); + sSliderB = djui_slider_create(body, DLANG(PLAYER, BLUE), &sSliderChannels[2], 0, 255, djui_panel_player_edit_palette_blue_changed); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); @@ -186,7 +186,7 @@ static void djui_panel_player_name_text_change(struct DjuiBase* caller) { static void djui_panel_player_name_on_focus_end(struct DjuiBase* caller) { struct DjuiInputbox* inputbox1 = (struct DjuiInputbox*)caller; if (!djui_panel_player_name_valid(inputbox1->buffer)) { - djui_inputbox_set_text(inputbox1, "Player"); + djui_inputbox_set_text(inputbox1, DLANG(PLAYER, PLAYER)); } snprintf(configPlayerName, 20, "%s", inputbox1->buffer); djui_inputbox_set_text_color(inputbox1, 0, 0, 0, 255); @@ -231,13 +231,13 @@ void djui_panel_player_create(struct DjuiBase* caller) { djui_panel_player_prevent_demo(NULL); gInPlayerMenu = true; - struct DjuiThreePanel* panel = djui_panel_menu_create("PLAYER"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(PLAYER, PLAYER_TITLE)); struct DjuiBase* body = djui_three_panel_get_body(panel); { struct DjuiRect* rect1 = djui_rect_container_create(body, 32); { - struct DjuiText* text1 = djui_text_create(&rect1->base, "Name"); + struct DjuiText* text1 = djui_text_create(&rect1->base, DLANG(PLAYER, NAME)); djui_base_set_size_type(&text1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_color(&text1->base, 200, 200, 200, 255); djui_base_set_size(&text1->base, 0.485f, 64); @@ -250,7 +250,7 @@ void djui_panel_player_create(struct DjuiBase* caller) { if (djui_panel_player_name_valid(configPlayerName)) { djui_inputbox_set_text(inputbox1, configPlayerName); } else { - djui_inputbox_set_text(inputbox1, "Player"); + djui_inputbox_set_text(inputbox1, DLANG(PLAYER, PLAYER)); } djui_interactable_hook_value_change(&inputbox1->base, djui_panel_player_name_text_change); djui_interactable_hook_focus(&inputbox1->base, NULL, NULL, djui_panel_player_name_on_focus_end); @@ -260,42 +260,42 @@ void djui_panel_player_create(struct DjuiBase* caller) { for (int i = 0; i < CT_MAX; i++) { modelChoices[i] = gCharacters[i].name; } - djui_selectionbox_create(body, "Model", modelChoices, CT_MAX, &configPlayerModel, djui_panel_player_value_changed); + djui_selectionbox_create(body, DLANG(PLAYER, MODEL), modelChoices, CT_MAX, &configPlayerModel, djui_panel_player_value_changed); char* paletteChoices[PALETTE_PRESET_MAX+1] = { - "Mario", - "Luigi", - "Waluigi", - "Wario", - "Chuckya", - "Goomba", - "Clover", - "Cobalt", - "Fury", - "Hot Pink", - "Nice Pink", - "Seafoam", - "Lilac", - "Copper", - "Azure", - "Burgundy", - "Mint", - "Eggplant", - "Orange", - "Arctic", - "Fire Mario", - "Fire Luigi", - "Fire Waluigi", - "Fire Wario", - "Busy Bee", - "Fortress", - "Battlements", - "Blueberry Pie", - "Raspberry", - "Bubblegum", - "Ice Mario", - "Ice Luigi", - "Custom", + DLANG(PALETTE, MARIO), + DLANG(PALETTE, LUIGI), + DLANG(PALETTE, WALUIGI), + DLANG(PALETTE, WARIO), + DLANG(PALETTE, CHUCKYA), + DLANG(PALETTE, GOOMBA), + DLANG(PALETTE, CLOVER), + DLANG(PALETTE, COBALT), + DLANG(PALETTE, FURY), + DLANG(PALETTE, HOT_PINK), + DLANG(PALETTE, NICE_PINK), + DLANG(PALETTE, SEAFOAM), + DLANG(PALETTE, LILAC), + DLANG(PALETTE, COPPER), + DLANG(PALETTE, AZURE), + DLANG(PALETTE, BURGUNDY), + DLANG(PALETTE, MINT), + DLANG(PALETTE, EGGPLANT), + DLANG(PALETTE, ORANGE), + DLANG(PALETTE, ARCTIC), + DLANG(PALETTE, FIRE_MARIO), + DLANG(PALETTE, FIRE_LUIGI), + DLANG(PALETTE, FIRE_WALUIGI), + DLANG(PALETTE, FIRE_WARIO), + DLANG(PALETTE, BUSY_BEE), + DLANG(PALETTE, FORTRESS), + DLANG(PALETTE, BATTLEMENTS), + DLANG(PALETTE, BLUEBERRY_PIE), + DLANG(PALETTE, RASPBERRY), + DLANG(PALETTE, BUBBLEGUM), + DLANG(PALETTE, ICE_MARIO), + DLANG(PALETTE, ICE_LUIGI), + DLANG(PALETTE, CUSTOM), }; for (int i = 0; i < PALETTE_PRESET_MAX; i++) { @@ -305,10 +305,10 @@ void djui_panel_player_create(struct DjuiBase* caller) { } } - sPalettePresetSelection = djui_selectionbox_create(body, "Palette Preset", paletteChoices, PALETTE_PRESET_MAX+1, &sPalettePresetIndex, djui_panel_player_value_changed); + sPalettePresetSelection = djui_selectionbox_create(body, DLANG(PLAYER, PALETTE_PRESET), paletteChoices, PALETTE_PRESET_MAX+1, &sPalettePresetIndex, djui_panel_player_value_changed); - djui_button_create(body, "Edit Palette", DJUI_BUTTON_STYLE_NORMAL, djui_panel_player_edit_palette_create); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_button_create(body, DLANG(PLAYER, EDIT_PALETTE), DJUI_BUTTON_STYLE_NORMAL, djui_panel_player_edit_palette_create); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } struct DjuiPanel* p = djui_panel_add(caller, panel, NULL); diff --git a/src/pc/djui/djui_panel_playerlist.c b/src/pc/djui/djui_panel_playerlist.c index 08bd7bbf..047365f4 100644 --- a/src/pc/djui/djui_panel_playerlist.c +++ b/src/pc/djui/djui_panel_playerlist.c @@ -66,7 +66,7 @@ void djui_panel_playerlist_on_render_pre(UNUSED struct DjuiBase* base, UNUSED bo void djui_panel_playerlist_create(UNUSED struct DjuiBase* caller) { f32 bodyHeight = (MAX_PLAYERS * 32) + (MAX_PLAYERS - 1) * 4; - struct DjuiThreePanel* panel = djui_panel_menu_create("PLAYERS"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(PLAYER_LIST, PLAYERS)); djui_three_panel_set_body_size(panel, bodyHeight); gDjuiPlayerList = panel; panel->base.on_render_pre = djui_panel_playerlist_on_render_pre; @@ -94,7 +94,7 @@ void djui_panel_playerlist_create(UNUSED struct DjuiBase* caller) { djuiImages[i] = i1; int t = 220; - struct DjuiText* t2 = djui_text_create(&row->base, "name"); + struct DjuiText* t2 = djui_text_create(&row->base, DLANG(PLAYER_LIST, NAME)); djui_base_set_size_type(&t2->base, DJUI_SVT_ABSOLUTE, DJUI_SVT_ABSOLUTE); djui_base_set_size(&t2->base, 180, 32.0f); djui_base_set_color(&t2->base, t, t, t, 255); @@ -107,14 +107,14 @@ void djui_panel_playerlist_create(UNUSED struct DjuiBase* caller) { djui_text_set_alignment(t3, DJUI_HALIGN_CENTER, DJUI_VALIGN_TOP); djuiTextDescriptions[i] = t3; - struct DjuiText* t4 = djui_text_create(&row->base, "location"); + struct DjuiText* t4 = djui_text_create(&row->base, DLANG(PLAYER_LIST, LOCATION)); djui_base_set_size_type(&t4->base, DJUI_SVT_ABSOLUTE, DJUI_SVT_ABSOLUTE); djui_base_set_size(&t4->base, 300 - 100, 32.0f); djui_base_set_color(&t4->base, t, t, t, 255); djui_text_set_alignment(t4, DJUI_HALIGN_RIGHT, DJUI_VALIGN_TOP); djuiTextLocations[i] = t4; - struct DjuiText* t5 = djui_text_create(&row->base, "act"); + struct DjuiText* t5 = djui_text_create(&row->base, DLANG(PLAYER_LIST, ACT)); djui_base_set_size_type(&t5->base, DJUI_SVT_ABSOLUTE, DJUI_SVT_ABSOLUTE); djui_base_set_size(&t5->base, 100, 32.0f); djui_base_set_color(&t5->base, t, t, t, 255); diff --git a/src/pc/djui/djui_panel_sound.c b/src/pc/djui/djui_panel_sound.c index 6a3643ad..1058d784 100644 --- a/src/pc/djui/djui_panel_sound.c +++ b/src/pc/djui/djui_panel_sound.c @@ -3,15 +3,15 @@ #include "src/pc/configfile.h" void djui_panel_sound_create(struct DjuiBase* caller) { - struct DjuiThreePanel* panel = djui_panel_menu_create("SOUND"); + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(SOUND, SOUND)); struct DjuiBase* body = djui_three_panel_get_body(panel); { - djui_slider_create(body, "Master Volume", &configMasterVolume, 0, 127, NULL); - djui_slider_create(body, "Music Volume", &configMusicVolume, 0, 127, NULL); - djui_slider_create(body, "Sfx Volume", &configSfxVolume, 0, 127, NULL); - djui_slider_create(body, "Env Volume", &configEnvVolume, 0, 127, NULL); - djui_button_create(body, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + djui_slider_create(body, DLANG(SOUND, MASTER_VOLUME), &configMasterVolume, 0, 127, NULL); + djui_slider_create(body, DLANG(SOUND, MUSIC_VOLUME), &configMusicVolume, 0, 127, NULL); + djui_slider_create(body, DLANG(SOUND, SFX_VOLUME), &configSfxVolume, 0, 127, NULL); + djui_slider_create(body, DLANG(SOUND, ENV_VOLUME), &configEnvVolume, 0, 127, NULL); + djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } djui_panel_add(caller, panel, NULL); diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 9f4ace81..a21f863b 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -273,6 +273,7 @@ void main_func(void) { const char *userpath = gCLIOpts.SavePath[0] ? gCLIOpts.SavePath : sys_user_path(); fs_init(sys_ropaths, gamedir, userpath); + djui_language_init("english.ini"); sync_objects_init_system(); djui_unicode_init(); mods_init();