Peoplemon  0.1.0
Peoplemon 3 game source documentation
EditMapComponent.cpp
Go to the documentation of this file.
2 
3 #include <Core/Properties.hpp>
5 
6 namespace editor
7 {
8 namespace component
9 {
10 namespace rdr
11 {
13 : Component(HighlightState::IgnoresMouse)
14 , enginePtr(nullptr) {}
15 
16 void EditMapComponent::setVisible(bool visible) { sprite.setHidden(!visible); }
17 
18 void EditMapComponent::onElementUpdated() {
19  EditMap& owner = getOwnerAs<EditMap>();
20  if (renderTexture->getCurrentScene() != owner.scene) {
21  if (renderTexture->sceneCount() > 0) { renderTexture->popScene(); }
22  renderTexture->pushScene(owner.scene);
23  }
24 }
25 
26 void EditMapComponent::onRenderSettingChange() {
27  // noop
28 }
29 
30 bl::ecs::Entity EditMapComponent::getEntity() const { return sprite.entity(); }
31 
32 void EditMapComponent::doCreate(bl::engine::Engine& engine, bl::gui::rdr::Renderer&) {
33  enginePtr = &engine;
34  auto& owner = getOwnerAs<EditMap>();
35 
36  renderTexture = engine.renderer().createRenderTexture(
38  sprite.create(engine, renderTexture->getTexture());
39 }
40 
41 void EditMapComponent::doSceneAdd(bl::rc::Overlay* overlay) {
42  sprite.addToScene(overlay, bl::rc::UpdateSpeed::Static);
43 }
44 
45 void EditMapComponent::doSceneRemove() { sprite.removeFromScene(); }
46 
47 void EditMapComponent::handleAcquisition() {
48  EditMap& owner = getOwnerAs<EditMap>();
49 
50  // only respond to valid acquisition
51  const glm::u32vec2 acq(owner.getAcquisition().width, owner.getAcquisition().height);
52  if (acq.x > 0 && acq.x < 5000 && acq.y > 0 && acq.y < 5000) {
53  if (acq != renderTexture->getSize()) {
54  renderTexture->resize(acq);
55  sprite.scaleToSize(acq);
56  }
57  handleMove();
58  }
59 }
60 
61 void EditMapComponent::handleMove() {
62  EditMap& owner = getOwnerAs<EditMap>();
63  sprite.getTransform().setPosition(owner.getLocalPosition().x, owner.getLocalPosition().y);
64 }
65 
66 } // namespace rdr
67 } // namespace component
68 } // namespace editor
All classes and functionality used for implementing the game editor.
Definition: Tile.hpp:11
bl::rc::SceneRef scene
Definition: Map.hpp:328
static int WindowWidth()
Definition: Properties.cpp:250
static int WindowHeight()
Definition: Properties.cpp:256
Wrapper over the core::Map class that is directly usable in a bl::gui::GUI.
Definition: EditMap.hpp:28