diff --git a/examples/build.lua b/examples/build.lua index 92d04a1..552dea1 100644 --- a/examples/build.lua +++ b/examples/build.lua @@ -25,7 +25,8 @@ assets = CopyDir(PathJoin(paths.build, paths.examples), "assets") examples = BuildExamples(example_settings, { "text", "events", - "input" + "input", + "display" }, assets) PseudoTarget("examples", examples) diff --git a/examples/display/DisplayExample.cpp b/examples/display/DisplayExample.cpp new file mode 100644 index 0000000..2cbe330 --- /dev/null +++ b/examples/display/DisplayExample.cpp @@ -0,0 +1,58 @@ + +#include +#include +#include +#include +#include "DisplayExample.h" + +void DisplayExample::init() +{ + m_renderer = new sp::BatchRenderer2D(); + m_mode = sp::Display::WINDOWED; + getMessageHandler()->registerListener(this); + + m_texture.create("assets/textures/tux.png"); + + m_sprite.setTexture(m_texture); + m_sprite.setPosition(sp::vec2f(50, 50)); + m_sprite.setSize(sp::vec2f(100, 100)); + + m_renderer->setCamera(m_camera); +} + +void DisplayExample::onEvent(const sp::Event& event) +{ + if (event.type == sp::Event::Key && event.key.pressed == false) { + + if (event.key.code == sp::Keyboard::Space) { + + if (m_mode == sp::Display::WINDOWED) { + m_mode = sp::Display::FULLSCREEN; + sp::Log::info("Fullscreen"); + } else { + m_mode = sp::Display::WINDOWED; + sp::Log::info("Windowed"); + } + + getGraphics()->setDisplayMode(m_mode); + } + } +} + +void DisplayExample::update(double dt) +{ + // Nothing to do +} + +void DisplayExample::render() +{ + sp::Graphics* g = getGraphics(); + + g->clearBuffer(); + + m_renderer->begin(); + m_renderer->submit(m_sprite); + m_renderer->render(); + + g->swapBuffers(); +} diff --git a/examples/display/DisplayExample.h b/examples/display/DisplayExample.h new file mode 100644 index 0000000..68de736 --- /dev/null +++ b/examples/display/DisplayExample.h @@ -0,0 +1,34 @@ + +#ifndef DISPLAY_EXAMPLE_H +#define DISPLAY_EXAMPLE_H + +#include +#include +#include +#include +#include + +class DisplayExample : public sp::Game, sp::EventListener +{ +public : + void onEvent(const sp::Event& event); + +protected : + + void init(); + + void update(double dt); + + void render(); + +protected : + + sp::Display::Mode m_mode; + + sp::Camera2D m_camera; + sp::Renderer2D *m_renderer; + sp::Texture m_texture; + sp::Sprite m_sprite; +}; + +#endif /* DISPLAY_EXAMPLE_H */ diff --git a/examples/display/bam.lua b/examples/display/bam.lua new file mode 100644 index 0000000..8e16b24 --- /dev/null +++ b/examples/display/bam.lua @@ -0,0 +1,7 @@ + +local base = PathDir(ModuleFilename()) + +src ={ + base .. "/main.cpp", + base .. "/DisplayExample.cpp" +} diff --git a/examples/display/main.cpp b/examples/display/main.cpp new file mode 100644 index 0000000..5959143 --- /dev/null +++ b/examples/display/main.cpp @@ -0,0 +1,11 @@ + +#include "DisplayExample.h" + +int main(int argc, char **argv) { + + DisplayExample game; + + game.run(); + + return 0; +}