#include "precompile.h" #include "cs_proto.pb.h" #include "metamgr.h" void Weapon::Clear() { weapon_id = 0; weapon_lv = 0; ammo = 0; meta = 0; bullet_meta = nullptr; upgrade_meta = nullptr; } void Weapon::ToPB(cs::MFWeapon* pb_obj) { pb_obj->set_weapon_id(weapon_id); pb_obj->set_weapon_lv(weapon_lv); pb_obj->set_ammo(ammo); } void Weapon::Recalc() { upgrade_meta = MetaMgr::Instance()->GetEquipUpgrade(weapon_id); bullet_meta = MetaMgr::Instance()->GetEquip(meta->i->use_bullet()); } int Weapon::GetClipVolume() { if (upgrade_meta) { return meta->i->clip_volume() + upgrade_meta->GetAttrValue(weapon_lv, kHAT_Volume); } else { return meta->i->clip_volume(); } } float Weapon::GetAttrValue(HumanAttrType_e attr_type) { if (!meta) { return 0; } switch (attr_type) { case kHAT_Atk: { return meta->i->atk() + (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); } break; case kHAT_FireRate: { return meta->i->fire_rate() - (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); } break; case kHAT_Volume: { return meta->i->clip_volume() + (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); } break; case kHAT_MaxHp: { return meta->i->max_hp() + (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); } break; case kHAT_ReloadTime: { return meta->i->reload_time() - (upgrade_meta ? upgrade_meta->GetAttrValue(weapon_lv, attr_type) : 0); } break; default: return 0; } } void Skin::ToPB(cs::MFSkin* pb_obj) { pb_obj->set_skin_id(skin_id); pb_obj->set_skin_lv(skin_lv); } a8::Vec2 BornPoint::RandPoint() const { a8::Vec2 born_point = a8::Vec2(thing_tpl->i->x(), thing_tpl->i->y()); MetaData::Player* hum_meta = MetaMgr::Instance()->GetPlayer(40002); if (hum_meta) { born_point.x -= thing_tpl->i->width() / 2; born_point.y -= thing_tpl->i->height() / 2; born_point.x += hum_meta->i->radius() / 2; born_point.y += hum_meta->i->radius() / 2; int rand_x = thing_tpl->i->width() - hum_meta->i->radius(); int rand_y = thing_tpl->i->height() - hum_meta->i->radius(); if (rand_x > 0) { born_point.x += rand() % rand_x; } if (rand_y > 0) { born_point.y += rand() % rand_y; } } return born_point; }