General instructions-drawing function (#111)
1 info line above, 4 rows, 2 columns.
This commit is contained in:
@@ -50,12 +50,13 @@ typedef enum {
|
||||
|
||||
#define BUTTONS_START_Y 130
|
||||
#define BUTTONS_STEP 22
|
||||
#define BUTTONS_INFO_LINES 4
|
||||
#define BUTTONS_INFO_COLUNMNS 2
|
||||
|
||||
enum {
|
||||
BUTTONS_Y_INFO = BUTTONS_START_Y+5,
|
||||
|
||||
BUTTONS_Y_LINE_1 = BUTTONS_START_Y + BUTTONS_STEP*1,
|
||||
|
||||
BUTTONS_Y_INFO = BUTTONS_Y_LINE_1+5,
|
||||
|
||||
BUTTONS_Y_LINE_2 = BUTTONS_START_Y + BUTTONS_STEP*2,
|
||||
BUTTONS_Y_LINE_3 = BUTTONS_START_Y + BUTTONS_STEP*3,
|
||||
BUTTONS_Y_LINE_4 = BUTTONS_START_Y + BUTTONS_STEP*4,
|
||||
@@ -64,6 +65,11 @@ enum {
|
||||
BUTTONS_X_RIGHT = 200,
|
||||
} ButtonPos;
|
||||
|
||||
typedef struct {
|
||||
const wchar_t * info_line;
|
||||
const wchar_t * instructions[BUTTONS_INFO_LINES][BUTTONS_INFO_COLUNMNS];
|
||||
} Instructions_s;
|
||||
|
||||
void init_screens(void);
|
||||
void exit_screens(void);
|
||||
|
||||
@@ -74,6 +80,7 @@ void draw_preview(int preview_offset);
|
||||
|
||||
void draw_install(InstallType type);
|
||||
|
||||
void draw_interface(Entry_List_s* list, EntryMode current_mode, bool install_mode);
|
||||
void draw_instructions(Instructions_s instructions);
|
||||
void draw_interface(Entry_List_s* list, EntryMode current_mode);
|
||||
|
||||
#endif
|
||||
99
include/instructions.h
Normal file
99
include/instructions.h
Normal file
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* This file is part of Anemone3DS
|
||||
* Copyright (C) 2016-2017 Alex Taber ("astronautlevel"), Dawid Eckert ("daedreth")
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* 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 INSTRUCTIONS_H
|
||||
#define INSTRUCTIONS_H
|
||||
|
||||
#include "draw.h"
|
||||
|
||||
Instructions_s normal_instructions[MODE_AMOUNT] = {
|
||||
{
|
||||
.info_line = NULL,
|
||||
.instructions = {
|
||||
{
|
||||
L"\uE000 Hold to install",
|
||||
L"\uE001 Queue shuffle theme"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
L"\uE003 Preview theme"
|
||||
},
|
||||
{
|
||||
L"\uE004 Switch to splashes",
|
||||
L"\uE005 Scan QR code"
|
||||
},
|
||||
{
|
||||
L"Exit",
|
||||
L"Delete from SD"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.info_line = NULL,
|
||||
.instructions = {
|
||||
{
|
||||
L"\uE000 Install splash",
|
||||
L"\uE001 Delete installed splash"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
L"\uE003 Preview splash"
|
||||
},
|
||||
{
|
||||
L"\uE004 Switch to themes",
|
||||
L"\uE005 Scan QR code"
|
||||
},
|
||||
{
|
||||
L"Exit",
|
||||
L"Delete from SD"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Instructions_s install_instructions = {
|
||||
.info_line = L"Release \uE000 to cancel or hold \uE006 and release \uE000 to install",
|
||||
.instructions = {
|
||||
{
|
||||
L"\uE079 Normal install",
|
||||
L"\uE07A Shuffle install"
|
||||
},
|
||||
{
|
||||
L"\uE07B BGM-only install",
|
||||
L"\uE07C No-BGM install"
|
||||
},
|
||||
{
|
||||
NULL,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
L"Exit",
|
||||
NULL
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -196,7 +196,43 @@ void draw_install(InstallType type)
|
||||
pp2d_end_draw();
|
||||
}
|
||||
|
||||
void draw_interface(Entry_List_s* list, EntryMode current_mode, bool install_mode)
|
||||
void draw_instructions(Instructions_s instructions)
|
||||
{
|
||||
pp2d_draw_on(GFX_TOP, GFX_LEFT);
|
||||
|
||||
if(instructions.info_line != NULL)
|
||||
pp2d_draw_wtext_center(GFX_TOP, BUTTONS_Y_INFO, 0.55, 0.55, COLOR_WHITE, instructions.info_line);
|
||||
|
||||
const int y_lines[BUTTONS_INFO_LINES-1] = {
|
||||
BUTTONS_Y_LINE_1,
|
||||
BUTTONS_Y_LINE_2,
|
||||
BUTTONS_Y_LINE_3,
|
||||
};
|
||||
|
||||
for(int i = 0; i < BUTTONS_INFO_LINES-1; i++)
|
||||
{
|
||||
if(instructions.instructions[i][0] != NULL)
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, y_lines[i], 0.6, 0.6, COLOR_WHITE, instructions.instructions[i][0]);
|
||||
if(instructions.instructions[i][1] != NULL)
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, y_lines[i], 0.6, 0.6, COLOR_WHITE, instructions.instructions[i][1]);
|
||||
}
|
||||
|
||||
const wchar_t * start_line = instructions.instructions[BUTTONS_INFO_LINES-1][0];
|
||||
if(start_line != NULL)
|
||||
{
|
||||
pp2d_draw_texture(TEXTURE_START_BUTTON, BUTTONS_X_LEFT-10, BUTTONS_Y_LINE_4 + 3);
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT+26, BUTTONS_Y_LINE_4, 0.6, 0.6, COLOR_WHITE, start_line);
|
||||
}
|
||||
|
||||
const wchar_t * select_line = instructions.instructions[BUTTONS_INFO_LINES-1][1];
|
||||
if(select_line != NULL)
|
||||
{
|
||||
pp2d_draw_texture(TEXTURE_SELECT_BUTTON, BUTTONS_X_RIGHT-10, BUTTONS_Y_LINE_4 + 3);
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT+26, BUTTONS_Y_LINE_4, 0.6, 0.6, COLOR_WHITE, select_line);
|
||||
}
|
||||
}
|
||||
|
||||
void draw_interface(Entry_List_s* list, EntryMode current_mode)
|
||||
{
|
||||
draw_base_interface();
|
||||
|
||||
@@ -240,48 +276,6 @@ void draw_interface(Entry_List_s* list, EntryMode current_mode, bool install_mod
|
||||
utf16_to_utf32((u32*)description, current_entry.desc, 0x80);
|
||||
pp2d_draw_wtext_wrap(20, 65, 0.5, 0.5, COLOR_WHITE, 363, description);
|
||||
|
||||
if(install_mode)
|
||||
{
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, BUTTONS_Y_LINE_2, 0.6, 0.6, COLOR_WHITE, L"\uE079 Normal install");
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_2, 0.6, 0.6, COLOR_WHITE, L"\uE07A Shuffle install");
|
||||
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, BUTTONS_Y_LINE_3, 0.6, 0.6, COLOR_WHITE, L"\uE07B BGM-only install");
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_3, 0.6, 0.6, COLOR_WHITE, L"\uE07C No-BGM install");
|
||||
|
||||
pp2d_draw_text_center(GFX_TOP, BUTTONS_Y_LINE_1, 0.55, 0.55, COLOR_WHITE, "Release \uE000 to cancel or hold \uE006 and release \uE000 to install");
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(current_mode)
|
||||
{
|
||||
case MODE_THEMES:
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, BUTTONS_Y_LINE_1, 0.6, 0.6, COLOR_WHITE, L"\uE000 Hold to install");
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_1, 0.6, 0.6, COLOR_WHITE, L"\uE001 Queue shuffle theme");
|
||||
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_2, 0.6, 0.6, COLOR_WHITE, L"\uE003 Preview theme");
|
||||
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, BUTTONS_Y_LINE_3, 0.6, 0.6, COLOR_WHITE, L"\uE004 Switch to splashes");
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_3, 0.6, 0.6, COLOR_WHITE, L"\uE005 Scan QR code");
|
||||
break;
|
||||
case MODE_SPLASHES:
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, BUTTONS_Y_LINE_1, 0.6, 0.6, COLOR_WHITE, L"\uE000 Install splash");
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_1, 0.6, 0.6, COLOR_WHITE, L"\uE001 Delete installed splash");
|
||||
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_2, 0.6, 0.6, COLOR_WHITE, L"\uE003 Preview splash");
|
||||
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT, BUTTONS_Y_LINE_3, 0.6, 0.6, COLOR_WHITE, L"\uE004 Switch to themes");
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT, BUTTONS_Y_LINE_3, 0.6, 0.6, COLOR_WHITE, L"\uE005 Scan QR code");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
pp2d_draw_texture(TEXTURE_SELECT_BUTTON, BUTTONS_X_RIGHT-10, BUTTONS_Y_LINE_4 + 3);
|
||||
pp2d_draw_wtext(BUTTONS_X_RIGHT+26, BUTTONS_Y_LINE_4, 0.6, 0.6, COLOR_WHITE, L"Delete from SD");
|
||||
}
|
||||
|
||||
pp2d_draw_texture(TEXTURE_START_BUTTON, BUTTONS_X_LEFT-10, BUTTONS_Y_LINE_4 + 3);
|
||||
pp2d_draw_wtext(BUTTONS_X_LEFT+26, BUTTONS_Y_LINE_4, 0.6, 0.6, COLOR_WHITE, L"Exit");
|
||||
|
||||
pp2d_draw_on(GFX_BOTTOM, GFX_LEFT);
|
||||
|
||||
switch(current_mode)
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "splashes.h"
|
||||
#include "draw.h"
|
||||
#include "camera.h"
|
||||
#include "instructions.h"
|
||||
#include "pp2d/pp2d/pp2d.h"
|
||||
#include <time.h>
|
||||
|
||||
@@ -157,7 +158,14 @@ int main(void)
|
||||
|
||||
if(qr_mode) take_picture();
|
||||
else if(preview_mode) draw_preview(preview_offset);
|
||||
else draw_interface(current_list, current_mode, install_mode);
|
||||
else {
|
||||
draw_interface(current_list, current_mode);
|
||||
if(install_mode)
|
||||
draw_instructions(install_instructions);
|
||||
else
|
||||
draw_instructions(normal_instructions[current_mode]);
|
||||
}
|
||||
|
||||
pp2d_end_draw();
|
||||
|
||||
if(kDown & KEY_START) break;
|
||||
|
||||
Reference in New Issue
Block a user