mirror of
https://github.com/MadeOfJelly/MushMachine.git
synced 2025-06-18 18:56:36 +02:00
reworked the general update strategy interface
This commit is contained in:
@ -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});
|
||||
|
||||
|
@ -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);
|
||||
};
|
||||
|
Reference in New Issue
Block a user