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
|
// TODO: Clean this up and make it more robust
|
||||||
if(m_players.size() > 0)
|
if(m_players.size() > 0)
|
||||||
{
|
{
|
||||||
|
refptr<Player> player = m_players[m_current_player];
|
||||||
sf::Uint8 w_pressed = KEY_NOT_PRESSED;
|
sf::Uint8 w_pressed = KEY_NOT_PRESSED;
|
||||||
sf::Uint8 a_pressed = KEY_NOT_PRESSED;
|
sf::Uint8 a_pressed = KEY_NOT_PRESSED;
|
||||||
sf::Uint8 s_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_x = cos(player->direction);
|
||||||
m_player_dir_y = sin(m_players[m_current_player]->direction);
|
m_player_dir_y = sin(player->direction);
|
||||||
|
|
||||||
// Send an update to the server if something has changed
|
// Send an update to the server if something has changed
|
||||||
if((m_players[m_current_player]->w_pressed != w_pressed) ||
|
if((player->w_pressed != w_pressed) ||
|
||||||
(m_players[m_current_player]->a_pressed != a_pressed) ||
|
(player->a_pressed != a_pressed) ||
|
||||||
(m_players[m_current_player]->s_pressed != s_pressed) ||
|
(player->s_pressed != s_pressed) ||
|
||||||
(m_players[m_current_player]->d_pressed != d_pressed) ||
|
(player->d_pressed != d_pressed) ||
|
||||||
(m_players[m_current_player]->rel_mouse_movement != rel_mouse_movement))
|
(player->rel_mouse_movement != rel_mouse_movement))
|
||||||
{
|
{
|
||||||
sf::Uint8 packet_type = PLAYER_UPDATE;
|
sf::Uint8 packet_type = PLAYER_UPDATE;
|
||||||
client_packet.clear();
|
client_packet.clear();
|
||||||
@ -367,23 +368,29 @@ void Client::update(double elapsed_time)
|
|||||||
|
|
||||||
m_net_client->sendData(client_packet);
|
m_net_client->sendData(client_packet);
|
||||||
|
|
||||||
m_players[m_current_player]->w_pressed = w_pressed;
|
player->w_pressed = w_pressed;
|
||||||
m_players[m_current_player]->a_pressed = a_pressed;
|
player->a_pressed = a_pressed;
|
||||||
m_players[m_current_player]->s_pressed = s_pressed;
|
player->s_pressed = s_pressed;
|
||||||
m_players[m_current_player]->d_pressed = d_pressed;
|
player->d_pressed = d_pressed;
|
||||||
m_players[m_current_player]->rel_mouse_movement = rel_mouse_movement;
|
player->rel_mouse_movement = rel_mouse_movement;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_shot_fired)
|
if(m_shot_fired)
|
||||||
{
|
{
|
||||||
|
float shot_distance = m_drawing_shot_distance + SHOT_RING_WIDTH / 2.0;
|
||||||
sf::Uint8 packet_type = PLAYER_SHOT;
|
sf::Uint8 packet_type = PLAYER_SHOT;
|
||||||
client_packet.clear();
|
client_packet.clear();
|
||||||
client_packet << packet_type;
|
client_packet << packet_type;
|
||||||
client_packet << m_current_player;
|
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_net_client->sendData(client_packet, true);
|
||||||
m_drawing_shot_distance = 0;
|
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)
|
else if(!registered_player)
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
#ifndef CLIENT_H
|
#ifndef CLIENT_H
|
||||||
#define CLIENT_H
|
#define CLIENT_H
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <list>
|
||||||
#include <SFML/Window.hpp>
|
#include <SFML/Window.hpp>
|
||||||
#include <SFML/Graphics/Texture.hpp>
|
#include <SFML/Graphics/Texture.hpp>
|
||||||
#include "refptr.h"
|
#include "refptr.h"
|
||||||
#include "Map.h"
|
#include "Map.h"
|
||||||
|
#include "Shot.h"
|
||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "GLProgram.h"
|
#include "GLProgram.h"
|
||||||
#include "WFObj.h"
|
#include "WFObj.h"
|
||||||
@ -71,6 +74,7 @@ class Client
|
|||||||
bool m_drawing_shot;
|
bool m_drawing_shot;
|
||||||
float m_drawing_shot_distance;
|
float m_drawing_shot_distance;
|
||||||
bool m_shot_fired;
|
bool m_shot_fired;
|
||||||
|
std::list< refptr<Shot> > m_shots;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user