From f15e45794718729715c60a00df051a9d46ac792b Mon Sep 17 00:00:00 2001 From: Tobi-D7 Date: Sat, 16 Apr 2022 23:11:12 +0200 Subject: [PATCH] Update OvlHandler --- renderd7.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++------- renderd7.hpp | 20 ++++++++++++++-- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/renderd7.cpp b/renderd7.cpp index 8652940..b375cb6 100644 --- a/renderd7.cpp +++ b/renderd7.cpp @@ -10,7 +10,7 @@ float animtime; bool isndspinit = false; bool running = true; std::stack> RenderD7::Scene::scenes; -//std::vector overlays; +std::stack> overlays; bool usedbgmsg = false; std::string dspststus = "Not Initialisized!"; @@ -629,6 +629,7 @@ Result RenderD7::Init::Main(std::string app_name) { if (consoleModel != 3) gfxSetWide(true); } + RenderD7::AddOvl(std::make_unique()); C3D_Init(C3D_DEFAULT_CMDBUF_SIZE); C2D_Init(size_t(maxobj__)); @@ -951,13 +952,64 @@ bool RenderD7::DrawNFRect(float p1x, float p1y, float w, float h, u32 color, flo return true; } +RenderD7::DSP_NF::DSP_NF() +{ + +} + +void RenderD7::DSP_NF::Draw(void) const +{ + RenderD7::OnScreen(Top); + RenderD7::DrawRect(0, msgposy, 400, 70, RenderD7::Color::Hex("#111111")); + RenderD7::DrawRect(0, 0, 20, 20, RenderD7::Color::Hex("#cccccc")); +} + +void RenderD7::DSP_NF::Logic() +{ + for (int i = 0; i < 10*60; i++) + { + msgposy--; + if (msgposy < 240 - 70) + { + msgposy = 240 - 70; + } + } + this->Kill(); +} + +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()) + { + overlays.top()->Draw(); + } + if (!overlays.empty()) + { + overlays.top()->Logic(); + } + if (!overlays.empty()) + { + if (overlays.top()->IsKilled()) overlays.pop(); + } + //} + +} + void RenderD7::FrameEnd() { if (metrikd)RenderD7::DrawMetrikOvl(); - /*for (int i = 0; i < (int)overlays.size(); i++) - { - overlays[i].Draw(); - }*/ + OvlHandler(); if (d7_hHeld & KEY_R && d7_hDown & KEY_SELECT) { RenderD7::LoadSettings(); @@ -1006,10 +1058,10 @@ void RenderD7::LoadSettings(){ RenderD7::Scene::Load(std::make_unique()); } -/*void RenderD7::AddOvl(RenderD7::Ovl overlay) +void RenderD7::AddOvl(std::unique_ptr overlay) { - overlays.push_back(overlay); -}*/ + overlays.push(std::move(overlay)); +} /*RenderD7::Console::Console() { diff --git a/renderd7.hpp b/renderd7.hpp index 23668af..fdc675a 100644 --- a/renderd7.hpp +++ b/renderd7.hpp @@ -177,12 +177,28 @@ namespace RenderD7 void LoadSettings(); - /*class Ovl { + class Ovl { public: virtual ~Ovl(){} virtual void Draw() const = 0; + virtual void Logic() = 0; + inline bool IsKilled() {return this->iskilled; } + inline void Kill() { iskilled = true; } + private: + bool iskilled = false; }; - void AddOvl(RenderD7::Ovl overlay);*/ + + class DSP_NF : public RenderD7::Ovl + { + public: + DSP_NF(); + void Draw(void) const override; + void Logic() override; + private: + int msgposy = 240; + }; + + void AddOvl(std::unique_ptr scene); namespace Color { struct rgba