R-TYPE
Pattern.hpp
Go to the documentation of this file.
1 #ifndef _PATTERN
2 #define _PATTERN
3 
4 #include "IComp.hpp"
5 #include "Acceleration.hpp"
6 #include "Position.hpp"
7 #include "Speed.hpp"
8 #include <memory>
9 #include <deque>
10 
11 namespace ECS {
13  STRAIGHT, // MOVING IN A STRAIGHT LINE (default pattern)
14  ZIGZAG, // MOVING UP AND DOWN AS WELL AS MOVING FORWARD
15  MOVINGDIAMOND, // MOVING IN A DIAMOND SHAPE (Move more in -x than x to keep moving toward players)
16  UPANDDOWN /* MOVING STRAIGHT TO THE TOP, THEN MOVING FORWARD FOR A BIT, STOP, MOVING STRAIGHT TO THE BOOTOM,
17  THEN MOVING FORWARD FOR A BIT AND KEEP GOING LIKE THAT */
18 };
19 
20 class Pattern : public IComp {
21 public:
22  explicit Pattern(int sizeMapX, int sizeMapY, int sizeEntityX, int sizeEntityY, PatternType type = STRAIGHT) noexcept;
23  Pattern(const Pattern& pattern) noexcept = default;
24  explicit Pattern(Pattern&&) noexcept = delete;
25  ~Pattern() noexcept override = default;
26 
27  void changePatternType(PatternType pattern) noexcept;
28  std::pair<int, int> getFirstPosition() noexcept;
29  void getNextPosition(std::shared_ptr<ECS::Acceleration> acc, std::shared_ptr<ECS::Speed> speed, std::shared_ptr<ECS::Position> pos) noexcept;
30 
31  Pattern& operator=(const Pattern&) const noexcept = delete;
32  Pattern& operator=(Pattern&&) const noexcept = delete;
33 
34 private:
35  std::pair<int, int> _sizeMap;
36  std::pair<int, int> _sizeEntity;
37  std::deque<std::pair<float, float>> _pattern;
38  std::deque<std::pair<int, int>> _limit;
39  std::pair<int, int> _keepPosition;
40  PatternType _type;
41  int _moving;
42 };
43 
44 };
45 
46 #endif
Definition: Acceleration.hpp:8
Definition: IComp.hpp:7
Definition: Pattern.hpp:20
void getNextPosition(std::shared_ptr< ECS::Acceleration > acc, std::shared_ptr< ECS::Speed > speed, std::shared_ptr< ECS::Position > pos) noexcept
Definition: Pattern.cpp:111
void changePatternType(PatternType pattern) noexcept
Definition: Pattern.cpp:54
Pattern(const Pattern &pattern) noexcept=default
std::pair< int, int > getFirstPosition() noexcept
Definition: Pattern.cpp:93
Pattern(int sizeMapX, int sizeMapY, int sizeEntityX, int sizeEntityY, PatternType type=STRAIGHT) noexcept
Definition: Pattern.cpp:15
Pattern(Pattern &&) noexcept=delete
Definition: Position.hpp:8
Definition: Speed.hpp:8
Definition: ComponentManager.hpp:14
PatternType
Definition: Pattern.hpp:12
@ ZIGZAG
Definition: Pattern.hpp:14
@ UPANDDOWN
Definition: Pattern.hpp:16
@ STRAIGHT
Definition: Pattern.hpp:13
@ MOVINGDIAMOND
Definition: Pattern.hpp:15