From 94b069dca7ffa88ca8997f5cf210ba867f201398 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 25 Jun 2019 09:59:32 +0800 Subject: [PATCH] add typeconvert.* --- server/gameserver/building.cc | 5 +++-- server/gameserver/frameevent.cc | 13 +++++++------ server/gameserver/framemaker.cc | 7 ++++--- server/gameserver/hero.cc | 9 +++++---- server/gameserver/human.cc | 17 +++++++++-------- server/gameserver/loot.cc | 5 +++-- server/gameserver/obstacle.cc | 5 +++-- server/gameserver/player.cc | 7 ++++--- server/gameserver/typeconvert.cc | 21 +++++++++++++++++++++ server/gameserver/typeconvert.h | 14 ++++++++++++++ server/gameserver/vector2d.cc | 14 -------------- server/gameserver/vector2d.h | 2 -- 12 files changed, 73 insertions(+), 46 deletions(-) create mode 100644 server/gameserver/typeconvert.cc create mode 100644 server/gameserver/typeconvert.h diff --git a/server/gameserver/building.cc b/server/gameserver/building.cc index d0759d8..4c5245b 100644 --- a/server/gameserver/building.cc +++ b/server/gameserver/building.cc @@ -6,6 +6,7 @@ #include "room.h" #include "loot.h" #include "app.h" +#include "typeconvert.h" Building::Building():Entity() { @@ -43,7 +44,7 @@ void Building::FillMFObjectPart(cs::MFObjectPart* part_data) part_data->set_object_type(ET_Building); cs::MFBuildingPart* p = part_data->mutable_union_obj_3(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); + TypeConvert::ToPb(pos, p->mutable_pos()); } void Building::FillMFObjectFull(cs::MFObjectFull* full_data) @@ -51,7 +52,7 @@ void Building::FillMFObjectFull(cs::MFObjectFull* full_data) full_data->set_object_type(ET_Building); cs::MFBuildingFull* p = full_data->mutable_union_obj_3(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); + TypeConvert::ToPb(pos, p->mutable_pos()); p->set_building_id(meta->i->mapid()); } diff --git a/server/gameserver/frameevent.cc b/server/gameserver/frameevent.cc index ec37fd1..dba06c2 100644 --- a/server/gameserver/frameevent.cc +++ b/server/gameserver/frameevent.cc @@ -4,13 +4,14 @@ #include "human.h" #include "bullet.h" #include "metamgr.h" +#include "typeconvert.h" void FrameEvent::AddAirDrop(int appear_time, int box_id, Vector2D box_pos) { cs::MFAirDrop* airdrop = airdrops_.Add(); airdrop->set_appear_time(appear_time); airdrop->set_box_id(box_id); - box_pos.ToPB(airdrop->mutable_pos()); + TypeConvert::ToPb(box_pos, airdrop->mutable_pos()); } void FrameEvent::AddEmote(Human* hum, int emote_id) @@ -64,8 +65,8 @@ void FrameEvent::AddBullet(Human* hum, Vector2D born_pos, Vector2D dir, float fl p.set_player_id(hum->entity_uniid); p.set_bullet_id(hum->curr_weapon->meta->i->use_bullet()); - born_pos.ToPB(p.mutable_pos()); - dir.ToPB(p.mutable_dir()); + TypeConvert::ToPb(born_pos, p.mutable_pos()); + TypeConvert::ToPb(dir, p.mutable_dir()); p.set_bulletskin(10001); p.set_gun_id(hum->curr_weapon->meta->i->id()); p.set_gun_lv(hum->curr_weapon->weapon_lv); @@ -89,7 +90,7 @@ void FrameEvent::AddExplosion(Bullet* bullet, int item_id, Vector2D bomb_pos) auto& p = std::get<1>(tuple); p.set_item_id(item_id); - bomb_pos.ToPB(p.mutable_pos()); + TypeConvert::ToPb(bomb_pos, p.mutable_pos()); p.set_player_id(bullet->player->entity_uniid); } { @@ -110,7 +111,7 @@ void FrameEvent::AddExplosionEx(Human* sender, int item_id, Vector2D bomb_pos, i auto& p = std::get<1>(tuple); p.set_item_id(item_id); - bomb_pos.ToPB(p.mutable_pos()); + TypeConvert::ToPb(bomb_pos, p.mutable_pos()); p.set_player_id(sender->entity_uniid); p.set_effect(effect); } @@ -132,7 +133,7 @@ void FrameEvent::AddSmoke(Bullet* bullet, int item_id, Vector2D pos) auto& p = std::get<1>(tuple); p.set_item_id(item_id); - pos.ToPB(p.mutable_pos()); + TypeConvert::ToPb(pos, p.mutable_pos()); p.set_player_id(bullet->player->entity_uniid); } { diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 44e22a5..790a131 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -3,6 +3,7 @@ #include "framemaker.h" #include "human.h" #include "room.h" +#include "typeconvert.h" cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) { @@ -11,8 +12,8 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) Room* room = hum->room; if (room->gas_data.gas_mode == GasJump) { cs::MFPlane* p = msg->mutable_plane(); - room->plane.start_point.ToPB(p->mutable_start_point()); - room->plane.end_point.ToPB(p->mutable_end_point()); + TypeConvert::ToPb(room->plane.start_point, p->mutable_start_point()); + TypeConvert::ToPb(room->plane.end_point, p->mutable_end_point()); } for (auto& itr : hum->new_objects) { itr->FillMFObjectFull(msg->add_full_objects()); @@ -71,7 +72,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) } if (room->gas_data.gas_mode == GasMoving) { msg->set_gas_progress(room->gas_data.gas_progress); - room->gas_data.pos_old.ToPB(msg->mutable_gas_pos_old()); + TypeConvert::ToPb(room->gas_data.pos_old, msg->mutable_gas_pos_old()); } msg->set_alive_count(room->AliveCount()); } diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index d3f80ba..6ad7777 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -3,6 +3,7 @@ #include "hero.h" #include "collider.h" #include "human.h" +#include "typeconvert.h" Hero::Hero(): Entity() { @@ -36,8 +37,8 @@ void Hero::FillMFObjectPart(cs::MFObjectPart* part_data) part_data->set_object_type(entity_type); cs::MFHeroPart* p = part_data->mutable_union_obj_10(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); - attack_dir.ToPB(p->mutable_dir()); + TypeConvert::ToPb(pos, p->mutable_pos()); + TypeConvert::ToPb(attack_dir, p->mutable_dir()); } void Hero::FillMFObjectFull(cs::MFObjectFull* full_data) @@ -45,8 +46,8 @@ void Hero::FillMFObjectFull(cs::MFObjectFull* full_data) full_data->set_object_type(entity_type); cs::MFHeroFull* p = full_data->mutable_union_obj_10(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); - attack_dir.ToPB(p->mutable_dir()); + TypeConvert::ToPb(pos, p->mutable_pos()); + TypeConvert::ToPb(attack_dir, p->mutable_dir()); skin.ToPB(p->mutable_skin()); p->set_backpack(backpack); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 6081498..9875a40 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -16,6 +16,7 @@ #include "roommgr.h" #include "android.h" #include "gamelog.h" +#include "typeconvert.h" #include "framework/cpp/utils.h" #include "framework/cpp/httpclientpool.h" @@ -91,8 +92,8 @@ void Human::FillMFObjectPart(cs::MFObjectPart* part_data) part_data->set_object_type(ET_Player); cs::MFPlayerPart* p = part_data->mutable_union_obj_1(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); - attack_dir.ToPB(p->mutable_dir()); + TypeConvert::ToPb(pos, p->mutable_pos()); + TypeConvert::ToPb(attack_dir, p->mutable_dir()); } void Human::FillMFObjectFull(cs::MFObjectFull* full_data) @@ -100,8 +101,8 @@ void Human::FillMFObjectFull(cs::MFObjectFull* full_data) full_data->set_object_type(ET_Player); cs::MFPlayerFull* p = full_data->mutable_union_obj_1(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); - attack_dir.ToPB(p->mutable_dir()); + TypeConvert::ToPb(pos, p->mutable_pos()); + TypeConvert::ToPb(attack_dir, p->mutable_dir()); p->set_health(health); p->set_max_health(GetMaxHP()); @@ -176,8 +177,8 @@ void Human::FillMFTeamData(cs::MFTeamData* team_data) { team_data->set_player_id(entity_uniid); team_data->set_name(name); - pos.ToPB(team_data->mutable_pos()); - attack_dir.ToPB(team_data->mutable_dir()); + TypeConvert::ToPb(pos, team_data->mutable_pos()); + TypeConvert::ToPb(attack_dir, team_data->mutable_dir()); team_data->set_health(health); team_data->set_max_health(GetMaxHP()); team_data->set_disconnected(false); @@ -1247,8 +1248,8 @@ void Human::FillMFGasData(cs::MFGasData* gas_data) gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000); } } - room->gas_data.pos_old.ToPB(gas_data->mutable_pos_old()); - room->gas_data.pos_new.ToPB(gas_data->mutable_pos_new()); + TypeConvert::ToPb(room->gas_data.pos_old, gas_data->mutable_pos_old()); + TypeConvert::ToPb(room->gas_data.pos_new, gas_data->mutable_pos_new()); gas_data->set_rad_old(room->gas_data.rad_old); gas_data->set_rad_new(room->gas_data.rad_new); } diff --git a/server/gameserver/loot.cc b/server/gameserver/loot.cc index 83bc457..4495bc5 100644 --- a/server/gameserver/loot.cc +++ b/server/gameserver/loot.cc @@ -6,6 +6,7 @@ #include "collider.h" #include "entity.h" #include "app.h" +#include "typeconvert.h" Loot::Loot():Entity() { @@ -33,7 +34,7 @@ void Loot::FillMFObjectPart(cs::MFObjectPart* part_data) part_data->set_object_type(ET_Loot); cs::MFLootPart* p = part_data->mutable_union_obj_5(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); + TypeConvert::ToPb(pos, p->mutable_pos()); } void Loot::FillMFObjectFull(cs::MFObjectFull* full_data) @@ -41,7 +42,7 @@ void Loot::FillMFObjectFull(cs::MFObjectFull* full_data) full_data->set_object_type(ET_Loot); cs::MFLootFull* p = full_data->mutable_union_obj_5(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); + TypeConvert::ToPb(pos, p->mutable_pos()); p->set_item_id(item_id); p->set_count(count); diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index a0e931c..bf80ae4 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -7,6 +7,7 @@ #include "building.h" #include "human.h" #include "app.h" +#include "typeconvert.h" Obstacle::Obstacle():Entity() { @@ -97,7 +98,7 @@ void Obstacle::FillMFObjectPart(cs::MFObjectPart* part_data) part_data->set_object_type(ET_Obstacle); cs::MFObstaclePart* p = part_data->mutable_union_obj_2(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); + TypeConvert::ToPb(pos, p->mutable_pos()); p->set_scale(1.0f); } @@ -106,7 +107,7 @@ void Obstacle::FillMFObjectFull(cs::MFObjectFull* full_data) full_data->set_object_type(ET_Obstacle); cs::MFObstacleFull* p = full_data->mutable_union_obj_2(); p->set_obj_uniid(entity_uniid); - pos.ToPB(p->mutable_pos()); + TypeConvert::ToPb(pos, p->mutable_pos()); p->set_scale(1.0f); p->set_obstacle_id(meta->i->thing_id()); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 7615f37..4b633a5 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -13,6 +13,7 @@ #include "loot.h" #include "app.h" #include "collider.h" +#include "typeconvert.h" Player::Player():Human() { @@ -819,7 +820,7 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) std::abs(msg.move_dir().y()) > FLT_EPSILON ) { Vector2D old_move_dir; - move_dir.FromPB(&msg.move_dir()); + TypeConvert::FromPb(move_dir, &msg.move_dir()); move_dir.Normalize(); moving = true; } @@ -834,8 +835,8 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg) std::abs(msg.attack_dir().y()) > 0.00001f ) ){ - attack_dir.FromPB(&msg.attack_dir()); - attack_dir.Normalize(); + TypeConvert::FromPb(attack_dir, &msg.attack_dir()); + attack_dir.Normalize(); } } else { if (moving) { diff --git a/server/gameserver/typeconvert.cc b/server/gameserver/typeconvert.cc new file mode 100644 index 0000000..f5c48f3 --- /dev/null +++ b/server/gameserver/typeconvert.cc @@ -0,0 +1,21 @@ +#include "precompile.h" + +#include "cs_proto.pb.h" + +#include "vector2d.h" + +namespace TypeConvert +{ + void ToPb(const Vector2D& v, cs::MFVector2D* pb_obj) + { + pb_obj->set_x(v.x); + pb_obj->set_y(v.y); + } + + void FromPb(Vector2D& v, const cs::MFVector2D* pb_obj) + { + v.x = pb_obj->x(); + v.y = pb_obj->y(); + } + +} diff --git a/server/gameserver/typeconvert.h b/server/gameserver/typeconvert.h new file mode 100644 index 0000000..7319acc --- /dev/null +++ b/server/gameserver/typeconvert.h @@ -0,0 +1,14 @@ +#pragma once + +namespace cs +{ + class MFVector2D; +} + +class Vector2D; + +namespace TypeConvert +{ + void ToPb(const Vector2D& v, cs::MFVector2D* pb_obj); + void FromPb(Vector2D& v, const cs::MFVector2D* pb_obj); +} diff --git a/server/gameserver/vector2d.cc b/server/gameserver/vector2d.cc index f2b26af..73633fa 100644 --- a/server/gameserver/vector2d.cc +++ b/server/gameserver/vector2d.cc @@ -11,25 +11,11 @@ #include #endif -#include "cs_proto.pb.h" - const Vector2D Vector2D::UP = Vector2D(0.0f, 1.0f); const Vector2D Vector2D::RIGHT = Vector2D(1.0f, 0.0f); const Vector2D Vector2D::DOWN = Vector2D(0.0f, -1.0f); const Vector2D Vector2D::LEFT = Vector2D(-1.0f, 0.0f); -void Vector2D::ToPB(cs::MFVector2D* pb_obj) -{ - pb_obj->set_x(x); - pb_obj->set_y(y); -} - -void Vector2D::FromPB(const cs::MFVector2D* pb_obj) -{ - x = pb_obj->x(); - y = pb_obj->y(); -} - void Vector2D::Normalize() { #if 1 diff --git a/server/gameserver/vector2d.h b/server/gameserver/vector2d.h index 5ee1b74..b5c4522 100644 --- a/server/gameserver/vector2d.h +++ b/server/gameserver/vector2d.h @@ -13,8 +13,6 @@ struct Vector2D Vector2D(float _x = 0.0f, float _y = 0.0f):x(_x), y(_y) {}; - void ToPB(cs::MFVector2D* pb_obj); - void FromPB(const cs::MFVector2D* pb_obj); void Normalize(); void Rotate(float angle); float CalcAngle(const Vector2D& b);