This commit is contained in:
aozhiwei 2019-07-19 20:44:38 +08:00
parent a4e43b30c3
commit d9cd3f00be
11 changed files with 45 additions and 0 deletions

View File

@ -31,6 +31,11 @@ void Android::Initialize()
if (skin_meta) {
skill_meta = MetaMgr::Instance()->GetSkill(skin_meta->i->skill_id());
}
MetaData::TankSkin* tank_skin_meta = MetaMgr::Instance()->GetTank(SkinId());
if (tank_skin_meta) {
tankskin.skin_id = tank_skin_meta->i->tank_id();
tankskin.skin_lv = 1;
}
RecalcBaseAttr();
}

View File

@ -129,6 +129,7 @@ void Human::FillMFObjectFull(cs::MFObjectFull* full_data)
p->set_backpack(backpack);
p->set_helmet(helmet);
p->set_chest(chest);
tankskin.ToPB(p->mutable_tankskin());
curr_weapon->ToPB(p->mutable_weapon());
#if 0
p->set_energy_shield(energy_shield);

View File

@ -64,6 +64,7 @@ class Human : public Entity
int action_item_id = 0;
int action_target_id = 0;
Skin skin_jlf;
Skin tankskin;
Driver driver;
int backpack = 0;
int helmet = 0;

View File

@ -194,4 +194,9 @@ namespace MetaData
std::map<int, std::tuple<float, int>> attr_up;
};
struct TankSkin
{
const metatable::TankSkin* i = nullptr;
};
}

View File

@ -33,6 +33,8 @@ public:
std::list<MetaData::Dress> dress_list;
std::list<metatable::Tank> tank_meta_list;
std::list<MetaData::Tank> tank_list;
std::list<metatable::TankSkin> tankskin_meta_list;
std::list<MetaData::TankSkin> tankskin_list;
std::list<metatable::Driver> driver_meta_list;
std::list<MetaData::Driver> driver_list;
std::list<metatable::Skill> skill_meta_list;
@ -64,6 +66,7 @@ public:
std::map<std::string, std::tuple<int, int>> maptpl_size_hash;
std::map<int, MetaData::Dress*> dress_hash;
std::map<int, MetaData::Tank*> tank_hash;
std::map<int, MetaData::TankSkin*> tankskin_hash;
std::vector<int> tankid_list;
std::map<int, MetaData::Driver*> driver_hash;
std::map<int, MetaData::Skill*> skill_hash;
@ -95,6 +98,7 @@ public:
f8::ReadCsvMetaFile(res_path + "map@map.csv", map_meta_list);
f8::ReadCsvMetaFile(res_path + "safearea@safearea.csv", safearea_meta_list);
f8::ReadCsvMetaFile(res_path + "tank@tank.csv", tank_meta_list);
f8::ReadCsvMetaFile(res_path + "tankskin@tankskin.csv", tankskin_meta_list);
f8::ReadCsvMetaFile(res_path + "driver@driver.csv", driver_meta_list);
f8::ReadCsvMetaFile(res_path + "item@item.csv", item_meta_list);
f8::ReadCsvMetaFile(res_path + "equip@equip.csv", equip_meta_list);
@ -210,6 +214,12 @@ private:
tankid_list.push_back(meta.id());
}
for (auto& meta : tankskin_meta_list) {
MetaData::TankSkin& item = a8::FastAppend(tankskin_list);
item.i = &meta;
tankskin_hash[item.i->tank_id()] = &item;
}
for (auto& meta : driver_meta_list) {
MetaData::Driver& item = a8::FastAppend(driver_list);
item.i = &meta;
@ -488,6 +498,12 @@ MetaData::Tank* MetaMgr::GetTank(int tank_id)
return itr != loader_->tank_hash.end() ? itr->second : nullptr;
}
MetaData::TankSkin* MetaMgr::GetTankSkin(int tank_id)
{
auto itr = loader_->tankskin_hash.find(tank_id);
return itr != loader_->tankskin_hash.end() ? itr->second : nullptr;
}
int MetaMgr::RandTank()
{
return !loader_->tankid_list.empty() ? loader_->tankid_list[rand() % loader_->tankid_list.size()] : 0;

View File

@ -38,6 +38,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
MetaData::Dress* GetDress(int dress_id);
MetaData::Driver* GetDriver(int driver_id);
MetaData::Tank* GetTank(int tank_id);
MetaData::TankSkin* GetTankSkin(int tank_id);
int RandTank();
float GetRankRewardParam(int rank);
float GetKillRewardParam(int kill_num);

View File

@ -80,6 +80,7 @@ Player* PlayerMgr::CreatePlayerByCMJoin(long ip_saddr, int socket, const cs::CMJ
}
hum->SetSkinInfo(msg.baseskin());
hum->driver.FromPB(&msg.driver());
hum->tankskin.FromPB(&msg.tankskin());
socket_hash_[socket] = hum;
return hum;
}

View File

@ -20,6 +20,12 @@ int Weapon::GetClipVolume()
return meta->i->clip_volume();
}
void Skin::FromPB(const cs::MFSkin* pb_obj)
{
skin_id = pb_obj->skin_id();
skin_lv = pb_obj->skin_lv();
}
void Skin::ToPB(cs::MFSkin* pb_obj)
{
pb_obj->set_skin_id(skin_id);

View File

@ -61,6 +61,7 @@ struct Skin
int skin_id = 0;
int skin_lv = 0;
void FromPB(const cs::MFSkin* pb_obj);
void ToPB(cs::MFSkin* pb_obj);
};

View File

@ -178,6 +178,7 @@ message MFPlayerFull
optional int32 energy_shield = 19; //
optional int32 max_energy_shield = 22; //
repeated MFBuff buff_list = 24; //buff列表
optional MFSkin tankskin = 25; //
}
//-
@ -596,6 +597,7 @@ message CMJoin
repeated int32 prepare_items = 19; // energy_shield
optional string from_appid = 21; //from_appid
optional MFDriver driver = 22; //
optional MFSkin tankskin = 23; //
}
//

View File

@ -217,6 +217,12 @@ message Tank
optional int32 type = 7;
}
message TankSkin
{
required int32 id = 1;
optional int32 tank_id = 2;
}
//end
message DoorObjJson