Add Overlays Engine

This commit is contained in:
tobid7 2022-04-10 00:59:30 +02:00
parent d0e4d2296c
commit edb634b79d
2 changed files with 41 additions and 26 deletions

View File

@ -10,6 +10,7 @@ float animtime;
bool isndspinit = false; bool isndspinit = false;
bool running = true; bool running = true;
std::stack<std::unique_ptr<RenderD7::Scene>> RenderD7::Scene::scenes; std::stack<std::unique_ptr<RenderD7::Scene>> RenderD7::Scene::scenes;
std::vevtor<RenderD7::Ovl> overlays;
bool usedbgmsg = false; bool usedbgmsg = false;
std::string dspststus = "Not Initialisized!"; std::string dspststus = "Not Initialisized!";
@ -561,9 +562,9 @@ Result RenderD7::Init::Main(std::string app_name)
cfgstruct["metrik-settings"]["Screen"] = "0"; cfgstruct["metrik-settings"]["Screen"] = "0";
cfgstruct["metrik-settings"]["txtColor"] = "#ffffff"; cfgstruct["metrik-settings"]["txtColor"] = "#ffffff";
cfgstruct["metrik-settings"]["txtColorA"] = "255"; cfgstruct["metrik-settings"]["txtColorA"] = "255";
cfgstruct["metrik-settings"]["ColorA"] = "255"; cfgstruct["metrik-settings"]["ColorA"] = "255";
cfgstruct["metrik-settings"]["Color"] = "#000000"; cfgstruct["metrik-settings"]["Color"] = "#000000";
cfgstruct["metrik-settings"]["txtSize"] = "0.7f"; cfgstruct["metrik-settings"]["txtSize"] = "0.7f";
cfgfile->write(cfgstruct); cfgfile->write(cfgstruct);
} }
cfgfile = std::make_unique<INI::INIFile>(cfgpath+ "/config.ini"); cfgfile = std::make_unique<INI::INIFile>(cfgpath+ "/config.ini");
@ -572,16 +573,12 @@ Result RenderD7::Init::Main(std::string app_name)
C3D_FrameRate(RenderD7::Convert::StringtoFloat(Fps)); C3D_FrameRate(RenderD7::Convert::StringtoFloat(Fps));
metrikd = RenderD7::Convert::FloatToBool(RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["enableoverlay"])); metrikd = RenderD7::Convert::FloatToBool(RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["enableoverlay"]));
mt_txtcolor = RenderD7::Color::Hex(cfgstruct["metrik-settings"]["txtColor"], (u8)RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["txtColorA"])); mt_txtcolor = RenderD7::Color::Hex(cfgstruct["metrik-settings"]["txtColor"], (u8)RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["txtColorA"]));
mt_color = RenderD7::Color::Hex(cfgstruct["metrik-settings"]["Color"], (u8)RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["ColorA"])); mt_color = RenderD7::Color::Hex(cfgstruct["metrik-settings"]["Color"], (u8)RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["ColorA"]));
mt_txtSize = RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["txtSize"]); mt_txtSize = RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["txtSize"]);
mt_screen = RenderD7::Convert::StringtoInt(cfgstruct["metrik-settings"]["Screen"]); mt_screen = RenderD7::Convert::StringtoInt(cfgstruct["metrik-settings"]["Screen"]);
osSetSpeedupEnable(true); osSetSpeedupEnable(true);
/*if(metrikd)
{
RenderD7::Thread tr(MetrikThread);
tr.start();
}*/
C3D_Init(C3D_DEFAULT_CMDBUF_SIZE); C3D_Init(C3D_DEFAULT_CMDBUF_SIZE);
C2D_Init(size_t(maxobj__)); C2D_Init(size_t(maxobj__));
C2D_Prepare(); C2D_Prepare();
@ -834,22 +831,25 @@ void RenderD7::DrawList1(RenderD7::ScrollList1 &l, float txtsize, C3D_RenderTarg
void RenderD7::DrawMetrikOvl() void RenderD7::DrawMetrikOvl()
{ {
switch (mt_screen) switch (mt_screen)
{ {
case 0: case 0:
RenderD7::OnScreen(Top); RenderD7::OnScreen(Top);
case 1: break;
RenderD7::OnScreen(Bottom); case 1:
default: RenderD7::OnScreen(Bottom);
RenderD7::OnScreen(Bottom); break;
} default:
RenderD7::OnScreen(Bottom);
break;
}
RenderD7::DrawText(0, 0, mt_txtSize, mt_txtcolor, "FPS: " + RenderD7::GetFramerate()); RenderD7::DrawText(0, 0, mt_txtSize, mt_txtcolor, "FPS: " + RenderD7::GetFramerate());
//RenderD7::DrawText(0, 50, mt_txtSize, mt_txtcolor, "CPU: " + std::to_string(C3D_GetProcessingTime()*6.0f) + "/" + std::to_string(C3D_GetProcessingTime())); RenderD7::DrawText(0, 50, mt_txtSize, mt_txtcolor, "CPU: " + std::to_string(C3D_GetProcessingTime()*6.0f) + "/" + std::to_string(C3D_GetProcessingTime()));
//RenderD7::DrawText(0, 70, mt_txtSize, mt_txtcolor, "GPU: " + std::to_string(C3D_GetDrawingTime()*6.0f) + "/" + std::to_string(C3D_GetDrawingTime())); RenderD7::DrawText(0, 70, mt_txtSize, mt_txtcolor, "GPU: " + std::to_string(C3D_GetDrawingTime()*6.0f) + "/" + std::to_string(C3D_GetDrawingTime()));
for (int z = 0; z < 320; z++) for (int z = 0; z < 320; z++)
{ {
C2D_DrawLine(z, 239 - mt_fpsgraph[z], mt_txtcolor, z + 1, 239 - mt_fpsgraph[z + 1], mt_txtcolor, 1, 1); C2D_DrawLine(z, 239 - mt_fpsgraph[z], mt_txtcolor, z + 1, 239 - mt_fpsgraph[z + 1], mt_txtcolor, 1, 1);
} }
} }
bool RenderD7::DrawNFRect(float p1x, float p1y, float w, float h, u32 color, float scale) bool RenderD7::DrawNFRect(float p1x, float p1y, float w, float h, u32 color, float scale)
@ -864,9 +864,17 @@ bool RenderD7::DrawNFRect(float p1x, float p1y, float w, float h, u32 color, flo
void RenderD7::FrameEnd() void RenderD7::FrameEnd()
{ {
if (metrikd)RenderD7::DrawMetrikOvl(); if (metrikd)RenderD7::DrawMetrikOvl();
for (int i = 0; i < (int))overlays.size(); i++)
{
overlays[i].Draw();
}
C3D_FrameEnd(0); C3D_FrameEnd(0);
} }
void AddOvl(Ovl overlay)
{
overlays.push_back(overlay);
}
/*RenderD7::Console::Console() /*RenderD7::Console::Console()
{ {
this->x = 0; this->x = 0;

View File

@ -6,6 +6,7 @@
#include <stack> #include <stack>
#include <string> #include <string>
#include <functional> #include <functional>
#include <map>
#include <vector> #include <vector>
#include <dirent.h> #include <dirent.h>
#include <unistd.h> #include <unistd.h>
@ -133,6 +134,12 @@ namespace RenderD7
//static void HandleOvl(); //static void HandleOvl();
}; };
class Ovl {
public:
virtual ~Ovl(){}
virtual void Draw() const = 0;
};
void AddOvl(Ovl overlay);
namespace Color namespace Color
{ {
struct rgba struct rgba