Implemented Player deaths
This commit is contained in:
parent
7dd1b1f66f
commit
b6c66c4955
@ -331,7 +331,15 @@ void Client::draw_player(refptr<Player> player)
|
|||||||
m_modelview.push();
|
m_modelview.push();
|
||||||
m_modelview.translate(player->x, player->y, 4);
|
m_modelview.translate(player->x, player->y, 4);
|
||||||
m_modelview.rotate(player->direction * 180.0 / M_PI, 0, 0, 1);
|
m_modelview.rotate(player->direction * 180.0 / M_PI, 0, 0, 1);
|
||||||
m_modelview.scale(2, 2, 2);
|
// If player is dead, make the model smaller
|
||||||
|
if(player->m_is_dead)
|
||||||
|
{
|
||||||
|
m_modelview.scale(1, 1, 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_modelview.scale(2, 2, 2);
|
||||||
|
}
|
||||||
m_tank_obj.bindBuffers();
|
m_tank_obj.bindBuffers();
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
glEnableVertexAttribArray(1);
|
glEnableVertexAttribArray(1);
|
||||||
|
@ -256,6 +256,14 @@ void Client::update(double elapsed_time)
|
|||||||
case PLAYER_DEATH:
|
case PLAYER_DEATH:
|
||||||
{
|
{
|
||||||
// This will set a death flag in the player struct.
|
// This will set a death flag in the player struct.
|
||||||
|
sf::Uint8 player_index;
|
||||||
|
// This completely removes the player from the game
|
||||||
|
// Deletes member from the player list
|
||||||
|
client_packet >> player_index;
|
||||||
|
if(m_players.end() != m_players.find(player_index))
|
||||||
|
{
|
||||||
|
m_players[player_index]->m_is_dead = true;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,5 +17,5 @@ Player::Player()
|
|||||||
m_client = NULL;
|
m_client = NULL;
|
||||||
m_shot = NULL;
|
m_shot = NULL;
|
||||||
m_shot_allowed = true;
|
m_shot_allowed = true;
|
||||||
|
m_is_dead = false;
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ class Player
|
|||||||
Client_t* m_client;
|
Client_t* m_client;
|
||||||
bool m_shot_allowed;
|
bool m_shot_allowed;
|
||||||
refptr<Shot> m_shot;
|
refptr<Shot> m_shot;
|
||||||
|
bool m_is_dead;
|
||||||
|
|
||||||
Player();
|
Player();
|
||||||
};
|
};
|
||||||
|
@ -207,10 +207,18 @@ void Server::update( double elapsed_time )
|
|||||||
m_players[pindex]->hover -= elapsed_time / 10;
|
m_players[pindex]->hover -= elapsed_time / 10;
|
||||||
if (m_players[pindex]->hover < 0)
|
if (m_players[pindex]->hover < 0)
|
||||||
{
|
{
|
||||||
m_players[pindex]->hover = 0;
|
sf::Uint8 ptype = PLAYER_DEATH;
|
||||||
|
m_players[pindex]->hover = 0;
|
||||||
|
// Player is now dead.
|
||||||
|
m_players[pindex]->m_is_dead = true;
|
||||||
|
server_packet.clear();
|
||||||
|
server_packet << ptype;
|
||||||
|
server_packet << pindex;
|
||||||
|
m_net_server->sendData(server_packet, true);
|
||||||
}
|
}
|
||||||
m_players[pindex]->updated = true;
|
m_players[pindex]->updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(m_players[pindex]->m_shot.isNull()))
|
if(!(m_players[pindex]->m_shot.isNull()))
|
||||||
{
|
{
|
||||||
// Calculate the distance the projectile travelled so far
|
// Calculate the distance the projectile travelled so far
|
||||||
@ -246,40 +254,44 @@ void Server::update( double elapsed_time )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KEY_PRESSED == m_players[pindex]->a_pressed)
|
// If player is not dead, allow them to move.
|
||||||
|
if(!m_players[pindex]->m_is_dead)
|
||||||
{
|
{
|
||||||
double direction = m_players[pindex]->direction + M_PI_2;
|
if (KEY_PRESSED == m_players[pindex]->a_pressed)
|
||||||
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
{
|
||||||
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
double direction = m_players[pindex]->direction + M_PI_2;
|
||||||
m_players[pindex]->updated = true;
|
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->updated = true;
|
||||||
|
}
|
||||||
|
if (KEY_PRESSED == m_players[pindex]->d_pressed)
|
||||||
|
{
|
||||||
|
double direction = m_players[pindex]->direction - M_PI_2;
|
||||||
|
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->updated = true;
|
||||||
|
}
|
||||||
|
if (KEY_PRESSED == m_players[pindex]->w_pressed)
|
||||||
|
{
|
||||||
|
double direction = m_players[pindex]->direction;
|
||||||
|
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->updated = true;
|
||||||
|
}
|
||||||
|
if (KEY_PRESSED == m_players[pindex]->s_pressed)
|
||||||
|
{
|
||||||
|
double direction = m_players[pindex]->direction + M_PI;
|
||||||
|
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
||||||
|
m_players[pindex]->updated = true;
|
||||||
|
}
|
||||||
|
if(0 != m_players[pindex]->rel_mouse_movement)
|
||||||
|
{
|
||||||
|
m_players[pindex]->direction -= M_PI * 0.5 * m_players[pindex]->rel_mouse_movement / 1000;
|
||||||
|
m_players[pindex]->updated = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (KEY_PRESSED == m_players[pindex]->d_pressed)
|
|
||||||
{
|
|
||||||
double direction = m_players[pindex]->direction - M_PI_2;
|
|
||||||
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
|
||||||
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
|
||||||
m_players[pindex]->updated = true;
|
|
||||||
}
|
|
||||||
if (KEY_PRESSED == m_players[pindex]->w_pressed)
|
|
||||||
{
|
|
||||||
double direction = m_players[pindex]->direction;
|
|
||||||
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
|
||||||
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
|
||||||
m_players[pindex]->updated = true;
|
|
||||||
}
|
|
||||||
if (KEY_PRESSED == m_players[pindex]->s_pressed)
|
|
||||||
{
|
|
||||||
double direction = m_players[pindex]->direction + M_PI;
|
|
||||||
m_players[pindex]->x += cos(direction) * move_speed * elapsed_time;
|
|
||||||
m_players[pindex]->y += sin(direction) * move_speed * elapsed_time;
|
|
||||||
m_players[pindex]->updated = true;
|
|
||||||
}
|
|
||||||
if(0 != m_players[pindex]->rel_mouse_movement)
|
|
||||||
{
|
|
||||||
m_players[pindex]->direction -= M_PI * 0.5 * m_players[pindex]->rel_mouse_movement / 1000;
|
|
||||||
m_players[pindex]->updated = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
server_packet.clear();
|
server_packet.clear();
|
||||||
|
|
||||||
// Send the player update if there were changes
|
// Send the player update if there were changes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user