reworked the general update strategy interface

This commit is contained in:
2021-04-28 19:38:25 +02:00
parent b8a5cd7cf4
commit efad254193
53 changed files with 756 additions and 889 deletions

View File

@ -20,7 +20,7 @@ SimpleSDLRendererService::SimpleSDLRendererService(void) {
SimpleSDLRendererService::~SimpleSDLRendererService(void) {
}
bool SimpleSDLRendererService::enable(Engine& engine) {
bool SimpleSDLRendererService::enable(Engine& engine, std::vector<UpdateStrategies::TaskInfo>& task_array) {
auto* sdl_ss = engine.tryService<SDLService>();
if (!sdl_ss) {
LOG_ERROR("SimpleSDLRendererService requires SDLService in engine!");
@ -46,6 +46,13 @@ bool SimpleSDLRendererService::enable(Engine& engine) {
targets["display"].reset(renderer, 800, 600);
// add tasks
task_array.push_back(
UpdateStrategies::TaskInfo{"SimpleSDLRendererService::render"}
.phase(UpdateStrategies::update_phase_t::POST)
.fn([this](Engine& e){ this->render(e); })
);
return true;
}
@ -57,18 +64,6 @@ void SimpleSDLRendererService::disable(Engine&) {
SDL_DestroyRenderer(renderer);
}
std::vector<UpdateStrategies::UpdateCreationInfo> SimpleSDLRendererService::registerUpdates(void) {
using namespace entt::literals;
return {
{
"SimpleSDLRendererService::render"_hs,
"SimpleSDLRendererService::render",
[this](Engine& e){ this->render(e); },
UpdateStrategies::update_phase_t::POST
}
};
}
void SimpleSDLRendererService::render(Engine& engine) {
targets["display"].clear(renderer, {40, 40, 40, 255});

View File

@ -1,5 +1,6 @@
#pragma once
#include "mm/services/service.hpp"
#include <SDL.h>
#include <mm/engine.hpp>
@ -23,14 +24,11 @@ namespace MM::Services {
public:
bool enable(Engine& engine) override;
bool enable(Engine& engine, std::vector<UpdateStrategies::TaskInfo>& task_array) override;
void disable(Engine& engine) override;
const char* name(void) override { return "SimpleSDLServiceSystem"; };
std::vector<UpdateStrategies::UpdateCreationInfo> registerUpdates(void) override;
private:
void render(Engine& engine);
};