MapWindow.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "MapWindow.h"
  2. #include <TextFeld.h>
  3. #include "Globals.h"
  4. MapWindow::MapWindow()
  5. : Fenster(),
  6. map(0)
  7. {
  8. setStyle(
  9. Fenster::Style::Erlaubt | Fenster::Style::Rahmen
  10. | Fenster::Style::BodyHAlpha | Fenster::Style::Titel
  11. | Fenster::Style::TitelHAlpha | Fenster::Style::Closable
  12. | Fenster::Style::ClosingHAlpha | Fenster::Style::ClosingKlickBuffer
  13. | Fenster::Style::TitelHintergrund | Fenster::Style::BodyHintergrund
  14. | Fenster::Style::ClosingHintergrund | Fenster::Style::MEIgnoreInside
  15. | Fenster::Style::HeightChangeable | Fenster::Style::BreiteChangeable
  16. | Fenster::Style::BodyMinBr | Fenster::Style::BodyMinHi
  17. | Fenster::Style::Beweglich);
  18. removeStyle(Fenster::Style::Sichtbar);
  19. setTitel("Map");
  20. setClosingMe([this](void* p, void* o, Framework::MausEreignis me) {
  21. if (me.id == Framework::ME_RLinks)
  22. {
  23. setVisibility(0);
  24. }
  25. return 1;
  26. });
  27. setSize(500, 500);
  28. setPosition(uiFactory.initParam.bildschirm->getBackBufferSize().x / 2
  29. - getBreite() / 2,
  30. uiFactory.initParam.bildschirm->getBackBufferSize().y / 2
  31. - getHeight() / 2);
  32. setMausEreignis(Framework::_ret1ME);
  33. setTastaturEreignis(Framework::_ret1TE);
  34. setRBreite(1);
  35. setRFarbe(0xFF52525E);
  36. setKBgFarbe(0xA0000000);
  37. setTBgFarbe(0xA0000000);
  38. setSBgFarbe(0xA0000000);
  39. setTSchriftZ(
  40. dynamic_cast<Schrift*>(uiFactory.initParam.schrift->getThis()));
  41. zTTextFeld()->setSize(0, 20);
  42. zTTextFeld()->addStyle(TextFeld::Style::Center);
  43. setKMin(200, 200);
  44. }
  45. void MapWindow::setVisibility(bool visible)
  46. {
  47. if ((visible && !map) || (!visible && map))
  48. {
  49. uiFactory.initParam.bildschirm->postAction([this, visible]() {
  50. if (visible && !map)
  51. {
  52. lockZeichnung();
  53. map = new DimensionMap();
  54. map->setSize(getInnenBreite(), getInnenHeight());
  55. addMember(map);
  56. unlockZeichnung();
  57. addStyle(Fenster::Style::Sichtbar);
  58. }
  59. if (!visible && map)
  60. {
  61. removeStyle(Fenster::Style::Sichtbar);
  62. lockZeichnung();
  63. removeMember(map);
  64. map = 0;
  65. unlockZeichnung();
  66. }
  67. });
  68. }
  69. }
  70. void MapWindow::addChunk(ChunkMap* chunk)
  71. {
  72. lockZeichnung();
  73. if (map)
  74. {
  75. map->addChunk(chunk);
  76. }
  77. else
  78. {
  79. chunk->release();
  80. }
  81. unlockZeichnung();
  82. }
  83. bool MapWindow::tick(double time)
  84. {
  85. if (map) map->setSize(getInnenBreite(), getInnenHeight());
  86. return Fenster::tick(time);
  87. }