| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #include "MapWindow.h"
- #include <TextField.h>
- #include "Globals.h"
- MapWindow::MapWindow()
- : OptionsWindow([this]() { options->addStyle(Window::Style::Visible); }),
- map(0)
- {
- setTitel("Map");
- setClosingMe([this](void* p, void* o, Framework::MouseEvent me) {
- if (me.id == Framework::ME_RLeft)
- {
- setVisibility(0);
- }
- return 1;
- });
- setSize(500, 500);
- setPosition(uiFactory.initParam.bildschirm->getBackBufferSize().x / 2
- - getWidth() / 2,
- uiFactory.initParam.bildschirm->getBackBufferSize().y / 2
- - getHeight() / 2);
- setBodyMin(200, 200);
- options = new MapOptions();
- options->getThis(); // increase reference counter outside of dynamic_cast to
- // avoid compiler warning
- uiFactory.initParam.bildschirm->addMember(dynamic_cast<Drawable*>(options));
- }
- MapWindow::~MapWindow()
- {
- options->release();
- }
- void MapWindow::setVisibility(bool visible)
- {
- if ((visible && !map) || (!visible && map))
- {
- uiFactory.initParam.bildschirm->postAction([this, visible]() {
- if (visible && !map)
- {
- lockDrawable();
- map = new DimensionMap(options);
- map->setSize(getInnerWidth(), getInnerHeight());
- addMember(map);
- unlockDrawable();
- addStyle(Window::Style::Visible);
- }
- if (!visible && map)
- {
- removeStyle(Window::Style::Visible);
- lockDrawable();
- removeMember(map);
- map = 0;
- unlockDrawable();
- }
- });
- }
- }
- void MapWindow::addChunk(ChunkMap* chunk)
- {
- lockDrawable();
- if (map)
- {
- map->addChunk(chunk);
- }
- else
- {
- chunk->release();
- }
- unlockDrawable();
- }
- void MapWindow::updatePlayerData(char* data)
- {
- lockDrawable();
- if (map) map->updatePlayers(data);
- unlockDrawable();
- }
- bool MapWindow::tick(double time)
- {
- if (map) map->setSize(getInnerWidth(), getInnerHeight());
- return OptionsWindow::tick(time);
- }
|