Nimbin[12]?SDL & Graphics / sdl_runtime_compiler / src/systems/pult_system.hpp

sdl_runtime_compiler git · main

SDL3 game for running and compiling code at runtime

sdl3 c++ compiler dlopen cmake · first commit 2026-04-19 · last commit 2026-07-03 (3 months ago) · synced 3 days ago · upstream: git.ide3.de/hsnr/sdl-runtime-compiler

C++ 72.3% C 26.2%
git clone https://git.christianimmanuel.de/sdl-graphics/sdl_runtime_compiler.gitwget https://git.christianimmanuel.de/sdl-graphics/sdl_runtime_compiler/archive/sdl_runtime_compiler.tar.gz
src/systems/pult_system.hpp 1.4 KB · 54 lines raw
#pragma once

#include <optional>

#include "entities/camera.hpp"
#include "entities/game_object.hpp"
#include "entities/pult.hpp"
#include "utils/globals.hpp"

namespace
Nimbin
{

class  GlRenderer;
struct Light;
struct Player;
struct ProjectileContactEvent;

namespace Text { class Handler; }


class PultSystem
{
    DynArray<Pult*> _pults;

    Pult* _connect_program { nullptr };
    Pult* _connect_editor  { nullptr };
public:
    void init        (DynArray<GameObjectPtr>& scenery,
                      DynArray<PultButton*>&   buttons_out,
                      float                    world_scale);
    void update      (double dt, const Camera& camera);
    void draw_Labels (GlRenderer& gl, const Camera& camera, const Light& light) const;


    std::optional<PultAction>
         try_Activate            (GameObject* obj,
                                  const DynArray<PultButton*>& buttons);
    std::optional<PultAction>
         handle_ProjectileContact(const ProjectileContactEvent& ev,
                                  const DynArray<PultButton*>&  buttons);
    std::optional<PultAction>
         handle_PlayerContact    (const Player& player,
                                  const DynArray<PultButton*>& buttons);

    Vec3 get_ConnectProgramPos   () const;
    Vec3 get_ConnectEditorPos    () const;
    DynArray<Text::Handler*>
         get_Labels              () const;


};

} // namespace Nimbin