1
This commit is contained in:
parent
08ca2046f3
commit
bf3047febd
@ -332,17 +332,10 @@ void Car::OnExplosionHit(Explosion* e)
|
||||
finaly_dmg}));
|
||||
}
|
||||
#endif
|
||||
#if 1
|
||||
DecHP(finaly_dmg,
|
||||
1,
|
||||
VP_Explosion,
|
||||
"",
|
||||
1);
|
||||
#else
|
||||
DecHP(finaly_dmg,
|
||||
sender.Get()->GetUniId(),
|
||||
sender.Get()->GetName(),
|
||||
gun_meta->i->id());
|
||||
#endif
|
||||
e->GetExplosionEffect());
|
||||
}
|
||||
|
||||
void Car::DecHP(float dec_hp, int killer_id, const std::string& killer_name, int weapon_id)
|
||||
|
@ -408,6 +408,20 @@ enum HpOpt_e
|
||||
kHpOptEnd
|
||||
};
|
||||
|
||||
enum RichTextElementType
|
||||
{
|
||||
kTextElement = 1,
|
||||
kImageElement = 2
|
||||
};
|
||||
|
||||
enum KillTextFieldIdx
|
||||
{
|
||||
kFieldIdxMasterName = 1000,
|
||||
kFieldIdxKillerName,
|
||||
kFieldIdxDeadName,
|
||||
kFieldIdxWeaponTextIcon,
|
||||
};
|
||||
|
||||
const char* const PROJ_NAME_FMT = "game%d_gameserver";
|
||||
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
|
||||
|
||||
|
@ -13,6 +13,7 @@ class Explosion
|
||||
float GetDmg() { return dmg_; };
|
||||
long long GetSpecialDamageType() { return special_damage_type_; };
|
||||
bool IsPreBattleExplosion();
|
||||
int GetExplosionEffect() { return explosion_effect_; };
|
||||
|
||||
void IndifferenceAttack(Room* room,
|
||||
const a8::Vec2& center,
|
||||
|
@ -108,17 +108,10 @@ void Hero::OnExplosionHit(Explosion* e)
|
||||
finaly_dmg}));
|
||||
}
|
||||
#endif
|
||||
#if 1
|
||||
DecHP(finaly_dmg,
|
||||
1,
|
||||
VP_Explosion,
|
||||
"",
|
||||
1);
|
||||
#else
|
||||
DecHP(finaly_dmg,
|
||||
sender.Get()->GetUniId(),
|
||||
sender.Get()->GetName(),
|
||||
gun_meta->i->id());
|
||||
#endif
|
||||
e->GetExplosionEffect());
|
||||
}
|
||||
|
||||
void Hero::OnBulletHit(Bullet* bullet)
|
||||
|
@ -3263,17 +3263,10 @@ void Human::OnExplosionHit(Explosion* e)
|
||||
finaly_dmg}));
|
||||
}
|
||||
#endif
|
||||
#if 1
|
||||
DecHP(finaly_dmg,
|
||||
1,
|
||||
VP_Explosion,
|
||||
"",
|
||||
1);
|
||||
#else
|
||||
DecHP(finaly_dmg,
|
||||
sender.Get()->GetUniId(),
|
||||
sender.Get()->GetName(),
|
||||
gun_meta->i->id());
|
||||
#endif
|
||||
e->GetExplosionEffect());
|
||||
}
|
||||
|
||||
void Human::SendRollMsgEx(KillInfo& info,
|
||||
|
@ -8,6 +8,49 @@
|
||||
|
||||
#include "cs_proto.pb.h"
|
||||
|
||||
struct RollMsgHintInfo
|
||||
{
|
||||
std::string master_name;
|
||||
std::string killer_name;
|
||||
std::string dead_name;
|
||||
std::string weapon_text_icon;
|
||||
|
||||
std::vector<std::tuple<int, std::string>>* hint_template = nullptr;
|
||||
|
||||
bool Replace(int idx, std::string& text)
|
||||
{
|
||||
switch (idx) {
|
||||
case kFieldIdxMasterName:
|
||||
{
|
||||
text = master_name;
|
||||
}
|
||||
break;
|
||||
case kFieldIdxKillerName:
|
||||
{
|
||||
text = killer_name;
|
||||
}
|
||||
break;
|
||||
case kFieldIdxDeadName:
|
||||
{
|
||||
text = dead_name;
|
||||
}
|
||||
break;
|
||||
case kFieldIdxWeaponTextIcon:
|
||||
{
|
||||
text = weapon_text_icon;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void KillMgr::Init()
|
||||
{
|
||||
|
||||
@ -43,28 +86,30 @@ void KillMgr::FillHintInfo(Human* dead_hum, KillInfo* info, RollMsgHintInfo& hin
|
||||
case VP_Gas:
|
||||
{
|
||||
hint_info.killer_name = "";
|
||||
hint_info.template_name = "battle_server_dead_text_gas";
|
||||
hint_info.template_defval = "%s 被${weapon_text_icon}干掉";
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
("battle_server_dead_text_gas");
|
||||
}
|
||||
break;
|
||||
case VP_Buff:
|
||||
{
|
||||
hint_info.killer_name = "";
|
||||
hint_info.template_name = a8::Format("battle_server_dead_text_buff_%d", {1});
|
||||
if (!MetaMgr::Instance()->HasText(hint_info.template_name)) {
|
||||
hint_info.template_name = "battle_server_dead_text_buff_default";
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
(a8::Format("battle_server_dead_text_buff_%d", {1}));
|
||||
if (!hint_info.hint_template) {
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
("battle_server_dead_text_buff_default");
|
||||
}
|
||||
hint_info.template_defval = "%s 被";
|
||||
}
|
||||
break;
|
||||
case VP_Explosion:
|
||||
{
|
||||
hint_info.killer_name = "";
|
||||
hint_info.template_name = a8::Format("battle_server_dead_text_explosion_%d", {1});
|
||||
if (!MetaMgr::Instance()->HasText(hint_info.template_name)) {
|
||||
hint_info.template_name = "battle_server_dead_text_explosion_default";
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
(a8::Format("battle_server_dead_text_explosion_%d", {1}));
|
||||
if (!hint_info.hint_template) {
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
("battle_server_dead_text_explosion_default");
|
||||
}
|
||||
hint_info.template_defval = "%s 被";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -73,11 +118,13 @@ void KillMgr::FillHintInfo(Human* dead_hum, KillInfo* info, RollMsgHintInfo& hin
|
||||
if (killer) {
|
||||
hint_info.killer_name = killer->GetName();
|
||||
if (info->killer_id == dead_hum->GetUniId()) {
|
||||
hint_info.template_name = "battle_server_dead_text_specate";
|
||||
hint_info.template_defval = "${dead.name} 自杀";
|
||||
//${dead.name} 自杀
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
("battle_server_dead_text_specate");
|
||||
} else {
|
||||
hint_info.template_name = "battle_server_dead_text_weapon";
|
||||
hint_info.template_defval = "${killer.name} 使用 ${weapon.text_icon} 干掉了 ${dead.name}";
|
||||
//${killer.name} 使用 ${weapon.text_icon} 干掉了 ${dead.name}
|
||||
hint_info.hint_template = MetaMgr::Instance()->GetTextElements
|
||||
("battle_server_dead_text_weapon");
|
||||
}
|
||||
} else {
|
||||
}
|
||||
@ -89,80 +136,44 @@ void KillMgr::FillHintInfo(Human* dead_hum, KillInfo* info, RollMsgHintInfo& hin
|
||||
void KillMgr::PreprocessRollMsg(std::shared_ptr<cs::SMRollMsg> pb_msg,
|
||||
RollMsgHintInfo& hint_info)
|
||||
{
|
||||
#if 0
|
||||
cs::SMRollMsg *pb_msg = new cs::SMRollMsg;
|
||||
{
|
||||
std::string result;
|
||||
result.reserve(1024);
|
||||
const char *p = fmt;
|
||||
auto itr = args.begin();
|
||||
while (*p) {
|
||||
if (*p == '%' && *(p+1)) {
|
||||
p++;
|
||||
switch(*p){
|
||||
case 'd':
|
||||
{
|
||||
assert(itr != args.end());
|
||||
result.append(itr->GetString().c_str());
|
||||
itr++;
|
||||
}
|
||||
break;
|
||||
case 'f':
|
||||
{
|
||||
assert(itr != args.end());
|
||||
result.append(itr->GetString().c_str());
|
||||
itr++;
|
||||
}
|
||||
break;
|
||||
case 's':
|
||||
{
|
||||
assert(itr != args.end());
|
||||
result.append(itr->GetString().c_str());
|
||||
itr++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
result.push_back('%');
|
||||
result.push_back(*p);
|
||||
}
|
||||
break;
|
||||
if (hint_info.hint_template) {
|
||||
for (auto& tuple : *hint_info.hint_template) {
|
||||
int el_type = std::get<0>(tuple);
|
||||
std::string el_val = std::get<1>(tuple);
|
||||
switch (el_type) {
|
||||
case kTextElement:
|
||||
{
|
||||
auto e = pb_msg->add_elements();
|
||||
e->set_element_type(el_type);
|
||||
e->mutable_union_obj_1()->set_text(el_val);
|
||||
}
|
||||
} else if (*p == '$' && *(p+1)) {
|
||||
char* p1 = strstr((char*)p, "${weapon_text_icon}");
|
||||
if (p1) {
|
||||
if (!result.empty()) {
|
||||
auto element = pb_msg->add_elements();
|
||||
element->set_element_type(1);
|
||||
element->mutable_union_obj_1()->set_text(result);
|
||||
}
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(info.weapon_id);
|
||||
if (equip_meta) {
|
||||
auto element = pb_msg->add_elements();
|
||||
element->set_element_type(2);
|
||||
element->mutable_union_obj_2()->set_id(equip_meta->i->text_icon());
|
||||
} else {
|
||||
auto element = pb_msg->add_elements();
|
||||
element->set_element_type(2);
|
||||
element->mutable_union_obj_2()->set_id(info.weapon_id);
|
||||
}
|
||||
result = "";
|
||||
p = p1 + strlen("${weapon_text_icon}") - 1;
|
||||
} else {
|
||||
result.push_back(*p);
|
||||
break;
|
||||
case kImageElement:
|
||||
{
|
||||
auto e = pb_msg->add_elements();
|
||||
e->set_element_type(el_type);
|
||||
e->mutable_union_obj_2()->set_id(a8::XValue(el_val));
|
||||
}
|
||||
} else {
|
||||
result.push_back(*p);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
std::string text;
|
||||
if (hint_info.Replace(el_type, text)) {
|
||||
if (el_type == kFieldIdxWeaponTextIcon) {
|
||||
auto e = pb_msg->add_elements();
|
||||
e->set_element_type(el_type);
|
||||
e->mutable_union_obj_2()->set_id(a8::XValue(text));
|
||||
} else {
|
||||
auto e = pb_msg->add_elements();
|
||||
e->set_element_type(el_type);
|
||||
e->mutable_union_obj_1()->set_text(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
p++;
|
||||
} //end while p
|
||||
if (!result.empty()) {
|
||||
auto element = pb_msg->add_elements();
|
||||
element->set_element_type(1);
|
||||
element->mutable_union_obj_1()->set_text(result);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void KillMgr::BoradcastRollMsg(Human* dead_hum,
|
||||
@ -216,7 +227,7 @@ void KillMgr::BoradcastRollMsgCb(Human* dead_hum,
|
||||
{
|
||||
for (int i = 0; i < pb_msg->elements_size(); ++i) {
|
||||
auto element = pb_msg->mutable_elements(i);
|
||||
if (element->element_type() == 1) {
|
||||
if (element->element_type() == kTextElement) {
|
||||
int color = element->mutable_union_obj_1()->color();
|
||||
if (info->killer_id == hum->GetUniId()){
|
||||
color = MetaMgr::Instance()->self_kill_color;
|
||||
|
@ -13,18 +13,8 @@ struct KillInfo
|
||||
int weapon_id = 0;
|
||||
};
|
||||
|
||||
struct RollMsgHintInfo
|
||||
{
|
||||
std::string master_name;
|
||||
std::string killer_name;
|
||||
std::string dead_name;
|
||||
std::string weapon_text_icon;
|
||||
|
||||
std::string template_name;
|
||||
std::string template_defval;
|
||||
};
|
||||
|
||||
class Human;
|
||||
struct RollMsgHintInfo;
|
||||
class KillMgr : public a8::Singleton<KillMgr>
|
||||
{
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user