Agora ele olha pra frente deitado
[Projeto-PCG.git] / enemymanager.cpp
blobac22a56e382c0a58ef93ea128c73f7cd8e165a1f
1 #include "enemymanager.h"
2 #include "enemy.h"
3 #include "game.h"
5 static int regenemy (lua_State *L) {
6 lua_settable(L, LUA_REGISTRYINDEX);
9 EnemyManager::EnemyManager(Game* g) {
10 game = g;
11 lstate = NULL;
14 void EnemyManager::loadEnemies() {
15 std::set<Enemy*>::iterator it;
16 for (it = enemies.begin();it != enemies.end(); it++) {
17 (*it)->die();
19 enemies.clear();
20 if (lstate != NULL)
21 lua_close(lstate);
22 lstate = newState();
23 registerFunction(lstate,"regenemy",regenemy);
24 doLuaFile(lstate,"enemymanager.lua");
25 doLuaFile(lstate,"enemies.lua");
28 void EnemyManager::desenha() {
29 std::set<Enemy*>::iterator it;
30 for (it = enemies.begin();it != enemies.end(); it++) {
31 (*it)->desenha();
35 void EnemyManager::move() {
36 std::set<Enemy*>::iterator it;
37 for (it = enemies.begin();it != enemies.end(); it++) {
38 (*it)->move();
42 void EnemyManager::animate() {
43 std::set<Enemy*>::iterator it;
44 for (it = enemies.begin();it != enemies.end(); it++) {
45 (*it)->animate();
49 void EnemyManager::think() {
50 std::set<Enemy*>::iterator it;
51 for (it = enemies.begin();it != enemies.end(); it++) {
52 (*it)->think();
56 void EnemyManager::remove(Enemy* enemy) {
57 enemies.erase(enemies.find(enemy));
60 Enemy* EnemyManager::createEnemy(std::string name) {
61 lua_pushstring(lstate,name.c_str());
62 lua_gettable(lstate, LUA_REGISTRYINDEX);
63 if (lua_pcall(lstate,0,2,0) != 0) /* do the call */
64 printf("error: %s", lua_tostring(lstate, -1));
65 std::string weaponname = lua_tostring(lstate, 1);
66 lua_pop(lstate,2);
67 Enemy* ret = new Enemy(game);
68 enemies.insert(ret);
69 game->gravityManager->subscribe(ret);
70 game->collisionManager->subscribe(ret);
71 ret->equip(game->weaponManager->getWeapon(weaponname));
72 return ret;