added run loop for simulation

This commit is contained in:
Lendemor 2016-05-18 00:34:13 +02:00
parent 9fa3e924a4
commit 438f019e28
6 changed files with 40 additions and 12 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -13,6 +13,8 @@ private:
public:
Dude();
Dude(Coord,Info);
char* getMemory();
Info* getInfo();
};
#endif // DUDE_H

View File

@ -1,5 +1,7 @@
#include "simulation.h"
#include "map.h"
Simulation::Simulation(Map *_map,std::vector<BehaviorFunction> _behaviors):
p_map(_map)
{
@ -7,18 +9,17 @@ Simulation::Simulation(Map *_map,std::vector<BehaviorFunction> _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();
}
}

View File

@ -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());
}
}

View File

@ -15,15 +15,16 @@
class Team
{
glm::vec3 m_color;
Coord m_spawn;
int m_spawnCooldown;
int m_foodQuantity;
std::vector<Dude> 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