mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Update loading screen
This commit is contained in:
parent
521b0ab7a9
commit
f58127a0bc
4 changed files with 20 additions and 21 deletions
|
|
@ -10,11 +10,13 @@
|
||||||
#include "loading.h"
|
#include "loading.h"
|
||||||
#include "pc/utils/misc.h"
|
#include "pc/utils/misc.h"
|
||||||
|
|
||||||
|
extern ALIGNED8 u8 texture_coopdx_logo[];
|
||||||
|
|
||||||
struct LoadingSegment gCurrLoadingSegment = { "", 0 };
|
struct LoadingSegment gCurrLoadingSegment = { "", 0 };
|
||||||
|
|
||||||
struct LoadingScreen {
|
struct LoadingScreen {
|
||||||
struct DjuiBase base;
|
struct DjuiBase base;
|
||||||
struct DjuiText* splashText;
|
struct DjuiImage* splashImage;
|
||||||
struct DjuiText* loadingText;
|
struct DjuiText* loadingText;
|
||||||
struct DjuiText* loadingDesc;
|
struct DjuiText* loadingDesc;
|
||||||
struct DjuiProgressBar *loadingBar;
|
struct DjuiProgressBar *loadingBar;
|
||||||
|
|
@ -29,8 +31,7 @@ bool gIsThreaded = false;
|
||||||
extern Vp D_8032CF00;
|
extern Vp D_8032CF00;
|
||||||
extern u8 gRenderingInterpolated;
|
extern u8 gRenderingInterpolated;
|
||||||
|
|
||||||
static void loading_screen_produce_one_frame() {
|
static void loading_screen_produce_one_frame(void) {
|
||||||
|
|
||||||
// Start frame
|
// Start frame
|
||||||
gfx_start_frame();
|
gfx_start_frame();
|
||||||
config_gfx_pool();
|
config_gfx_pool();
|
||||||
|
|
@ -73,9 +74,6 @@ static bool loading_screen_on_render(struct DjuiBase* base) {
|
||||||
// Fill the screen
|
// Fill the screen
|
||||||
djui_base_set_size(base, windowWidth, windowHeight);
|
djui_base_set_size(base, windowWidth, windowHeight);
|
||||||
|
|
||||||
// Splash text
|
|
||||||
djui_base_set_location(&sLoading->splashText->base, (windowWidth / 2) - 416, 0);
|
|
||||||
|
|
||||||
{
|
{
|
||||||
// Loading... text
|
// Loading... text
|
||||||
char* loadingStr = DLANG(LOADING_SCREEN, LOADING);
|
char* loadingStr = DLANG(LOADING_SCREEN, LOADING);
|
||||||
|
|
@ -120,21 +118,20 @@ static void loading_screen_destroy(struct DjuiBase* base) {
|
||||||
sLoading = NULL;
|
sLoading = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void render_loading_screen() {
|
void render_loading_screen(void) {
|
||||||
struct LoadingScreen* load = malloc(sizeof(struct LoadingScreen));
|
struct LoadingScreen* load = malloc(sizeof(struct LoadingScreen));
|
||||||
struct DjuiBase* base = &load->base;
|
struct DjuiBase* base = &load->base;
|
||||||
|
|
||||||
djui_base_init(NULL, base, loading_screen_on_render, loading_screen_destroy);
|
djui_base_init(NULL, base, loading_screen_on_render, loading_screen_destroy);
|
||||||
|
|
||||||
{
|
{
|
||||||
// Splash text
|
// Splash image
|
||||||
struct DjuiText* splashDjuiText = djui_text_create(base, "\\#ff0800\\SM\\#1be700\\64\\#00b3ff\\EX\\#ffef00\\COOP");
|
struct DjuiImage* splashImage = djui_image_create(base, texture_coopdx_logo, 2048, 1024, 32);
|
||||||
djui_text_set_font(splashDjuiText, gDjuiFonts[1]);
|
djui_base_set_size(&splashImage->base, 740.0f, 364.0f);
|
||||||
djui_text_set_font_scale(splashDjuiText, gDjuiFonts[1]->defaultFontScale * 4);
|
djui_base_set_alignment(&splashImage->base, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
|
||||||
djui_text_set_alignment(splashDjuiText, DJUI_HALIGN_CENTER, DJUI_VALIGN_TOP);
|
djui_base_set_location(&splashImage->base, 0, -100);
|
||||||
djui_base_set_size(&splashDjuiText->base, 800, 800);
|
|
||||||
|
|
||||||
load->splashText = splashDjuiText;
|
load->splashImage = splashImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -143,7 +140,7 @@ void render_loading_screen() {
|
||||||
djui_base_set_size_type(&text->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
|
djui_base_set_size_type(&text->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
|
||||||
djui_base_set_size(&text->base, 1.0f, 32 * 4);
|
djui_base_set_size(&text->base, 1.0f, 32 * 4);
|
||||||
djui_base_set_color(&text->base, 200, 200, 200, 255);
|
djui_base_set_color(&text->base, 200, 200, 200, 255);
|
||||||
djui_base_set_location(&text->base, 0, 400);
|
djui_base_set_location(&text->base, 0, 800);
|
||||||
djui_text_set_alignment(text, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
|
djui_text_set_alignment(text, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
|
||||||
djui_text_set_font(text, gDjuiFonts[0]);
|
djui_text_set_font(text, gDjuiFonts[0]);
|
||||||
djui_text_set_font_scale(text, gDjuiFonts[0]->defaultFontScale * 2);
|
djui_text_set_font_scale(text, gDjuiFonts[0]->defaultFontScale * 2);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,6 @@ extern pthread_mutex_t gLoadingThreadMutex;
|
||||||
|
|
||||||
extern bool gIsThreaded;
|
extern bool gIsThreaded;
|
||||||
|
|
||||||
void render_loading_screen();
|
void render_loading_screen(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ static u32 mods_count_directory(char* modsBasePath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mods_load(struct Mods* mods, char* modsBasePath, bool isUserModPath) {
|
static void mods_load(struct Mods* mods, char* modsBasePath, bool isUserModPath) {
|
||||||
if (gIsThreaded) { REFRESH_MUTEX(snprintf(gCurrLoadingSegment.str, 256, "Generating DynOS Packs in %s mod path (%s)", isUserModPath ? "user" : "local", modsBasePath)); }
|
if (gIsThreaded) { REFRESH_MUTEX(snprintf(gCurrLoadingSegment.str, 256, "Generating DynOS Packs In %s Path (%s)", isUserModPath ? "User" : "Local", modsBasePath)); }
|
||||||
|
|
||||||
// generate bins
|
// generate bins
|
||||||
dynos_generate_packs(modsBasePath);
|
dynos_generate_packs(modsBasePath);
|
||||||
|
|
@ -186,7 +186,7 @@ static void mods_load(struct Mods* mods, char* modsBasePath, bool isUserModPath)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
f32 count = (f32) mods_count_directory(modsBasePath);
|
f32 count = (f32) mods_count_directory(modsBasePath);
|
||||||
if (gIsThreaded) { REFRESH_MUTEX(snprintf(gCurrLoadingSegment.str, 256, "Loading Mods in %s mod path (%s)", isUserModPath ? "user" : "local", modsBasePath)); }
|
if (gIsThreaded) { REFRESH_MUTEX(snprintf(gCurrLoadingSegment.str, 256, "Loading Mods In %s Mod Path (%s)", isUserModPath ? "User" : "Local", modsBasePath)); }
|
||||||
|
|
||||||
// iterate
|
// iterate
|
||||||
char path[SYS_MAX_PATH] = { 0 };
|
char path[SYS_MAX_PATH] = { 0 };
|
||||||
|
|
@ -257,7 +257,7 @@ void mods_enable(char* relativePath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void mods_init(void) {
|
void mods_init(void) {
|
||||||
if (gIsThreaded) { REFRESH_MUTEX(snprintf(gCurrLoadingSegment.str, 256, "Caching mods")); }
|
if (gIsThreaded) { REFRESH_MUTEX(snprintf(gCurrLoadingSegment.str, 256, "Caching Mods")); }
|
||||||
|
|
||||||
// load mod cache
|
// load mod cache
|
||||||
mod_cache_load();
|
mod_cache_load();
|
||||||
|
|
|
||||||
|
|
@ -278,12 +278,13 @@ void *main_game_init(void*) {
|
||||||
if (gIsThreaded) {
|
if (gIsThreaded) {
|
||||||
REFRESH_MUTEX(
|
REFRESH_MUTEX(
|
||||||
gCurrLoadingSegment.percentage = 0;
|
gCurrLoadingSegment.percentage = 0;
|
||||||
snprintf(gCurrLoadingSegment.str, 256, "Starting game");
|
snprintf(gCurrLoadingSegment.str, 256, "Starting Game");
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If coop_custom_palette_* values are not found in sm64config.txt, the custom palette config will use the default values (Mario's palette)
|
// If coop_custom_palette_* values are not found in sm64config.txt, the custom palette config will use the default values (Mario's palette)
|
||||||
// But if no preset is found, that means the current palette is a custom palette
|
// But if no preset is found, that means the current palette is a custom palette
|
||||||
|
// This is so terrible
|
||||||
for (int i = 0; i <= PALETTE_PRESET_MAX; i++) {
|
for (int i = 0; i <= PALETTE_PRESET_MAX; i++) {
|
||||||
if (i == PALETTE_PRESET_MAX) {
|
if (i == PALETTE_PRESET_MAX) {
|
||||||
configCustomPalette = configPlayerPalette;
|
configCustomPalette = configPlayerPalette;
|
||||||
|
|
@ -301,7 +302,6 @@ void *main_game_init(void*) {
|
||||||
|
|
||||||
if (gCLIOpts.PlayerName[0] != '\0') {
|
if (gCLIOpts.PlayerName[0] != '\0') {
|
||||||
snprintf(configPlayerName, MAX_PLAYER_STRING, "%s", gCLIOpts.PlayerName);
|
snprintf(configPlayerName, MAX_PLAYER_STRING, "%s", gCLIOpts.PlayerName);
|
||||||
printf("\nCustom Playername (Start-Parameter): %s\n\n", configPlayerName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gGfxInited) {
|
if (!gGfxInited) {
|
||||||
|
|
@ -373,6 +373,8 @@ int main(int argc, char *argv[]) {
|
||||||
network_init(NT_NONE, false);
|
network_init(NT_NONE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WAPI.delay(200);
|
||||||
|
|
||||||
// Main loop
|
// Main loop
|
||||||
while (true) {
|
while (true) {
|
||||||
debug_context_reset();
|
debug_context_reset();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue