This commit is contained in:
aozhiwei 2023-11-14 13:09:45 +08:00
parent 035e63fef8
commit d19d911ce8
5 changed files with 21 additions and 5 deletions

View File

@ -17,8 +17,8 @@ class Car : public Creature
virtual void Initialize() override;
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
virtual bool IsCar() { return true;};
virtual Car* AsCar() { return this;};
virtual bool IsCar() override { return true;};
virtual Car* AsCar() override { return this;};
virtual void OnBulletHit(IBullet* bullet) override;
virtual void OnExplosionHit(Explosion* e) override;
virtual std::string GetName() override;

View File

@ -13,6 +13,7 @@ class Human;
class Explosion;
class Loot;
class Car;
class RoomObstacle;
class Entity
{
public:
@ -30,8 +31,10 @@ class Entity
virtual bool IsCreature(Room* room) { return false;};
virtual bool IsLoot() { return false;};
virtual bool IsCar() { return false;};
virtual bool IsRoomObstacle() { return false;};
virtual Loot* AsLoot() { return nullptr;};
virtual Car* AsCar() { return nullptr;};
virtual RoomObstacle* AsRoomObstacle() { return nullptr;};
virtual long long GetDeadFrameNo(Room* room) { return 0;};
virtual void OnBulletHit(IBullet* bullet) {};
virtual void OnExplosionHit(Explosion* explosion) {};

View File

@ -18,6 +18,9 @@
#include "master_agent.h"
#include "team_agent.h"
#include "skill.h"
#include "loot.h"
#include "car.h"
#include "roomobstacle.h"
#include "mt/Hero.h"
#include "mt/Equip.h"
@ -1262,7 +1265,15 @@ int HeroAgent::SearchPickupObj()
bool HeroAgent::PickupObjIsValid()
{
return curr_pickup_obj_.Get();
if (curr_pickup_obj_.Get()) {
if (curr_pickup_obj_.Get()->IsLoot()) {
Loot* loot = curr_pickup_obj_.Get()->AsLoot();
return !loot->pickuped;
} else if (curr_pickup_obj_.Get()->IsRoomObstacle()) {
RoomObstacle* ob = curr_pickup_obj_.Get()->AsRoomObstacle();
}
}
return false;
}
void HeroAgent::AbandonPickup(int min_time, int max_time)

View File

@ -34,8 +34,8 @@ class Loot : public RoomEntity
virtual void Initialize() override;
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
virtual bool IsLoot() { return true;};
virtual Loot* AsLoot() { return this;};
virtual bool IsLoot() override { return true;};
virtual Loot* AsLoot() override { return this;};
protected:
Loot();

View File

@ -26,6 +26,8 @@ class RoomObstacle : public Obstacle
virtual void Initialize() override;
virtual bool DoInteraction(Human* sender) override;
virtual void OnBattleStart(Room* room) override;
virtual bool IsRoomObstacle() override { return true;};
virtual RoomObstacle* AsRoomObstacle() override { return this;};
void ActiveTimerFunc();
void UpdateTimerFunc();
void Active();