/********************************************************************
*
* File: gfCInstantInventoryMiniGameLogicComponent.h
*
* Purpose: Logic component added to a scene to control the
* instant inventory entities as a mini game - need to
* track them and reset if required
*
*********************************************************************/
#ifndef gfCInstantInventoryMiniGameLogicComponenthdr
#define gfCInstantInventoryMiniGameLogicComponenthdr
#include "../gfIMinigameLogic.h"
class gfCInstantInventoryMiniGameLogicComponent : public gfIMinigameLogic
{
friend class fsCComponentFactory;
public:
static const fsCUniqueId mTypeId;
protected:
void skipDo() override;
void listenersRegisterDo() override;
void listenersDeregisterDo() override;
fsBool messageProcessDo(const fsCUniqueId& pMessageType,
const fsIMessageDispatcher::sMessageParameters& pParam) override;
void resetDo() override;
void deserialiseDo() override;
void serialiseDo() override;
void initialiseFromVariableTableDo(const fsCVariableTable& pVars) override;
static fsIComponent* create(fsCEntity* pParent);
gfCInstantInventoryMiniGameLogicComponent(fsCEntity* pParent);
virtual ~gfCInstantInventoryMiniGameLogicComponent();<--- Destructor in derived class
private:
void locksBreakAndKeysConsume();
void instantInventoryEntsCollect();
void completionMessageSend(fsBool pComplete) const;
void completionRequirementRegister() const;
fsBool mSkip;
fsBool mReset;
fsS32 mLocksBroken;
std::vector<fsCEntity*> mInstantInventoryEnts;
std::vector<fsCEntity*> mLockEnts;
};
#endif