Client creates a Shot object when player sends a shot (not drawing it yet)
This commit is contained in:
parent
bfc8a6f25b
commit
3237d4e0e6
@ -296,6 +296,7 @@ void Client::update(double elapsed_time)
|
||||
// TODO: Clean this up and make it more robust
|
||||
if(m_players.size() > 0)
|
||||
{
|
||||
refptr<Player> player = m_players[m_current_player];
|
||||
sf::Uint8 w_pressed = KEY_NOT_PRESSED;
|
||||
sf::Uint8 a_pressed = KEY_NOT_PRESSED;
|
||||
sf::Uint8 s_pressed = KEY_NOT_PRESSED;
|
||||
@ -345,15 +346,15 @@ void Client::update(double elapsed_time)
|
||||
}
|
||||
}
|
||||
|
||||
m_player_dir_x = cos(m_players[m_current_player]->direction);
|
||||
m_player_dir_y = sin(m_players[m_current_player]->direction);
|
||||
m_player_dir_x = cos(player->direction);
|
||||
m_player_dir_y = sin(player->direction);
|
||||
|
||||
// Send an update to the server if something has changed
|
||||
if((m_players[m_current_player]->w_pressed != w_pressed) ||
|
||||
(m_players[m_current_player]->a_pressed != a_pressed) ||
|
||||
(m_players[m_current_player]->s_pressed != s_pressed) ||
|
||||
(m_players[m_current_player]->d_pressed != d_pressed) ||
|
||||
(m_players[m_current_player]->rel_mouse_movement != rel_mouse_movement))
|
||||
if((player->w_pressed != w_pressed) ||
|
||||
(player->a_pressed != a_pressed) ||
|
||||
(player->s_pressed != s_pressed) ||
|
||||
(player->d_pressed != d_pressed) ||
|
||||
(player->rel_mouse_movement != rel_mouse_movement))
|
||||
{
|
||||
sf::Uint8 packet_type = PLAYER_UPDATE;
|
||||
client_packet.clear();
|
||||
@ -367,23 +368,29 @@ void Client::update(double elapsed_time)
|
||||
|
||||
m_net_client->sendData(client_packet);
|
||||
|
||||
m_players[m_current_player]->w_pressed = w_pressed;
|
||||
m_players[m_current_player]->a_pressed = a_pressed;
|
||||
m_players[m_current_player]->s_pressed = s_pressed;
|
||||
m_players[m_current_player]->d_pressed = d_pressed;
|
||||
m_players[m_current_player]->rel_mouse_movement = rel_mouse_movement;
|
||||
player->w_pressed = w_pressed;
|
||||
player->a_pressed = a_pressed;
|
||||
player->s_pressed = s_pressed;
|
||||
player->d_pressed = d_pressed;
|
||||
player->rel_mouse_movement = rel_mouse_movement;
|
||||
}
|
||||
|
||||
if(m_shot_fired)
|
||||
{
|
||||
float shot_distance = m_drawing_shot_distance + SHOT_RING_WIDTH / 2.0;
|
||||
sf::Uint8 packet_type = PLAYER_SHOT;
|
||||
client_packet.clear();
|
||||
client_packet << packet_type;
|
||||
client_packet << m_current_player;
|
||||
client_packet << (float)(m_drawing_shot_distance + SHOT_RING_WIDTH / 2.0);
|
||||
client_packet << shot_distance;
|
||||
m_net_client->sendData(client_packet, true);
|
||||
m_drawing_shot_distance = 0;
|
||||
m_players[m_current_player]->m_shot_allowed = false;
|
||||
player->m_shot_allowed = false;
|
||||
refptr<Shot> shot = new Shot(
|
||||
sf::Vector2f(player->x, player->y),
|
||||
player->direction,
|
||||
shot_distance);
|
||||
m_shots.push_back(shot);
|
||||
}
|
||||
}
|
||||
else if(!registered_player)
|
||||
|
@ -1,10 +1,13 @@
|
||||
#ifndef CLIENT_H
|
||||
#define CLIENT_H
|
||||
|
||||
#include <map>
|
||||
#include <list>
|
||||
#include <SFML/Window.hpp>
|
||||
#include <SFML/Graphics/Texture.hpp>
|
||||
#include "refptr.h"
|
||||
#include "Map.h"
|
||||
#include "Shot.h"
|
||||
#include "Player.h"
|
||||
#include "GLProgram.h"
|
||||
#include "WFObj.h"
|
||||
@ -71,6 +74,7 @@ class Client
|
||||
bool m_drawing_shot;
|
||||
float m_drawing_shot_distance;
|
||||
bool m_shot_fired;
|
||||
std::list< refptr<Shot> > m_shots;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user