This commit is contained in:
Blockyyy 2026-05-20 12:51:56 +10:00 committed by GitHub
commit c3d09bc4c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 82 additions and 15 deletions

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "Výběr souboru"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "Pouze lokální model hráče"
OPEN_DYNOS_FOLDER = "Otevřít složku DynOS"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
@ -210,6 +211,8 @@ MODS = "MODY"
CATEGORIES = "Kategorie"
WARNING = "\\#ffffa0\\Varování:\\#dcdcdc\\ Máte povoleno 10 nebo více módů, vypněte prosím některé, abyste zabránili nestabilitě nebo zpoždění."
NO_MODS_FOUND = "Nebyly nalezeny žádné úpravy."
BROWSE_MODS = "Prohlížet módy"
OPEN_MOD_FOLDER = "Otevřít složku módů"
[HOST_MOD_CATEGORIES]
ALL = "Všechny"

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "File Select"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "Local Player Model Only"
OPEN_DYNOS_FOLDER = "Open DynOS Folder"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
@ -210,6 +211,8 @@ MODS = "MODS"
CATEGORIES = "Categories"
WARNING = "\\#ffffa0\\Warning:\\#dcdcdc\\ You have 10 or more mods enabled, please disable some to prevent instability or lag."
NO_MODS_FOUND = "No mods were found."
BROWSE_MODS = "Browse Mod Site"
OPEN_MOD_FOLDER = "Open Mods Folder"
[HOST_MOD_CATEGORIES]
ALL = "All"

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "Sélection de fichier"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "Modèle de joueur local seulement"
OPEN_DYNOS_FOLDER = "Ouvrir le dossier DynOS"
[HOST_MESSAGE]
INFO_TITLE = "INFORMATIONS"
@ -210,6 +211,8 @@ MODS = "MODS"
CATEGORIES = "Catégories"
WARNING = "\\#ffffa0\\Avertissement :\\#dcdcdc\\ 10 mods ou plus sont activés, veuillez en désactiver certains pour éviter l'instabilité ou le lag."
NO_MODS_FOUND = "Aucun mod n'a été trouvé."
BROWSE_MODS = "Rechercher des mods"
OPEN_MOD_FOLDER = "Ouvrir le dossier mods"
[HOST_MOD_CATEGORIES]
ALL = "Tous"

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "Dateiauswahl"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "Nur lokales Spielermodell"
OPEN_DYNOS_FOLDER = "DynOS-Ordner öffnen"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
@ -210,6 +211,8 @@ MODS = "MODS"
CATEGORIES = "Kategorien"
WARNING = "\\#ffffa0\\Warnung:\\#dcdcdc\\ Du hast 10 oder mehr Mods aktiviert, bitte deaktiviere einige, um Instabilität oder Lag zu vermeiden."
NO_MODS_FOUND = "Es wurden keine Mods gefunden."
BROWSE_MODS = "Mod-Seite durchsuchen"
OPEN_MOD_FOLDER = "Mods-Ordner öffnen"
[HOST_MOD_CATEGORIES]
ALL = "Alle"

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "ファイルセレクト風"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "ローカルのキャラモデルに限定"
OPEN_DYNOS_FOLDER = "DynOSフォルダを開く"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
@ -210,6 +211,8 @@ MODS = "MODS"
CATEGORIES = "カテゴリ一覧"
WARNING = "\\#ffffa0\\<注意>\\#dcdcdc\\ MODの数が10個以上になっています。ラグや不安定を防ぐため、いくつか無効にしてください。"
NO_MODS_FOUND = "MODは見つかりませんでした。"
BROWSE_MODS = "MODサイトを開く"
OPEN_MOD_FOLDER = "MODフォルダを開く"
[HOST_MOD_CATEGORIES]
ALL = "すべて"

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "Seletor de Arquivo"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "Apenas modelo do jogador local"
OPEN_DYNOS_FOLDER = "Abrir pasta DynOS"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
@ -210,6 +211,8 @@ MODS = "MODS"
CATEGORIES = "Categorias"
WARNING = "\\#ffffa0\\Aviso:\\#dcdcdc\\ Você tem 10 ou mais mods ativos. Desative alguns para evitar instabilidades ou travamentos."
NO_MODS_FOUND = "Nenhum mod encontrado."
BROWSE_MODS = "Abrir site de mods"
OPEN_MOD_FOLDER = "Abrir pasta de mods"
[HOST_MOD_CATEGORIES]
ALL = "Todos"

View file

@ -196,6 +196,7 @@ FILE_SELECT_THEME = "Selección de archivo"
[DYNOS]
DYNOS = "DYNOS"
LOCAL_PLAYER_MODEL_ONLY = "Solo reemplazar el modelo del jugador local"
OPEN_DYNOS_FOLDER = "Abrir carpeta de DynOS"
[HOST_MESSAGE]
INFO_TITLE = "INFO"
@ -210,6 +211,8 @@ MODS = "MODS"
CATEGORIES = "Categoría"
WARNING = "\\#ffffa0\\Advertencia:\\#dcdcdc\\ Tienes 10 o más mods activados, por favor desactiva algunos para prevenir inestabilidad o lag."
NO_MODS_FOUND = "No se han encontrado mods."
BROWSE_MODS = "Explorar mods"
OPEN_MOD_FOLDER = "Abrir carpeta de mods"
[HOST_MOD_CATEGORIES]
ALL = "Todos"

0
mods/day-night-cycle/a-utils.lua Executable file → Normal file
View file

0
mods/day-night-cycle/b-time.lua Executable file → Normal file
View file

