diff --git a/autogen/lua_definitions/constants.lua b/autogen/lua_definitions/constants.lua index 635889451..5ca80b3d9 100644 --- a/autogen/lua_definitions/constants.lua +++ b/autogen/lua_definitions/constants.lua @@ -12579,7 +12579,7 @@ MINOR_VERSION_NUMBER = 1 PATCH_VERSION_NUMBER = 0 --- @type string -SM64COOPDX_VERSION = "v0.1.1" +SM64COOPDX_VERSION = "v0.1.2" --- @type integer VERSION_NUMBER = 36 diff --git a/lang/Czech.ini b/lang/Czech.ini index 6b62de99f..363592e63 100644 --- a/lang/Czech.ini +++ b/lang/Czech.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pauza v hře s jedním hráčem" DISABLE_POPUPS = "Vypnout vyskakovací okna" MENU_OPTIONS = "Nastavení hlavního menu" INFORMATION = "Informace" +CHANGELOG = "Záznam změn" DEBUG = "Debug" LANGUAGE = "Jazyk" COOP_COMPATIBILITY = "Povolit kompatibilitu sm64ex-coop" @@ -388,3 +389,6 @@ REFRESHING = "Obnovování..." ENTER_PASSWORD = "Zadejte heslo soukromé hry:" SEARCH = "Hledat" NONE_FOUND = "Nebyly nalezeny žádné hry." + +[CHANGELOG] +CHANGELOG_TITLE = "ZÁZNAM ZMĚN" diff --git a/lang/Dutch.ini b/lang/Dutch.ini index e957b1f5f..390c6bd8e 100644 --- a/lang/Dutch.ini +++ b/lang/Dutch.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pauzeer in een speler" DISABLE_POPUPS = "Popups uitzetten" MENU_OPTIONS = "Menu Instellingen" INFORMATION = "Informatie" +CHANGELOG = "Wijzigingenlogboek" DEBUG = "Debug" LANGUAGE = "Taal" COOP_COMPATIBILITY = "Schakel sm64ex-coop compatibiliteit in" @@ -388,3 +389,6 @@ REFRESHING = "herladen..." ENTER_PASSWORD = "Typ het wachtwoord van de privé lobby:" SEARCH = "Zoek" NONE_FOUND = "Er zijn geen lobby's gevonden." + +[CHANGELOG] +CHANGELOG_TITLE = "WIJZIGINGENLOGBOEK" diff --git a/lang/English.ini b/lang/English.ini index 462e558a2..7dcff145a 100644 --- a/lang/English.ini +++ b/lang/English.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pause In Singleplayer" DISABLE_POPUPS = "Disable Popups" MENU_OPTIONS = "Menu Options" INFORMATION = "Info" +CHANGELOG = "Changelog" DEBUG = "Debug" LANGUAGE = "Language" COOP_COMPATIBILITY = "Enable sm64ex-coop Compatibility" @@ -388,3 +389,6 @@ REFRESHING = "Refreshing..." ENTER_PASSWORD = "Enter the private lobby's password:" SEARCH = "Search" NONE_FOUND = "No lobbies were found." + +[CHANGELOG] +CHANGELOG_TITLE = "CHANGELOG" diff --git a/lang/French.ini b/lang/French.ini index 534020c3d..ff5ee435d 100644 --- a/lang/French.ini +++ b/lang/French.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pause en Solo" DISABLE_POPUPS = "Désactiver les Pop-ups" MENU_OPTIONS = "Options du menu" INFORMATION = "Information" +CHANGELOG = "Journal des modifications" DEBUG = "Débogage" LANGUAGE = "Langue" COOP_COMPATIBILITY = "Activer la compatibilité sm64ex-coop" @@ -388,3 +389,6 @@ REFRESHING = "Actualisation..." ENTER_PASSWORD = "Entrez le mot de passe de la partie:" SEARCH = "Rechercher" NONE_FOUND = "Aucune partie n'a été trouvée." + +[CHANGELOG] +CHANGELOG_TITLE = "MODIFICATIONS" diff --git a/lang/German.ini b/lang/German.ini index 5a388f61e..84386cb50 100644 --- a/lang/German.ini +++ b/lang/German.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pause im Einzelspieler" DISABLE_POPUPS = "Pop-ups deaktivieren" MENU_OPTIONS = "Menüoptionen" INFORMATION = "Information" +CHANGELOG = "Änderungsprotokoll" DEBUG = "Debug" LANGUAGE = "Sprache" COOP_COMPATIBILITY = "Aktiviere sm64ex-coop-Kompatibilität" @@ -388,3 +389,6 @@ REFRESHING = "Aktualisiere..." ENTER_PASSWORD = "Gib das Passwort für die Lobby ein:" SEARCH = "Suchen" NONE_FOUND = "Keine Lobbys gefunden." + +[CHANGELOG] +CHANGELOG_TITLE = "ÄNDERUNGSPROTOKOLL" diff --git a/lang/Italian.ini b/lang/Italian.ini index 43c4742b6..b0ca94ba9 100644 --- a/lang/Italian.ini +++ b/lang/Italian.ini @@ -252,6 +252,7 @@ PAUSE_IN_SINGLEPLAYER = "Metti in pausa in giocatore singolo" DISABLE_POPUPS = "Disabilita Popups" MENU_OPTIONS = "Opzioni Menù" INFORMATION = "Informazione" +CHANGELOG = "Registro delle modifiche" DEBUG = "Debug" LANGUAGE = "Lingua" COOP_COMPATIBILITY = "Abilita la compatibilità sm64ex-coop" @@ -386,3 +387,6 @@ REFRESHING = "Refreshing..." ENTER_PASSWORD = "Enter the private lobby's password:" SEARCH = "Search" NONE_FOUND = "No lobbies were found." + +[CHANGELOG] +CHANGELOG_TITLE = "REGISTRO DELLE MODIFICHE" diff --git a/lang/Polish.ini b/lang/Polish.ini index 164851103..447116d0a 100644 --- a/lang/Polish.ini +++ b/lang/Polish.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pauza w Trybie Pojedynczego Gracza" DISABLE_POPUPS = "Wylacz Popupy" MENU_OPTIONS = "Opcje Menu" INFORMATION = "Info" +CHANGELOG = "Rejestr zmian" DEBUG = "Debugowanie" LANGUAGE = "Jezyk" COOP_COMPATIBILITY = "Włącz kompatybilność sm64ex-coop" @@ -388,3 +389,6 @@ REFRESHING = "Odswiezanie..." ENTER_PASSWORD = "Wprowadz haslo do prywatnego lobby:" SEARCH = "Szukaj" NONE_FOUND = "Nie znaleziono zadnego lobby." + +[CHANGELOG] +CHANGELOG_TITLE = "REJESTR ZMIAN" diff --git a/lang/Portuguese.ini b/lang/Portuguese.ini index 1b75d085d..4857b4582 100644 --- a/lang/Portuguese.ini +++ b/lang/Portuguese.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pausa com Jogador Único" DISABLE_POPUPS = "Desativar Popups" MENU_OPTIONS = "Opções de Menu" INFORMATION = "Informação" +CHANGELOG = "Registro de alterações" DEBUG = "Debug" LANGUAGE = "Idioma" COOP_COMPATIBILITY = "Ativar a compatibilidade sm64ex-coop" @@ -388,3 +389,6 @@ REFRESHING = "Recarregando..." ENTER_PASSWORD = "Coloque a senha para a partida privada:" SEARCH = "Pesquisar" NONE_FOUND = "Nenhuma partida foi encontrada." + +[CHANGELOG] +CHANGELOG_TITLE = "REGISTRO DE ALTERAÇÕES" diff --git a/lang/Russian.ini b/lang/Russian.ini index ccd8736b1..e1ae0d514 100644 --- a/lang/Russian.ini +++ b/lang/Russian.ini @@ -253,6 +253,7 @@ PAUSE_IN_SINGLEPLAYER = "Пауза в одиночной игре" DISABLE_POPUPS = "Отключить всплывающие окна" MENU_OPTIONS = "Параметры меню" INFORMATION = "Информация" +CHANGELOG = "Журнал изменений" DEBUG = "Отладка" LANGUAGE = "Язык" COOP_COMPATIBILITY = "Включить совместимость sm64ex-coop" @@ -387,3 +388,6 @@ REFRESHING = "Обновление..." ENTER_PASSWORD = "Введите пароль закрытой группы:" SEARCH = "Поиск" NONE_FOUND = "Группы не найдены." + +[CHANGELOG] +CHANGELOG_TITLE = "ЖУРНАЛ ИЗМЕНЕНИЙ" diff --git a/lang/SpanishES.ini b/lang/SpanishES.ini index 599cddb01..1ad42808a 100644 --- a/lang/SpanishES.ini +++ b/lang/SpanishES.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pausa en modo de un jugador" DISABLE_POPUPS = "Deshabilitar mensajes emergentes" MENU_OPTIONS = "Opciones del menú" INFORMATION = "Información" +CHANGELOG = "Registro de cambios" DEBUG = "Depuración" LANGUAGE = "Idioma" COOP_COMPATIBILITY = "Habilitar la compatibilidad de sm64ex-coop" @@ -388,3 +389,6 @@ REFRESHING = "Refrescando..." ENTER_PASSWORD = "Introduce la contraseña de la partida privada:" SEARCH = "Buscar" NONE_FOUND = "No se han encontrado partidas." + +[CHANGELOG] +CHANGELOG_TITLE = "REGISTRO DE CAMBIOS" \ No newline at end of file diff --git a/lang/SpanishUS.ini b/lang/SpanishUS.ini index 81ea2aa2b..1f023e5b5 100644 --- a/lang/SpanishUS.ini +++ b/lang/SpanishUS.ini @@ -254,6 +254,7 @@ PAUSE_IN_SINGLEPLAYER = "Pausa en modo de un jugador" DISABLE_POPUPS = "Deshabilitar mensajes emergentes" MENU_OPTIONS = "Opciones del menú" INFORMATION = "Información" +CHANGELOG = "Registro de cambios" DEBUG = "Depuración" LANGUAGE = "Idioma" COOP_COMPATIBILITY = "Habilitar la compatibilidad de sm64ex-coop" @@ -388,3 +389,6 @@ REFRESHING = "Refrescando..." ENTER_PASSWORD = "Introduce la contraseña de la partida privada:" SEARCH = "Buscar" NONE_FOUND = "No se encontraron partidas." + +[CHANGELOG] +CHANGELOG_TITLE = "REGISTRO DE CAMBIOS" diff --git a/src/pc/configfile.c b/src/pc/configfile.c index 8b38f160c..6d5e8c2c2 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -116,54 +116,55 @@ bool configCameraAnalog = false; bool configCameraCUp = false; bool configCameraMouse = false; // coop-specific -bool configSkipIntro = 0; -bool configBubbleDeath = true; -unsigned int configAmountofPlayers = 16; -char configJoinIp[MAX_CONFIG_STRING] = ""; -unsigned int configJoinPort = DEFAULT_PORT; -unsigned int configHostPort = DEFAULT_PORT; -unsigned int configHostSaveSlot = 1; -unsigned int configPlayerInteraction = 1; -unsigned int configPlayerKnockbackStrength = 25; -unsigned int configStayInLevelAfterStar = 0; -bool configNametags = true; -unsigned int configBouncyLevelBounds = 0; -unsigned int configNetworkSystem = 0; -char configPlayerName[MAX_PLAYER_STRING] = ""; -unsigned int configPlayerModel = 0; -bool configMenuStaffRoll = true; -unsigned int configMenuLevel = 0; -bool configMenuSound = false; -bool configMenuRandom = false; -bool configMenuDemos = false; -struct PlayerPalette configPlayerPalette = {{{ 0x00, 0x00, 0xff }, { 0xff, 0x00, 0x00 }, { 0xff, 0xff, 0xff }, { 0x72, 0x1c, 0x0e }, { 0x73, 0x06, 0x00 }, { 0xfe, 0xc1, 0x79 }, { 0xff, 0x00, 0x00 }}}; -struct PlayerPalette configCustomPalette = {{{ 0x00, 0x00, 0xff }, { 0xff, 0x00, 0x00 }, { 0xff, 0xff, 0xff }, { 0x72, 0x1c, 0x0e }, { 0x73, 0x06, 0x00 }, { 0xfe, 0xc1, 0x79 }, { 0xff, 0x00, 0x00 }}}; -bool configShowFPS = false; -bool configUncappedFramerate = false; -unsigned int configFrameLimit = 144; -unsigned int configDrawDistance = 4; -bool configDisablePopups = false; -bool configLuaProfiler = false; +bool configSkipIntro = 0; +bool configBubbleDeath = true; +unsigned int configAmountofPlayers = 16; +char configJoinIp[MAX_CONFIG_STRING] = ""; +unsigned int configJoinPort = DEFAULT_PORT; +unsigned int configHostPort = DEFAULT_PORT; +unsigned int configHostSaveSlot = 1; +unsigned int configPlayerInteraction = 1; +unsigned int configPlayerKnockbackStrength = 25; +unsigned int configStayInLevelAfterStar = 0; +bool configNametags = true; +unsigned int configBouncyLevelBounds = 0; +unsigned int configNetworkSystem = 0; +char configPlayerName[MAX_PLAYER_STRING] = ""; +unsigned int configPlayerModel = 0; +bool configMenuStaffRoll = true; +unsigned int configMenuLevel = 0; +bool configMenuSound = false; +bool configMenuRandom = false; +bool configMenuDemos = false; +struct PlayerPalette configPlayerPalette = {{{ 0x00, 0x00, 0xff }, { 0xff, 0x00, 0x00 }, { 0xff, 0xff, 0xff }, { 0x72, 0x1c, 0x0e }, { 0x73, 0x06, 0x00 }, { 0xfe, 0xc1, 0x79 }, { 0xff, 0x00, 0x00 }}}; +struct PlayerPalette configCustomPalette = {{{ 0x00, 0x00, 0xff }, { 0xff, 0x00, 0x00 }, { 0xff, 0xff, 0xff }, { 0x72, 0x1c, 0x0e }, { 0x73, 0x06, 0x00 }, { 0xfe, 0xc1, 0x79 }, { 0xff, 0x00, 0x00 }}}; +bool configShowFPS = false; +bool configUncappedFramerate = false; +unsigned int configFrameLimit = 144; +unsigned int configDrawDistance = 4; +bool configDisablePopups = false; +bool configLuaProfiler = false; #ifdef DEVELOPMENT -bool configCtxProfiler = false; +bool configCtxProfiler = false; #endif -unsigned int configInterpolationMode = 1; -unsigned int configGamepadNumber = 0; -bool configBackgroundGamepad = true; -bool configDebugPrint = false; -bool configDebugInfo = false; -bool configDebugError = false; -char configLanguage[MAX_CONFIG_STRING] = ""; -bool configForce4By3 = false; -char configCoopNetIp[MAX_CONFIG_STRING] = DEFAULT_COOPNET_IP; -unsigned int configCoopNetPort = DEFAULT_COOPNET_PORT; -char configPassword[MAX_CONFIG_STRING] = ""; -char configDestId[MAX_CONFIG_STRING] = "0"; -bool configFadeoutDistantSounds = false; -unsigned int configDjuiTheme = DJUI_THEME_DARK; -bool configDjuiThemeCenter = true; -unsigned int configDjuiScale = 0; -bool configCoopCompatibility = false; +unsigned int configInterpolationMode = 1; +unsigned int configGamepadNumber = 0; +bool configBackgroundGamepad = true; +bool configDebugPrint = false; +bool configDebugInfo = false; +bool configDebugError = false; +char configLanguage[MAX_CONFIG_STRING] = ""; +bool configForce4By3 = false; +char configCoopNetIp[MAX_CONFIG_STRING] = DEFAULT_COOPNET_IP; +unsigned int configCoopNetPort = DEFAULT_COOPNET_PORT; +char configPassword[MAX_CONFIG_STRING] = ""; +char configDestId[MAX_CONFIG_STRING] = "0"; +bool configFadeoutDistantSounds = false; +unsigned int configDjuiTheme = DJUI_THEME_DARK; +bool configDjuiThemeCenter = true; +unsigned int configDjuiScale = 0; +bool configCoopCompatibility = false; +char configLastVersion[MAX_CONFIG_STRING] = SM64COOPDX_VERSION; static const struct ConfigOption options[] = { {.name = "fullscreen", .type = CONFIG_TYPE_BOOL, .boolValue = &configWindow.fullscreen}, @@ -280,7 +281,8 @@ static const struct ConfigOption options[] = { {.name = "fade_distant_sounds", .type = CONFIG_TYPE_BOOL , .boolValue = &configFadeoutDistantSounds}, {.name = "djui_theme", .type = CONFIG_TYPE_UINT , .uintValue = &configDjuiTheme}, {.name = "djui_theme_center", .type = CONFIG_TYPE_BOOL , .boolValue = &configDjuiThemeCenter}, - {.name = "djui_scale", .type = CONFIG_TYPE_UINT , .uintValue = &configDjuiScale} + {.name = "djui_scale", .type = CONFIG_TYPE_UINT , .uintValue = &configDjuiScale}, + {.name = "last_version", .type = CONFIG_TYPE_STRING, .stringValue = (char*)&configLastVersion, .maxStringLength = MAX_CONFIG_STRING} }; // FunctionConfigOption functions diff --git a/src/pc/configfile.h b/src/pc/configfile.h index dcb5a0499..063f54191 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -121,6 +121,7 @@ extern unsigned int configDjuiTheme; extern bool configDjuiThemeCenter; extern unsigned int configDjuiScale; extern bool configCoopCompatibility; +extern char configLastVersion[]; void enable_queued_mods(); void configfile_load(void); diff --git a/src/pc/djui/djui.c b/src/pc/djui/djui.c index 9b8b9473f..73ddbd7b2 100644 --- a/src/pc/djui/djui.c +++ b/src/pc/djui/djui.c @@ -5,6 +5,7 @@ #include "djui_panel_pause.h" #include "djui_panel_join.h" #include "djui_panel_join_message.h" +#include "djui_panel_changelog.h" #include "djui_fps_display.h" #include "../debuglog.h" #include "pc/cliopts.h" @@ -94,6 +95,10 @@ void djui_init_late(void) { gPanelLanguageOnStartup = true; djui_panel_language_create(NULL); } + if (strcmp(configLastVersion, SM64COOPDX_VERSION)) { + djui_panel_changelog_create(NULL); + strncpy(configLastVersion, SM64COOPDX_VERSION, MAX_CONFIG_STRING); + } //djui_panel_debug_create(); } djui_cursor_create(); diff --git a/src/pc/djui/djui_panel_changelog.c b/src/pc/djui/djui_panel_changelog.c new file mode 100644 index 000000000..e29a073d5 --- /dev/null +++ b/src/pc/djui/djui_panel_changelog.c @@ -0,0 +1,43 @@ +#include "djui.h" +#include "djui_panel.h" +#include "djui_panel_menu.h" + +static char sChangelog[1024]; + +void djui_panel_changelog_create(struct DjuiBase* caller) { + struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CHANGELOG, CHANGELOG_TITLE)); + struct DjuiBase* body = djui_three_panel_get_body(panel); + + { + snprintf(sChangelog, 1024, "Welcome back!\n\ +v0.1.2:\n\ +Changes:\n\ +Disable sm64ex-coop Compatibility by default\n\ +Restored Luigi's original color palette\n\ +Made mario step code use his hitbox height instead of a constant number for his height\n\ +Hid Mario's shadow in First Person\n\ +Cancelled First Person if Mario is flying\n\ +\n\ +Fixes:\n\ +Reverted dialog cutscene changes to prevent softlocks\n\ +Fixed DynOS related crashes\n\ +Fixed Mario's shadow not resetting\n\ +\n\ +Mods:\n\ +Updated Gun Mod DX and Character Select\n\ +Updated SiM description\n\ +Removed Flood and Cheats due to future plans with them" + ); + + struct DjuiText* text = djui_text_create(body, sChangelog); + djui_base_set_location(&text->base, 0, 0); + djui_base_set_size(&text->base, (DJUI_DEFAULT_PANEL_WIDTH * (configDjuiThemeCenter ? DJUI_THEME_CENTERED_WIDTH : 1)) - 64, 497); + djui_base_set_color(&text->base, 220, 220, 220, 255); + djui_text_set_drop_shadow(text, 64, 64, 64, 100); + djui_text_set_alignment(text, DJUI_HALIGN_LEFT, DJUI_VALIGN_TOP); + + djui_button_create(body, "OK", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); + } + + djui_panel_add(caller, panel, NULL); +} \ No newline at end of file diff --git a/src/pc/djui/djui_panel_changelog.h b/src/pc/djui/djui_panel_changelog.h new file mode 100644 index 000000000..adb133104 --- /dev/null +++ b/src/pc/djui/djui_panel_changelog.h @@ -0,0 +1,4 @@ +#pragma once +#include "djui.h" + +void djui_panel_changelog_create(struct DjuiBase* caller); \ No newline at end of file diff --git a/src/pc/djui/djui_panel_misc.c b/src/pc/djui/djui_panel_misc.c index b18c315d2..9863c2180 100644 --- a/src/pc/djui/djui_panel_misc.c +++ b/src/pc/djui/djui_panel_misc.c @@ -6,6 +6,7 @@ #include "djui_panel_options.h" #include "djui_panel_language.h" #include "djui_panel_info.h" +#include "djui_panel_changelog.h" #include "pc/utils/misc.h" #include "pc/configfile.h" #include "pc/pc_main.h" @@ -57,6 +58,7 @@ void djui_panel_misc_create(struct DjuiBase* caller) { djui_button_create(body, DLANG(MISC, LANGUAGE), DJUI_BUTTON_STYLE_NORMAL, djui_panel_language_create); djui_button_create(body, DLANG(MISC, MENU_OPTIONS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_main_menu_create); djui_button_create(body, DLANG(MISC, INFORMATION), DJUI_BUTTON_STYLE_NORMAL, djui_panel_info_create); + djui_button_create(body, DLANG(MISC, CHANGELOG), DJUI_BUTTON_STYLE_NORMAL, djui_panel_changelog_create); #ifdef DEVELOPMENT djui_button_create(body, DLANG(MISC, DEBUG), DJUI_BUTTON_STYLE_NORMAL, djui_panel_options_debug_create); #endif diff --git a/src/pc/lua/smlua_constants_autogen.c b/src/pc/lua/smlua_constants_autogen.c index cbf5e580e..6c3eef35d 100644 --- a/src/pc/lua/smlua_constants_autogen.c +++ b/src/pc/lua/smlua_constants_autogen.c @@ -4382,7 +4382,7 @@ char gSmluaConstants[] = "" "COOP_OBJ_FLAG_LUA = (1 << 1)\n" "COOP_OBJ_FLAG_NON_SYNC = (1 << 2)\n" "COOP_OBJ_FLAG_INITIALIZED = (1 << 3)\n" -"SM64COOPDX_VERSION = 'v0.1.1'\n" +"SM64COOPDX_VERSION = 'v0.1.2'\n" "VERSION_TEXT = 'beta'\n" "VERSION_NUMBER = 36\n" "MINOR_VERSION_NUMBER = 1\n" diff --git a/src/pc/network/version.h b/src/pc/network/version.h index 4b174e7c4..3834215c4 100644 --- a/src/pc/network/version.h +++ b/src/pc/network/version.h @@ -1,7 +1,7 @@ #ifndef VERSION_H #define VERSION_H -#define SM64COOPDX_VERSION "v0.1.1" +#define SM64COOPDX_VERSION "v0.1.2" #define VERSION_TEXT "beta" #define VERSION_NUMBER 36