Implement OverLayHandler

This commit is contained in:
tobid7 2022-05-13 21:36:03 +02:00
parent d4f12cb9b0
commit b40f6d738e
2 changed files with 45 additions and 39 deletions

View File

@ -57,6 +57,7 @@ std::string mt_gpu;
std::string mt_cmd; std::string mt_cmd;
bool shouldbe_disabled = false; bool shouldbe_disabled = false;
int cnttttt = 0;
int mt_screen; int mt_screen;
//int mt_width = mt_screen ? 320 : 400; //int mt_width = mt_screen ? 320 : 400;
float mt_txtSize; float mt_txtSize;
@ -167,6 +168,7 @@ void RenderD7::Exit::NdspFirm()
void RenderD7::Msg::Display(std::string titletxt, std::string subtext, C3D_RenderTarget *target) void RenderD7::Msg::Display(std::string titletxt, std::string subtext, C3D_RenderTarget *target)
{ {
shouldbe_disabled = true; shouldbe_disabled = true;
cnttttt = 0;
C3D_FrameBegin(C3D_FRAME_SYNCDRAW); C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
C2D_TargetClear(Top, DSEVENBLACK); C2D_TargetClear(Top, DSEVENBLACK);
C2D_TargetClear(Bottom, DSEVENBLACK); C2D_TargetClear(Bottom, DSEVENBLACK);
@ -180,11 +182,11 @@ void RenderD7::Msg::Display(std::string titletxt, std::string subtext, C3D_Rende
RenderD7::DrawText(5, 2, 0.7f, DSEVENWHITE, titletxt); RenderD7::DrawText(5, 2, 0.7f, DSEVENWHITE, titletxt);
RenderD7::DrawText(5, 30, 0.6f, DSEVENWHITE, subtext); RenderD7::DrawText(5, 30, 0.6f, DSEVENWHITE, subtext);
C3D_FrameEnd(0); C3D_FrameEnd(0);
shouldbe_disabled = false;
} }
void RenderD7::Msg::DisplayWithProgress(std::string titletext, std::string subtext, float current, float total, u32 prgbarcolor) void RenderD7::Msg::DisplayWithProgress(std::string titletext, std::string subtext, float current, float total, u32 prgbarcolor)
{ {
shouldbe_disabled = true; shouldbe_disabled = true;
cnttttt = 0;
RenderD7::ClearTextBufs(); RenderD7::ClearTextBufs();
C3D_FrameBegin(C3D_FRAME_SYNCDRAW); C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
C2D_TargetClear(Top, DSEVENBLACK); C2D_TargetClear(Top, DSEVENBLACK);
@ -202,7 +204,6 @@ void RenderD7::Msg::DisplayWithProgress(std::string titletext, std::string subte
RenderD7::OnScreen(Bottom); RenderD7::OnScreen(Bottom);
RenderD7::DrawRect(0, 0, 320, 240, RenderD7::Color::Hex("#111111")); RenderD7::DrawRect(0, 0, 320, 240, RenderD7::Color::Hex("#111111"));
C3D_FrameEnd(0); C3D_FrameEnd(0);
shouldbe_disabled = false;
} }
void RenderD7::SetupLog() void RenderD7::SetupLog()
{ {
@ -239,6 +240,7 @@ void RenderD7::SpriteSheetAnimation::Play(float timespeed)
void RenderD7::Error::DisplayError(std::string toptext, std::string errortext, int timesec) void RenderD7::Error::DisplayError(std::string toptext, std::string errortext, int timesec)
{ {
shouldbe_disabled = true; shouldbe_disabled = true;
cnttttt = 0;
RenderD7::ClearTextBufs(); RenderD7::ClearTextBufs();
C3D_FrameBegin(C3D_FRAME_SYNCDRAW); C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
C2D_TargetClear(Top, DSEVENBLACK); C2D_TargetClear(Top, DSEVENBLACK);
@ -250,12 +252,17 @@ void RenderD7::Error::DisplayError(std::string toptext, std::string errortext, i
for (int i = 0; i < 60*timesec; i++) { for (int i = 0; i < 60*timesec; i++) {
RenderD7::DrawRect(0, 236, (int)(((float)i / (float)60*timesec) * 400.0f), 4, RenderD7::Color::Hex("#00ff00")); RenderD7::DrawRect(0, 236, (int)(((float)i / (float)60*timesec) * 400.0f), 4, RenderD7::Color::Hex("#00ff00"));
gspWaitForVBlank(); gspWaitForVBlank();
if (i == 60*timesec) shouldbe_disabled = false;
{
/* code */
}
} }
shouldbe_disabled = false;
} }
void RenderD7::Error::DisplayFatalError(std::string toptext, std::string errortext) void RenderD7::Error::DisplayFatalError(std::string toptext, std::string errortext)
{ {
shouldbe_disabled = true; shouldbe_disabled = true;
cnttttt = 0;
bool error___ = true; bool error___ = true;
RenderD7::ClearTextBufs(); RenderD7::ClearTextBufs();
C3D_FrameBegin(C3D_FRAME_SYNCDRAW); C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
@ -273,7 +280,6 @@ void RenderD7::Error::DisplayFatalError(std::string toptext, std::string errorte
RenderD7::ExitApp(); RenderD7::ExitApp();
} }
} }
shouldbe_disabled = false;
} }
u32 RenderD7::Color::Hex(const std::string color, u8 a) u32 RenderD7::Color::Hex(const std::string color, u8 a)
{ {
@ -360,6 +366,12 @@ bool RenderD7::MainLoop()
frameloop(); frameloop();
RenderD7::Scene::doDraw(); RenderD7::Scene::doDraw();
RenderD7::Scene::doLogic(d7_hDown, d7_hHeld, d7_hUp, d7_touch); RenderD7::Scene::doLogic(d7_hDown, d7_hHeld, d7_hUp, d7_touch);
cnttttt++;
if (cnttttt > 90)
{
shouldbe_disabled = false;
cnttttt = 0;
}
return running; return running;
} }
@ -1154,35 +1166,25 @@ void RenderD7::DSP_NF::Draw(void) const
{ {
RenderD7::OnScreen(Top); RenderD7::OnScreen(Top);
RenderD7::DrawRect(0, msgposy, 400, 70, RenderD7::Color::Hex("#111111")); RenderD7::DrawRect(0, msgposy, 400, 70, RenderD7::Color::Hex("#111111"));
RenderD7::DrawRect(0, 0, 20, 20, RenderD7::Color::Hex("#cccccc")); RenderD7::DrawRect(0, msgposy, 400, 25, RenderD7::Color::Hex("#222222"));
RenderD7::DrawText(2, msgposy+5, 0.7f, RenderD7::Color::Hex("#ffffff"), "Warning! Code: 00027");
RenderD7::DrawText(2, msgposy+30, 0.6f, RenderD7::Color::Hex("#ffffff"), "You cant use Sound effects because the file\n<<sdmc:/3ds/dspfirm.cdc>> was not found!");
} }
void RenderD7::DSP_NF::Logic() void RenderD7::DSP_NF::Logic()
{ {
for (int i = 0; i < 10*60; i++) this->delay++;
if (msgposy > 170 && delay < 5*60) msgposy--;
if (delay >= 5*60)
{ {
msgposy--; msgposy++;
if (msgposy < 240 - 70) if(msgposy > 400) this->Kill();
{
msgposy = 240 - 70;
} }
}
this->Kill();
} }
void OvlHandler() void OvlHandler()
{ {
//for (int i = 0; i < (int)overlays.size(); i++)
//{
/*if (!overlays[i].IsKilled())
{
overlays[i].Draw();
overlays[i].Logic();
}
if (overlays[i].IsKilled())
{
overlays.erase(overlays.begin() + i);
}*/
if (!overlays.empty()) if (!overlays.empty())
{ {
overlays.top()->Draw(); overlays.top()->Draw();
@ -1195,14 +1197,13 @@ void OvlHandler()
{ {
if (overlays.top()->IsKilled()) overlays.pop(); if (overlays.top()->IsKilled()) overlays.pop();
} }
//}
} }
int lp = 0; int lp = 0;
void RenderD7::FrameEnd() void RenderD7::FrameEnd()
{ {
if (metrikd && !shouldbe_disabled)RenderD7::DrawMetrikOvl(); if (metrikd && !shouldbe_disabled)RenderD7::DrawMetrikOvl();
//OvlHandler(); if (!shouldbe_disabled) OvlHandler();
/*if (d7_hHeld & KEY_R && d7_hDown & KEY_SELECT) /*if (d7_hHeld & KEY_R && d7_hDown & KEY_SELECT)
{ {
RenderD7::LoadSettings(); RenderD7::LoadSettings();
@ -1313,6 +1314,10 @@ void RenderD7::RSettings::Logic(u32 hDown, u32 hHeld, u32 hUp, touchPosition tou
mt_screen = mt_screen ? 0 : 1; mt_screen = mt_screen ? 0 : 1;
cfgstruct["metrik-settings"]["screen"] = mt_screen ? "1" : "0"; cfgstruct["metrik-settings"]["screen"] = mt_screen ? "1" : "0";
} }
if (d7_hDown & KEY_TOUCH && RenderD7::touchTObj(d7_touch, buttons[5]))
{
RenderD7::AddOvl(std::make_unique<RenderD7::DSP_NF>());
}
if (d7_hDown & KEY_B) if (d7_hDown & KEY_B)
{ {
cfgfile->write(cfgstruct); cfgfile->write(cfgstruct);

View File

@ -34,7 +34,7 @@ extern "C"
} }
#define RENDERD7VSTRING "0.7.3" #define RENDERD7VSTRING "0.7.3"
#define CHANGELOG "0.7.2: Implement MT to csv file saving. Add RGB2HEX. \n0.7.1: Add the New Overlay Handler. Its Just in code and does nothing yet. \n0.7.0: Made Big Progress In the MT Ovl but it still crashes On a Scnd C3D_FrameEnd(). Implement 800px but doesn't work that good. \n0.6.2: Fix Crash when exiting trouth Home Menu. \n0.6.10: rewrite Threadsystem, Improve framerate\n0.6.02: Fix Code in lang.hpp\nadd Draw Text Left Function.\nadd changelog\n0.6.01: add Threading system." #define CHANGELOG "0.7.3: Implement Over Render Overlay Framework\n0.7.2: Implement MT to csv file saving. Add RGB2HEX. \n0.7.1: Add the New Overlay Handler. Its Just in code and does nothing yet. \n0.7.0: Made Big Progress In the MT Ovl but it still crashes On a Scnd C3D_FrameEnd(). Implement 800px but doesn't work that good. \n0.6.2: Fix Crash when exiting trouth Home Menu. \n0.6.10: rewrite Threadsystem, Improve framerate\n0.6.02: Fix Code in lang.hpp\nadd Draw Text Left Function.\nadd changelog\n0.6.01: add Threading system."
#define DEFAULT_CENTER 0.5f #define DEFAULT_CENTER 0.5f
extern C3D_RenderTarget* Top; extern C3D_RenderTarget* Top;
@ -212,6 +212,7 @@ namespace RenderD7
void Logic() override; void Logic() override;
private: private:
int msgposy = 240; int msgposy = 240;
int delay = 0;
}; };
void AddOvl(std::unique_ptr<RenderD7::Ovl> scene); void AddOvl(std::unique_ptr<RenderD7::Ovl> scene);