0
mods/day-night-cycle/main.lua Executable file → Normal file
View file

0
mods/day-night-cycle/skybox.lua Executable file → Normal file
View file

View file

@ -41,6 +41,10 @@ static void djui_panel_dynos_destroy(UNUSED struct DjuiBase* caller) {
gDjuiInPlayerMenu = false;
}
static void djui_panel_dynos_open_folder(UNUSED struct DjuiBase* caller) {
open_folder(fs_get_write_path("/dynos"));
}
static void djui_panel_dynos_add_packs(struct DjuiBase* base) {
int packCount = dynos_pack_get_count();
for (int i = 0; i < packCount; i++) {
@ -94,6 +98,7 @@ void djui_panel_dynos_create(struct DjuiBase* caller) {
{
djui_button_left_create(&rect1->base, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
djui_button_right_create(&rect1->base, DLANG(LOBBIES, REFRESH), DJUI_BUTTON_STYLE_NORMAL, djui_panel_dynos_refresh);
djui_button_create(body, DLANG(DYNOS, OPEN_DYNOS_FOLDER), DJUI_BUTTON_STYLE_NORMAL, djui_panel_dynos_open_folder);
}
} else {
djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);

View file

@ -224,6 +224,14 @@ static void djui_panel_menu_refresh(UNUSED struct DjuiBase* base) {
}
}
static void djui_mod_website_open(UNUSED struct DjuiBase* caller) {
open_url("https://mods.sm64coopdx.com/mods/");
}
static void djui_mod_folder_open(UNUSED struct DjuiBase* caller) {
open_folder(fs_get_write_path("/mods"));
}
void djui_panel_host_mods_create(struct DjuiBase* caller) {
mods_update_selectable();
@ -251,15 +259,19 @@ void djui_panel_host_mods_create(struct DjuiBase* caller) {
if (gNetworkType == NT_NONE) {
struct DjuiRect* rect1 = djui_rect_container_create(body, 64);
struct DjuiRect* rect2 = djui_rect_container_create(body, 64);
{
sBackButton = djui_button_left_create(&rect1->base, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
sRefreshButton = djui_button_right_create(&rect1->base, DLANG(LOBBIES, REFRESH), DJUI_BUTTON_STYLE_NORMAL, djui_panel_menu_refresh);
djui_button_left_create(&rect2->base, DLANG(HOST_MODS, BROWSE_MODS), DJUI_BUTTON_STYLE_NORMAL, djui_mod_website_open);
djui_button_right_create(&rect2->base, DLANG(HOST_MODS, OPEN_MOD_FOLDER), DJUI_BUTTON_STYLE_NORMAL, djui_mod_folder_open);
}
} else {
djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
}
panel->bodySize.value = paginated->base.height.value + 64 + 64 + 64;
djui_three_panel_recalculate_body_size(panel);
}
panel->base.destroy = djui_panel_host_mods_destroy;

View file

@ -13,20 +13,7 @@
#endif
static void djui_panel_options_open_user_folder(UNUSED struct DjuiBase* caller) {
#if defined(_WIN32)
// Windows
ShellExecuteA(NULL, "open", fs_get_write_path(""), NULL, NULL, SW_SHOWNORMAL);
#elif __linux__
// Linux
char command[512];
snprintf(command, sizeof(command), "xdg-open \"%s\"", fs_get_write_path(""));
system(command);
#elif __APPLE__
// macOS
char command[512];
snprintf(command, sizeof(command), "open \"%s\"", fs_get_write_path(""));
system(command);
#endif
open_folder(fs_get_write_path(""));
}
#ifdef DEVELOPMENT

View file

@ -10,6 +10,11 @@
#include <stdbool.h>
#include <time.h>
#include <float.h>
#include <sys/stat.h>
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#include <direct.h>
#endif
#include <ctype.h>
#include "misc.h"
@ -603,6 +608,41 @@ void str_seperator_concat(char *output_buffer, int buffer_size, char** strings,
}
}
void open_url(const char* url) {
#if defined(_WIN32) || defined(_WIN64) // windows
ShellExecuteA(NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
#elif __linux__ // linux
char cmd[512];
snprintf(cmd, sizeof(cmd), "xdg-open '%s'", url);
system(cmd);
#elif __APPLE__ // macOS
char cmd[512];
snprintf(cmd, sizeof(cmd), "open '%s'", url);
system(cmd);
#endif
}
void open_folder(const char* path) {
#if defined(_WIN32) || defined(_WIN64) // windows
_mkdir(path);
ShellExecuteA(NULL, "open", path, NULL, NULL, SW_SHOWNORMAL);
#elif __linux__ // linux
mkdir(path, 0777);
char command[512];
snprintf(command, sizeof(command), "xdg-open \"%s\"", path);
system(command);
#elif __APPLE__ // macOS
mkdir(path, 0777);
char command[512];
snprintf(command, sizeof(command), "open \"%s\"", path);
system(command);
#endif
}
const char *strstr_lowercased(const char *haystack, const char *needle) {
// sanity check
if (!*needle) {

View file

@ -37,6 +37,8 @@ void delta_interpolate_mtx(Mtx* out, Mtx* a, Mtx* b, f32 delta);
void detect_and_skip_mtx_interpolation(Mtx** mtxPrev, Mtx** mtx);
void str_seperator_concat(char *output_buffer, int buffer_size, char** strings, int num_strings, char* seperator);
void open_url(const char* url);
void open_folder(const char* path);
const char *strstr_lowercased(const char *haystack, const char *needle);
bool can_update_game(void);