2019-03-15 11:12:27 +08:00

108 lines
2.4 KiB
C++

#include "precompile.h"
#include "playermgr.h"
#include "player.h"
#include "cs_proto.pb.h"
#include "room.h"
#include "metamgr.h"
const int F_del_objids = 2;
const int F_full_objects = 3;
const int F_part_objects = 4;
const int F_active_player_id = 5;
const int F_active_player_data = 6;
const int F_alive_count = 15;
const int F_gasT = 16;
const int F_gas_data = 17;
const int F_team_data = 18;
const int F_teams = 19;
const int F_bullets = 20;
const int F_shots = 21;
const int F_explosions = 22;
const int F_emotes = 23;
const int F_ack = 24;
Player::Player()
{
entity_subtype = EST_Player;
}
void Player::Initialize()
{
health = meta->i->health();
}
void Player::Update(int delta_time)
{
if (updated_times % 2 == 0) {
cs::SMUpdate msg;
{
for (auto& itr : new_players) {
itr->FillMFObjectFull(msg.add_full_objects());
}
for (auto& itr : part_players) {
itr->FillMFObjectPart(msg.add_part_objects());
}
if (updated_times == 0) {
msg.set_active_player_id(entity_uniid);
FillMFPlayerData(msg.mutable_active_player_data());
}
msg.set_alive_count(room->AliveCount());
{
int data_flags32 = 0;
if (!new_players.empty()) {
a8::SetBitFlag(data_flags32, F_full_objects);
}
if (!part_players.empty()) {
a8::SetBitFlag(data_flags32, F_part_objects);
}
if (updated_times == 0) {
a8::SetBitFlag(data_flags32, F_active_player_id);
a8::SetBitFlag(data_flags32, F_active_player_data);
}
a8::SetBitFlag(data_flags32, F_alive_count);
msg.set_data_flags32(data_flags32);
}
}
SendNotifyMsg(msg);
{
if (!new_players.empty()) {
new_players.clear();
}
}
}
}
void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
{
}
void Player::_CMDropItem(f8::MsgHdr& hdr, const cs::CMDropItem& msg)
{
}
void Player::_CMEmote(f8::MsgHdr& hdr, const cs::CMEmote& msg)
{
}
void Player::_CMSpectate(f8::MsgHdr& hdr, const cs::CMSpectate& msg)
{
}
void Player::_CMVoice(f8::MsgHdr& hdr, const cs::CMVoice& msg)
{
}
void Player::FillMFPlayerData(cs::MFPlayerData* player_data)
{
player_data->set_has_action(false);
}