From 438f019e282ab4f0bfd5ea06cf9c3bfd806dc219 Mon Sep 17 00:00:00 2001 From: Lendemor Date: Wed, 18 May 2016 00:34:13 +0200 Subject: [PATCH] added run loop for simulation --- shaders/world.vert.glsl | 2 +- src/dude.cpp | 10 ++++++++++ src/dude.h | 2 ++ src/simulation.cpp | 13 +++++++------ src/team.cpp | 20 +++++++++++++++++--- src/team.h | 5 +++-- 6 files changed, 40 insertions(+), 12 deletions(-) diff --git a/shaders/world.vert.glsl b/shaders/world.vert.glsl index 0a71e1b..d5e51c9 100644 --- a/shaders/world.vert.glsl +++ b/shaders/world.vert.glsl @@ -12,7 +12,7 @@ out vec3 normal; void main(void) { - texCoord = inTexCoord.xy; + texCoord = vec2(inTexCoord.x/2,inTexCoord.y); normal = inNormal.xyz; gl_Position = mvp * vec4(inPosition*camera.z, 1.0); } diff --git a/src/dude.cpp b/src/dude.cpp index 9438c92..1d6ac1d 100644 --- a/src/dude.cpp +++ b/src/dude.cpp @@ -10,3 +10,13 @@ Dude::Dude(Coord _pos, Info _info):m_pos(_pos),m_info(_info),m_dead(false) { memset(&m_memory,0,DUDE_MEMORY_SIZE*sizeof(char)); } + +char* Dude::getMemory() +{ + return m_memory; +} + +Info* Dude::getInfo() +{ + return &m_info; +} diff --git a/src/dude.h b/src/dude.h index 4dc2bd0..50109b3 100644 --- a/src/dude.h +++ b/src/dude.h @@ -13,6 +13,8 @@ private: public: Dude(); Dude(Coord,Info); + char* getMemory(); + Info* getInfo(); }; #endif // DUDE_H diff --git a/src/simulation.cpp b/src/simulation.cpp index 4d7eff9..b45bc7b 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -1,5 +1,7 @@ #include "simulation.h" +#include "map.h" + Simulation::Simulation(Map *_map,std::vector _behaviors): p_map(_map) { @@ -7,18 +9,17 @@ Simulation::Simulation(Map *_map,std::vector _behaviors): for(auto behavior : _behaviors){ glm::vec3 color; color[i%3]=i*50; - Coord spawn; - m_teams[i] = Team(color,spawn,behavior); + m_teams[i] = Team(color,behavior); i++; } } void Simulation::run() { - for(auto team : m_teams){ - // team.second.updateSpawn(); - - + for(auto t : m_teams){ + if (t.second.updateSpawn()) + t.second.spawn(p_map->team(t.first)); + t.second.updateDudes(); } } diff --git a/src/team.cpp b/src/team.cpp index eccda81..2788857 100644 --- a/src/team.cpp +++ b/src/team.cpp @@ -5,12 +5,26 @@ Team::Team() } -Team::Team(glm::vec3 _color,Coord _spawn,BehaviorFunction _behavior): - m_color(_color),m_spawn(_spawn),m_spawnCooldown(SPAWN_COOLDOWN), +Team::Team(glm::vec3 _color,BehaviorFunction _behavior): + m_color(_color),m_spawnCooldown(SPAWN_COOLDOWN), m_foodQuantity(NB_STARTING_FOOD), m_behavior(_behavior) { } -bool Team::updateSpawn(){ +bool Team::updateSpawn() +{ return !(--m_spawnCooldown); } + +void Team::spawn(Coord &d) +{ + m_dudes.push_back(Dude(d,Info())); +} + +void Team::updateDudes() +{ + for (auto dude : m_dudes){ + Action* action; + m_behavior(action,dude.getMemory(),dude.getInfo()); + } +} diff --git a/src/team.h b/src/team.h index 6a4dd44..2cca372 100644 --- a/src/team.h +++ b/src/team.h @@ -15,15 +15,16 @@ class Team { glm::vec3 m_color; - Coord m_spawn; int m_spawnCooldown; int m_foodQuantity; std::vector m_dudes; BehaviorFunction m_behavior; public: Team(); - Team(glm::vec3 _color,Coord _spawn,BehaviorFunction _behavior); + Team(glm::vec3 _color,BehaviorFunction _behavior); bool updateSpawn(); + void spawn(Coord &d); + void updateDudes(); }; #endif // TEAM_H