1
This commit is contained in:
parent
870292592b
commit
b57ea5055c
@ -25,8 +25,6 @@ Android::~Android()
|
||||
void Android::Initialize()
|
||||
{
|
||||
Human::Initialize();
|
||||
SetSkinInfo(14001);
|
||||
GiveEquip();
|
||||
}
|
||||
|
||||
void Android::Update(int delta_time)
|
||||
@ -34,6 +32,3 @@ void Android::Update(int delta_time)
|
||||
ai->Update(delta_time);
|
||||
}
|
||||
|
||||
void Android::GiveEquip()
|
||||
{
|
||||
}
|
||||
|
@ -18,6 +18,5 @@ class Android : public Human
|
||||
virtual ~Android() override;
|
||||
virtual void Initialize() override;
|
||||
virtual void Update(int delta_time) override;
|
||||
void GiveEquip();
|
||||
|
||||
};
|
||||
|
@ -40,12 +40,20 @@ void Human::Initialize()
|
||||
|
||||
float Human::GetSpeed()
|
||||
{
|
||||
#if 1
|
||||
return 0;
|
||||
#else
|
||||
return meta->i->move_speed() + buff.speed;
|
||||
#endif
|
||||
}
|
||||
|
||||
float Human::GetSpeed4()
|
||||
{
|
||||
#if 1
|
||||
return 0;
|
||||
#else
|
||||
return meta->i->move_speed4();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Human::FillMFObjectPart(cs::MFObjectPart* part_data)
|
||||
@ -71,7 +79,6 @@ void Human::FillMFObjectFull(cs::MFObjectFull* full_data)
|
||||
|
||||
p->set_dead(dead);
|
||||
p->set_disconnected(disconnected);
|
||||
skin.ToPB(p->mutable_skin());
|
||||
p->set_kill_count(stats.kills);
|
||||
if (dead) {
|
||||
p->set_killer_name(stats.killer_name);
|
||||
@ -137,15 +144,15 @@ void Human::FillMFPlayerStats(cs::MFPlayerStats* stats_pb)
|
||||
|
||||
void Human::GetAabbBox(AabbCollider& aabb_box)
|
||||
{
|
||||
if (!meta) {
|
||||
abort();
|
||||
}
|
||||
abort();
|
||||
#if 0
|
||||
aabb_box.active = true;
|
||||
aabb_box.owner = this;
|
||||
aabb_box._min.x = -meta->i->radius();
|
||||
aabb_box._min.y = -meta->i->radius();
|
||||
aabb_box._max.x = meta->i->radius();
|
||||
aabb_box._max.y = meta->i->radius();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Human::FillMFTeamData(cs::MFTeamData* team_data)
|
||||
@ -168,6 +175,7 @@ void Human::FillMFTeamData(cs::MFTeamData* team_data)
|
||||
|
||||
void Human::RecalcSelfCollider()
|
||||
{
|
||||
#if 0
|
||||
if (!self_collider_) {
|
||||
self_collider_ = new CircleCollider();
|
||||
self_collider_->owner = this;
|
||||
@ -175,10 +183,12 @@ void Human::RecalcSelfCollider()
|
||||
}
|
||||
self_collider_->pos = a8::Vec2();
|
||||
self_collider_->rad = meta->i->radius();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool Human::IsCollisionInMapService()
|
||||
{
|
||||
#if 0
|
||||
if (room->OverBorder(pos, meta->i->radius())){
|
||||
return true;
|
||||
}
|
||||
@ -196,6 +206,7 @@ bool Human::IsCollisionInMapService()
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -227,11 +238,13 @@ void Human::FindPathInMapService()
|
||||
#endif
|
||||
extend_dir.Rotate(1/180.0f);
|
||||
}
|
||||
#if 0
|
||||
float distance = ((CircleCollider*)last_collider)->rad + meta->i->radius();
|
||||
pos = last_collider->owner->pos + extend_dir * (distance + 1);
|
||||
if (IsCollisionInMapService()) {
|
||||
pos = old_pos;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -284,7 +297,11 @@ void Human::FindPathInMapService()
|
||||
|
||||
float Human::GetRadius()
|
||||
{
|
||||
#if 1
|
||||
return 0;
|
||||
#else
|
||||
return meta->i->radius();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Human::SyncAroundPlayers(const char* file, int line, const char* func)
|
||||
@ -508,7 +525,6 @@ void Human::OnGridListChange(std::set<GridCell*>& old_grid_list,
|
||||
|
||||
void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
|
||||
{
|
||||
skin.ToPB(player_data->mutable_skin());
|
||||
}
|
||||
|
||||
void Human::FillMFGasData(cs::MFGasData* gas_data)
|
||||
@ -528,14 +544,11 @@ bool Human::CanSee(const Human* hum) const
|
||||
|
||||
void Human::RecalcAttr()
|
||||
{
|
||||
def = meta->i->def();
|
||||
}
|
||||
|
||||
void Human::RecalcBuff()
|
||||
{
|
||||
buff = HumanAbility();
|
||||
if (skin_meta) {
|
||||
}
|
||||
}
|
||||
|
||||
void Human::AddObserver(Human* observer)
|
||||
@ -705,35 +718,6 @@ void Human::SendWxVoip()
|
||||
SendNotifyMsg(notifymsg);
|
||||
}
|
||||
|
||||
int Human::GetSkinConfigLv(int skin_id)
|
||||
{
|
||||
auto itr = skin_configs.find(skin_id);
|
||||
return itr != skin_configs.end() ? itr->second : 0;
|
||||
}
|
||||
|
||||
void Human::SetSkinInfo(int skin_id)
|
||||
{
|
||||
skin.skin_id = skin_id;
|
||||
if (skin.skin_id != 0){
|
||||
skin.skin_lv = std::max(1, GetSkinConfigLv(skin.skin_id));
|
||||
}
|
||||
}
|
||||
|
||||
const Skin& Human::GetSkin()
|
||||
{
|
||||
return skin;
|
||||
}
|
||||
|
||||
int Human::SkinId()
|
||||
{
|
||||
return skin.skin_id;
|
||||
}
|
||||
|
||||
int Human::SkinLv()
|
||||
{
|
||||
return skin.skin_lv;
|
||||
}
|
||||
|
||||
void Human::_UpdateMove(int speed)
|
||||
{
|
||||
for (int i = 0; i < speed; ++i) {
|
||||
|
@ -34,8 +34,6 @@ class Human : public Entity
|
||||
bool auto_fill = false;
|
||||
int today_enter_times = 0;
|
||||
int account_registertime = 0;
|
||||
MetaData::Player* meta = nullptr;
|
||||
MetaData::Dress* skin_meta = nullptr;
|
||||
HumanAbility buff;
|
||||
|
||||
a8::Vec2 move_dir;
|
||||
@ -46,7 +44,6 @@ class Human : public Entity
|
||||
bool disconnected = false;
|
||||
long long join_frameno = 0;
|
||||
int status = 0;
|
||||
float atk_add = 0.0f;
|
||||
bool has_pass = 0;
|
||||
bool real_dead = false;
|
||||
xtimer_list* revive_timer = nullptr;
|
||||
@ -62,9 +59,6 @@ class Human : public Entity
|
||||
std::set<Human*> kill_humans;
|
||||
long long send_msg_times = 0;
|
||||
|
||||
float def = 0.0f;
|
||||
std::map<int, int> skin_configs;
|
||||
|
||||
Human();
|
||||
virtual ~Human() override;
|
||||
virtual void Initialize() override;
|
||||
@ -113,11 +107,6 @@ class Human : public Entity
|
||||
void SendRollMsg(const std::string& roll_msg);
|
||||
void SendUIUpdate();
|
||||
void SendWxVoip();
|
||||
int GetSkinConfigLv(int skin_id);
|
||||
void SetSkinInfo(int skin_id);
|
||||
const Skin& GetSkin();
|
||||
int SkinId();
|
||||
int SkinLv();
|
||||
|
||||
protected:
|
||||
void _UpdateMove(int speed);
|
||||
@ -154,8 +143,6 @@ private:
|
||||
bool sent_battlereport_ = false;
|
||||
bool sent_game_end_ = false;
|
||||
|
||||
Skin skin;
|
||||
|
||||
friend class FrameMaker;
|
||||
friend class FrameEvent;
|
||||
};
|
||||
|
@ -12,105 +12,6 @@ namespace MetaData
|
||||
}
|
||||
|
||||
void Map::Init()
|
||||
{
|
||||
rand_space = 0;
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(i->template_list(), strings, '|');
|
||||
for (auto& str : strings) {
|
||||
std::vector<std::string> strings2;
|
||||
a8::Split(str, strings2, ':');
|
||||
assert(strings2.size() == 2);
|
||||
rand_space += a8::XValue(strings2[1]).GetInt();
|
||||
template_list.push_back(std::make_tuple(
|
||||
strings2[0],
|
||||
rand_space
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string Map::RandTemplate()
|
||||
{
|
||||
if (rand_space <= 0) {
|
||||
return "";
|
||||
}
|
||||
int rnd = rand() % rand_space;
|
||||
for (auto& tpl : template_list) {
|
||||
if (rnd <= std::get<1>(tpl)) {
|
||||
return std::get<0>(tpl);
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
void Equip::Init()
|
||||
{
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(i->bullet_born_offset(), strings, '|');
|
||||
for (auto& str : strings) {
|
||||
std::vector<std::string> strings2;
|
||||
a8::Split(str, strings2, ':');
|
||||
assert(strings2.size() >= 2);
|
||||
bullet_born_offset.push_back(std::make_tuple(
|
||||
a8::XValue(strings2[0]).GetDouble(),
|
||||
a8::XValue(strings2[1]).GetDouble(),
|
||||
strings2.size() > 2 ? a8::XValue(strings2[2]).GetDouble() : 0
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EquipUpgrade::Init()
|
||||
{
|
||||
for (int j = 0; j < i->max_lv(); ++j) {
|
||||
std::array<float, EA_End>& attrs = a8::FastAppend(level_attrs);
|
||||
for (size_t k = 0; k < EA_End; ++k) {
|
||||
attrs[k] = 0;
|
||||
}
|
||||
}
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(i->attr_type(), strings, '|');
|
||||
for (auto& str : strings) {
|
||||
std::vector<std::string> strings2;
|
||||
a8::Split(str, strings2, ':');
|
||||
if (strings2.size() != 3) {
|
||||
abort();
|
||||
}
|
||||
int attr_type = a8::XValue(strings2[0]);
|
||||
int attr_level = a8::XValue(strings2[1]);
|
||||
float attr_value = a8::XValue(strings2[2]).GetDouble();
|
||||
if (attr_type < EA_End) {
|
||||
if (attr_level >= 0 && attr_level < i->max_lv()) {
|
||||
for (int j = 1; j < i->max_lv(); ++j) {
|
||||
if (j % attr_level == 0) {
|
||||
level_attrs[j][attr_type] = attr_value * (j / attr_level);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float EquipUpgrade::GetAttrValue(int level, int attr_type)
|
||||
{
|
||||
if (level < 1) {
|
||||
return 0;
|
||||
}
|
||||
if (level > (int)level_attrs.size()) {
|
||||
return 0;
|
||||
}
|
||||
if (attr_type < EA_End) {
|
||||
return level_attrs[level][attr_type];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Player::Init()
|
||||
{
|
||||
}
|
||||
|
||||
@ -119,145 +20,4 @@ namespace MetaData
|
||||
|
||||
}
|
||||
|
||||
void Drop::Init()
|
||||
{
|
||||
std::vector<std::string> item_list;
|
||||
{
|
||||
a8::Split(i->item_id(), item_list, '|');
|
||||
}
|
||||
std::vector<std::string> num_list;
|
||||
{
|
||||
a8::Split(i->num(), num_list, '|');
|
||||
}
|
||||
std::vector<std::string> weight_list;
|
||||
{
|
||||
a8::Split(i->weight(), weight_list, '|');
|
||||
}
|
||||
assert(item_list.size() == num_list.size() &&
|
||||
item_list.size() == weight_list.size());
|
||||
total_weight = 0;
|
||||
for (size_t i = 0; i < item_list.size(); ++i) {
|
||||
total_weight += a8::XValue(weight_list[i]).GetInt();
|
||||
std::vector<int> itemids;
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(item_list[i], strings, ':');
|
||||
for (auto& str : strings) {
|
||||
itemids.push_back(a8::XValue(str).GetInt());
|
||||
}
|
||||
}
|
||||
std::vector<int> nums;
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(num_list[i], strings, ':');
|
||||
for (auto& str : strings) {
|
||||
nums.push_back(a8::XValue(str).GetInt());
|
||||
}
|
||||
}
|
||||
assert(itemids.size() == nums.size());
|
||||
#if 1
|
||||
std::vector<int> item_lvs;
|
||||
for (size_t ii = 0; ii < itemids.size(); ++ii) {
|
||||
item_lvs.push_back(1);
|
||||
}
|
||||
#endif
|
||||
if (this->i->type() == 1) {
|
||||
auto item_tuple = std::make_tuple(
|
||||
itemids,
|
||||
nums,
|
||||
item_lvs,
|
||||
a8::XValue(weight_list[i]).GetInt()
|
||||
);
|
||||
items.push_back(item_tuple);
|
||||
} else {
|
||||
auto item_tuple = std::make_tuple(
|
||||
itemids,
|
||||
nums,
|
||||
item_lvs,
|
||||
total_weight
|
||||
);
|
||||
items.push_back(item_tuple);
|
||||
}
|
||||
}
|
||||
assert(i->type() == 1 || i->type() == 2);
|
||||
}
|
||||
|
||||
void Drop::RandItems(std::vector<std::tuple<int, int, int>>& drop_items)
|
||||
{
|
||||
if (i->type() == 1) {
|
||||
for (auto& item : items) {
|
||||
if ((rand() % 10000) <= std::get<3>(item)) {
|
||||
for (size_t i = 0; i < std::get<0>(item).size(); ++i) {
|
||||
drop_items.push_back(std::make_tuple(
|
||||
std::get<0>(item)[i],
|
||||
std::get<1>(item)[i],
|
||||
std::get<2>(item)[i]
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (total_weight > 0) {
|
||||
int rnd = rand() % total_weight;
|
||||
for (auto& item : items) {
|
||||
if (std::get<3>(item) >= rnd) {
|
||||
for (size_t i = 0; i < std::get<0>(item).size(); ++i) {
|
||||
drop_items.push_back(std::make_tuple(
|
||||
std::get<0>(item)[i],
|
||||
std::get<1>(item)[i],
|
||||
std::get<2>(item)[i]
|
||||
));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Dress::Init()
|
||||
{
|
||||
for (int j = 0; j < i->max_lv(); ++j) {
|
||||
std::array<float, EA_End>& attrs = a8::FastAppend(level_attrs);
|
||||
for (size_t k = 0; k < EA_End; ++k) {
|
||||
attrs[k] = 0;
|
||||
}
|
||||
}
|
||||
{
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(i->attr_type(), strings, '|');
|
||||
for (auto& str : strings) {
|
||||
std::vector<std::string> strings2;
|
||||
a8::Split(str, strings2, ':');
|
||||
if (strings2.size() != 3) {
|
||||
abort();
|
||||
}
|
||||
int attr_type = a8::XValue(strings2[0]);
|
||||
int attr_level = a8::XValue(strings2[1]);
|
||||
float attr_value = a8::XValue(strings2[2]).GetDouble();
|
||||
if (attr_type < EA_End) {
|
||||
if (attr_level >= 0 && attr_level < i->max_lv()) {
|
||||
for (int j = 1; j < i->max_lv(); ++j) {
|
||||
if (j % attr_type == 0) {
|
||||
level_attrs[j][attr_type] = attr_value * (j / attr_level);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float Dress::GetAttrValue(int level, int attr_type)
|
||||
{
|
||||
if (level < 1) {
|
||||
return 0;
|
||||
}
|
||||
if (level > (int)level_attrs.size()) {
|
||||
return 0;
|
||||
}
|
||||
if (attr_type < EA_End) {
|
||||
return level_attrs[level][attr_type];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -20,41 +20,6 @@ namespace MetaData
|
||||
{
|
||||
const metatable::Map* i = nullptr;
|
||||
|
||||
std::vector<std::tuple<std::string, int>> template_list;
|
||||
int rand_space = 0;
|
||||
|
||||
void Init();
|
||||
std::string RandTemplate();
|
||||
};
|
||||
|
||||
struct Item
|
||||
{
|
||||
const metatable::Item* i = nullptr;
|
||||
};
|
||||
|
||||
struct Equip
|
||||
{
|
||||
const metatable::Equip* i = nullptr;
|
||||
|
||||
std::vector<std::tuple<float, float, float>> bullet_born_offset;
|
||||
void Init();
|
||||
};
|
||||
|
||||
struct EquipUpgrade
|
||||
{
|
||||
const metatable::EquipUpgrade* i = nullptr;
|
||||
|
||||
void Init();
|
||||
float GetAttrValue(int level, int attr_type);
|
||||
|
||||
private:
|
||||
std::vector<std::array<float, EA_End>> level_attrs;
|
||||
};
|
||||
|
||||
struct Player
|
||||
{
|
||||
const metatable::Player* i = nullptr;
|
||||
|
||||
void Init();
|
||||
};
|
||||
|
||||
@ -65,29 +30,6 @@ namespace MetaData
|
||||
void Init();
|
||||
};
|
||||
|
||||
struct Drop
|
||||
{
|
||||
const metatable::Drop* i = nullptr;
|
||||
|
||||
void Init();
|
||||
void RandItems(std::vector<std::tuple<int, int, int>>& drop_items);
|
||||
|
||||
private:
|
||||
std::vector<std::tuple<std::vector<int>, std::vector<int>, std::vector<int>, int>> items;
|
||||
int total_weight = 0;
|
||||
};
|
||||
|
||||
struct Dress
|
||||
{
|
||||
const metatable::Dress* i = nullptr;
|
||||
|
||||
void Init();
|
||||
float GetAttrValue(int level, int attr_type);
|
||||
|
||||
private:
|
||||
std::vector<std::array<float, EA_End>> level_attrs;
|
||||
};
|
||||
|
||||
struct RankReward
|
||||
{
|
||||
const metatable::RankReward* i = nullptr;
|
||||
|
@ -15,18 +15,8 @@ public:
|
||||
std::list<MetaData::Parameter> parameter_list;
|
||||
std::list<metatable::Map> map_meta_list;
|
||||
std::list<MetaData::Map> map_list;
|
||||
std::list<metatable::Item> item_meta_list;
|
||||
std::list<MetaData::Item> item_list;
|
||||
std::list<metatable::Equip> equip_meta_list;
|
||||
std::list<MetaData::Equip> equip_list;
|
||||
std::list<metatable::Player> player_meta_list;
|
||||
std::list<MetaData::Player> player_list;
|
||||
std::list<metatable::Dress> dress_meta_list;
|
||||
std::list<MetaData::Dress> dress_list;
|
||||
std::list<metatable::RankReward> rankreward_meta_list;
|
||||
std::list<MetaData::RankReward> rankreward_list;
|
||||
std::list<metatable::EquipUpgrade> equipupgrade_meta_list;
|
||||
std::list<MetaData::EquipUpgrade> equipupgrade_list;
|
||||
std::list<metatable::KillReward> killreward_meta_list;
|
||||
std::list<MetaData::KillReward> killreward_list;
|
||||
std::list<metatable::RankPoint> rankpoint_meta_list;
|
||||
@ -38,16 +28,10 @@ public:
|
||||
|
||||
std::map<std::string, MetaData::Parameter*> parameter_hash;
|
||||
std::map<int, MetaData::Map*> gamemap_hash;
|
||||
std::map<int, MetaData::Item*> item_hash;
|
||||
std::map<int, MetaData::Equip*> equip_hash;
|
||||
std::map<int, MetaData::Equip*> equip_slot_hash;
|
||||
std::map<int, MetaData::Player*> player_hash;
|
||||
std::map<int, MetaData::Dress*> dress_hash;
|
||||
std::map<int, MetaData::RankReward*> rankreward_hash;
|
||||
std::map<int, MetaData::KillReward*> killreward_hash;
|
||||
std::map<int, MetaData::RankPoint*> rankpoint_hash;
|
||||
std::map<int, MetaData::KillPoint*> killpoint_hash;
|
||||
std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash;
|
||||
std::map<int, MetaData::Robot*> robot_hash;
|
||||
|
||||
void Load()
|
||||
@ -69,16 +53,10 @@ public:
|
||||
|
||||
f8::ReadCsvMetaFile(res_path + "parameter@parameter.csv", parameter_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "map@map.csv", map_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "item@item.csv", item_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "equip@equip.csv", equip_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "player@player.csv", player_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "player@player.csv", player_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "dress@dress.csv", dress_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "rankReward@rankReward.csv", rankreward_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "killReward@killReward.csv", killreward_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "killPoint@killPoint.csv", killpoint_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "rankPoint@rankPoint.csv", rankpoint_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "equipUpgrade@equipUpgrade.csv", equipupgrade_meta_list);
|
||||
f8::ReadCsvMetaFile(res_path + "robot@robot.csv", robot_meta_list);
|
||||
BindToMetaData();
|
||||
#if 1
|
||||
@ -122,40 +100,6 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& meta : item_meta_list) {
|
||||
MetaData::Item& item = a8::FastAppend(item_list);
|
||||
item.i = &meta;
|
||||
item_hash[item.i->id()] = &item;
|
||||
}
|
||||
|
||||
for (auto& meta : equip_meta_list) {
|
||||
if (meta.inventory_slot().empty()) {
|
||||
meta.set__inventory_slot(-1);
|
||||
} else {
|
||||
meta.set__inventory_slot(a8::XValue(meta.inventory_slot()));
|
||||
}
|
||||
MetaData::Equip& item = a8::FastAppend(equip_list);
|
||||
item.i = &meta;
|
||||
item.Init();
|
||||
equip_hash[item.i->id()] = &item;
|
||||
if (meta._inventory_slot() > -1) {
|
||||
equip_slot_hash[meta._inventory_slot()] = &item;
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& meta : player_meta_list) {
|
||||
MetaData::Player& item = a8::FastAppend(player_list);
|
||||
item.i = &meta;
|
||||
item.Init();
|
||||
player_hash[item.i->id()] = &item;
|
||||
}
|
||||
|
||||
for (auto& meta : dress_meta_list) {
|
||||
MetaData::Dress& item = a8::FastAppend(dress_list);
|
||||
item.i = &meta;
|
||||
dress_hash[item.i->id()] = &item;
|
||||
}
|
||||
|
||||
for (auto& meta : rankreward_meta_list) {
|
||||
MetaData::RankReward& item = a8::FastAppend(rankreward_list);
|
||||
item.i = &meta;
|
||||
@ -180,12 +124,6 @@ private:
|
||||
rankpoint_hash[item.i->rank()] = &item;
|
||||
}
|
||||
|
||||
for (auto& meta : equipupgrade_meta_list) {
|
||||
MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list);
|
||||
item.i = &meta;
|
||||
equipupgrade_hash[meta.id()] = &item;
|
||||
}
|
||||
|
||||
for (auto& meta : robot_meta_list) {
|
||||
MetaData::Robot& item = a8::FastAppend(robot_list);
|
||||
item.i = &meta;
|
||||
@ -244,36 +182,6 @@ MetaData::Map* MetaMgr::GetMap(int map_id)
|
||||
return itr != loader_->gamemap_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MetaData::Player* MetaMgr::GetPlayer(int id)
|
||||
{
|
||||
auto itr = loader_->player_hash.find(id);
|
||||
return itr != loader_->player_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MetaData::Equip* MetaMgr::GetEquip(int id)
|
||||
{
|
||||
auto itr = loader_->equip_hash.find(id);
|
||||
return itr != loader_->equip_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MetaData::Equip* MetaMgr::GetEquipBySlotId(int slot_id)
|
||||
{
|
||||
auto itr = loader_->equip_slot_hash.find(slot_id);
|
||||
return itr != loader_->equip_slot_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MetaData::EquipUpgrade* MetaMgr::GetEquipUpgrade(int equip_id)
|
||||
{
|
||||
auto itr = loader_->equipupgrade_hash.find(equip_id);
|
||||
return itr != loader_->equipupgrade_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
MetaData::Dress* MetaMgr::GetDress(int dress_id)
|
||||
{
|
||||
auto itr = loader_->dress_hash.find(dress_id);
|
||||
return itr != loader_->dress_hash.end() ? itr->second : nullptr;
|
||||
}
|
||||
|
||||
float MetaMgr::GetRankRewardParam(int rank)
|
||||
{
|
||||
auto itr = loader_->rankreward_hash.find(rank);
|
||||
|
@ -20,12 +20,6 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
||||
double GetSysParamAsFloat(const std::string& param_name, double def_val = 0.0f);
|
||||
std::string GetSysParamAsString(const std::string& param_name, const char* def_val = "");
|
||||
MetaData::Map* GetMap(int map_id);
|
||||
MetaData::Player* GetPlayer(int id);
|
||||
MetaData::Equip* GetEquip(int id);
|
||||
MetaData::Equip* GetEquipBySlotId(int slot_id);
|
||||
MetaData::EquipUpgrade* GetEquipUpgrade(int equip_id);
|
||||
MetaData::Drop* GetDrop(int drop_id);
|
||||
MetaData::Dress* GetDress(int dress_id);
|
||||
float GetRankRewardParam(int rank);
|
||||
float GetKillRewardParam(int kill_num);
|
||||
int GetRankPointParam1(int rank);
|
||||
|
@ -27,7 +27,6 @@ Player::~Player()
|
||||
void Player::Initialize()
|
||||
{
|
||||
Human::Initialize();
|
||||
skin_meta = MetaMgr::Instance()->GetDress(SkinId());
|
||||
RecalcBuff();
|
||||
}
|
||||
|
||||
|
@ -51,14 +51,7 @@ Player* PlayerMgr::CreatePlayerByCMJoin(long ip_saddr, int socket, const cs::CMJ
|
||||
hum->today_enter_times = msg.today_enter_times();
|
||||
hum->create_tick = a8::XGetTickCount();
|
||||
hum->account_registertime = f8::ExtractRegisterTimeFromSessionId(msg.session_id());
|
||||
hum->atk_add = msg.atk_add();
|
||||
hum->has_pass = msg.has_pass();
|
||||
for (auto& skin : msg.skins()) {
|
||||
if (skin.skin_id() != 0 && skin.skin_lv() > 0) {
|
||||
hum->skin_configs[skin.skin_id()] = skin.skin_lv();
|
||||
}
|
||||
}
|
||||
hum->SetSkinInfo(msg.baseskin());
|
||||
socket_hash_[socket] = hum;
|
||||
return hum;
|
||||
}
|
||||
|
@ -210,6 +210,7 @@ void Room::ShuaAndroid()
|
||||
|
||||
void Room::CreateAndroid(int robot_num)
|
||||
{
|
||||
#if 0
|
||||
std::vector<MetaData::Robot>* robot_list = MetaMgr::Instance()->GetRobotList();
|
||||
if (!robot_list || robot_list->empty()) {
|
||||
return;
|
||||
@ -266,6 +267,7 @@ void Room::CreateAndroid(int robot_num)
|
||||
}
|
||||
refreshed_robot_set_.insert(robot_meta->i->id());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Human* Room::FindEnemy(Human* hum)
|
||||
@ -308,44 +310,7 @@ void Room::FillSMJoinedNotify(Player* self_hum, cs::SMJoinedNotify& msg)
|
||||
|
||||
int Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
|
||||
{
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(equip_id);
|
||||
if (equip_meta) {
|
||||
if (equip_meta->i->equip_type() == 2 &&
|
||||
MetaMgr::Instance()->fighting_mode) {
|
||||
return 0;
|
||||
}
|
||||
Loot* entity = new Loot();
|
||||
entity->room = this;
|
||||
entity->meta = equip_meta;
|
||||
entity->entity_uniid = AllocUniid();
|
||||
entity->pos = pos;
|
||||
#if 1
|
||||
{
|
||||
if (entity->pos.x >= map_meta->i->map_width()) {
|
||||
entity->pos.x = map_meta->i->map_width() - 1;
|
||||
}
|
||||
if (entity->pos.x < 1.0f) {
|
||||
entity->pos.x = 1.0f;
|
||||
}
|
||||
if (entity->pos.y >= map_meta->i->map_height()) {
|
||||
entity->pos.y = map_meta->i->map_height() - 1;
|
||||
}
|
||||
if (entity->pos.y < 1.0f) {
|
||||
entity->pos.y = 1.0f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
entity->item_id = equip_id;
|
||||
entity->count = count;
|
||||
entity->item_level = equip_lv;
|
||||
entity->Initialize();
|
||||
uniid_hash_[entity->entity_uniid] = entity;
|
||||
grid_service.AddEntity(entity);
|
||||
entity->BroadcastFullState();
|
||||
return entity->entity_uniid;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Room::RemoveObjectLater(Entity* entity)
|
||||
|
@ -49,10 +49,6 @@ void RoomMgr::Update(int delta_time)
|
||||
|
||||
void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg)
|
||||
{
|
||||
MetaData::Player* hum_meta = MetaMgr::Instance()->GetPlayer(40001);
|
||||
if (!hum_meta) {
|
||||
abort();
|
||||
}
|
||||
if (IsLimitJoin()) {
|
||||
{
|
||||
cs::SMJoinedNotify notifymsg;
|
||||
@ -92,7 +88,6 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg)
|
||||
room_hash_[room->room_uuid] = room;
|
||||
}
|
||||
Player* hum = PlayerMgr::Instance()->CreatePlayerByCMJoin(hdr.ip_saddr, hdr.socket_handle, msg);
|
||||
hum->meta = hum_meta;
|
||||
room->AddPlayer(hum);
|
||||
|
||||
{
|
||||
|
@ -3,9 +3,3 @@
|
||||
#include "cs_proto.pb.h"
|
||||
|
||||
#include "metamgr.h"
|
||||
|
||||
void Skin::ToPB(cs::MFSkin* pb_obj)
|
||||
{
|
||||
pb_obj->set_skin_id(skin_id);
|
||||
pb_obj->set_skin_lv(skin_lv);
|
||||
}
|
||||
|
@ -15,19 +15,6 @@ struct PerfMonitor
|
||||
std::array<int, 30> entity_num = {};
|
||||
};
|
||||
|
||||
namespace MetaData
|
||||
{
|
||||
struct SafeArea;
|
||||
struct Equip;
|
||||
struct EquipUpgrade;
|
||||
struct MapTplThing;
|
||||
}
|
||||
|
||||
namespace cs
|
||||
{
|
||||
class MFSkin;
|
||||
}
|
||||
|
||||
struct GasData
|
||||
{
|
||||
GasMode_e gas_mode = GasInactive;
|
||||
@ -35,15 +22,6 @@ struct GasData
|
||||
bool is_last_gas = false;
|
||||
};
|
||||
|
||||
struct Skin
|
||||
{
|
||||
int tank_uniid = 0;
|
||||
int skin_id = 0;
|
||||
int skin_lv = 0;
|
||||
|
||||
void ToPB(cs::MFSkin* pb_obj);
|
||||
};
|
||||
|
||||
struct PlayerStats
|
||||
{
|
||||
int kills = 0;
|
||||
|
@ -153,13 +153,6 @@ message MFSnake
|
||||
optional int32 total_mass = 3; //总重量
|
||||
}
|
||||
|
||||
//皮肤
|
||||
message MFSkin
|
||||
{
|
||||
optional int32 skin_id = 1; //皮肤id
|
||||
optional int32 skin_lv = 2; //皮肤等级
|
||||
}
|
||||
|
||||
//玩家信息-部分
|
||||
message MFPlayerPart
|
||||
{
|
||||
@ -175,7 +168,6 @@ message MFPlayerFull
|
||||
|
||||
optional bool dead = 7; //是否已死亡
|
||||
optional bool disconnected = 9; //是否断网
|
||||
optional MFSkin skin = 13; //皮肤id
|
||||
optional int32 kill_count = 24; //击杀数
|
||||
|
||||
optional bool can_revive = 30; //是否可复活
|
||||
@ -225,8 +217,6 @@ message MFObjectFull
|
||||
//活跃玩家数据(当前)
|
||||
message MFActivePlayerData
|
||||
{
|
||||
optional MFSkin skin = 30; //皮肤id
|
||||
|
||||
optional int32 spectator_count = 20;
|
||||
}
|
||||
|
||||
@ -307,21 +297,13 @@ message CMJoin
|
||||
optional int32 team_mode = 4; //队伍模式 0:单人 1:多人
|
||||
optional int32 proto_version = 5; //协议版本号Constant_e.ProtoVersion
|
||||
optional bool auto_fill = 6; //是否自动填充玩家
|
||||
optional int32 bot = 7; //是否机器人
|
||||
optional string name = 8; //角色名
|
||||
optional bool use_touch = 9; //zzz
|
||||
repeated int32 emotes = 10; //表情列表
|
||||
optional string avatar_url = 11; //头像
|
||||
optional int32 baseskin = 13; //皮肤id
|
||||
optional int32 basemelee = 14; //xx
|
||||
repeated MFSkin skins = 18; //皮肤列表 key: 皮肤id value:皮肤等级
|
||||
repeated int32 prepare_items = 19; //战斗前准备道具 战前准备护盾存到energy_shield
|
||||
optional string session_id = 20; //session_id
|
||||
optional string from_appid = 21; //from_appid
|
||||
optional float atk_add = 22; //攻击加成
|
||||
optional string pre_settlement_info = 23; //透传game2001api预结算信息(为了本地结算用)
|
||||
optional int32 emoji1 = 24; //表情1
|
||||
optional int32 emoji2 = 25; //表情2
|
||||
optional bool has_pass = 27; //是否有通行证
|
||||
optional int32 today_enter_times = 28; //今天进入游戏的次数
|
||||
}
|
||||
|
@ -48,107 +48,10 @@ message Map
|
||||
optional float map_height = 5;
|
||||
}
|
||||
|
||||
message MapThing
|
||||
{
|
||||
optional int32 thing_id = 1; //物件id
|
||||
optional int32 type = 2; //类型
|
||||
optional int32 height = 3; //高度
|
||||
optional int32 width = 4; //宽度
|
||||
optional int32 hp = 5; //生命
|
||||
optional float damage = 6; //伤害
|
||||
optional float damage_dia = 7; //伤害半径
|
||||
optional int32 drop = 8; //掉落
|
||||
optional int32 attack_type = 9; //是否可攻击 0:不可破坏对象 1:可破坏对象 2:可穿透对象
|
||||
optional int32 is_door = 10; //是否门
|
||||
optional int32 is_house = 11; //是否房间
|
||||
optional int32 is_tree = 12; //是否树
|
||||
optional int32 house_id = 13; //房间id
|
||||
}
|
||||
|
||||
message Item
|
||||
{
|
||||
optional int32 id = 1; //道具id
|
||||
}
|
||||
|
||||
message Equip
|
||||
{
|
||||
optional int32 id = 1; //装备id
|
||||
optional int32 equip_type = 2; //装备类型
|
||||
optional int32 equip_subtype = 3; //装备子类型
|
||||
optional int32 equip_lv = 4; //装备等级
|
||||
optional int32 fire_mode = 5; //开火模式
|
||||
optional int32 use_bullet = 6; //使用子弹
|
||||
optional int32 clip_volume = 7; //弹夹数量
|
||||
optional int32 reload_time = 8; //装弹时间
|
||||
optional int32 fire_rate = 9; //武器射速
|
||||
optional int32 atk = 10; //攻击力
|
||||
optional int32 def = 11; //防御力
|
||||
optional int32 explosion_range = 12; //子弹爆炸范围
|
||||
optional int32 bullet_speed = 13; //子弹速度
|
||||
optional int32 range = 14; //射程
|
||||
optional int32 use_time = 15; //使用时间
|
||||
optional int32 heal = 16; //瞬间生命恢复
|
||||
optional int32 time = 17; //时间
|
||||
optional string volume = 19; //装备容量
|
||||
optional int32 bullet_rad = 20; //子弹半径
|
||||
optional int32 group_num = 21; //每组数量
|
||||
optional int32 is_luck = 22; //是否吉利服
|
||||
optional string bullet_born_offset = 30; //子弹出生偏移
|
||||
optional float bullet_angle = 34; //子弹浮动方向
|
||||
optional string name = 35; //装备名字
|
||||
optional float rad = 36; //半径
|
||||
optional float rad2 = 37;
|
||||
|
||||
optional string inventory_slot = 31; //库存槽位
|
||||
optional int32 _inventory_slot = 32; //库存槽位
|
||||
}
|
||||
|
||||
message EquipUpgrade
|
||||
{
|
||||
optional int32 id = 1;
|
||||
optional string attr_type = 4;
|
||||
optional int32 max_lv = 5;
|
||||
}
|
||||
|
||||
message Player
|
||||
{
|
||||
optional int32 id = 1; //唯一id
|
||||
optional float radius = 2; //半径
|
||||
optional int32 health = 3; //初始血量
|
||||
optional int32 move_speed = 4; //移动速度
|
||||
optional int32 jump_speed = 5; //跳伞速度
|
||||
optional int32 move_speed3 = 6;
|
||||
optional int32 shot_speed = 7;
|
||||
optional int32 move_speed4 = 10; //移动速度4
|
||||
optional float def = 11; //防御
|
||||
optional string volume = 12; //初始库存
|
||||
}
|
||||
|
||||
message Robot
|
||||
{
|
||||
optional int32 id = 1;
|
||||
optional string name = 2;
|
||||
optional int32 skin = 3;
|
||||
optional int32 weapon_id = 4;
|
||||
optional int32 weapon_lv = 5;
|
||||
}
|
||||
|
||||
message Drop
|
||||
{
|
||||
optional int32 drop_id = 1;
|
||||
optional string item_id = 2;
|
||||
optional string num = 3;
|
||||
optional string weight = 4;
|
||||
optional int32 type = 5;
|
||||
}
|
||||
|
||||
message Dress
|
||||
{
|
||||
optional int32 id = 1;
|
||||
optional int32 level = 2;
|
||||
optional int32 skill_id = 3;
|
||||
optional string attr_type = 4;
|
||||
optional int32 max_lv = 5;
|
||||
}
|
||||
|
||||
message RankReward
|
||||
|
Loading…
x
Reference in New Issue
Block a user