From 6f90411724d55ef96a69c33375051038faa2eae5 Mon Sep 17 00:00:00 2001 From: StackZ <47382115+SuperSaiyajinStackZ@users.noreply.github.com> Date: Sat, 8 Feb 2020 05:39:07 +0100 Subject: [PATCH] WIP: Switch over to Universal-Core. (#4) --- .gitignore | 11 +++ .gitmodules | 3 + Makefile | 5 +- Universal-Core | 1 + include/gfx.hpp | 40 ++++++++++ include/gui.hpp | 76 ------------------ include/utils/colors.hpp | 45 ----------- include/utils/common.hpp | 4 + source/charchange.cpp | 93 +++++++++++----------- source/emblemchange.cpp | 49 ++++++------ source/gfx.cpp | 84 ++++++++++++++++++++ source/gui.cpp | 166 --------------------------------------- source/main.cpp | 107 ++++++++++++------------- source/musicchange.cpp | 41 +++++----- 14 files changed, 279 insertions(+), 446 deletions(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 160000 Universal-Core create mode 100644 include/gfx.hpp delete mode 100644 include/gui.hpp delete mode 100644 include/utils/colors.hpp create mode 100644 source/gfx.cpp delete mode 100644 source/gui.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49fb44b --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ + +*.d +*.o +*.exe +*.t3x +*.3dsx +*.cia +*.elf +*.smdh +*.map +*.lst diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..11d863d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Universal-Core"] + path = Universal-Core + url = https://github.com/Universal-Team/Universal-Core.git diff --git a/Makefile b/Makefile index b8f4760..38f47f2 100644 --- a/Makefile +++ b/Makefile @@ -50,9 +50,10 @@ VERSION_MICRO := 0 #--------------------------------------------------------------------------------- TARGET := SavvyManager BUILD := build -SOURCES := source source/utils +UNIVCORE := Universal-Core +SOURCES := $(UNIVCORE) source source/utils DATA := data -INCLUDES := include include/utils +INCLUDES := $(UNIVCORE) include include/utils GRAPHICS := assets/gfx assets/gfx_chars assets/gfx_charprevbg ROMFS := romfs GFXBUILD := $(ROMFS)/gfx diff --git a/Universal-Core b/Universal-Core new file mode 160000 index 0000000..c82ad8d --- /dev/null +++ b/Universal-Core @@ -0,0 +1 @@ +Subproject commit c82ad8d6e11e4842c6099b53595aa3692f24910b diff --git a/include/gfx.hpp b/include/gfx.hpp new file mode 100644 index 0000000..11355e6 --- /dev/null +++ b/include/gfx.hpp @@ -0,0 +1,40 @@ +#ifndef GFX_HPP +#define GFX_HPP + +#include "sprites.h" + +#include <3ds.h> +#include + +// Colors. +#define TRANSPARENT C2D_Color32(0, 0, 0, 0) +#define BLACK C2D_Color32(0, 0, 0, 255) +#define WHITE C2D_Color32(255, 255, 255, 255) +#define GRAY C2D_Color32(127, 127, 127, 255) +#define BLUE C2D_Color32(0, 0, 255, 255) +#define GREEN C2D_Color32(0, 255, 0, 255) +#define RED C2D_Color32(255, 0, 0, 255) +#define MSG_BUTTONTEXT C2D_Color32(181, 48, 0, 255) + +#define TIME C2D_Color32(16, 0, 0, 223) + +typedef u32 Color; + +namespace GFX +{ + // Load & Unload default sheets. + Result loadSheets(); + Result unloadSheets(); + + // Sprirte Functions. + bool loadCharSprite(const char* t3xPathAllSeasons, const char* t3xPathOneSeason); + void showBgSprite(int zoomIn); + void showCharSprite(int zoomIn, int fadeAlpha); + void DrawSprite(int img, int x, int y, float ScaleX = 1, float ScaleY = 1); + void DrawSpriteBlend(int key, float x, float y, u32 color, float ScaleX = 1, float ScaleY = 1); + + // Draw Cursor. + void drawCursor(void); +} + +#endif \ No newline at end of file diff --git a/include/gui.hpp b/include/gui.hpp deleted file mode 100644 index 904387c..0000000 --- a/include/gui.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/* -* This file is part of Universal-Updater -* Copyright (C) 2019-2020 DeadPhoenix8091, Epicpkmn11, Flame, RocketRobz, StackZ, TotallyNotGuy -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -* -* Additional Terms 7.b and 7.c of GPLv3 apply to this file: -* * Requiring preservation of specified reasonable legal notices or -* author attributions in that material or in the Appropriate Legal -* Notices displayed by works containing it. -* * Prohibiting misrepresentation of the origin of that material, -* or requiring that modified versions of such material be marked in -* reasonable ways as different from the original version. -*/ - -#ifndef GUI_HPP -#define GUI_HPP - -#include -#include -#include "common.hpp" - -// Spritesheets. -#include "sprites.h" - -#include "colors.hpp" - -#define FONT_SIZE_18 0.72f -#define FONT_SIZE_17 0.7f -#define FONT_SIZE_15 0.6f -#define FONT_SIZE_14 0.56f -#define FONT_SIZE_12 0.50f -#define FONT_SIZE_11 0.46f -#define FONT_SIZE_9 0.37f - -namespace Gui { - // Init and Exit of the GUI. Also Character sprite loading. - Result init(void); - bool loadCharSprite(const char* t3xPathAllSeasons, const char* t3xPathOneSeason); - void exit(void); - - C3D_RenderTarget* target(gfxScreen_t t); - void setDraw(C3D_RenderTarget * screen); - - // Clear Text Buffer. - void clearTextBufs(void); - - // Draw a Sprite from the sheet. - void sprite(int key, float x, float y, float ScaleX = 1, float ScaleY = 1); - void showBgSprite(int zoomIn); - void showCharSprite(int zoomIn, int fadeAlpha); - void Draw_ImageBlend(int key, float x, float y, u32 color); - - // Text / String Functions. - void DrawStringCentered(float x, float y, float size, u32 color, std::string Text, int maxWidth = 0); - void DrawString(float x, float y, float size, u32 color, std::string Text, int maxWidth = 0); - void GetStringSize(float size, float *width, float *height, std::string Text); - float GetStringWidth(float size, std::string Text); - float GetStringHeight(float size, std::string Text); - - // Misc. - bool Draw_Rect(float x, float y, float w, float h, u32 color); -} - -#endif diff --git a/include/utils/colors.hpp b/include/utils/colors.hpp deleted file mode 100644 index dceae3e..0000000 --- a/include/utils/colors.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/* -* This file is part of Universal-Manager -* Copyright (C) 2019 VoltZ, Epicpkmn11, Flame, RocketRobz, TotallyNotGuy -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -* -* Additional Terms 7.b and 7.c of GPLv3 apply to this file: -* * Requiring preservation of specified reasonable legal notices or -* author attributions in that material or in the Appropriate Legal -* Notices displayed by works containing it. -* * Prohibiting misrepresentation of the origin of that material, -* or requiring that modified versions of such material be marked in -* reasonable ways as different from the original version. -*/ - -#ifndef COLORS_HPP -#define COLORS_HPP - -#include -#include - -#define TRANSPARENT C2D_Color32(0, 0, 0, 0) -#define BLACK C2D_Color32(0, 0, 0, 255) -#define WHITE C2D_Color32(255, 255, 255, 255) -#define GRAY C2D_Color32(127, 127, 127, 255) -#define BLUE C2D_Color32(0, 0, 255, 255) -#define GREEN C2D_Color32(0, 255, 0, 255) -#define RED C2D_Color32(255, 0, 0, 255) -#define MSG_BUTTONTEXT C2D_Color32(181, 48, 0, 255) - -#define TIME C2D_Color32(16, 0, 0, 223) - -typedef u32 Color; -#endif diff --git a/include/utils/common.hpp b/include/utils/common.hpp index aeef76f..6a3d2b8 100644 --- a/include/utils/common.hpp +++ b/include/utils/common.hpp @@ -14,6 +14,10 @@ extern "C" { #ifdef __cplusplus } +#include "gfx.hpp" +#include "gui.hpp" +#include "screenCommon.hpp" + #include #include #include diff --git a/source/charchange.cpp b/source/charchange.cpp index df48d9c..ef326d7 100644 --- a/source/charchange.cpp +++ b/source/charchange.cpp @@ -6,7 +6,7 @@ #include // access #include -#include "gui.hpp" +#include "common.hpp" #include "savedata.h" #include "file_browse.h" @@ -18,9 +18,6 @@ #include "import_ss4charnames.h" #include "import_everycharnames.h" -extern C3D_RenderTarget* top; -extern C3D_RenderTarget* bottom; - extern void sndSelect(void); extern void sndBack(void); extern void sndHighlight(void); @@ -84,8 +81,6 @@ extern int cursorX; extern int cursorY; extern int cursorAlpha; -extern void drawCursor(void); - extern u32 hDown; extern touchPosition touch; extern bool touchingBackButton(void); @@ -166,9 +161,9 @@ static int messageNo = 0; static char chararacterImported[48]; static void drawMsg(void) { - Gui::sprite(sprites_msg_idx, 0, 8, 2, 1); - Gui::sprite(sprites_msg_idx, 160, 8, -2, 1); - Gui::sprite(messageNo==4 ? sprites_icon_question_idx : sprites_icon_msg_idx, 132, -2); + GFX::DrawSprite(sprites_msg_idx, 0, 8, 2, 1); + GFX::DrawSprite(sprites_msg_idx, 160, 8, -2, 1); + GFX::DrawSprite(messageNo==4 ? sprites_icon_question_idx : sprites_icon_msg_idx, 132, -2); if (messageNo == 5) { Gui::DrawStringCentered(0, 68, 0.60, BLACK, "Everyone is now in Fashion Forward!"); Gui::DrawStringCentered(0, 88, 0.60, BLACK, "(Except for customers and reps.)"); @@ -197,15 +192,15 @@ static void drawMsg(void) { //Gui::DrawStringCentered(0, 104, 0.60, BLACK, "yet."); } if (messageNo == 4) { - Gui::sprite(sprites_button_msg_shadow_idx, 52, 197); - Gui::sprite(sprites_button_msg_idx, 53, 188); - Gui::sprite(sprites_button_msg_shadow_idx, 176, 197); - Gui::sprite(sprites_button_msg_idx, 177, 188); + GFX::DrawSprite(sprites_button_msg_shadow_idx, 52, 197); + GFX::DrawSprite(sprites_button_msg_idx, 53, 188); + GFX::DrawSprite(sprites_button_msg_shadow_idx, 176, 197); + GFX::DrawSprite(sprites_button_msg_idx, 177, 188); Gui::DrawString(72, 196, 0.70, MSG_BUTTONTEXT, " No"); Gui::DrawString(196, 196, 0.70, MSG_BUTTONTEXT, " Yes"); } else { - Gui::sprite(sprites_button_msg_shadow_idx, 114, 197); - Gui::sprite(sprites_button_msg_idx, 115, 188); + GFX::DrawSprite(sprites_button_msg_shadow_idx, 114, 197); + GFX::DrawSprite(sprites_button_msg_idx, 115, 188); Gui::DrawString(134, 196, 0.70, MSG_BUTTONTEXT, " OK!"); } } @@ -219,11 +214,11 @@ void loadChrImage(bool Robz) { } else { sprintf(chrFilePath, "romfs:/gfx/null.t3x"); // All Seasons } - previewCharacterFound = Gui::loadCharSprite(chrFilePath, chrFilePath); + previewCharacterFound = GFX::loadCharSprite(chrFilePath, chrFilePath); } else { sprintf(chrFilePath, "romfs:/gfx/ss%i_%s.t3x", highlightedGame+1, (Robz ? "Robz" : import_characterName())); // All Seasons sprintf(chrFilePath2, "romfs:/gfx/ss%i_%s%i.t3x", highlightedGame+1, (Robz ? "Robz" : import_characterName()), seasonNo); // One Season - previewCharacterFound = Gui::loadCharSprite(chrFilePath, chrFilePath2); + previewCharacterFound = GFX::loadCharSprite(chrFilePath, chrFilePath2); } previewCharacter = true; } @@ -287,15 +282,15 @@ void changeCharacterGraphics(void) { } C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(top, TRANSPARENT); - C2D_TargetClear(bottom, TRANSPARENT); + C2D_TargetClear(Top, TRANSPARENT); + C2D_TargetClear(Bottom, TRANSPARENT); Gui::clearTextBufs(); - Gui::setDraw(top); + Gui::ScreenDraw(Top); - Gui::showBgSprite(zoomIn); + GFX::showBgSprite(zoomIn); if (previewCharacter) { if (previewCharacterFound) { - Gui::showCharSprite(zoomIn, charFadeAlpha); + GFX::showCharSprite(zoomIn, charFadeAlpha); } else { Gui::DrawStringCentered(0, 104, 0.65, WHITE, (import_highlightedGame==4 ? "Preview not found." : "Preview unavailable.")); } @@ -315,11 +310,11 @@ void changeCharacterGraphics(void) { if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::Draw_Rect(0, 0, 320, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); } } @@ -360,24 +355,24 @@ void changeCharacterGraphics(void) { for (int i = import_characterShownFirst; i < import_characterShownFirst+3; i++) { if (import_highlightedGame == 4) { if (i >= numberOfExportedCharacters) break; - Gui::sprite(sprites_item_button_idx, 16, i2-20); - Gui::sprite((getExportedCharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite((getExportedCharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, getExportedCharacterName(i)); } else if (import_highlightedGame == 3) { - Gui::sprite(sprites_item_button_idx, 16, i2-20); - Gui::sprite((import_ss4CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite((import_ss4CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, import_ss4CharacterNames[i]); } else if (import_highlightedGame == 2) { - Gui::sprite(sprites_item_button_idx, 16, i2-20); - Gui::sprite((import_ss3CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite((import_ss3CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, import_ss3CharacterNames[i]); } else if (import_highlightedGame == 1) { - Gui::sprite(sprites_item_button_idx, 16, i2-20); - Gui::sprite((import_ss2CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite((import_ss2CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, import_ss2CharacterNames[i]); } else if (import_highlightedGame == 0) { - Gui::sprite(sprites_item_button_idx, 16, i2-20); - Gui::sprite((import_ss1CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite((import_ss1CharacterGenders[i] ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, import_ss1CharacterNames[i]); } i2 += 48; @@ -391,20 +386,20 @@ void changeCharacterGraphics(void) { int i2 = 0; if (characterChangeMenu_optionShownFirst == 0) { i2 += 48; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); Gui::DrawString(32, i2, 0.65, BLACK, "Change attributes"); } if (highlightedGame == 3) { i2 += 48; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); Gui::DrawString(32, i2, 0.65, BLACK, "Change bow placement"); } i2 += 48; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); Gui::DrawString(32, i2, 0.65, BLACK, "Import character"); if (highlightedGame < 3 || characterChangeMenu_optionShownFirst == 1) { i2 += 48; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); Gui::DrawString(32, i2, 0.65, BLACK, "Export character"); } } else { @@ -419,25 +414,25 @@ void changeCharacterGraphics(void) { if (!displayNothing) { int i2 = 48; for (int i = characterShownFirst; i < characterShownFirst+3; i++) { - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); if (highlightedGame == 3) { if (i==0) { - Gui::sprite((getSS4CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite((getSS4CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, ss4PlayerName); } else { - Gui::sprite((getSS4CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite((getSS4CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, ss4CharacterNames[i]); } } else if (highlightedGame == 2) { if (i==0) { - Gui::sprite((getSS3CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite((getSS3CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, ss3PlayerName); } else { - Gui::sprite((getSS3CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite((getSS3CharacterGender(i) ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, ss3CharacterNames[i]); } } else if (highlightedGame == 1) { - Gui::sprite((getSS2CharacterGender() ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); + GFX::DrawSprite((getSS2CharacterGender() ? sprites_icon_male_idx : sprites_icon_female_idx), 12, i2-8); Gui::DrawString(64, i2, 0.65, BLACK, ss2PlayerName); break; } @@ -446,12 +441,12 @@ void changeCharacterGraphics(void) { } } - Gui::sprite(sprites_button_shadow_idx, 5, 199); - Gui::sprite(sprites_button_red_idx, 5, 195); - Gui::sprite(sprites_arrow_back_idx, 19, 195); - Gui::sprite(sprites_button_b_idx, 44, 218); + GFX::DrawSprite(sprites_button_shadow_idx, 5, 199); + GFX::DrawSprite(sprites_button_red_idx, 5, 195); + GFX::DrawSprite(sprites_arrow_back_idx, 19, 195); + GFX::DrawSprite(sprites_button_b_idx, 44, 218); - drawCursor(); + GFX::drawCursor(); if (showMessage) { drawMsg(); diff --git a/source/emblemchange.cpp b/source/emblemchange.cpp index 35b8733..040bfb0 100644 --- a/source/emblemchange.cpp +++ b/source/emblemchange.cpp @@ -6,15 +6,12 @@ #include // access #include -#include "gui.hpp" +#include "common.hpp" #include "savedata.h" #include "file_browse.h" #include "import_emblemnames.h" -extern C3D_RenderTarget* top; -extern C3D_RenderTarget* bottom; - extern void sndSelect(void); extern void sndBack(void); extern void sndHighlight(void); @@ -57,8 +54,6 @@ extern int cursorX; extern int cursorY; extern int cursorAlpha; -extern void drawCursor(void); - extern u32 hDown; extern touchPosition touch; extern bool touchingBackButton(void); @@ -201,9 +196,9 @@ static int messageNo = 0; static char emblemImported[48]; static void drawMsg(void) { - Gui::sprite(sprites_msg_idx, 0, 8, 2, 1); - Gui::sprite(sprites_msg_idx, 160, 8, -2, 1); - Gui::sprite(sprites_icon_msg_idx, 132, -2); + GFX::DrawSprite(sprites_msg_idx, 0, 8, 2, 1); + GFX::DrawSprite(sprites_msg_idx, 160, 8, -2, 1); + GFX::DrawSprite(sprites_icon_msg_idx, 132, -2); if (messageNo == 3) { Gui::DrawStringCentered(0, 94, 0.60, BLACK, "Failed to import emblem."); } else if (messageNo == 2) { @@ -220,8 +215,8 @@ static void drawMsg(void) { Gui::DrawStringCentered(0, 94, 0.60, BLACK, "This feature is not available yet."); //Gui::DrawStringCentered(0, 104, 0.60, BLACK, "yet."); } - Gui::sprite(sprites_button_msg_shadow_idx, 114, 197); - Gui::sprite(sprites_button_msg_idx, 115, 188); + GFX::DrawSprite(sprites_button_msg_shadow_idx, 114, 197); + GFX::DrawSprite(sprites_button_msg_idx, 115, 188); Gui::DrawString(134, 196, 0.70, MSG_BUTTONTEXT, " OK!"); } @@ -248,27 +243,27 @@ void changeEmblemGraphics(void) { } C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(top, TRANSPARENT); - C2D_TargetClear(bottom, TRANSPARENT); + C2D_TargetClear(Top, TRANSPARENT); + C2D_TargetClear(Bottom, TRANSPARENT); Gui::clearTextBufs(); - Gui::setDraw(top); + Gui::ScreenDraw(Top); Gui::Draw_Rect(0, 0, 400, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -72+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -72+bg_xPos+w*72, bg_yPos+h*136); } } - Gui::sprite(sprites_emblem_back_idx, 100, 20, 2, 2); + GFX::DrawSprite(sprites_emblem_back_idx, 100, 20, 2, 2); //drawEmblem(136, 56, true); if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::Draw_Rect(0, 0, 320, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); } } @@ -297,7 +292,7 @@ void changeEmblemGraphics(void) { } else { if (i > totalEmblems) break; } - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); if (importPage == 1) { Gui::DrawString(32, i2, 0.65, BLACK, getExportedEmblemName(i)); } else { @@ -318,10 +313,10 @@ void changeEmblemGraphics(void) { Gui::DrawString(8, 8, 0.50, BLACK, emblemText); int i2 = 48; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); Gui::DrawString(32, i2, 0.65, BLACK, "Import emblem"); i2 += 48; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); Gui::DrawString(32, i2, 0.65, BLACK, "Export emblem"); } else { cursorY = 64+(48*cursorPosition); @@ -330,7 +325,7 @@ void changeEmblemGraphics(void) { int i2 = 48; for (int i = 0; i <= totalEmblems; i++) { - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); if (highlightedGame == 2) { sprintf(emblemText, "Emblem"); } else { @@ -341,12 +336,12 @@ void changeEmblemGraphics(void) { } } - Gui::sprite(sprites_button_shadow_idx, 5, 199); - Gui::sprite(sprites_button_red_idx, 5, 195); - Gui::sprite(sprites_arrow_back_idx, 19, 195); - Gui::sprite(sprites_button_b_idx, 44, 218); + GFX::DrawSprite(sprites_button_shadow_idx, 5, 199); + GFX::DrawSprite(sprites_button_red_idx, 5, 195); + GFX::DrawSprite(sprites_arrow_back_idx, 19, 195); + GFX::DrawSprite(sprites_button_b_idx, 44, 218); - drawCursor(); + GFX::drawCursor(); if (showMessage) { drawMsg(); diff --git a/source/gfx.cpp b/source/gfx.cpp new file mode 100644 index 0000000..5d9faf2 --- /dev/null +++ b/source/gfx.cpp @@ -0,0 +1,84 @@ +#include "common.hpp" + +#include + +static C2D_SpriteSheet sprites; +static C2D_SpriteSheet bgSprite; +static C2D_SpriteSheet chracterSprite; +static bool dochracterSpriteFree = false; + +extern bool showCursor; +extern int cursorX; +extern int cursorY; +extern int cursorAlpha; + +Result GFX::loadSheets() { + sprites = C2D_SpriteSheetLoad("romfs:/gfx/sprites.t3x"); + bgSprite = C2D_SpriteSheetLoad("romfs:/gfx/bgNight_loversBell.t3x"); + return 0; +} + +Result GFX::unloadSheets() { + C2D_SpriteSheetFree(sprites); + C2D_SpriteSheetFree(bgSprite); + return 0; +} + +bool GFX::loadCharSprite(const char* t3xPathAllSeasons, const char* t3xPathOneSeason) { + if (dochracterSpriteFree) { + C2D_SpriteSheetFree(chracterSprite); + } + if (access(t3xPathAllSeasons, F_OK) == 0) { + chracterSprite = C2D_SpriteSheetLoad(t3xPathAllSeasons); + dochracterSpriteFree = true; + return true; + } else { + dochracterSpriteFree = false; + } + if (access(t3xPathOneSeason, F_OK) == 0) { + chracterSprite = C2D_SpriteSheetLoad(t3xPathOneSeason); + dochracterSpriteFree = true; + return true; + } else { + dochracterSpriteFree = false; + } + return false; +} + +void GFX::showBgSprite(int zoomIn) { + Gui::DrawSprite(bgSprite, 0, 0, -(240*zoomIn)); +} + +void GFX::showCharSprite(int zoomIn, int fadeAlpha) { + if (fadeAlpha == 255) { + C2D_DrawImageAt(C2D_SpriteSheetGetImage(chracterSprite, 0), 0, -(240*zoomIn), 0.5f); + } else { + C2D_ImageTint tint; + C2D_SetImageTint(&tint, C2D_TopLeft, C2D_Color32(255, 255, 255, fadeAlpha), 1); + C2D_SetImageTint(&tint, C2D_TopRight, C2D_Color32(255, 255, 255, fadeAlpha), 1); + C2D_SetImageTint(&tint, C2D_BotLeft, C2D_Color32(255, 255, 255, fadeAlpha), 1); + C2D_SetImageTint(&tint, C2D_BotRight, C2D_Color32(255, 255, 255, fadeAlpha), 1); + C2D_DrawImageAt(C2D_SpriteSheetGetImage(chracterSprite, 0), 0, -(240*zoomIn), 0.5f, &tint); + } +} + +void GFX::DrawSprite(int img, int x, int y, float ScaleX, float ScaleY) { + C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, img), x, y, 0.5f, NULL, ScaleX, ScaleY); +} + +void GFX::DrawSpriteBlend(int key, float x, float y, u32 color, float ScaleX, float ScaleY) { + C2D_ImageTint tint; + C2D_SetImageTint(&tint, C2D_TopLeft, color, 1); + C2D_SetImageTint(&tint, C2D_TopRight, color, 1); + C2D_SetImageTint(&tint, C2D_BotLeft, color, 1); + C2D_SetImageTint(&tint, C2D_BotRight, color, 1); + C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, key), x, y, 0.5f, &tint, ScaleX, ScaleY); +} + +void GFX::drawCursor(void) { + if (cursorAlpha == 255) { + DrawSprite(sprites_cursor_idx, cursorX, cursorY); + } else if (cursorAlpha > 0) { + DrawSpriteBlend(sprites_cursor_idx, cursorX, cursorY, C2D_Color32(255, 255, 255, cursorAlpha)); + } +} \ No newline at end of file diff --git a/source/gui.cpp b/source/gui.cpp deleted file mode 100644 index 261d633..0000000 --- a/source/gui.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* -* This file is part of Universal-Updater -* Copyright (C) 2019-2020 DeadPhoenix8091, Epicpkmn11, Flame, RocketRobz, StackZ, TotallyNotGuy -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -* -* Additional Terms 7.b and 7.c of GPLv3 apply to this file: -* * Requiring preservation of specified reasonable legal notices or -* author attributions in that material or in the Appropriate Legal -* Notices displayed by works containing it. -* * Prohibiting misrepresentation of the origin of that material, -* or requiring that modified versions of such material be marked in -* reasonable ways as different from the original version. -*/ - -#include "gui.hpp" - -#include - - -C3D_RenderTarget* top; -C3D_RenderTarget* bottom; - -static C2D_SpriteSheet sprites; -static C2D_SpriteSheet bgSprite; -static C2D_SpriteSheet chracterSprite; -static bool dochracterSpriteFree = false; -bool currentScreen = false; // False -> Bottom, True -> Top. -C2D_TextBuf sizeBuf; -C2D_Font systemFont; - -void Gui::clearTextBufs(void) { - C2D_TextBufClear(sizeBuf); -} - -Result Gui::init(void) { - C3D_Init(C3D_DEFAULT_CMDBUF_SIZE); - C2D_Init(C2D_DEFAULT_MAX_OBJECTS); - C2D_Prepare(); - top = C2D_CreateScreenTarget(GFX_TOP, GFX_LEFT); - bottom = C2D_CreateScreenTarget(GFX_BOTTOM, GFX_LEFT); - sizeBuf = C2D_TextBufNew(4096); - sprites = C2D_SpriteSheetLoad("romfs:/gfx/sprites.t3x"); - bgSprite = C2D_SpriteSheetLoad("romfs:/gfx/bgNight_loversBell.t3x"); - systemFont = C2D_FontLoadSystem(CFG_REGION_USA); - return 0; -} - -bool Gui::loadCharSprite(const char* t3xPathAllSeasons, const char* t3xPathOneSeason) { - if (dochracterSpriteFree) { - C2D_SpriteSheetFree(chracterSprite); - } - if (access(t3xPathAllSeasons, F_OK) == 0) { - chracterSprite = C2D_SpriteSheetLoad(t3xPathAllSeasons); - dochracterSpriteFree = true; - return true; - } else { - dochracterSpriteFree = false; - } - if (access(t3xPathOneSeason, F_OK) == 0) { - chracterSprite = C2D_SpriteSheetLoad(t3xPathOneSeason); - dochracterSpriteFree = true; - return true; - } else { - dochracterSpriteFree = false; - } - return false; -} - -void Gui::exit(void) { - if (sprites) { - C2D_SpriteSheetFree(sprites); - } - C2D_TextBufDelete(sizeBuf); - C2D_Fini(); - C3D_Fini(); -} - -// Select, on which Screen should be drawn. -void Gui::setDraw(C3D_RenderTarget * screen) -{ - C2D_SceneBegin(screen); - currentScreen = screen == top ? 1 : 0; -} - -void Gui::sprite(int key, float x, float y, float ScaleX, float ScaleY) { - C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, key), x, y, 0.5f, NULL, ScaleX, ScaleY); -} - -void Gui::showBgSprite(int zoomIn) { - C2D_DrawImageAt(C2D_SpriteSheetGetImage(bgSprite, 0), 0, -(240*zoomIn), 0.5f); -} - -void Gui::showCharSprite(int zoomIn, int fadeAlpha) { - if (fadeAlpha == 255) { - C2D_DrawImageAt(C2D_SpriteSheetGetImage(chracterSprite, 0), 0, -(240*zoomIn), 0.5f); - } else { - C2D_ImageTint tint; - C2D_SetImageTint(&tint, C2D_TopLeft, C2D_Color32(255, 255, 255, fadeAlpha), 1); - C2D_SetImageTint(&tint, C2D_TopRight, C2D_Color32(255, 255, 255, fadeAlpha), 1); - C2D_SetImageTint(&tint, C2D_BotLeft, C2D_Color32(255, 255, 255, fadeAlpha), 1); - C2D_SetImageTint(&tint, C2D_BotRight, C2D_Color32(255, 255, 255, fadeAlpha), 1); - C2D_DrawImageAt(C2D_SpriteSheetGetImage(chracterSprite, 0), 0, -(240*zoomIn), 0.5f, &tint); - } -} - -void Gui::Draw_ImageBlend(int key, float x, float y, u32 color) { - C2D_ImageTint tint; - C2D_SetImageTint(&tint, C2D_TopLeft, color, 1); - C2D_SetImageTint(&tint, C2D_TopRight, color, 1); - C2D_SetImageTint(&tint, C2D_BotLeft, color, 1); - C2D_SetImageTint(&tint, C2D_BotRight, color, 1); - C2D_DrawImageAt(C2D_SpriteSheetGetImage(sprites, key), x, y, 0.5f, &tint); -} - -void Gui::DrawStringCentered(float x, float y, float size, u32 color, std::string Text, int maxWidth) { - Gui::DrawString((currentScreen ? 200 : 160)+x-((maxWidth == 0 ? (int)Gui::GetStringWidth(size, Text) : std::min(maxWidth, (int)Gui::GetStringWidth(size, Text)))/2), y, size, color, Text, maxWidth); -} - -// Draw String or Text. -void Gui::DrawString(float x, float y, float size, u32 color, std::string Text, int maxWidth) { - C2D_Text c2d_text; - C2D_TextParse(&c2d_text, sizeBuf, Text.c_str()); - C2D_TextOptimize(&c2d_text); - if(maxWidth == 0) { - C2D_DrawText(&c2d_text, C2D_WithColor, x, y, 0.5f, size, size, color); - } else { - C2D_DrawText(&c2d_text, C2D_WithColor, x, y, 0.5f, std::min(size, size*(maxWidth/Gui::GetStringWidth(size, Text))), size, color); - } -} - -// Get String or Text Width. -float Gui::GetStringWidth(float size, std::string Text) { - float width = 0; - GetStringSize(size, &width, NULL, Text); - return width; -} - -// Get String or Text Size. -void Gui::GetStringSize(float size, float *width, float *height, std::string Text) { - C2D_Text c2d_text; - C2D_TextParse(&c2d_text, sizeBuf, Text.c_str()); - C2D_TextGetDimensions(&c2d_text, size, size, width, height); -} - -// Get String or Text Height. -float Gui::GetStringHeight(float size, std::string Text) { - float height = 0; - GetStringSize(size, NULL, &height, Text.c_str()); - return height; -} - -bool Gui::Draw_Rect(float x, float y, float w, float h, u32 color) { - return C2D_DrawRectSolid(x, y, 0.5f, w, h, color); -} \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index 26284e7..d6766dd 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -6,8 +6,8 @@ #include // access #include +#include "common.hpp" #include "dumpdsp.h" -#include "gui.hpp" #include "savedata.h" //#include "settings.h" #include "sound.h" @@ -21,9 +21,6 @@ static char verText[32]; extern void loadSettings(void); -extern C3D_RenderTarget* top; -extern C3D_RenderTarget* bottom; - // Current screen mode. enum ScreenMode { SCREEN_MODE_ROCKETROBZ = 0, // RocketRobz logo @@ -120,21 +117,13 @@ int cursorY = 0; static int whatToChange_cursorPosition = 0; int cursorAlpha = 0; -void drawCursor(void) { - if (cursorAlpha == 255) { - Gui::sprite(sprites_cursor_idx, cursorX, cursorY); - } else if (cursorAlpha > 0) { - Gui::Draw_ImageBlend(sprites_cursor_idx, cursorX, cursorY, C2D_Color32(255, 255, 255, cursorAlpha)); - } -} - static bool showMessage = false; static int messageNo = 0; static void drawCannotEditMsg(void) { - Gui::sprite(sprites_msg_idx, 0, 8, 2, 1); - Gui::sprite(sprites_msg_idx, 160, 8, -2, 1); - Gui::sprite(sprites_icon_msg_idx, 132, -2); + GFX::DrawSprite(sprites_msg_idx, 0, 8, 2, 1); + GFX::DrawSprite(sprites_msg_idx, 160, 8, -2, 1); + GFX::DrawSprite(sprites_icon_msg_idx, 132, -2); if (messageNo == 1) { Gui::DrawStringCentered(0, 58, 0.60, BLACK, "Save data not found."); Gui::DrawStringCentered(0, 90, 0.60, BLACK, highlightedGame==3 ? "Please back up the extra data using" : "Please back it up using"); @@ -144,8 +133,8 @@ static void drawCannotEditMsg(void) { Gui::DrawStringCentered(0, 92, 0.60, BLACK, "Cannot edit Style Savvy's"); Gui::DrawStringCentered(0, 112, 0.60, BLACK, "save data yet."); } - Gui::sprite(sprites_button_msg_shadow_idx, 114, 197); - Gui::sprite(sprites_button_msg_idx, 115, 188); + GFX::DrawSprite(sprites_button_msg_shadow_idx, 114, 197); + GFX::DrawSprite(sprites_button_msg_idx, 115, 188); Gui::DrawString(134, 196, 0.70, MSG_BUTTONTEXT, " OK!"); } @@ -310,6 +299,7 @@ int main() gfxInitDefault(); Gui::init(); + GFX::loadSheets(); // make folders if they don't exist mkdir("sdmc:/3ds", 0777); @@ -341,7 +331,7 @@ int main() dspfirmfound = true; }else{ C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::DrawString(12, 16, 0.5f, WHITE, "Dumping DSP firm..."); C3D_FrameEnd(0); screenon(); @@ -351,8 +341,8 @@ int main() dspfirmfound = true; } else { C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(bottom, TRANSPARENT); // clear Bottom Screen to avoid Text overdraw. - Gui::setDraw(bottom); + C2D_TargetClear(Bottom, TRANSPARENT); // clear Bottom Screen to avoid Text overdraw. + Gui::ScreenDraw(Bottom); Gui::DrawString(12, 16, 0.5f, WHITE, "DSP firm dumping failed.\n" "Running without sound."); C3D_FrameEnd(0); @@ -399,22 +389,22 @@ int main() if (screenmode == SCREEN_MODE_ROCKETROBZ) { C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(top, TRANSPARENT); - C2D_TargetClear(bottom, TRANSPARENT); + C2D_TargetClear(Top, TRANSPARENT); + C2D_TargetClear(Bottom, TRANSPARENT); Gui::clearTextBufs(); - Gui::setDraw(top); + Gui::ScreenDraw(Top); - Gui::sprite(sprites_logo_rocketrobz_idx, 0, 0); + GFX::DrawSprite(sprites_logo_rocketrobz_idx, 0, 0); Gui::DrawString(8, 220, 0.50, BLACK, yeartext); if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::Draw_Rect(0, 0, 320, 240, WHITE); /*text_width = 104; Gui::DrawString(((320-text_width)/2), 100, 0.50, BLACK, yeartext); text_width = 264; Gui::DrawString(((320-text_width)/2), 116, 0.50, BLACK, yeartext2);*/ - Gui::sprite(sprites_logo_SSanniversary_idx, 32, 24); + GFX::DrawSprite(sprites_logo_SSanniversary_idx, 32, 24); if (fadealpha > 0) Gui::Draw_Rect(0, 0, 320, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect C3D_FrameEnd(0); @@ -425,10 +415,10 @@ int main() } } else if (screenmode == SCREEN_MODE_GAME_SELECT) { C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(top, TRANSPARENT); - C2D_TargetClear(bottom, TRANSPARENT); + C2D_TargetClear(Top, TRANSPARENT); + C2D_TargetClear(Bottom, TRANSPARENT); Gui::clearTextBufs(); - Gui::setDraw(top); + Gui::ScreenDraw(Top); /*for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { @@ -438,41 +428,41 @@ int main() switch(highlightedGame) { case 0: default: - Gui::sprite(sprites_title1_screenshot_idx, 0, 0); + GFX::DrawSprite(sprites_title1_screenshot_idx, 0, 0); break; case 1: - Gui::sprite(sprites_title2_screenshot_idx, 0, 0); + GFX::DrawSprite(sprites_title2_screenshot_idx, 0, 0); break; case 2: - Gui::sprite(sprites_title3_screenshot_idx, 0, 0); + GFX::DrawSprite(sprites_title3_screenshot_idx, 0, 0); break; case 3: - Gui::sprite(sprites_title4_screenshot_idx, 0, 0); + GFX::DrawSprite(sprites_title4_screenshot_idx, 0, 0); break; } if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::Draw_Rect(0, 0, 320, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); } } Gui::DrawString(8, 8, 0.50, BLACK, "Select a game to manage it's save data."); switch(highlightedGame) { case 0: default: - Gui::sprite(sprites_title1_idx, 0, 56); + GFX::DrawSprite(sprites_title1_idx, 0, 56); break; case 1: - Gui::sprite(sprites_title2_idx, 0, 56); + GFX::DrawSprite(sprites_title2_idx, 0, 56); break; case 2: - Gui::sprite(sprites_title3_idx, 0, 56); + GFX::DrawSprite(sprites_title3_idx, 0, 56); break; case 3: - Gui::sprite(sprites_title4_idx, 0, 56); + GFX::DrawSprite(sprites_title4_idx, 0, 56); break; } Gui::DrawString(8, 112, 0.55, BLACK, "<"); @@ -507,52 +497,52 @@ int main() } C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(top, TRANSPARENT); - C2D_TargetClear(bottom, TRANSPARENT); + C2D_TargetClear(Top, TRANSPARENT); + C2D_TargetClear(Bottom, TRANSPARENT); Gui::clearTextBufs(); - Gui::setDraw(top); + Gui::ScreenDraw(Top); Gui::Draw_Rect(0, 0, 400, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -72+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -72+bg_xPos+w*72, bg_yPos+h*136); } } if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::Draw_Rect(0, 0, 320, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); } } Gui::DrawString(8, 8, 0.50, BLACK, "What do you want to change?"); int iconXpos = 64; - Gui::Draw_ImageBlend(sprites_icon_shadow_idx, iconXpos, 86, C2D_Color32(0, 0, 0, 63)); - Gui::sprite(sprites_icon_profile_idx, iconXpos, 80); + GFX::DrawSpriteBlend(sprites_icon_shadow_idx, iconXpos, 86, C2D_Color32(0, 0, 0, 63)); + GFX::DrawSprite(sprites_icon_profile_idx, iconXpos, 80); Gui::DrawString(iconXpos-2, 140, 0.50, RED, "Characters"); iconXpos += 64; if (highlightedGame == 1) { // Show music pack option for Trendsetters - Gui::Draw_ImageBlend(sprites_icon_shadow_idx, iconXpos, 86, C2D_Color32(0, 0, 0, 63)); - Gui::sprite(sprites_icon_music_idx, iconXpos, 80); + GFX::DrawSpriteBlend(sprites_icon_shadow_idx, iconXpos, 86, C2D_Color32(0, 0, 0, 63)); + GFX::DrawSprite(sprites_icon_music_idx, iconXpos, 80); Gui::DrawString(iconXpos+14, 140, 0.50, RED, "Music"); } iconXpos += 64; if (highlightedGame > 1) { // Show emblem option for Fashion Forward and Styling Star - Gui::Draw_ImageBlend(sprites_icon_shadow_idx, iconXpos, 86, C2D_Color32(0, 0, 0, 63)); - Gui::sprite(sprites_icon_emblem_idx, iconXpos, 80); + GFX::DrawSpriteBlend(sprites_icon_shadow_idx, iconXpos, 86, C2D_Color32(0, 0, 0, 63)); + GFX::DrawSprite(sprites_icon_emblem_idx, iconXpos, 80); Gui::DrawString(iconXpos+8, 140, 0.50, RED, "Emblem"); } - Gui::sprite(sprites_button_shadow_idx, 5, 199); - Gui::sprite(sprites_button_red_idx, 5, 195); - Gui::sprite(sprites_arrow_back_idx, 19, 195); - Gui::sprite(sprites_button_b_idx, 44, 218); - /*Gui::sprite(sprites_button_shadow_idx, 251, 199); - Gui::sprite(sprites_button_blue_idx, 251, 195);*/ - drawCursor(); + GFX::DrawSprite(sprites_button_shadow_idx, 5, 199); + GFX::DrawSprite(sprites_button_red_idx, 5, 195); + GFX::DrawSprite(sprites_arrow_back_idx, 19, 195); + GFX::DrawSprite(sprites_button_b_idx, 44, 218); + /*GFX::DrawSprite(sprites_button_shadow_idx, 251, 199); + GFX::DrawSprite(sprites_button_blue_idx, 251, 195);*/ + GFX::drawCursor(); if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect C3D_FrameEnd(0); } else if (screenmode == SCREEN_MODE_CHANGE_CHARACTER) { @@ -637,6 +627,7 @@ int main() svcCloseHandle(threadRequest); Gui::exit(); + GFX::unloadSheets(); gfxExit(); hidExit(); diff --git a/source/musicchange.cpp b/source/musicchange.cpp index 70fa718..ccb7293 100644 --- a/source/musicchange.cpp +++ b/source/musicchange.cpp @@ -5,7 +5,7 @@ #include #include -#include "gui.hpp" +#include "common.hpp" #include "savedata.h" //#include "settings.h" #include "file_browse.h" @@ -13,9 +13,6 @@ extern std::string currentMusicPack; extern void saveSettings(void); -extern C3D_RenderTarget* top; -extern C3D_RenderTarget* bottom; - extern void sndSelect(void); extern void sndBack(void); extern void sndHighlight(void); @@ -51,8 +48,6 @@ extern int cursorX; extern int cursorY; extern int cursorAlpha; -extern void drawCursor(void); - extern u32 hDown; extern touchPosition touch; extern bool touchingBackButton(void); @@ -68,16 +63,16 @@ static bool showMessage = false; static int messageNo = 0; static void drawMsg(void) { - Gui::sprite(sprites_msg_idx, 0, 8, 2, 1); - Gui::sprite(sprites_msg_idx, 160, 8, -2, 1); - Gui::sprite(sprites_icon_msg_idx, 132, -2); + GFX::DrawSprite(sprites_msg_idx, 0, 8, 2, 1); + GFX::DrawSprite(sprites_msg_idx, 160, 8, -2, 1); + GFX::DrawSprite(sprites_icon_msg_idx, 132, -2); if (messageNo == 1) { Gui::DrawStringCentered(0, 94, 0.60, BLACK, "Failed to apply music pack."); } else { Gui::DrawStringCentered(0, 94, 0.60, BLACK, "Successfully applied music pack."); } - Gui::sprite(sprites_button_msg_shadow_idx, 114, 197); - Gui::sprite(sprites_button_msg_idx, 115, 188); + GFX::DrawSprite(sprites_button_msg_shadow_idx, 114, 197); + GFX::DrawSprite(sprites_button_msg_idx, 115, 188); Gui::DrawString(134, 196, 0.70, MSG_BUTTONTEXT, " OK!"); } @@ -88,15 +83,15 @@ void changeMusicGraphics(void) { } C3D_FrameBegin(C3D_FRAME_SYNCDRAW); - C2D_TargetClear(top, TRANSPARENT); - C2D_TargetClear(bottom, TRANSPARENT); + C2D_TargetClear(Top, TRANSPARENT); + C2D_TargetClear(Bottom, TRANSPARENT); Gui::clearTextBufs(); - Gui::setDraw(top); + Gui::ScreenDraw(Top); Gui::Draw_Rect(0, 0, 400, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -72+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -72+bg_xPos+w*72, bg_yPos+h*136); } } @@ -105,11 +100,11 @@ void changeMusicGraphics(void) { if (fadealpha > 0) Gui::Draw_Rect(0, 0, 400, 240, C2D_Color32(fadecolor, fadecolor, fadecolor, fadealpha)); // Fade in/out effect - Gui::setDraw(bottom); + Gui::ScreenDraw(Bottom); Gui::Draw_Rect(0, 0, 320, 240, WHITE); // Fill gaps of BG for(int w = 0; w < 7; w++) { for(int h = 0; h < 3; h++) { - Gui::sprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); + GFX::DrawSprite(sprites_phone_bg_idx, -76+bg_xPos+w*72, bg_yPos+h*136); } } @@ -122,7 +117,7 @@ void changeMusicGraphics(void) { for (int i = musicPackShownFirst; i < musicPackShownFirst+3; i++) { if (i > numberOfMusicPacks) break; - Gui::sprite(sprites_item_button_idx, 16, i2-20); + GFX::DrawSprite(sprites_item_button_idx, 16, i2-20); if (i == 0) { Gui::DrawString(32, i2, 0.65, BLACK, "Original/Revert"); } else { @@ -131,12 +126,12 @@ void changeMusicGraphics(void) { i2 += 48; } - Gui::sprite(sprites_button_shadow_idx, 5, 199); - Gui::sprite(sprites_button_red_idx, 5, 195); - Gui::sprite(sprites_arrow_back_idx, 19, 195); - Gui::sprite(sprites_button_b_idx, 44, 218); + GFX::DrawSprite(sprites_button_shadow_idx, 5, 199); + GFX::DrawSprite(sprites_button_red_idx, 5, 195); + GFX::DrawSprite(sprites_arrow_back_idx, 19, 195); + GFX::DrawSprite(sprites_button_b_idx, 44, 218); - drawCursor(); + GFX::drawCursor(); if (showMessage) { drawMsg();