aozhiwei f1d9fd66f9 1
2020-05-27 15:40:41 +08:00

90 lines
2.2 KiB
C++

#include "precompile.h"
#include "cs_proto.pb.h"
#include "metamgr.h"
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);
}
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;
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;
}