This commit is contained in:
aozhiwei 2021-06-15 19:19:42 +08:00
parent c98ecd1a2e
commit ac113de096

View File

@ -180,9 +180,9 @@ void Obstacle::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_d
a8::SetBitFlag(data->flags, kHealth); a8::SetBitFlag(data->flags, kHealth);
} }
if (GetInteractionData(hum)) { if (GetInteractionData(hum)) {
p->set_button_name("躲藏");
} else {
p->set_button_name("脱离"); p->set_button_name("脱离");
} else {
p->set_button_name("躲藏");
} }
} }
} }
@ -648,23 +648,25 @@ void Obstacle::OnCollisionTrigger(Creature* c)
void Obstacle::DoHideHouseInteraction(Human* sender) void Obstacle::DoHideHouseInteraction(Human* sender)
{ {
ObstacleData* data = sender->room->GetPermanentObstacleData(GetUniId());
if (!a8::HasBitFlag(data->flags, kHealth)) {
data->health = health_;
a8::SetBitFlag(data->flags, kHealth);
}
auto p = GetInteractionData(sender); auto p = GetInteractionData(sender);
if (p) { if (p) {
ClearObstacleBuff(sender); ClearObstacleBuff(sender);
sender->SetPos(std::get<1>(*p)); sender->SetPos(std::get<1>(*p));
data->interaction_humans->erase(sender->GetUniId());
} else { } else {
a8::Vec2 old_pos = sender->GetPos(); a8::Vec2 old_pos = sender->GetPos();
sender->SetPos(GetPos()); sender->SetPos(GetPos());
AddObstacleBuff(sender); AddObstacleBuff(sender);
ObstacleData* p = sender->room->GetPermanentObstacleData(GetUniId()); if (!data->interaction_humans) {
if (!a8::HasBitFlag(p->flags, kHealth)) { data->interaction_humans = new std::map<int, std::tuple<long long, a8::Vec2>>();
p->health = health_;
a8::SetBitFlag(p->flags, kHealth);
} }
if (!p->interaction_humans) { (*data->interaction_humans)[sender->GetUniId()] = std::make_tuple
p->interaction_humans = new std::map<int, std::tuple<long long, a8::Vec2>>();
}
(*p->interaction_humans)[sender->GetUniId()] = std::make_tuple
(sender->room->GetFrameNo(), old_pos); (sender->room->GetFrameNo(), old_pos);
} }
sender->AddToNewObjects(this); sender->AddToNewObjects(this);