From 9c50e5a1357d0b18d77ca4a0e5b6c69a49cf4f46 Mon Sep 17 00:00:00 2001 From: "BADIM-PC\\Vadim" Date: Wed, 13 Dec 2017 16:02:16 +0300 Subject: [PATCH 1/2] no message --- src/studio.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++---- src/studio.h | 1 - 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/studio.c b/src/studio.c index 0cbfa67..e260aae 100644 --- a/src/studio.c +++ b/src/studio.c @@ -144,6 +144,11 @@ static struct } part; }gamepad; + struct + { + bool show; + } banks; + struct { s32 counter; @@ -251,6 +256,11 @@ static struct .show = false, }, + .banks = + { + .show = false, + }, + .popup = { .counter = 0, @@ -426,7 +436,7 @@ static const EditorMode Modes[] = TIC_MUSIC_MODE, }; -void drawExtrabar(tic_mem* tic) +static void drawExtrabar(tic_mem* tic) { enum {Size = 7}; @@ -520,6 +530,43 @@ const StudioConfig* getConfig() return &studio.config.data; } +#if defined (TIC80_PRO) + +static void drawBankIcon(s32 x, s32 y) +{ + SDL_Rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; + + static const u8 Icon[] = + { + 0b00000000, + 0b01111100, + 0b01000100, + 0b01000100, + 0b01111100, + 0b01111000, + 0b00000000, + 0b00000000, + }; + + bool over = false; + + if(checkMousePos(&rect)) + { + setCursor(SDL_SYSTEM_CURSOR_HAND); + + over = true; + + showTooltip("SWITCH BANK"); + + if(checkMouseClick(&rect, SDL_BUTTON_LEFT)) + studio.banks.show = !studio.banks.show; + } + + drawBitIcon(x, y, Icon, over ? tic_color_blue : tic_color_cyan); +} + +#endif + void drawToolbar(tic_mem* tic, u8 color, bool bg) { if(bg) @@ -628,15 +675,22 @@ void drawToolbar(tic_mem* tic, u8 color, bool bg) "MUSIC EDITOR", }; - if(mode >= 0) +#if defined (TIC80_PRO) + enum {TextOffset = (COUNT_OF(Modes) + 2) * Size - 2}; + drawBankIcon(COUNT_OF(Modes) * Size + 2, 0); +#else + enum {TextOffset = (COUNT_OF(Modes) + 1) * Size}; +#endif + + if(mode >= 0 && !studio.banks.show) { if(strlen(studio.tooltip.text)) { - studio.tic->api.text(tic, studio.tooltip.text, (COUNT_OF(Modes) + 1) * Size, 1, (tic_color_black)); + studio.tic->api.text(tic, studio.tooltip.text, TextOffset, 1, (tic_color_black)); } else { - studio.tic->api.text(tic, Names[mode], (COUNT_OF(Modes) + 1) * Size, 1, (tic_color_dark_gray)); + studio.tic->api.text(tic, Names[mode], TextOffset, 1, (tic_color_dark_gray)); } } } diff --git a/src/studio.h b/src/studio.h index 59ce7f8..73b43e5 100644 --- a/src/studio.h +++ b/src/studio.h @@ -141,7 +141,6 @@ bool getGesturePos(SDL_Point* pos); const u8* getKeyboard(); void drawToolbar(tic_mem* tic, u8 color, bool bg); -void drawExtrabar(tic_mem* tic); void drawBitIcon(s32 x, s32 y, const u8* ptr, u8 color); void studioRomLoaded(); From 3ad2ff4a6b21a197ff34f25ed478c278e5424810 Mon Sep 17 00:00:00 2001 From: "BADIM-PC\\Vadim" Date: Wed, 13 Dec 2017 17:09:25 +0300 Subject: [PATCH 2/2] no message --- src/studio.c | 45 ++++++++++++++++++++++++++++++++++++++++----- src/tic.h | 2 +- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/studio.c b/src/studio.c index e260aae..9792375 100644 --- a/src/studio.c +++ b/src/studio.c @@ -147,7 +147,8 @@ static struct struct { bool show; - } banks; + s32 index; + } bank; struct { @@ -256,9 +257,10 @@ static struct .show = false, }, - .banks = + .bank = { .show = false, + .index = 0, }, .popup = @@ -534,6 +536,8 @@ const StudioConfig* getConfig() static void drawBankIcon(s32 x, s32 y) { + tic_mem* tic = studio.tic; + SDL_Rect rect = {x, y, TIC_FONT_WIDTH, TIC_FONT_HEIGHT}; static const u8 Icon[] = @@ -559,10 +563,41 @@ static void drawBankIcon(s32 x, s32 y) showTooltip("SWITCH BANK"); if(checkMouseClick(&rect, SDL_BUTTON_LEFT)) - studio.banks.show = !studio.banks.show; + studio.bank.show = !studio.bank.show; } - drawBitIcon(x, y, Icon, over ? tic_color_blue : tic_color_cyan); + if(studio.bank.show) + { + drawBitIcon(x, y, Icon, over ? tic_color_peach : tic_color_red); + + enum{Size = TOOLBAR_SIZE}; + + for(s32 i = 0; i < TIC_BANKS; i++) + { + SDL_Rect rect = {x + 2 + (i+1)*Size, 0, Size, Size}; + + bool over = false; + if(checkMousePos(&rect)) + { + setCursor(SDL_SYSTEM_CURSOR_HAND); + over = true; + + if(checkMouseClick(&rect, SDL_BUTTON_LEFT)) + studio.bank.index = i; + } + + if(i == studio.bank.index) + { + tic->api.rect(tic, rect.x, rect.y, rect.w, rect.h, tic_color_red); + } + + tic->api.draw_char(tic, '0' + i, rect.x+1, rect.y+1, i == studio.bank.index ? tic_color_white : over ? tic_color_red : tic_color_peach); + } + } + else + { + drawBitIcon(x, y, Icon, over ? tic_color_red : tic_color_peach); + } } #endif @@ -682,7 +717,7 @@ void drawToolbar(tic_mem* tic, u8 color, bool bg) enum {TextOffset = (COUNT_OF(Modes) + 1) * Size}; #endif - if(mode >= 0 && !studio.banks.show) + if(mode >= 0 && !studio.bank.show) { if(strlen(studio.tooltip.text)) { diff --git a/src/tic.h b/src/tic.h index d02e7bf..b0f0462 100644 --- a/src/tic.h +++ b/src/tic.h @@ -107,7 +107,7 @@ #define TIC_CODE_SIZE (0x10000) -#define TIC_BANKS 4 +#define TIC_BANKS 8 #define SFX_NOTES {"C-", "C#", "D-", "D#", "E-", "F-", "F#", "G-", "G#", "A-", "A#", "B-"}