[Fix] Supposedly fixed spawning on top of NPCs.

This commit is contained in:
Tamir Atias 2012-02-05 00:30:42 +02:00
parent 90e3ff7a22
commit cc258c35e0
6 changed files with 39 additions and 32 deletions

View File

@ -824,8 +824,8 @@
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>cabin</entityTexture>
<solidEntity>true</solidEntity>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
<zLevel>100</zLevel>
@ -2052,8 +2052,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2066,8 +2066,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2080,8 +2080,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2094,8 +2094,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2108,8 +2108,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2122,8 +2122,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2136,8 +2136,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2150,8 +2150,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2164,8 +2164,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>
@ -2178,8 +2178,8 @@
</tile>
<tile>
<tileTexture>MessyBrickWall</tileTexture>
<solidTile>true</solidTile>
<tileTexture>grass</tileTexture>
<solidTile>false</solidTile>
<entityTexture>null</entityTexture>
<solidEntity>false</solidEntity>

View File

@ -29,7 +29,6 @@ void Game::Load(const string& savegameIDArg) {
}
gameNavVal_t Game::Run(void) {
_player->SetXY(400, 400);
_player->LoadSprites("../Data/Media/Images/Characters/Player.png", 40, 45);
int fps = 0;

View File

@ -57,15 +57,15 @@ NPC* WorldManager::GetNPC(int index) {
return NULL;
}
bool WorldManager::HasNPCIn(int xArg, int yArg) {
NPC* WorldManager::GetNPCAt(int xArg, int yArg) {
for(std::list<NPC*>::iterator i = _npcs.begin(); i != _npcs.end(); ++i) {
NPC* npc = (*i);
if(xArg >= npc->GetX() && xArg <= (npc->GetX() + npc->GetWidth()) &&
yArg >= npc->GetY() && yArg <= (npc->GetY() + npc->GetHeight())) {
return true;
return npc;
}
}
return false;
return NULL;
}
void WorldManager::CreateNPC(int x, int y) {

View File

@ -16,9 +16,9 @@ public:
void AddNPC(NPC* npc);
void RemoveNPC(int index);
NPC* GetNPC(int index);
NPC* GetNPCAt(int xArg, int yArg);
void CreateNPC(int x, int y);
bool HasNPCIn(int xArg, int yArg);
int GetNPCCount() { return _npcs.size(); }

View File

@ -241,16 +241,24 @@ void LevelGen::FindSpawnPoint(int& xArg, int& yArg, int objWidth, int objHeight)
xArg = rand() % (BOUNDARIES_X * TILE_WIDTH);
yArg = rand() % (BOUNDARIES_Y * TILE_HEIGHT);
if(_world.HasNPCIn(xArg, yArg)) {
goto findNext;
}
SDL_Rect objRect;
objRect.x = xArg;
objRect.y = yArg;
objRect.w = objWidth;
objRect.h = objHeight;
NPC* npc = _world.GetNPCAt(xArg, yArg);
if(npc) {
SDL_Rect npcRect;
npcRect.x = npc->GetX();
npcRect.y = npc->GetY();
npcRect.w = npc->GetWidth();
npcRect.h = npc->GetHeight();
if(CheckCollisionRect(npcRect, objRect))
goto findNext;
}
for(int x = 0; x < BOUNDARIES_X; x++) {
for(int y = 0; y < BOUNDARIES_Y; y++) {
if(_tile[x][y].GetTileSolidity()) {

View File

@ -62,7 +62,7 @@ private:
MapTile _tile[TILE_ARRAY_SIZE][TILE_ARRAY_SIZE];
static const int BOUNDARIES_X = (SCREEN_WIDTH / TILE_WIDTH) - 2;
static const int BOUNDARIES_Y = (SCREEN_HEIGHT / TILE_HEIGHT) - 2;
static const int BOUNDARIES_Y = (SCREEN_HEIGHT / TILE_HEIGHT) - 1;
TextureManager _tileTextures;
TextureManager _entityTextures;