Skip to content

Commit

Permalink
Fixed health bug + game end bug
Browse files Browse the repository at this point in the history
  • Loading branch information
TanishTuteja committed Apr 16, 2022
1 parent 0ed5644 commit 0731a7b
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 27 deletions.
59 changes: 34 additions & 25 deletions Game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,13 @@ void LGame::update()
{
camera = {camera.x, camera.y, window.getWidth(), window.getHeight()};
// Move the dot
for( int i = 0 ; i < players.size() ; i ++ ){
players[i].move() ;
for (int i = 0; i < players.size(); i++)
{
players[i].move();
}
for( int i = 0 ; i < NPCs.size() ; i ++ ){
NPCs[i].move() ;
for (int i = 0; i < NPCs.size(); i++)
{
NPCs[i].move();
}
SDL_Rect playerBox = players[0].getBox();
// std::cout << "After move " << playerBox.y << std::endl;
Expand All @@ -79,12 +81,14 @@ void LGame::update()
int tileType = tiles[tileY * mTilesX + tileX].getType();
// std::cout << "Tiletype " << tileType << std::endl;
// stores the prompt text to be displayed
for( int i = 0 ; i < NPCs.size() ; i ++ ) {
SDL_Rect NPCbox = NPCs[i].getBox() ;
for (int i = 0; i < NPCs.size(); i++)
{
SDL_Rect NPCbox = NPCs[i].getBox();
int NPCtileX = (NPCbox.x + NPCbox.w / 2) / mTileWidth;
int NPCtileY = (NPCbox.y + NPCbox.h / 2) / mTileHeight ;
if( (( tileX >= NPCtileX -1) && (tileX <= NPCtileX + 1 )) || (( tileY >= NPCtileY -1) && (tileY <= NPCtileY + 1 ))){
std :: cout << "collision with " << NPCs[i].getName() << "\n" ;
int NPCtileY = (NPCbox.y + NPCbox.h / 2) / mTileHeight;
if (((tileX >= NPCtileX - 1) && (tileX <= NPCtileX + 1)) || ((tileY >= NPCtileY - 1) && (tileY <= NPCtileY + 1)))
{
std ::cout << "collision with " << NPCs[i].getName() << "\n";
}
}
entities[tileType].collided(players[0], displayText);
Expand All @@ -104,10 +108,7 @@ void LGame::update()
int secsPerHour = gameLenSecs / 24;
std::string mins = std::to_string((60 / secsPerHour) * (secs % secsPerHour));
std::string hours = std::to_string(secs / secsPerHour);
if (secs / secsPerHour >= 24)
{
gameEnd();
}

if (mins.size() <= 1)
mins = "0" + mins;
if (hours.size() <= 1)
Expand Down Expand Up @@ -136,6 +137,7 @@ void LGame::update()
gameUpdateMsg.money = players[0].getMoney();
gameUpdateMsg.points = players[0].getPoints();
gameUpdateMsg.health = players[0].getHealth();
std::cout << "Sending health " << gameUpdateMsg.health << std::endl;
int bytesUsed = serialize(&gameUpdateMsg, buf);

sendto(sockfd, buf, bytesUsed, 0, (const struct sockaddr *)&theirAddr,
Expand All @@ -159,6 +161,7 @@ void LGame::update()
players[1].setPoints(updateMsg->points);
players[1].setMoney(updateMsg->money);
players[1].setHealth(updateMsg->health);
std::cout << "Receiving health " << gameUpdateMsg.health << std::endl;
}
delete msg;
}
Expand All @@ -168,6 +171,10 @@ void LGame::update()
}
pointsTextOpp->setText("POINTS: " + std::to_string(players[1].getPoints()));
moneyTextOpp->setText("MONEY: " + std::to_string(players[1].getMoney()));
if (secs / secsPerHour >= 24)
{
gameEnd();
}
}

void LGame::gameEnd()
Expand Down Expand Up @@ -265,6 +272,7 @@ void LGame::render(SDL_Renderer *renderer)

offset += healthText->getWidth();
SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF);

fillRect = {offset, 2 * gyPadding + gyRenderOffset, (players[1].getHealth() * (gMaxPlayerHealth) / mMaxPlayerHealth), gyRenderOffset};
SDL_RenderFillRect(renderer, &fillRect);
outlineRect = {offset, 2 * gyPadding + gyRenderOffset, gMaxPlayerHealth, gyRenderOffset};
Expand Down Expand Up @@ -322,13 +330,14 @@ void LGame::render(SDL_Renderer *renderer)
void LGame::cleanUp()
{
window.restore();
for( int i = 0 ; i < players.size() ; i ++ )
for (int i = 0; i < players.size(); i++)
{
players[i].cleanUp() ;
players[i].cleanUp();
}
tiles[0].cleanUp();
for( int i = 0 ; i < NPCs.size() ; i ++ ){
NPCs[i].cleanUp() ;
for (int i = 0; i < NPCs.size(); i++)
{
NPCs[i].cleanUp();
}
delete timeText;
delete healthText;
Expand Down Expand Up @@ -414,10 +423,11 @@ bool LGame::initObjs()

Player ash(ashTexture, *this, 32, 32, 3, 1, 2, 0);
players.push_back(ash);
int numberOfNPCs = 5 ;
for( int i = 0 ; i < numberOfNPCs ; i ++ ){
NPC dog(dogTexture, "dog" + std::to_string(i+1), *this, 32, 32, 1, 3, 2, 0);
NPC prof(profTexture, "prof" + std::to_string(i+1), *this, 42, 32, 3, 2, 0, 1);
int numberOfNPCs = 5;
for (int i = 0; i < numberOfNPCs; i++)
{
NPC dog(dogTexture, "dog" + std::to_string(i + 1), *this, 32, 32, 1, 3, 2, 0);
NPC prof(profTexture, "prof" + std::to_string(i + 1), *this, 42, 32, 3, 2, 0, 1);
NPCs.push_back(dog);
NPCs.push_back(prof);
}
Expand Down Expand Up @@ -1040,12 +1050,11 @@ void LGame::replaceTask(int task)
taskTexts[index]->setText(t.second);
}

int LGame :: getTileType( int x , int y )
int LGame ::getTileType(int x, int y)
{
int tileX = x / mTileWidth;
int tileY = y / mTileHeight;
// std :: cout << x << " " << tileX << "\n" ;
// std :: cout << y << " " << tileY << "\n" ;
// std :: cout << x << " " << tileX << "\n" ;
// std :: cout << y << " " << tileY << "\n" ;
return tiles[tileY * mTilesX + tileX].getType();

}
4 changes: 2 additions & 2 deletions MessageStructs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ int serialize(Message *msg, char *data)
q++;
bytesUsed += 7 * sizeof(int);
float *p = (float *)q;
*q = msgGameUpdate->health;
q++;
*p = msgGameUpdate->health;
p++;
bytesUsed += sizeof(float);
char *r = (char *)q;
*r = '\0';
Expand Down

0 comments on commit 0731a7b

Please sign in to comment.