死亡富文本
This commit is contained in:
parent
66dc8027f1
commit
ddf18e76f4
@ -760,7 +760,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
|||||||
equip_meta->i->name(),
|
equip_meta->i->name(),
|
||||||
name
|
name
|
||||||
});
|
});
|
||||||
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id);
|
SendRollMsg(msg, killer->GetEntityUniId(), killer->team_id, weapon_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1522,39 +1522,45 @@ void Human::SendDebugMsg(const std::string& debug_msg)
|
|||||||
SendNotifyMsg(notify_msg);
|
SendNotifyMsg(notify_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::SendRollMsg(const std::string& msg, int killer_id, bool killer_team_id)
|
void Human::SendRollMsg(const std::string& msg, int killer_id, bool killer_team_id, int weapon_id)
|
||||||
{
|
{
|
||||||
|
KillInfo* info = new KillInfo;
|
||||||
|
info->killer_id = killer_id;
|
||||||
|
info->killer_team_id = killer_team_id;
|
||||||
|
info->weapon_id = weapon_id;
|
||||||
|
info->msg = msg;
|
||||||
room->xtimer.AddDeadLineTimerAndAttach
|
room->xtimer.AddDeadLineTimerAndAttach
|
||||||
(
|
(
|
||||||
0,
|
0,
|
||||||
a8::XParams()
|
a8::XParams()
|
||||||
.SetSender(this)
|
.SetSender(this)
|
||||||
.SetParam1(killer_id)
|
.SetParam1(info),
|
||||||
.SetParam2(killer_team_id)
|
|
||||||
.SetParam3(msg),
|
|
||||||
[] (const a8::XParams& param)
|
[] (const a8::XParams& param)
|
||||||
{
|
{
|
||||||
Human* target = (Human*)param.sender.GetUserData();
|
Human* target = (Human*)param.sender.GetUserData();
|
||||||
int killer_id = param.param1;
|
KillInfo* info = (KillInfo*)param.param1.GetUserData();
|
||||||
int killer_team_id = param.param2;
|
|
||||||
std::string text = param.param3.GetString();
|
|
||||||
target->room->TraversePlayerList
|
target->room->TraversePlayerList
|
||||||
(a8::XParams(),
|
(a8::XParams(),
|
||||||
[target, killer_id, killer_team_id, text] (Human* hum, a8::XParams& param) -> bool
|
[target, info] (Human* hum, a8::XParams& param) -> bool
|
||||||
{
|
{
|
||||||
cs::SMRollMsg msg;
|
cs::SMRollMsg msg;
|
||||||
auto element = msg.add_elements();
|
auto element = msg.add_elements();
|
||||||
element->set_element_type(1);
|
element->set_element_type(1);
|
||||||
element->mutable_union_obj_1()->set_text(text);
|
element->mutable_union_obj_1()->set_text(info->msg);
|
||||||
if (killer_id == hum->GetEntityUniId()){
|
if (info->killer_id == hum->GetEntityUniId()){
|
||||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->self_kill_color);
|
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->self_kill_color);
|
||||||
} else if (killer_team_id == hum->team_id) {
|
} else if (info->killer_team_id == hum->team_id) {
|
||||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->teammate_kill_color);
|
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->teammate_kill_color);
|
||||||
} else if (target == hum) {
|
} else if (target == hum) {
|
||||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->self_bekill_color);
|
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->self_bekill_color);
|
||||||
} else if (target->team_id == hum->team_id) {
|
} else if (target->team_id == hum->team_id) {
|
||||||
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->teammate_bekill_color);
|
element->mutable_union_obj_1()->set_color(MetaMgr::Instance()->teammate_bekill_color);
|
||||||
}
|
}
|
||||||
|
if (info->weapon_id != 0) {
|
||||||
|
auto img_element = msg.add_elements();
|
||||||
|
img_element->set_element_type(2);
|
||||||
|
img_element->mutable_union_obj_2()->set_id(info->weapon_id);
|
||||||
|
}
|
||||||
hum->SendNotifyMsg(msg);
|
hum->SendNotifyMsg(msg);
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
@ -1562,6 +1568,8 @@ void Human::SendRollMsg(const std::string& msg, int killer_id, bool killer_team_
|
|||||||
&xtimer_attacher.timer_list_,
|
&xtimer_attacher.timer_list_,
|
||||||
[] (const a8::XParams& param)
|
[] (const a8::XParams& param)
|
||||||
{
|
{
|
||||||
|
KillInfo* info = (KillInfo*)param.param1.GetUserData();
|
||||||
|
delete info;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ class Human : public Creature
|
|||||||
void SendGameOver();
|
void SendGameOver();
|
||||||
void FollowTarget(Human* target);
|
void FollowTarget(Human* target);
|
||||||
virtual void SendDebugMsg(const std::string& debug_msg) override;
|
virtual void SendDebugMsg(const std::string& debug_msg) override;
|
||||||
void SendRollMsg(const std::string& msg, int killer_id, bool killer_team_id);
|
void SendRollMsg(const std::string& msg, int killer_id, bool killer_team_id, int weapon_id = 0);
|
||||||
void UpdateAction();
|
void UpdateAction();
|
||||||
void SendUIUpdate();
|
void SendUIUpdate();
|
||||||
void SendWxVoip();
|
void SendWxVoip();
|
||||||
|
@ -153,6 +153,14 @@ struct ObstacleData
|
|||||||
DoorState_e door_state = DoorStateClose;
|
DoorState_e door_state = DoorStateClose;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct KillInfo
|
||||||
|
{
|
||||||
|
int killer_id = 0;
|
||||||
|
int killer_team_id = 0;
|
||||||
|
int weapon_id = 0;
|
||||||
|
std::string msg;
|
||||||
|
};
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
struct ObjectSyncFlags
|
struct ObjectSyncFlags
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user