Peoplemon  0.1.0
Peoplemon 3 game source documentation
MapActions.hpp
Go to the documentation of this file.
1 #ifndef EDITOR_COMPONENTS_MAPACTIONS_HPP
2 #define EDITOR_COMPONENTS_MAPACTIONS_HPP
3 
5 
6 namespace editor
7 {
8 namespace component
9 {
10 class EditMap::SetTileAction : public EditMap::Action {
11 public:
12  static EditMap::Action::Ptr create(unsigned int level, unsigned int layer,
13  const sf::Vector2i& pos, bool isAnim,
14  core::map::Tile::IdType value, const EditMap& map);
15 
16  virtual ~SetTileAction() = default;
17  virtual bool apply(EditMap& map) override;
18  virtual bool undo(EditMap& map) override;
19  virtual const char* description() const override;
20 
21 private:
22  const unsigned int level;
23  const unsigned int layer;
24  const sf::Vector2i position;
25  const core::map::Tile::IdType prev;
26  const bool wasAnim;
27  const core::map::Tile::IdType updated;
28  const bool isAnim;
29 
30  SetTileAction(unsigned int level, unsigned int layer, const sf::Vector2i& pos,
31  core::map::Tile::IdType prev, bool wasAnim, core::map::Tile::IdType value,
32  bool isAnim);
33 };
34 
35 class EditMap::SetTileAreaAction : public EditMap::Action {
36 public:
37  static EditMap::Action::Ptr create(unsigned int level, unsigned int layer,
38  const sf::IntRect& area, bool isAnim,
39  core::map::Tile::IdType value, const EditMap& map);
40 
41  virtual ~SetTileAreaAction() = default;
42  virtual bool apply(EditMap& map) override;
43  virtual bool undo(EditMap& map) override;
44  virtual const char* description() const override;
45 
46 private:
47  const unsigned int level;
48  const unsigned int layer;
49  const sf::IntRect area;
50  const bl::ctr::Vector2D<core::map::Tile::IdType> prev;
51  const bl::ctr::Vector2D<std::uint8_t> wasAnim;
52  const core::map::Tile::IdType updated;
53  const bool isAnim;
54  const int w;
55  const int h;
56 
57  SetTileAreaAction(unsigned int level, unsigned int layer, const sf::IntRect& area,
58  bl::ctr::Vector2D<core::map::Tile::IdType>&& prev,
59  bl::ctr::Vector2D<std::uint8_t>&& wasAnim,
60  core::map::Tile::IdType value, bool isAnim, int w, int h);
61 };
62 
63 class EditMap::FillTileAction : public EditMap::Action {
64 public:
65  static Action::Ptr create(unsigned int level, unsigned int layer, const sf::Vector2i& pos,
66  core::map::Tile::IdType id, bool isAnim, EditMap& map);
67 
68  virtual ~FillTileAction() = default;
69  virtual bool apply(EditMap& map) override;
70  virtual bool undo(EditMap& map) override;
71  virtual const char* description() const override;
72 
73 private:
74  struct FillTile {
75  sf::Vector2i position;
77  bool isAnim;
78 
79  FillTile(const sf::Vector2i& pos, const core::map::Tile& tile)
80  : position(pos)
81  , id(tile.id())
82  , isAnim(tile.isAnimation()) {}
83  };
84 
85  const unsigned int level;
86  const unsigned int layer;
87  const core::map::Tile::IdType id;
88  const bool isAnim;
89  const std::vector<FillTile> set;
90 
91  FillTileAction(unsigned int level, unsigned int layer, core::map::Tile::IdType id, bool isAnim,
92  std::vector<FillTile>&& set);
93 };
94 
95 class EditMap::SetCollisionAction : public EditMap::Action {
96 public:
97  static EditMap::Action::Ptr create(unsigned int level, const sf::Vector2i& pos,
98  core::map::Collision value, const EditMap& map);
99 
100  virtual ~SetCollisionAction() = default;
101  virtual bool apply(EditMap& map) override;
102  virtual bool undo(EditMap& map) override;
103  virtual const char* description() const override;
104 
105 private:
106  const unsigned int level;
107  const sf::Vector2i pos;
108  const core::map::Collision value;
109  const core::map::Collision ogVal;
110 
111  SetCollisionAction(unsigned int level, const sf::Vector2i& pos, core::map::Collision value,
112  core::map::Collision ogVal);
113 };
114 
115 class EditMap::FillCollisionAction : public EditMap::Action {
116 public:
117  static Action::Ptr create(unsigned int level, const sf::Vector2i& pos, core::map::Collision col,
118  EditMap& map);
119 
120  virtual ~FillCollisionAction() = default;
121  virtual bool apply(EditMap& map) override;
122  virtual bool undo(EditMap& map) override;
123  virtual const char* description() const override;
124 
125 private:
126  const unsigned int level;
127  const core::map::Collision col;
128  const std::vector<std::pair<sf::Vector2i, core::map::Collision>> set;
129 
130  FillCollisionAction(unsigned int level, core::map::Collision col,
131  std::vector<std::pair<sf::Vector2i, core::map::Collision>>&& set);
132 };
133 
134 class EditMap::SetCollisionAreaAction : public EditMap::Action {
135 public:
136  static EditMap::Action::Ptr create(unsigned int level, const sf::IntRect& area,
137  core::map::Collision value, const EditMap& map);
138 
139  virtual ~SetCollisionAreaAction() = default;
140  virtual bool apply(EditMap& map) override;
141  virtual bool undo(EditMap& map) override;
142  virtual const char* description() const override;
143 
144 private:
145  const unsigned int level;
146  const sf::IntRect area;
147  const core::map::Collision value;
148  const bl::ctr::Vector2D<core::map::Collision> ogVals;
149 
150  SetCollisionAreaAction(unsigned int level, const sf::IntRect& area, core::map::Collision value,
151  bl::ctr::Vector2D<core::map::Collision>&& ogcols);
152 };
153 
154 class EditMap::SetCatchAction : public EditMap::Action {
155 public:
156  static EditMap::Action::Ptr create(unsigned int level, const sf::Vector2i& pos,
157  std::uint8_t value, const EditMap& map);
158 
159  virtual ~SetCatchAction() = default;
160  virtual bool apply(EditMap& map) override;
161  virtual bool undo(EditMap& map) override;
162  virtual const char* description() const override;
163 
164 private:
165  const unsigned int level;
166  const sf::Vector2i pos;
167  const std::uint8_t value;
168  const std::uint8_t ogVal;
169 
170  SetCatchAction(unsigned int level, const sf::Vector2i& pos, std::uint8_t value,
171  std::uint8_t ogVal);
172 };
173 
174 class EditMap::SetCatchAreaAction : public EditMap::Action {
175 public:
176  static EditMap::Action::Ptr create(unsigned int level, const sf::IntRect& area,
177  std::uint8_t value, const EditMap& map);
178 
179  virtual ~SetCatchAreaAction() = default;
180  virtual bool apply(EditMap& map) override;
181  virtual bool undo(EditMap& map) override;
182  virtual const char* description() const override;
183 
184 private:
185  const unsigned int level;
186  const sf::IntRect area;
187  const std::uint8_t value;
188  const bl::ctr::Vector2D<std::uint8_t> ogVals;
189 
190  SetCatchAreaAction(unsigned int level, const sf::IntRect& area, std::uint8_t value,
191  bl::ctr::Vector2D<std::uint8_t>&& ogcols);
192 };
193 
194 class EditMap::FillCatchAction : public EditMap::Action {
195 public:
196  static Action::Ptr create(unsigned int level, const sf::Vector2i& pos, std::uint8_t id,
197  EditMap& map);
198 
199  virtual ~FillCatchAction() = default;
200  virtual bool apply(EditMap& map) override;
201  virtual bool undo(EditMap& map) override;
202  virtual const char* description() const override;
203 
204 private:
205  const unsigned int level;
206  const std::uint8_t id;
207  const std::vector<std::pair<sf::Vector2i, std::uint8_t>> set;
208 
209  FillCatchAction(unsigned int level, std::uint8_t id,
210  std::vector<std::pair<sf::Vector2i, std::uint8_t>>&& set);
211 };
212 
213 class EditMap::SetPlaylistAction : public EditMap::Action {
214 public:
215  static EditMap::Action::Ptr create(const std::string& playlist, const EditMap& editMap);
216 
217  virtual ~SetPlaylistAction() = default;
218  virtual bool apply(EditMap& map) override;
219  virtual bool undo(EditMap& map) override;
220  virtual const char* description() const override;
221 
222 private:
223  const std::string orig;
224  const std::string playlist;
225 
226  SetPlaylistAction(const std::string& orig, const std::string& playlist);
227 };
228 
229 class EditMap::SetNameAction : public EditMap::Action {
230 public:
231  static EditMap::Action::Ptr create(const std::string& name, const EditMap& editMap);
232 
233  virtual ~SetNameAction() = default;
234  virtual bool apply(EditMap& map) override;
235  virtual bool undo(EditMap& map) override;
236  virtual const char* description() const override;
237 
238 private:
239  const std::string orig;
240  const std::string name;
241 
242  SetNameAction(const std::string& orig, const std::string& name);
243 };
244 
245 class EditMap::SetWeatherAction : public EditMap::Action {
246 public:
247  static EditMap::Action::Ptr create(core::map::Weather::Type type, const EditMap& map);
248 
249  virtual ~SetWeatherAction() = default;
250  virtual bool apply(EditMap& map) override;
251  virtual bool undo(EditMap& map) override;
252  virtual const char* description() const override;
253 
254 private:
255  const core::map::Weather::Type type;
256  const core::map::Weather::Type orig;
257 
259 };
260 
261 class EditMap::AppendLayerAction : public EditMap::Action {
262 public:
263  enum Location { Bottom, YSort, Top };
264 
265  static EditMap::Action::Ptr create(unsigned int level, Location location);
266 
267  virtual ~AppendLayerAction() = default;
268  virtual bool apply(EditMap& map) override;
269  virtual bool undo(EditMap& map) override;
270  virtual const char* description() const override;
271 
272 private:
273  const unsigned int level;
274  const Location location;
275 
276  AppendLayerAction(unsigned int level, Location location);
277 };
278 
279 class EditMap::RemoveLayerAction : public EditMap::Action {
280 public:
281  static EditMap::Action::Ptr create(unsigned int level, unsigned int layer, const EditMap& map);
282 
283  virtual ~RemoveLayerAction() = default;
284  virtual bool apply(EditMap& map) override;
285  virtual bool undo(EditMap& map) override;
286  virtual const char* description() const override;
287 
288 private:
289  const unsigned int level;
290  const unsigned int layer;
291  const core::map::TileLayer removedLayer;
292 
293  RemoveLayerAction(unsigned int level, unsigned int layer,
294  const core::map::TileLayer& removedLayer);
295 };
296 
297 class EditMap::ShiftLayerAction : public EditMap::Action {
298 public:
299  static EditMap::Action::Ptr create(unsigned int level, unsigned int layer, bool up);
300 
301  virtual ~ShiftLayerAction() = default;
302  virtual bool apply(EditMap& map) override;
303  virtual bool undo(EditMap& map) override;
304  virtual const char* description() const override;
305 
306 private:
307  const unsigned int level;
308  const unsigned int layer;
309  const bool up;
310 
311  ShiftLayerAction(unsigned int level, unsigned int layer, bool up);
312 };
313 
314 class EditMap::ShiftLevelAction : public EditMap::Action {
315 public:
316  static EditMap::Action::Ptr create(unsigned int level, bool up);
317 
318  virtual ~ShiftLevelAction() = default;
319  virtual bool apply(EditMap& map) override;
320  virtual bool undo(EditMap& map) override;
321  virtual const char* description() const override;
322 
323 private:
324  const unsigned int level;
325  const bool up;
326 
327  ShiftLevelAction(unsigned int level, bool up);
328 };
329 
330 class EditMap::AppendLevelAction : public EditMap::Action {
331 public:
332  static EditMap::Action::Ptr create();
333 
334  virtual ~AppendLevelAction() = default;
335  virtual bool apply(EditMap& map) override;
336  virtual bool undo(EditMap& map) override;
337  virtual const char* description() const override;
338 
339 private:
340  AppendLevelAction() = default;
341 };
342 
343 class EditMap::SetScriptAction : public EditMap::Action {
344 public:
345  static EditMap::Action::Ptr create(bool load, const std::string& s, const std::string& p);
346 
347  virtual ~SetScriptAction() = default;
348  virtual bool apply(EditMap& map) override;
349  virtual bool undo(EditMap& map) override;
350  virtual const char* description() const override;
351 
352 private:
353  const bool load;
354  const std::string s;
355  const std::string p;
356 
357  SetScriptAction(bool load, const std::string& s, const std::string& p);
358 };
359 
360 class EditMap::AddEventAction : public EditMap::Action {
361 public:
362  static Action::Ptr create(const core::map::Event& e, unsigned int i);
363 
364  virtual ~AddEventAction() = default;
365  virtual bool apply(EditMap& map) override;
366  virtual bool undo(EditMap& map) override;
367  virtual const char* description() const override;
368 
369 private:
370  const core::map::Event event;
371  const unsigned int i;
372 
373  AddEventAction(const core::map::Event& e, unsigned int i);
374 };
375 
376 class EditMap::EditEventAction : public EditMap::Action {
377 public:
378  static Action::Ptr create(const core::map::Event& orig, const core::map::Event& val,
379  unsigned int i);
380 
381  virtual ~EditEventAction() = default;
382  virtual bool apply(EditMap& map) override;
383  virtual bool undo(EditMap& map) override;
384  virtual const char* description() const override;
385 
386 private:
387  const core::map::Event orig;
388  const core::map::Event val;
389  const unsigned int i;
390 
391  EditEventAction(const core::map::Event& orig, const core::map::Event& val, unsigned int i);
392 };
393 
394 class EditMap::RemoveEventAction : public EditMap::Action {
395 public:
396  static Action::Ptr create(const core::map::Event& e, unsigned int i);
397 
398  virtual ~RemoveEventAction() = default;
399  virtual bool apply(EditMap& map) override;
400  virtual bool undo(EditMap& map) override;
401  virtual const char* description() const override;
402 
403 private:
404  const core::map::Event event;
405  const unsigned int i;
406 
407  RemoveEventAction(const core::map::Event& orig, unsigned int i);
408 };
409 
410 class EditMap::AddSpawnAction : public EditMap::Action {
411 public:
412  static Action::Ptr create(unsigned int lvl, const sf::Vector2i& pos, unsigned int id,
413  bl::tmap::Direction dir);
414 
415  virtual ~AddSpawnAction() = default;
416  virtual bool apply(EditMap& map) override;
417  virtual bool undo(EditMap& map) override;
418  virtual const char* description() const override;
419 
420 private:
421  const unsigned int level;
422  const sf::Vector2i pos;
423  const unsigned int id;
424  const bl::tmap::Direction dir;
425 
426  AddSpawnAction(unsigned int lvl, const sf::Vector2i& pos, unsigned int id,
427  bl::tmap::Direction dir);
428 };
429 
430 class EditMap::RotateSpawnAction : public EditMap::Action {
431 public:
432  static Action::Ptr create(unsigned int id);
433 
434  virtual ~RotateSpawnAction() = default;
435  virtual bool apply(EditMap& map) override;
436  virtual bool undo(EditMap& map) override;
437  virtual const char* description() const override;
438 
439 private:
440  const unsigned int id;
441 
442  RotateSpawnAction(unsigned int id);
443 };
444 
445 class EditMap::RemoveSpawnAction : public EditMap::Action {
446 public:
447  static Action::Ptr create(unsigned int id, const core::map::Spawn& spawn);
448 
449  virtual ~RemoveSpawnAction() = default;
450  virtual bool apply(EditMap& map) override;
451  virtual bool undo(EditMap& map) override;
452  virtual const char* description() const override;
453 
454 private:
455  const unsigned int id;
456  const core::map::Spawn spawn;
457 
458  RemoveSpawnAction(unsigned int id, const core::map::Spawn& spawn);
459 };
460 
461 class EditMap::AddNpcSpawnAction : public EditMap::Action {
462 public:
463  static Action::Ptr create(const core::map::CharacterSpawn& s, unsigned int i);
464 
465  virtual ~AddNpcSpawnAction() = default;
466  virtual bool apply(EditMap& map) override;
467  virtual bool undo(EditMap& map) override;
468  virtual const char* description() const override;
469 
470 private:
471  const core::map::CharacterSpawn spawn;
472  const unsigned int i;
473 
474  AddNpcSpawnAction(const core::map::CharacterSpawn& s, unsigned int i);
475 };
476 
477 class EditMap::EditNpcSpawnAction : public EditMap::Action {
478 public:
479  static Action::Ptr create(unsigned int i, const core::map::CharacterSpawn& orig,
480  const core::map::CharacterSpawn& s);
481 
482  virtual ~EditNpcSpawnAction() = default;
483  virtual bool apply(EditMap& map) override;
484  virtual bool undo(EditMap& map) override;
485  virtual const char* description() const override;
486 
487 private:
488  const unsigned int i;
489  const core::map::CharacterSpawn orig;
490  const core::map::CharacterSpawn value;
491 
492  EditNpcSpawnAction(unsigned int i, const core::map::CharacterSpawn& orig,
493  const core::map::CharacterSpawn& s);
494 };
495 
496 class EditMap::RemoveNpcSpawnAction : public EditMap::Action {
497 public:
498  static Action::Ptr create(const core::map::CharacterSpawn& orig, unsigned int i);
499 
500  virtual ~RemoveNpcSpawnAction() = default;
501  virtual bool apply(EditMap& map) override;
502  virtual bool undo(EditMap& map) override;
503  virtual const char* description() const override;
504 
505 private:
506  const core::map::CharacterSpawn orig;
507  const unsigned int i;
508 
509  RemoveNpcSpawnAction(const core::map::CharacterSpawn& orig, unsigned int i);
510 };
511 
512 class EditMap::AddOrEditItemAction : public EditMap::Action {
513 public:
514  static Action::Ptr create(unsigned int i, unsigned int level, const sf::Vector2i& pos,
515  core::item::Id item, bool visible, const core::map::Item& orig,
516  bool add);
517 
518  virtual ~AddOrEditItemAction() = default;
519  virtual bool apply(EditMap& map) override;
520  virtual bool undo(EditMap& map) override;
521  virtual const char* description() const override;
522 
523 private:
524  const unsigned int i;
525  const unsigned int level;
526  const sf::Vector2i position;
527  const core::item::Id item;
528  const bool visible;
529  const core::map::Item orig;
530  const bool add;
531 
532  AddOrEditItemAction(unsigned int i, unsigned int level, const sf::Vector2i& pos,
533  core::item::Id item, bool visible, const core::map::Item& orig, bool add);
534 };
535 
536 class EditMap::RemoveItemAction : public EditMap::Action {
537 public:
538  static Action::Ptr create(unsigned int i, unsigned int level, const sf::Vector2i& pos,
539  const core::map::Item& orig);
540 
541  virtual ~RemoveItemAction() = default;
542  virtual bool apply(EditMap& map) override;
543  virtual bool undo(EditMap& map) override;
544  virtual const char* description() const override;
545 
546 private:
547  const unsigned int i;
548  const unsigned int level;
549  const sf::Vector2i position;
550  const core::map::Item orig;
551 
552  RemoveItemAction(unsigned int i, unsigned int level, const sf::Vector2i& pos,
553  const core::map::Item& orig);
554 };
555 
556 class EditMap::SetLightAction : public EditMap::Action {
557 public:
558  static Action::Ptr create(const sf::Vector2i& pos, unsigned int radius,
559  const core::map::Light& orig);
560 
561  virtual ~SetLightAction() = default;
562  virtual bool apply(EditMap& map) override;
563  virtual bool undo(EditMap& map) override;
564  virtual const char* description() const override;
565 
566 private:
567  const core::map::Light value;
568  const core::map::Light orig;
569  bool spawned;
570 
571  SetLightAction(const sf::Vector2i& pos, unsigned int radius, const core::map::Light& orig);
572 };
573 
574 class EditMap::RemoveLightAction : public EditMap::Action {
575 public:
576  static Action::Ptr create(const core::map::Light& orig);
577 
578  virtual ~RemoveLightAction() = default;
579  virtual bool apply(EditMap& map) override;
580  virtual bool undo(EditMap& map) override;
581  virtual const char* description() const override;
582 
583 private:
584  const core::map::Light orig;
585 
586  RemoveLightAction(const core::map::Light& orig);
587 };
588 
589 class EditMap::AddCatchRegionAction : public EditMap::Action {
590 public:
591  static Action::Ptr create();
592 
593  virtual ~AddCatchRegionAction() = default;
594  virtual bool apply(EditMap& map) override;
595  virtual bool undo(EditMap& map) override;
596  virtual const char* description() const override;
597 
598 private:
599  AddCatchRegionAction() = default;
600 };
601 
602 class EditMap::EditCatchRegionAction : public EditMap::Action {
603 public:
604  static Action::Ptr create(std::uint8_t index, const core::map::CatchRegion& value,
605  const core::map::CatchRegion& orig);
606 
607  virtual ~EditCatchRegionAction() = default;
608  virtual bool apply(EditMap& map) override;
609  virtual bool undo(EditMap& map) override;
610  virtual const char* description() const override;
611 
612 private:
613  const std::uint8_t index;
614  const core::map::CatchRegion value;
615  const core::map::CatchRegion orig;
616 
617  EditCatchRegionAction(std::uint8_t index, const core::map::CatchRegion& value,
618  const core::map::CatchRegion& orig);
619 };
620 
621 class EditMap::RemoveCatchRegionAction : public EditMap::Action {
622 public:
623  static Action::Ptr create(std::uint8_t index, const core::map::CatchRegion& orig);
624 
625  virtual ~RemoveCatchRegionAction() = default;
626  virtual bool apply(EditMap& map) override;
627  virtual bool undo(EditMap& map) override;
628  virtual const char* description() const override;
629 
630 private:
631  const std::uint8_t index;
632  const core::map::CatchRegion orig;
633  std::vector<std::pair<unsigned int, sf::Vector2i>> cleared;
634 
635  RemoveCatchRegionAction(std::uint8_t index, const core::map::CatchRegion& orig);
636 };
637 
638 class EditMap::SetAmbientLightAction : public EditMap::Action {
639 public:
640  static Action::Ptr create(bool sunlight, std::uint8_t upper, std::uint8_t lower,
642 
643  virtual ~SetAmbientLightAction() = default;
644  virtual bool apply(EditMap& map) override;
645  virtual bool undo(EditMap& map) override;
646  virtual const char* description() const override;
647 
648 private:
649  const bool sunlight;
650  const bool origSunlight;
651  const std::uint8_t origLower;
652  const std::uint8_t lower;
653  const std::uint8_t origUpper;
654  const std::uint8_t upper;
655 
656  SetAmbientLightAction(bool sun, std::uint8_t upper, std::uint8_t lower,
658 };
659 
660 class EditMap::AddTownAction : public EditMap::Action {
661 public:
662  static Action::Ptr create();
663 
664  virtual ~AddTownAction() = default;
665  virtual bool apply(EditMap& map) override;
666  virtual bool undo(EditMap& map) override;
667  virtual const char* description() const override;
668 
669 private:
670  AddTownAction() = default;
671 };
672 
673 class EditMap::EditTownAction : public EditMap::Action {
674 public:
675  static Action::Ptr create(std::uint8_t i, const core::map::Town& orig,
676  const core::map::Town& town);
677 
678  virtual ~EditTownAction() = default;
679  virtual bool apply(EditMap& map) override;
680  virtual bool undo(EditMap& map) override;
681  virtual const char* description() const override;
682 
683 private:
684  const std::uint8_t i;
685  const core::map::Town orig;
686  const core::map::Town val;
687 
688  EditTownAction(std::uint8_t i, const core::map::Town& orig, const core::map::Town& town);
689 };
690 
691 class EditMap::RemoveTownAction : public EditMap::Action {
692 public:
693  static Action::Ptr create(std::uint8_t i, const core::map::Town& orig);
694 
695  virtual ~RemoveTownAction() = default;
696  virtual bool apply(EditMap& map) override;
697  virtual bool undo(EditMap& map) override;
698  virtual const char* description() const override;
699 
700 private:
701  const std::uint8_t i;
702  const core::map::Town orig;
703  std::vector<sf::Vector2i> tiles;
704 
705  RemoveTownAction(std::uint8_t i, const core::map::Town& orig);
706 };
707 
708 class EditMap::SetTownTileAction : public EditMap::Action {
709 public:
710  static Action::Ptr create(const sf::Vector2i& pos, std::uint8_t id, std::uint8_t orig);
711 
712  virtual ~SetTownTileAction() = default;
713  virtual bool apply(EditMap& map) override;
714  virtual bool undo(EditMap& map) override;
715  virtual const char* description() const override;
716 
717 private:
718  const sf::Vector2i pos;
719  const std::uint8_t id;
720  const std::uint8_t orig;
721 
722  SetTownTileAction(const sf::Vector2i& pos, std::uint8_t id, std::uint8_t orig);
723 };
724 
725 class EditMap::SetTownTileAreaAction : public EditMap::Action {
726 public:
727  static Action::Ptr create(const sf::IntRect& area, std::uint8_t id, EditMap& map);
728 
729  virtual ~SetTownTileAreaAction() = default;
730  virtual bool apply(EditMap& map) override;
731  virtual bool undo(EditMap& map) override;
732  virtual const char* description() const override;
733 
734 private:
735  const sf::IntRect area;
736  const std::uint8_t id;
737  const bl::ctr::Vector2D<std::uint8_t> orig;
738 
739  SetTownTileAreaAction(const sf::IntRect& area, std::uint8_t id,
740  bl::ctr::Vector2D<std::uint8_t>&& orig);
741 };
742 
743 class EditMap::FillTownTileAction : public EditMap::Action {
744 public:
745  static Action::Ptr create(const sf::Vector2i& pos, std::uint8_t id, EditMap& map);
746 
747  virtual ~FillTownTileAction() = default;
748  virtual bool apply(EditMap& map) override;
749  virtual bool undo(EditMap& map) override;
750  virtual const char* description() const override;
751 
752 private:
753  const std::vector<std::pair<sf::Vector2i, std::uint8_t>> set;
754  const std::uint8_t id;
755 
756  FillTownTileAction(std::uint8_t id, std::vector<std::pair<sf::Vector2i, std::uint8_t>>&& set);
757 };
758 
759 class EditMap::SetLevelTileAction : public EditMap::Action {
760 public:
761  static Action::Ptr create(const sf::Vector2i& pos, core::map::LevelTransition lt,
763 
764  virtual ~SetLevelTileAction() = default;
765  virtual bool apply(EditMap& map) override;
766  virtual bool undo(EditMap& map) override;
767  virtual const char* description() const override;
768 
769 private:
770  const sf::Vector2i pos;
772  const core::map::LevelTransition orig;
773 
774  SetLevelTileAction(const sf::Vector2i& pos, core::map::LevelTransition lt,
776 };
777 
778 class EditMap::SetLevelTileAreaAction : public EditMap::Action {
779 public:
780  static Action::Ptr create(const sf::IntRect& area, core::map::LevelTransition id, EditMap& map);
781 
782  virtual ~SetLevelTileAreaAction() = default;
783  virtual bool apply(EditMap& map) override;
784  virtual bool undo(EditMap& map) override;
785  virtual const char* description() const override;
786 
787 private:
788  const sf::IntRect area;
790  const bl::ctr::Vector2D<core::map::LevelTransition> orig;
791 
792  SetLevelTileAreaAction(const sf::IntRect& area, core::map::LevelTransition lt,
793  bl::ctr::Vector2D<core::map::LevelTransition>&& orig);
794 };
795 
796 } // namespace component
797 } // namespace editor
798 
799 #endif
Id
Represents an item in its simplist form.
Definition: Id.hpp:24
Collision
The different types of collisions in maps.
Definition: Collision.hpp:16
LevelTransition
Represents a level transition in a map. Level transitions are applied when an entity moves either ont...
All classes and functionality used for implementing the game editor.
Definition: Tile.hpp:11
Represents a class of catchable peoplemon.
Definition: CatchRegion.hpp:18
Represents a character to be spawned into a map on load.
Represents an event in a Map. A script that is run on a trigger within a given region.
Definition: Event.hpp:19
Basic struct representing a pickup-able item in Map.
Definition: Item.hpp:16
Generic map layer class. Can be used for any type of layer.
Definition: Layer.hpp:21
Represents a renderable light in a Map.
Definition: Light.hpp:16
System for handling lighting in Maps. Manages all the lights and performs rendering....
LightingSystem lighting
Definition: Map.hpp:309
Basic struct representing a spawn in a Map.
Definition: Spawn.hpp:19
Data representation of a tile in a Map TileLayer.
Definition: Tile.hpp:30
std::uint16_t IdType
Definition: Tile.hpp:33
Represents a town, route, or region within a map. Maps may have many towns. Individual tiles are asso...
Definition: Town.hpp:22
Type
The type of weather.
Definition: Weather.hpp:38
Wrapper over the core::Map class that is directly usable in a bl::gui::GUI.
Definition: EditMap.hpp:28
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:179
virtual const char * description() const override
Definition: MapActions.cpp:193
static EditMap::Action::Ptr create(unsigned int level, unsigned int layer, const sf::Vector2i &pos, bool isAnim, core::map::Tile::IdType value, const EditMap &map)
Definition: MapActions.cpp:134
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:165
virtual const char * description() const override
Definition: MapActions.cpp:278
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:252
static EditMap::Action::Ptr create(unsigned int level, unsigned int layer, const sf::IntRect &area, bool isAnim, core::map::Tile::IdType value, const EditMap &map)
Definition: MapActions.cpp:195
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:262
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:339
static Action::Ptr create(unsigned int level, unsigned int layer, const sf::Vector2i &pos, core::map::Tile::IdType id, bool isAnim, EditMap &map)
Definition: MapActions.cpp:280
virtual const char * description() const override
Definition: MapActions.cpp:347
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:331
static EditMap::Action::Ptr create(unsigned int level, const sf::Vector2i &pos, core::map::Collision value, const EditMap &map)
Definition: MapActions.cpp:349
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:365
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:371
virtual const char * description() const override
Definition: MapActions.cpp:377
static Action::Ptr create(unsigned int level, const sf::Vector2i &pos, core::map::Collision col, EditMap &map)
Definition: MapActions.cpp:423
virtual const char * description() const override
Definition: MapActions.cpp:485
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:469
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:477
virtual const char * description() const override
Definition: MapActions.cpp:421
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:411
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:401
static EditMap::Action::Ptr create(unsigned int level, const sf::IntRect &area, core::map::Collision value, const EditMap &map)
Definition: MapActions.cpp:379
static EditMap::Action::Ptr create(unsigned int level, const sf::Vector2i &pos, std::uint8_t value, const EditMap &map)
Definition: MapActions.cpp:487
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:506
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:500
virtual const char * description() const override
Definition: MapActions.cpp:512
virtual const char * description() const override
Definition: MapActions.cpp:555
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:545
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:535
static EditMap::Action::Ptr create(unsigned int level, const sf::IntRect &area, std::uint8_t value, const EditMap &map)
Definition: MapActions.cpp:514
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:608
virtual const char * description() const override
Definition: MapActions.cpp:616
static Action::Ptr create(unsigned int level, const sf::Vector2i &pos, std::uint8_t id, EditMap &map)
Definition: MapActions.cpp:557
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:600
virtual const char * description() const override
Definition: MapActions.cpp:637
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:627
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:632
static EditMap::Action::Ptr create(const std::string &playlist, const EditMap &editMap)
Definition: MapActions.cpp:618
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:652
virtual const char * description() const override
Definition: MapActions.cpp:657
static EditMap::Action::Ptr create(const std::string &name, const EditMap &editMap)
Definition: MapActions.cpp:639
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:647
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:675
static EditMap::Action::Ptr create(core::map::Weather::Type type, const EditMap &map)
Definition: MapActions.cpp:659
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:669
virtual const char * description() const override
Definition: MapActions.cpp:681
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:719
static EditMap::Action::Ptr create(unsigned int level, Location location)
Definition: MapActions.cpp:683
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:691
virtual const char * description() const override
Definition: MapActions.cpp:746
virtual const char * description() const override
Definition: MapActions.cpp:812
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:791
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:771
static EditMap::Action::Ptr create(unsigned int level, unsigned int layer, const EditMap &map)
Definition: MapActions.cpp:748
virtual const char * description() const override
Definition: MapActions.cpp:860
static EditMap::Action::Ptr create(unsigned int level, unsigned int layer, bool up)
Definition: MapActions.cpp:814
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:836
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:824
static EditMap::Action::Ptr create(unsigned int level, bool up)
Definition: MapActions.cpp:862
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:886
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:870
virtual const char * description() const override
Definition: MapActions.cpp:902
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:917
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:906
virtual const char * description() const override
Definition: MapActions.cpp:927
static EditMap::Action::Ptr create()
Definition: MapActions.cpp:904
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:939
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:945
static EditMap::Action::Ptr create(bool load, const std::string &s, const std::string &p)
Definition: MapActions.cpp:929
virtual const char * description() const override
Definition: MapActions.cpp:951
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:970
virtual const char * description() const override
Definition: MapActions.cpp:976
static Action::Ptr create(const core::map::Event &e, unsigned int i)
Definition: MapActions.cpp:956
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:964
virtual bool apply(EditMap &map) override
Definition: MapActions.cpp:989
static Action::Ptr create(const core::map::Event &orig, const core::map::Event &val, unsigned int i)
Definition: MapActions.cpp:978
virtual const char * description() const override
Definition: MapActions.cpp:999
virtual bool undo(EditMap &map) override
Definition: MapActions.cpp:994
virtual bool apply(EditMap &map) override
static Action::Ptr create(const core::map::Event &e, unsigned int i)
virtual const char * description() const override
virtual bool undo(EditMap &map) override
static Action::Ptr create(unsigned int lvl, const sf::Vector2i &pos, unsigned int id, bl::tmap::Direction dir)
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool apply(EditMap &map) override
static Action::Ptr create(unsigned int id)
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
virtual const char * description() const override
static Action::Ptr create(unsigned int id, const core::map::Spawn &spawn)
virtual bool apply(EditMap &map) override
virtual bool undo(EditMap &map) override
static Action::Ptr create(const core::map::CharacterSpawn &s, unsigned int i)
virtual bool apply(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
static Action::Ptr create(unsigned int i, const core::map::CharacterSpawn &orig, const core::map::CharacterSpawn &s)
virtual bool apply(EditMap &map) override
virtual const char * description() const override
static Action::Ptr create(const core::map::CharacterSpawn &orig, unsigned int i)
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool apply(EditMap &map) override
virtual const char * description() const override
static Action::Ptr create(unsigned int i, unsigned int level, const sf::Vector2i &pos, core::item::Id item, bool visible, const core::map::Item &orig, bool add)
virtual bool apply(EditMap &map) override
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
static Action::Ptr create(unsigned int i, unsigned int level, const sf::Vector2i &pos, const core::map::Item &orig)
virtual bool apply(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
static Action::Ptr create(const sf::Vector2i &pos, unsigned int radius, const core::map::Light &orig)
virtual const char * description() const override
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
static Action::Ptr create(const core::map::Light &orig)
virtual const char * description() const override
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool apply(EditMap &map) override
static Action::Ptr create(std::uint8_t index, const core::map::CatchRegion &value, const core::map::CatchRegion &orig)
virtual bool apply(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
static Action::Ptr create(std::uint8_t index, const core::map::CatchRegion &orig)
virtual bool apply(EditMap &map) override
virtual const char * description() const override
static Action::Ptr create(bool sunlight, std::uint8_t upper, std::uint8_t lower, const core::map::LightingSystem &lighting)
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
static Action::Ptr create(std::uint8_t i, const core::map::Town &orig, const core::map::Town &town)
virtual bool apply(EditMap &map) override
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
static Action::Ptr create(std::uint8_t i, const core::map::Town &orig)
virtual bool apply(EditMap &map) override
virtual const char * description() const override
virtual const char * description() const override
virtual bool apply(EditMap &map) override
static Action::Ptr create(const sf::Vector2i &pos, std::uint8_t id, std::uint8_t orig)
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
static Action::Ptr create(const sf::IntRect &area, std::uint8_t id, EditMap &map)
virtual bool undo(EditMap &map) override
virtual const char * description() const override
virtual bool apply(EditMap &map) override
static Action::Ptr create(const sf::Vector2i &pos, std::uint8_t id, EditMap &map)
static Action::Ptr create(const sf::Vector2i &pos, core::map::LevelTransition lt, core::map::LevelTransition orig)
virtual const char * description() const override
virtual bool apply(EditMap &map) override
virtual bool undo(EditMap &map) override
virtual bool apply(EditMap &map) override
virtual const char * description() const override
static Action::Ptr create(const sf::IntRect &area, core::map::LevelTransition id, EditMap &map)
virtual bool undo(EditMap &map) override