]> git.localhorst.tv Git - blank.git/blobdiff - src/ai/Spawner.hpp
random stuff
[blank.git] / src / ai / Spawner.hpp
index c55d73c0f7f90b835b5791f69e8c9096e17cc81d..e460bbc2dfccf5d7c3499327e71f5956ed54c31d 100644 (file)
@@ -2,7 +2,6 @@
 #define BLANK_AI_SPAWNER_HPP_
 
 #include "../app/IntervalTimer.hpp"
-#include "../model/EntityModel.hpp"
 
 #include <vector>
 #include <glm/glm.hpp>
 
 namespace blank {
 
+class CompositeModel;
 class Controller;
+class Entity;
+class GaloisLFSR;
+class Skeletons;
 class World;
 
 class Spawner {
 
 public:
-       explicit Spawner(World &);
+       Spawner(World &, Skeletons &, GaloisLFSR &);
        ~Spawner();
 
+       void LimitSkeletons(std::size_t begin, std::size_t end);
+
        void Update(int dt);
 
 private:
        void CheckDespawn() noexcept;
        void TrySpawn();
-       void Spawn(const glm::ivec3 &, const glm::vec3 &);
+       void Spawn(Entity &reference, const glm::ivec3 &, const glm::vec3 &);
+
+       CompositeModel &RandomSkeleton() noexcept;
 
 private:
        World &world;
+       Skeletons &skeletons;
        std::vector<Controller *> controllers;
 
-       EntityModel models[3];
+       GaloisLFSR &random;
 
        IntervalTimer timer;
        float despawn_range;
@@ -38,6 +46,9 @@ private:
        unsigned int max_entities;
        int chunk_range;
 
+       std::size_t skeletons_offset;
+       std::size_t skeletons_length;
+
 };
 
 }