diff options
| author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-20 13:04:41 -0500 |
|---|---|---|
| committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2021-02-20 13:04:41 -0500 |
| commit | 996076cf151a27a7a8d278aa4d15b28cfb196c46 (patch) | |
| tree | 96a2fdcf3fd5a22394313d140cacc0257a821543 /src/behaviour_system.cpp | |
| parent | ee802c01d3008e6019bc55a02fcc2e6d68b288d1 (diff) | |
| download | tanetane-996076cf151a27a7a8d278aa4d15b28cfb196c46.tar.gz tanetane-996076cf151a27a7a8d278aa4d15b28cfb196c46.tar.bz2 tanetane-996076cf151a27a7a8d278aa4d15b28cfb196c46.zip | |
Added a randomly wandering Ionia to the map
Diffstat (limited to 'src/behaviour_system.cpp')
| -rw-r--r-- | src/behaviour_system.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
| diff --git a/src/behaviour_system.cpp b/src/behaviour_system.cpp new file mode 100644 index 0000000..8f17329 --- /dev/null +++ b/src/behaviour_system.cpp | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | #include "behaviour_system.h" | ||
| 2 | #include <random> | ||
| 3 | #include "game.h" | ||
| 4 | #include "character_system.h" | ||
| 5 | #include "direction.h" | ||
| 6 | |||
| 7 | void BehaviourSystem::tick(double dt) { | ||
| 8 | timer_.accumulate(dt); | ||
| 9 | while (timer_.step()) { | ||
| 10 | for (int spriteId : game_.getSprites()) { | ||
| 11 | Sprite& sprite = game_.getSprite(spriteId); | ||
| 12 | if (sprite.wander) { | ||
| 13 | // 75% chance of changing what's happening | ||
| 14 | if (std::bernoulli_distribution(0.75)(game_.getRng())) { | ||
| 15 | // 50% chance of choosing a direction or stopping | ||
| 16 | if (std::bernoulli_distribution(0.5)(game_.getRng())) { | ||
| 17 | Direction dir; | ||
| 18 | switch (std::uniform_int_distribution(0,3)(game_.getRng())) { | ||
| 19 | case 0: dir = Direction::left; break; | ||
| 20 | case 1: dir = Direction::up; break; | ||
| 21 | case 2: dir = Direction::right; break; | ||
| 22 | default: dir = Direction::down; break; | ||
| 23 | } | ||
| 24 | game_.getSystem<CharacterSystem>().moveInDirection(spriteId, dir); | ||
| 25 | } else { | ||
| 26 | game_.getSystem<CharacterSystem>().stopDirecting(spriteId); | ||
| 27 | } | ||
| 28 | } | ||
| 29 | } | ||
| 30 | } | ||
| 31 | } | ||
| 32 | } | ||
