diff --git a/src/client/Client-gl.cc b/src/client/Client-gl.cc index d6fab75..b9b1f71 100644 --- a/src/client/Client-gl.cc +++ b/src/client/Client-gl.cc @@ -8,8 +8,6 @@ #include "ccfs.h" #include "HexTile.h" -#include - using namespace std; #define LEN(arr) (sizeof(arr)/sizeof(arr[0])) @@ -344,8 +342,8 @@ void Client::draw_map() for (int x = 0; x < width; x++) { if ((m_map.tile_present(x, y)) && - (m_map.get_tile_at(x,y)->get_damage_state() == HexTile::UNDAMAGED)) - { + (m_map.get_tile(x,y)->get_damage_state() < HexTile::DESTROYED)) + { refptr tile = m_map.get_tile(x, y); float cx = tile->get_x(); float cy = tile->get_y(); @@ -414,7 +412,7 @@ void Client::draw_overlay() for (int x = 0; x < width; x++) { if ((m_map.tile_present(x, y)) && - (m_map.get_tile_at(x,y)->get_damage_state() == HexTile::UNDAMAGED)) + (m_map.get_tile(x,y)->get_damage_state() < HexTile::DESTROYED)) { refptr tile = m_map.get_tile(x, y); float cx = tile->get_x(); diff --git a/src/server/Server.cc b/src/server/Server.cc index 07faec7..0cb0ba7 100644 --- a/src/server/Server.cc +++ b/src/server/Server.cc @@ -186,7 +186,8 @@ void Server::update( double elapsed_time ) { /* decrease player hover when not over a tile */ if((m_players[pindex]->hover > 0) && - (m_map.get_tile_at(m_players[pindex]->x, m_players[pindex]->y).isNull())) + ((m_map.get_tile_at(m_players[pindex]->x, m_players[pindex]->y).isNull()) || + (m_map.get_tile_at(m_players[pindex]->x, m_players[pindex]->y)->get_damage_state() == HexTile::DESTROYED))) { m_players[pindex]->hover -= elapsed_time / 10; if (m_players[pindex]->hover < 0) @@ -206,16 +207,18 @@ void Server::update( double elapsed_time ) float player_dir_x = cos(m_players[pindex]->m_shot_direction); float player_dir_y = sin(m_players[pindex]->m_shot_direction); float tile_x = m_players[pindex]->m_shot_start_x + (player_dir_x * m_players[pindex]->m_shot_distance); - float tile_y = m_players[pindex]->m_shot_start_y + (player_dir_y * m_players[pindex]->m_shot_distance); - if((!m_map.get_tile_at(tile_x, tile_y).isNull()) && - (m_map.get_tile_at(tile_x, tile_y)->get_damage_state() < HexTile::DESTROYED)) + float tile_y = m_players[pindex]->m_shot_start_y + (player_dir_y * m_players[pindex]->m_shot_distance); + refptr p_tile = m_map.get_tile_at(tile_x, tile_y); + if((!p_tile.isNull()) && + (p_tile->get_damage_state() < HexTile::DESTROYED)) { // Send a message to all clients letting them know a tile was damaged sf::Uint8 ptype = TILE_DAMAGED; + server_packet.clear(); server_packet << ptype; - server_packet << tile_x; - server_packet << tile_y; + server_packet << p_tile->get_x(); + server_packet << p_tile->get_y(); m_net_server->sendData(server_packet, true); m_map.get_tile_at(tile_x, tile_y)->shot(); }