mirror of
https://github.com/PretendoNetwork/nimbus.git
synced 2024-05-16 20:00:46 -04:00
Add button controls and switch fully over to enums for handling account type (90% by Fangal-Airbag and zaksabeast)
This commit is contained in:
parent
ed6d9c2df1
commit
872f20591a
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -6,6 +6,7 @@
|
|||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
*.lst
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
|
@ -49,3 +50,6 @@ target
|
|||
|
||||
# VSCode
|
||||
.vscode
|
||||
|
||||
# Publish
|
||||
*.zip
|
||||
|
|
BIN
app/romfs/gfx/nintendo_btn_selected.png
Normal file
BIN
app/romfs/gfx/nintendo_btn_selected.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
BIN
app/romfs/gfx/nintendo_loaded_deselected.png
Normal file
BIN
app/romfs/gfx/nintendo_loaded_deselected.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
BIN
app/romfs/gfx/pretendo_btn_selected.png
Normal file
BIN
app/romfs/gfx/pretendo_btn_selected.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
BIN
app/romfs/gfx/pretendo_loaded_deselected.png
Normal file
BIN
app/romfs/gfx/pretendo_loaded_deselected.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.2 KiB |
|
@ -4,7 +4,11 @@ debug_header.png
|
|||
go_back.png
|
||||
header.png
|
||||
nintendo_deselected.png
|
||||
nintendo_btn_selected.png
|
||||
nintendo_selected.png
|
||||
nintendo_loaded_deselected.png
|
||||
pretendo_deselected.png
|
||||
pretendo_btn_selected.png
|
||||
pretendo_selected.png
|
||||
pretendo_loaded_deselected.png
|
||||
top.png
|
|
@ -4,6 +4,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "./common.h"
|
||||
#include <3ds/types.h>
|
||||
|
||||
#define ACT_CURRENT_ACCOUNT 0xfe
|
||||
|
|
9
app/source/common.h
Normal file
9
app/source/common.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Nintendo = 1,
|
||||
Pretendo = 2,
|
||||
} Account;
|
|
@ -4,6 +4,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "./common.h"
|
||||
#include <3ds/types.h>
|
||||
|
||||
typedef enum {
|
||||
|
|
|
@ -28,11 +28,11 @@
|
|||
* This will also create the act account if it's missing, just to be safe.
|
||||
* This will fail if the friend account hasn't been created yet.
|
||||
*/
|
||||
Result switchAccounts(u32 friend_account_id) {
|
||||
Result switchAccounts(Account friend_account_id) {
|
||||
Result rc = 0;
|
||||
|
||||
handleResult(FRDA_SetLocalAccountId(friend_account_id), "Switch account");
|
||||
if(rc){
|
||||
if (rc) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -50,15 +50,15 @@ Result switchAccounts(u32 friend_account_id) {
|
|||
return rc;
|
||||
}
|
||||
|
||||
Result createAccount() {
|
||||
Result createAccount(Account friend_account_id) {
|
||||
Result rc = 0;
|
||||
|
||||
// (Re)Create the friend account
|
||||
handleResult(FRDA_CreateLocalAccount(2, NASC_ENV_Test, 0, 1), "Create account");
|
||||
handleResult(FRDA_CreateLocalAccount(friend_account_id, (NascEnvironment)(friend_account_id - 1), 0, 1), "Create account");
|
||||
// Switch to the friend/act accounts
|
||||
handleResult(switchAccounts(2), "Switch account");
|
||||
handleResult(switchAccounts(friend_account_id), "Switch account");
|
||||
// Reset the act account
|
||||
handleResult(ACTA_ResetAccount(2, true), "Reset account");
|
||||
handleResult(ACTA_ResetAccount(friend_account_id, true), "Reset account");
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
@ -68,9 +68,13 @@ C2D_Sprite debug_header;
|
|||
C2D_Sprite go_back;
|
||||
C2D_Sprite header;
|
||||
C2D_Sprite nintendo_deselected;
|
||||
C2D_Sprite nintendo_btn_selected;
|
||||
C2D_Sprite nintendo_selected;
|
||||
C2D_Sprite nintendo_loaded_deselected;
|
||||
C2D_Sprite pretendo_deselected;
|
||||
C2D_Sprite pretendo_btn_selected;
|
||||
C2D_Sprite pretendo_selected;
|
||||
C2D_Sprite pretendo_loaded_deselected;
|
||||
C2D_Sprite top;
|
||||
|
||||
C2D_TextBuf g_staticBuf;
|
||||
|
@ -91,19 +95,27 @@ static void sceneInit(void)
|
|||
C2D_SpriteFromSheet(&go_back, spriteSheet, sheet_go_back_idx);
|
||||
C2D_SpriteFromSheet(&header, spriteSheet, sheet_header_idx);
|
||||
C2D_SpriteFromSheet(&nintendo_deselected, spriteSheet, sheet_nintendo_deselected_idx);
|
||||
C2D_SpriteFromSheet(&nintendo_btn_selected, spriteSheet, sheet_nintendo_btn_selected_idx);
|
||||
C2D_SpriteFromSheet(&nintendo_selected, spriteSheet, sheet_nintendo_selected_idx);
|
||||
C2D_SpriteFromSheet(&nintendo_loaded_deselected, spriteSheet, sheet_nintendo_loaded_deselected_idx);
|
||||
C2D_SpriteFromSheet(&pretendo_deselected, spriteSheet, sheet_pretendo_deselected_idx);
|
||||
C2D_SpriteFromSheet(&pretendo_btn_selected, spriteSheet, sheet_pretendo_btn_selected_idx);
|
||||
C2D_SpriteFromSheet(&pretendo_selected, spriteSheet, sheet_pretendo_selected_idx);
|
||||
C2D_SpriteSetCenter(&top, 0.5f, 0.5f);
|
||||
C2D_SpriteFromSheet(&pretendo_loaded_deselected, spriteSheet, sheet_pretendo_loaded_deselected_idx);
|
||||
C2D_SpriteSetCenter(&top, 0.49f, 0.49f);
|
||||
C2D_SpriteSetPos(&top, 400/2, 240/2);
|
||||
C2D_SpriteSetPos(&debug_button, 107, 192);
|
||||
C2D_SpriteSetPos(&debug_header, 27, 22);
|
||||
C2D_SpriteSetPos(&go_back, 0, 214);
|
||||
C2D_SpriteSetPos(&header, 95, 14);
|
||||
C2D_SpriteSetPos(&pretendo_selected, 49, 59);
|
||||
C2D_SpriteSetPos(&pretendo_btn_selected, 49, 59);
|
||||
C2D_SpriteSetPos(&pretendo_deselected, 49, 59);
|
||||
C2D_SpriteSetPos(&pretendo_loaded_deselected, 49, 59);
|
||||
C2D_SpriteSetPos(&nintendo_selected, 165, 59);
|
||||
C2D_SpriteSetPos(&nintendo_btn_selected, 165, 59);
|
||||
C2D_SpriteSetPos(&nintendo_deselected, 165, 59);
|
||||
C2D_SpriteSetPos(&nintendo_loaded_deselected, 165, 59);
|
||||
}
|
||||
|
||||
static void sceneRenderTop()
|
||||
|
@ -111,24 +123,6 @@ static void sceneRenderTop()
|
|||
C2D_DrawSprite(&top);
|
||||
}
|
||||
|
||||
static void sceneRenderBottom()
|
||||
{
|
||||
if(screen == 0){
|
||||
if(current_account == 0 || act_account_count == 1){
|
||||
C2D_DrawSprite(&nintendo_selected);
|
||||
C2D_DrawSprite(&pretendo_deselected);
|
||||
}else{
|
||||
C2D_DrawSprite(&nintendo_deselected);
|
||||
C2D_DrawSprite(&pretendo_selected);
|
||||
}
|
||||
C2D_DrawSprite(&header);
|
||||
//C2D_DrawSprite(&debug_button);
|
||||
}/*else{
|
||||
C2D_DrawSprite(&debug_header);
|
||||
C2D_DrawSprite(&go_back);
|
||||
}*/
|
||||
}
|
||||
|
||||
static void sceneExit(void)
|
||||
{
|
||||
}
|
||||
|
@ -154,9 +148,10 @@ int main()
|
|||
handleResult(ACTA_GetPersistentId(¤t_persistent_id, ACT_CURRENT_ACCOUNT), "Current persistent id");
|
||||
handleResult(ACTA_GetPersistentId(&pretendo_persistent_id, act_account_index), "Current persistent id");
|
||||
|
||||
if(current_persistent_id == pretendo_persistent_id){
|
||||
if (current_persistent_id == pretendo_persistent_id) {
|
||||
current_account = 1;
|
||||
}else{
|
||||
}
|
||||
else {
|
||||
current_account = 0;
|
||||
}
|
||||
|
||||
|
@ -172,28 +167,33 @@ int main()
|
|||
|
||||
ACTA_GetAccountCount(&act_account_count);
|
||||
|
||||
Account buttonSelected = (Account)(current_account + 1);
|
||||
|
||||
// Main loop
|
||||
while (aptMainLoop())
|
||||
{
|
||||
while (aptMainLoop()) {
|
||||
hidScanInput();
|
||||
touchPosition touch;
|
||||
hidTouchRead(&touch);
|
||||
u32 kDown = hidKeysDown();
|
||||
if (kDown & KEY_START) break;
|
||||
|
||||
if(kDown & KEY_TOUCH){
|
||||
if((touch.px >= 165 && touch.px <= 165 + 104) && (touch.py >= 59 && touch.py <= 59 + 113)){
|
||||
switchAccounts(1);
|
||||
if (kDown & KEY_TOUCH) {
|
||||
if ((touch.px >= 165 && touch.px <= 165 + 104) && (touch.py >= 59 && touch.py <= 59 + 113)) {
|
||||
switchAccounts(buttonSelected);
|
||||
needsReboot = true;
|
||||
break;
|
||||
}else if((touch.px >= 49 && touch.px <= 49 + 104) && (touch.py >= 59 && touch.py <= 59 + 113)){
|
||||
if(switchAccounts(2)){
|
||||
createAccount(2);
|
||||
}
|
||||
else if ((touch.px >= 49 && touch.px <= 49 + 104) && (touch.py >= 59 && touch.py <= 59 + 113)) {
|
||||
if (switchAccounts(buttonSelected)) {
|
||||
createAccount(buttonSelected);
|
||||
}
|
||||
needsReboot = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (kDown & KEY_LEFT || kDown & KEY_RIGHT) {
|
||||
buttonSelected = buttonSelected == Pretendo ? Nintendo : Pretendo;
|
||||
}
|
||||
|
||||
// Render the scene
|
||||
C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
|
||||
|
@ -202,7 +202,41 @@ int main()
|
|||
sceneRenderTop();
|
||||
C2D_TargetClear(bottom_screen, C2D_Color32(21, 22, 28, 0xFF));
|
||||
C2D_SceneBegin(bottom_screen);
|
||||
sceneRenderBottom();
|
||||
if (screen == 0) {
|
||||
if (buttonSelected == Nintendo) {
|
||||
if (current_account == NASC_ENV_Prod) {
|
||||
C2D_DrawSprite(&nintendo_selected);
|
||||
C2D_DrawSprite(&pretendo_deselected);
|
||||
}
|
||||
else {
|
||||
C2D_DrawSprite(&nintendo_btn_selected);
|
||||
C2D_DrawSprite(&pretendo_loaded_deselected);
|
||||
}
|
||||
}
|
||||
else if (buttonSelected == Pretendo) {
|
||||
if (current_account == NASC_ENV_Test) {
|
||||
C2D_DrawSprite(&nintendo_deselected);
|
||||
C2D_DrawSprite(&pretendo_selected);
|
||||
}
|
||||
else {
|
||||
C2D_DrawSprite(&nintendo_loaded_deselected);
|
||||
C2D_DrawSprite(&pretendo_btn_selected);
|
||||
}
|
||||
}
|
||||
C2D_DrawSprite(&header);
|
||||
//C2D_DrawSprite(&debug_button);
|
||||
}
|
||||
/*else {
|
||||
C2D_DrawSprite(&debug_header);
|
||||
C2D_DrawSprite(&go_back);
|
||||
}*/
|
||||
if (kDown & KEY_A) {
|
||||
if (switchAccounts(buttonSelected) && buttonSelected == Pretendo) {
|
||||
createAccount(buttonSelected);
|
||||
}
|
||||
needsReboot = true;
|
||||
break;
|
||||
}
|
||||
C3D_FrameEnd(0);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue