#include "level.h" #include "character.h" #include "enemy.h" #include Level::Level(DrawEngine *de, int w, int h){ drawArea = de; width = w; height = h; player = 0; //char ** //reserve memory for the level level = new char*[width]; for(int x = 0; x < width; x++) level[x] = new char[height]; //create the level createLevel(); drawArea->setMap(level); } Level::~Level(){ for(int x = 0; x < width; x++) delete [] level[x]; delete [] level; } void Level::createLevel(void){ for(int x = 0; x < width; x++){ for(int y = 0; y < height; y++){ int random = rand() % 100; if(y == 0 || y == height - 1 || x == 0 || x == width - 1) level[x][y] = TILE_WALL; else{ if(random < 90 || (x < 3 && y < 3)) level[x][y] = TILE_EMPTY; else level[x][y] = TILE_WALL; } } } } void Level::draw(){ // we need to draw the level drawArea->drawBackground(); } void Level::addPlayer(Character *p){ player = p; } bool Level::keyPress(char c){ if(player) if(player->keyPress(c)) return true; return false; } void Level::update(void){ //Here's where we update all the stuff for(Iter = npc.begin(); Iter != npc.end(); Iter++){ (*Iter)->idleUpdate(); if((*Iter)->isAlive() == false){ Sprite *temp = *Iter; Iter--; delete temp; npc.remove(temp); } } } void Level::addEnemies(int num){ int i = num; while(i > 0){ int xpos = float((rand() % 100) / 100) * (width - 2) + 1; int ypos = float((rand() % 100) / 100) * (height - 2) + 1; if(level[xpos][ypos] != TILE_WALL){ Enemy *temp = new Enemy(this, drawArea, SPRITE_ENEMY, (float)xpos, (float)ypos, 1); temp->addGoal(player); addNPC((Sprite *)temp); i--; } } } void Level::addNPC(Sprite *spr){ npc.push_back(spr); }