Files
Leviathan/Client/Game/game/GameSystem/Contents/SHuntaHolicSystem.h
T
2026-06-01 12:46:52 +02:00

79 lines
2.4 KiB
C++

#pragma once
#include "SContents.h"
#include "IHuntaHolicSystem.h"
class SHuntaHolicSystem : public SContents< SHuntaHolicSystem >
{
public:
SHuntaHolicSystem( const char* name, SContentsManager& contentsMgr );
void process( DWORD time );
void reset();
void reqInstanceList( int page = 1 ) const;
void reqCreateInstance();
void reqJoinInstance( int index );
void reqLeaveInstance() const;
void reqLeaveHuntaHolic();
void reqBeginHuntaHolic();
const HuntaHolicLobby& getLobby() const { return mLobby; }
const HuntaHolicInstanceList& getInstanceList() const { return mInstanceList; }
const HuntaHolicInstance& getMyInstance() const { return mMyInstance; }
const HuntaHolicScore& getMyScore() const { return mMyScore; }
const AR_TIME& getArTimeLimit() const { return mTimeLimit; }
unsigned int getArTimeLimitByMinutes() const;
void* Perform( KID id, KArg& msg );
bool isHunting() const { return mInstanceStartTime != 0; }
bool isInInstance() const { return mMyInstance.isValid(); }
bool isObjCompleted() const;
#if defined( __TEST_HUNTAHOLICSYSTEM )
void testInstanceList();
#endif
private:
void beginHunting( AR_TIME beginTime ) { mInstanceStartTime = beginTime; }
void endHunting() { mInstanceStartTime = 0; }
// game message callback
void onInstanceList( SGameMessage* msg );
void onInstanceInfo( SGameMessage* msg );
void onHuntingScore( SGameMessage* msg );
void onUpdateScore( SGameMessage* msg );
void onBeginHunting( SGameMessage* msg );
void onChangeLocation( SGameMessage* msg );
void onMsgResult( SGameMessage* msg );
void onMaxPointAchieved( SGameMessage* msg ); // sonador #2.1.2.11.5
// hunta holic system callback
void onCreateInstance( const TS_CS_HUNTAHOLIC_CREATE_INSTANCE& createArg ) const;
void onConfirmPassword( const char* password ) const;
void enterHuntaHolic();
void leaveHuntaHolic();
typedef struct _InstanceFinder {
_InstanceFinder( int instanceNo ) : _instanceNo( instanceNo ) {}
bool operator () ( const HuntaHolicInstance& o ) const { return ( _instanceNo == o.instance_no ); }
int _instanceNo;
} InstanceFinder;
HuntaHolicLobby mLobby;
HuntaHolicInstanceList mInstanceList;
HuntaHolicInstance mMyInstance;
HuntaHolicScore mMyScore;
AR_TIME mTimeLimit;
AR_TIME mInstanceStartTime;
SGuiObj mGuiLobby;
SGuiObj mGuiInstance;
SGuiObj mGuiScoreBoard;
SGuiObj mGuiResult;
SGuiObj mGuiCreateInstance;
SGuiObj mGuiConfirmPassword;
SGuiObj mGuiPartyCommand;
bool mIsInHuntaHolic;
};