diff --git a/src/UICaption.cpp b/src/UICaption.cpp index 9001333..5daddaf 100644 --- a/src/UICaption.cpp +++ b/src/UICaption.cpp @@ -13,10 +13,11 @@ UIDrawable* UICaption::click_at(sf::Vector2f point) return NULL; } -void UICaption::render(sf::Vector2f offset) +void UICaption::render(sf::Vector2f offset, sf::RenderTarget& target) { text.move(offset); - Resources::game->getWindow().draw(text); + //Resources::game->getWindow().draw(text); + target.draw(text); text.move(-offset); } diff --git a/src/UICaption.h b/src/UICaption.h index bf01a96..2dfdc17 100644 --- a/src/UICaption.h +++ b/src/UICaption.h @@ -7,7 +7,7 @@ class UICaption: public UIDrawable { public: sf::Text text; - void render(sf::Vector2f) override final; + void render(sf::Vector2f, sf::RenderTarget&) override final; PyObjectsEnum derived_type() override final; virtual UIDrawable* click_at(sf::Vector2f point) override final; diff --git a/src/UIDrawable.cpp b/src/UIDrawable.cpp index a710095..693d5f6 100644 --- a/src/UIDrawable.cpp +++ b/src/UIDrawable.cpp @@ -3,6 +3,7 @@ #include "UICaption.h" #include "UISprite.h" #include "UIGrid.h" +#include "GameEngine.h" UIDrawable::UIDrawable() { click_callable = NULL; } @@ -13,7 +14,7 @@ void UIDrawable::click_unregister() void UIDrawable::render() { - render(sf::Vector2f()); + render(sf::Vector2f(), Resources::game->getWindow()); } PyObject* UIDrawable::get_click(PyObject* self, void* closure) { diff --git a/src/UIDrawable.h b/src/UIDrawable.h index 4e636c5..595fc93 100644 --- a/src/UIDrawable.h +++ b/src/UIDrawable.h @@ -28,7 +28,8 @@ class UIDrawable { public: void render(); - virtual void render(sf::Vector2f) = 0; + //virtual void render(sf::Vector2f) = 0; + virtual void render(sf::Vector2f, sf::RenderTarget&) = 0; virtual PyObjectsEnum derived_type() = 0; // Mouse input handling - callable object, methods to find event's destination diff --git a/src/UIEntity.h b/src/UIEntity.h index b5050ff..94b700a 100644 --- a/src/UIEntity.h +++ b/src/UIEntity.h @@ -40,7 +40,7 @@ public: std::vector gridstate; UISprite sprite; sf::Vector2f position; //(x,y) in grid coordinates; float for animation - void render(sf::Vector2f); //override final; + //void render(sf::Vector2f); //override final; UIEntity(); UIEntity(UIGrid&); diff --git a/src/UIFrame.cpp b/src/UIFrame.cpp index 42adc47..f382127 100644 --- a/src/UIFrame.cpp +++ b/src/UIFrame.cpp @@ -44,14 +44,15 @@ PyObjectsEnum UIFrame::derived_type() return PyObjectsEnum::UIFRAME; } -void UIFrame::render(sf::Vector2f offset) +void UIFrame::render(sf::Vector2f offset, sf::RenderTarget& target) { box.move(offset); - Resources::game->getWindow().draw(box); + //Resources::game->getWindow().draw(box); + target.draw(box); box.move(-offset); for (auto drawable : *children) { - drawable->render(offset + box.getPosition()); + drawable->render(offset + box.getPosition(), target); } } diff --git a/src/UIFrame.h b/src/UIFrame.h index 5875ad6..9cd5d10 100644 --- a/src/UIFrame.h +++ b/src/UIFrame.h @@ -28,7 +28,7 @@ public: sf::RectangleShape box; float outline; std::shared_ptr>> children; - void render(sf::Vector2f) override final; + void render(sf::Vector2f, sf::RenderTarget&) override final; void move(sf::Vector2f); PyObjectsEnum derived_type() override final; virtual UIDrawable* click_at(sf::Vector2f point) override final; diff --git a/src/UIGrid.cpp b/src/UIGrid.cpp index b3331a8..0ea7d94 100644 --- a/src/UIGrid.cpp +++ b/src/UIGrid.cpp @@ -32,9 +32,9 @@ UIGrid::UIGrid(int gx, int gy, std::shared_ptr _ptex, sf::Vector2f _x void UIGrid::update() {} -void UIGrid::render(sf::Vector2f) +void UIGrid::render(sf::Vector2f offset, sf::RenderTarget& target) { - output.setPosition(box.getPosition()); // output sprite can move; update position when drawing + output.setPosition(box.getPosition() + offset); // output sprite can move; update position when drawing // output size can change; update size when drawing output.setTextureRect( sf::IntRect(0, 0, @@ -172,7 +172,8 @@ void UIGrid::render(sf::Vector2f) // render to window renderTexture.display(); - Resources::game->getWindow().draw(output); + //Resources::game->getWindow().draw(output); + target.draw(output); } diff --git a/src/UIGrid.h b/src/UIGrid.h index bb09152..625af98 100644 --- a/src/UIGrid.h +++ b/src/UIGrid.h @@ -26,7 +26,7 @@ public: //UIGrid(int, int, IndexTexture*, float, float, float, float); UIGrid(int, int, std::shared_ptr, sf::Vector2f, sf::Vector2f); void update(); - void render(sf::Vector2f) override final; + void render(sf::Vector2f, sf::RenderTarget&) override final; UIGridPoint& at(int, int); PyObjectsEnum derived_type() override final; //void setSprite(int); diff --git a/src/UISprite.cpp b/src/UISprite.cpp index 1f3a214..1441753 100644 --- a/src/UISprite.cpp +++ b/src/UISprite.cpp @@ -18,14 +18,16 @@ UISprite::UISprite(std::shared_ptr _ptex, int _sprite_index, sf::Vect sprite = ptex->sprite(sprite_index, _pos, sf::Vector2f(_scale, _scale)); } +/* void UISprite::render(sf::Vector2f offset) { sprite.move(offset); Resources::game->getWindow().draw(sprite); sprite.move(-offset); } +*/ -void UISprite::render(sf::Vector2f offset, sf::RenderTexture& target) +void UISprite::render(sf::Vector2f offset, sf::RenderTarget& target) { sprite.move(offset); target.draw(sprite); diff --git a/src/UISprite.h b/src/UISprite.h index 917eec5..a831efd 100644 --- a/src/UISprite.h +++ b/src/UISprite.h @@ -25,10 +25,10 @@ public: UISprite(); UISprite(std::shared_ptr, int, sf::Vector2f, float); void update(); - void render(sf::Vector2f) override final; + void render(sf::Vector2f, sf::RenderTarget&) override final; virtual UIDrawable* click_at(sf::Vector2f point) override final; - void render(sf::Vector2f, sf::RenderTexture&); + //void render(sf::Vector2f, sf::RenderTexture&); void setPosition(sf::Vector2f); sf::Vector2f getPosition();