#include "MapWindow.h" #include #include "Globals.h" MapWindow::MapWindow() : Fenster(), map(0) { setStyle( Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::BodyHAlpha | Fenster::Style::Titel | Fenster::Style::TitelHAlpha | Fenster::Style::Closable | Fenster::Style::ClosingHAlpha | Fenster::Style::ClosingKlickBuffer | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund | Fenster::Style::ClosingHintergrund | Fenster::Style::MEIgnoreInside | Fenster::Style::HeightChangeable | Fenster::Style::BreiteChangeable | Fenster::Style::BodyMinBr | Fenster::Style::BodyMinHi | Fenster::Style::Beweglich); removeStyle(Fenster::Style::Sichtbar); setTitel("Map"); setClosingMe([this](void* p, void* o, Framework::MausEreignis me) { if (me.id == Framework::ME_RLinks) { setVisibility(0); } return 1; }); setSize(500, 500); setPosition(uiFactory.initParam.bildschirm->getBackBufferSize().x / 2 - getBreite() / 2, uiFactory.initParam.bildschirm->getBackBufferSize().y / 2 - getHeight() / 2); setMausEreignis(Framework::_ret1ME); setTastaturEreignis(Framework::_ret1TE); setRBreite(1); setRFarbe(0xFF52525E); setKBgFarbe(0xA0000000); setTBgFarbe(0xA0000000); setSBgFarbe(0xA0000000); setTSchriftZ( dynamic_cast(uiFactory.initParam.schrift->getThis())); zTTextFeld()->setSize(0, 20); zTTextFeld()->addStyle(TextFeld::Style::Center); setKMin(200, 200); } void MapWindow::setVisibility(bool visible) { if ((visible && !map) || (!visible && map)) { uiFactory.initParam.bildschirm->postAction([this, visible]() { if (visible && !map) { lockZeichnung(); map = new DimensionMap(); map->setSize(getInnenBreite(), getInnenHeight()); addMember(map); unlockZeichnung(); addStyle(Fenster::Style::Sichtbar); } if (!visible && map) { removeStyle(Fenster::Style::Sichtbar); lockZeichnung(); removeMember(map); map = 0; unlockZeichnung(); } }); } } void MapWindow::addChunk(ChunkMap* chunk) { lockZeichnung(); if (map) { map->addChunk(chunk); } else { chunk->release(); } unlockZeichnung(); } bool MapWindow::tick(double time) { if (map) map->setSize(getInnenBreite(), getInnenHeight()); return Fenster::tick(time); }