TileMaps now render each row correctly
This commit is contained in:
@ -41,11 +41,25 @@ public:
|
||||
{
|
||||
switch (Game::event.key.keysym.sym)
|
||||
{
|
||||
case SDLK_UP:
|
||||
case SDLK_UP:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.y = -1;
|
||||
// if(Game::playerIsGrounded){
|
||||
sprite->Play("Walk");
|
||||
// }
|
||||
sprite->spriteFlip = SDL_FLIP_NONE;
|
||||
}
|
||||
break;
|
||||
case SDLK_DOWN:
|
||||
case SDLK_DOWN:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.y = 1;
|
||||
// if(Game::playerIsGrounded){
|
||||
sprite->Play("Walk");
|
||||
// }
|
||||
sprite->spriteFlip = SDL_FLIP_NONE;
|
||||
}
|
||||
break;
|
||||
case SDLK_LEFT:
|
||||
case SDLK_LEFT:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
// if (playerCtrl == NULL){
|
||||
// printf("No player controller found\n");
|
||||
@ -56,13 +70,13 @@ public:
|
||||
// transform->lastSafePos = Vector2D(transform->position.x,transform->position.y);
|
||||
// printf("lastSafePos .x: %g .y: %g \n",transform->lastSafePos.x,transform->lastSafePos.y);
|
||||
transform->velocity.x = -1;
|
||||
if(Game::playerIsGrounded){
|
||||
// if(Game::playerIsGrounded){
|
||||
sprite->Play("Walk");
|
||||
}
|
||||
// }
|
||||
sprite->spriteFlip = SDL_FLIP_NONE;
|
||||
}
|
||||
break;
|
||||
case SDLK_RIGHT:
|
||||
case SDLK_RIGHT:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
// &entity->getComponent<PlayerController>().setLastSafePos(Vector2D(transform->position.x,transform->position.y));
|
||||
// playerCtrl->lastSafePosition.x = transform->position.x;
|
||||
@ -72,30 +86,30 @@ public:
|
||||
// =========
|
||||
// int intersectionTileX = collider->center.x;
|
||||
transform->velocity.x = 1;
|
||||
if(Game::playerIsGrounded){
|
||||
// if(Game::playerIsGrounded){
|
||||
sprite->Play("Walk");
|
||||
}
|
||||
// }
|
||||
sprite->spriteFlip = SDL_FLIP_HORIZONTAL;
|
||||
}
|
||||
break;
|
||||
case SDLK_a:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.x = -1;
|
||||
if(Game::playerIsGrounded){
|
||||
sprite->Play("Walk");
|
||||
}
|
||||
sprite->spriteFlip = SDL_FLIP_NONE;
|
||||
}
|
||||
break;
|
||||
case SDLK_d:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.x = 1;
|
||||
if(Game::playerIsGrounded){
|
||||
sprite->Play("Walk");
|
||||
}
|
||||
sprite->spriteFlip = SDL_FLIP_HORIZONTAL;
|
||||
}
|
||||
break;
|
||||
// case SDLK_a:
|
||||
// if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
// transform->velocity.x = -1;
|
||||
// if(Game::playerIsGrounded){
|
||||
// sprite->Play("Walk");
|
||||
// }
|
||||
// sprite->spriteFlip = SDL_FLIP_NONE;
|
||||
// }
|
||||
// break;
|
||||
// case SDLK_d:
|
||||
// if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
// transform->velocity.x = 1;
|
||||
// if(Game::playerIsGrounded){
|
||||
// sprite->Play("Walk");
|
||||
// }
|
||||
// sprite->spriteFlip = SDL_FLIP_HORIZONTAL;
|
||||
// }
|
||||
// break;
|
||||
case SDLK_k:
|
||||
if (!Game::debugCollisionBoxes)
|
||||
{ Game::debugCollisionBoxes = true; }
|
||||
@ -137,44 +151,63 @@ public:
|
||||
{
|
||||
switch (Game::event.key.keysym.sym)
|
||||
{
|
||||
case SDLK_LEFT:
|
||||
case SDLK_LEFT:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.x = 0;
|
||||
sprite->Play("Idle");
|
||||
if (!Game::gravityOnPlayer){
|
||||
Game::gravityOnPlayer = true;
|
||||
// sprite->Play("Fall");
|
||||
}
|
||||
// if (!Game::gravityOnPlayer){
|
||||
// Game::gravityOnPlayer = true;
|
||||
// // sprite->Play("Fall");
|
||||
// }
|
||||
}
|
||||
break;
|
||||
case SDLK_RIGHT:
|
||||
case SDLK_RIGHT:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.x = 0;
|
||||
sprite->Play("Idle");
|
||||
if (!Game::gravityOnPlayer){
|
||||
Game::gravityOnPlayer = true;
|
||||
}
|
||||
// if (!Game::gravityOnPlayer){
|
||||
// Game::gravityOnPlayer = true;
|
||||
// }
|
||||
}
|
||||
break;
|
||||
case SDLK_a:
|
||||
case SDLK_UP:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.x = 0;
|
||||
transform->velocity.y = 0;
|
||||
sprite->Play("Idle");
|
||||
if (!Game::gravityOnPlayer){
|
||||
Game::gravityOnPlayer = true;
|
||||
// sprite->Play("Fall");
|
||||
}
|
||||
// if (!Game::gravityOnPlayer){
|
||||
// Game::gravityOnPlayer = true;
|
||||
// // sprite->Play("Fall");
|
||||
// }
|
||||
}
|
||||
break;
|
||||
case SDLK_d:
|
||||
case SDLK_DOWN:
|
||||
if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
transform->velocity.x = 0;
|
||||
transform->velocity.y = 0;
|
||||
sprite->Play("Idle");
|
||||
if (!Game::gravityOnPlayer){
|
||||
Game::gravityOnPlayer = true;
|
||||
}
|
||||
// if (!Game::gravityOnPlayer){
|
||||
// Game::gravityOnPlayer = true;
|
||||
// }
|
||||
}
|
||||
break;
|
||||
break;
|
||||
// case SDLK_a:
|
||||
// if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
// transform->velocity.x = 0;
|
||||
// sprite->Play("Idle");
|
||||
// if (!Game::gravityOnPlayer){
|
||||
// Game::gravityOnPlayer = true;
|
||||
// // sprite->Play("Fall");
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// case SDLK_d:
|
||||
// if(Game::gsm->currentState == GameStateManager::ST_COREGAME){
|
||||
// transform->velocity.x = 0;
|
||||
// sprite->Play("Idle");
|
||||
// if (!Game::gravityOnPlayer){
|
||||
// Game::gravityOnPlayer = true;
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
case SDLK_k:
|
||||
break;
|
||||
case SDLK_j:
|
||||
|
@ -23,11 +23,13 @@ public:
|
||||
// TransformComponent *transform;
|
||||
SDL_Texture* texture;
|
||||
SDL_Rect srcRect, destRect;
|
||||
Vector2D position;
|
||||
// Vector2D position;
|
||||
// std::tuple <SDL_Rect,SDL_Rect> tile;
|
||||
tmxparser::TmxMap map;
|
||||
int globalScale;
|
||||
std::vector<SDL_Rect> tileSet;
|
||||
std::vector<SDL_Rect> destRects;
|
||||
int totalTiles;
|
||||
|
||||
TileMapComponent() = default;
|
||||
|
||||
@ -40,10 +42,10 @@ public:
|
||||
{
|
||||
map = loadedMap;
|
||||
std::string texturePath = "assets/textures/tiles/" + loadedMap.tilesetCollection[0].name + ".png";
|
||||
Game::assets->AddTexture(loadedMap.tilesetCollection[0].name, texturePath.c_str());
|
||||
Game::assets->AddTexture(map.tilesetCollection[0].name, texturePath.c_str());
|
||||
setTex(map.tilesetCollection[0].name);
|
||||
globalScale = gScale;
|
||||
int totalTiles = map.tilesetCollection[0].colCount*map.tilesetCollection[0].rowCount;
|
||||
totalTiles = map.tilesetCollection[0].colCount*map.tilesetCollection[0].rowCount;
|
||||
// std::cout << "Number of Tiles: " << totalTiles << std::endl;
|
||||
tileSet.resize(totalTiles);
|
||||
for (int r=0;r<map.tilesetCollection[0].rowCount;r++){
|
||||
@ -57,25 +59,37 @@ public:
|
||||
tileSet[element] = srcRect;
|
||||
}
|
||||
}
|
||||
destRects.resize(totalTiles);
|
||||
for (int i=0;i<totalTiles-1;i++){
|
||||
SDL_Rect myRect = SDL_Rect();
|
||||
myRect.w = myRect.h = map.tileWidth * gScale;
|
||||
myRect.x = myRect.y = 0;
|
||||
destRects[i] = myRect;
|
||||
}
|
||||
destRect.w = destRect.h = map.tileWidth * gScale;
|
||||
}
|
||||
|
||||
void update() override
|
||||
{
|
||||
destRect.x = position.x - Game::camera.x;
|
||||
destRect.y = position.y - Game::camera.y;
|
||||
// for (int i=0;i<totalTiles-1;i++){
|
||||
// destRects[i].x = destRects[i].x - Game::camera.x;
|
||||
// destRects[i].y = destRects[i].y - Game::camera.y;
|
||||
// }
|
||||
}
|
||||
|
||||
void draw() override
|
||||
{
|
||||
//iterate through rows and columns of the map to draw the tiles
|
||||
// First cycle through rows
|
||||
for (int r = 0;r<map.height;r++){
|
||||
for (int r = 0;r<map.height-1;r++){
|
||||
// Next cycle through each column or tile in that row:
|
||||
for (int c = 0;c<map.width;c++){
|
||||
int tileToDraw = map.layerCollection[0].tiles[c].gid-1;
|
||||
for (int c = 0;c<map.width-1;c++){
|
||||
int i = r*map.width+c;
|
||||
int tileToDraw = map.layerCollection[0].tiles[i].gid-1;
|
||||
destRect.x = c*map.tilesetCollection[0].tileWidth*globalScale;
|
||||
destRect.y = r*map.tilesetCollection[0].tileWidth*globalScale;
|
||||
// destRects[i].x = 8;
|
||||
// destRects[i].y = 32;
|
||||
TextureManager::Draw(texture, tileSet[tileToDraw], destRect, SDL_FLIP_NONE);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user