This commit is contained in:
aozhiwei 2021-06-17 23:33:10 +08:00
parent e1cf1ddaa9
commit 0a4ceb85ab
3 changed files with 23 additions and 5 deletions

View File

@ -648,10 +648,27 @@ bool Obstacle::DoInteraction(Human* sender)
void Obstacle::OnCollisionTrigger(Creature* c, OptResult& opt_result) void Obstacle::OnCollisionTrigger(Creature* c, OptResult& opt_result)
{ {
opt_result = kOptPass; opt_result = kOptPass;
if (meta->i->thing_type() == kObstacleSpring) { switch (meta->i->thing_type() == kObstacleSpring) {
AddObstacleBuff(c); case kObstacleSpring:
a8::SetBitFlag(c->status, CS_Collisioning); {
opt_result = kOptBreak; AddObstacleBuff(c);
a8::SetBitFlag(c->status, CS_Collisioning);
opt_result = kOptBreak;
}
break;
case kObstacleMine:
case kObstacleTrap:
{
AddObstacleBuff(c);
Explosion();
Die(c->room);
BroadcastFullState(c->room);
}
break;
default:
{
}
break;
} }
} }

View File

@ -46,6 +46,7 @@ class Obstacle : public Entity
virtual bool CanThroughable(Bullet* bullet); virtual bool CanThroughable(Bullet* bullet);
virtual bool DoInteraction(Human* sender); virtual bool DoInteraction(Human* sender);
virtual void OnCollisionTrigger(Creature* c, OptResult& opt_result); virtual void OnCollisionTrigger(Creature* c, OptResult& opt_result);
virtual void Explosion() {};
void Explosion(Bullet* bullet); void Explosion(Bullet* bullet);
void SetDoorInfo(Building* building, int door_id_x); void SetDoorInfo(Building* building, int door_id_x);
bool IsDoor(); bool IsDoor();

View File

@ -24,9 +24,9 @@ class RoomObstacle : public Obstacle
void Active(); void Active();
void DetachFromMaster(); void DetachFromMaster();
virtual void Die(Room* room) override; virtual void Die(Room* room) override;
virtual void Explosion() override;
private: private:
void Explosion();
void SpecExplosion(); void SpecExplosion();
void ActiveSelfExplosion(); void ActiveSelfExplosion();
void ActiveMine(); void ActiveMine();