114 lines
5.9 KiB
C
114 lines
5.9 KiB
C
|
|
||
|
#ifndef SESSION_BROWSER_IMPL_H
|
||
|
#define SESSION_BROWSER_IMPL_H
|
||
|
|
||
|
|
||
|
#include "session_browser.h"
|
||
|
#include "game_share/ring_session_manager_itf.h"
|
||
|
#include "interface_v3/lua_helper.h"
|
||
|
#include "far_tp.h"
|
||
|
|
||
|
class CSessionBrowserImpl : public CSessionBrowser,
|
||
|
public NLMISC::CSingleton<CSessionBrowserImpl>
|
||
|
{
|
||
|
public:
|
||
|
/** Register access to session browser from lua (from the 'game' table)
|
||
|
*
|
||
|
* game.getSessionList() -> send a request to server to get the list of session
|
||
|
* As a result :
|
||
|
* On success, RingAccessPoint:fill() will be called with a table containing the result of the request
|
||
|
* On failure : - RingAccessPoint:onDisconnection()
|
||
|
* - RingAccessPoint:onConnectionClosed()
|
||
|
* - RingAccessPoint:onConnectionFailed()
|
||
|
*/
|
||
|
void init(CLuaState *ls);
|
||
|
// from CSessionBrowser
|
||
|
virtual void on_connectionFailed();
|
||
|
virtual void on_connectionClosed();
|
||
|
virtual void on_CRingSessionManagerWebClient_Disconnection(NLNET::TSockId from);
|
||
|
virtual void on_invokeResult(NLNET::TSockId from, uint32 userId, uint32 resultCode, const std::string &resultString);
|
||
|
virtual void on_scheduleSessionResult(NLNET::TSockId from, uint32 charId, TSessionId sessionId, uint8 result, const std::string &resultString);
|
||
|
virtual void on_sessionInfoResult(NLNET::TSockId from, uint32 charId, TSessionId sessionId, const RSMGR::TRaceFilter &raceFilter, const RSMGR::TReligionFilter &religionFilter,
|
||
|
const RSMGR::TGuildFilter &guildFilter, const RSMGR::TShardFilter &shardFilter, const RSMGR::TLevelFilter &levelFilter, bool subscriptionClosed, bool autoInvite, const std::string &language, const RSMGR::TSessionOrientation &orientation, const std::string &description);
|
||
|
virtual void on_joinSessionResult(NLNET::TSockId from, uint32 userId, TSessionId sessionId, uint32 result, const std::string &shardAddr, const RSMGR::TSessionPartStatus &participantStatus);
|
||
|
virtual void on_joinSessionResultExt(NLNET::TSockId from, uint32 userId, TSessionId sessionId, uint32 result, const std::string &shardAddr, const RSMGR::TSessionPartStatus &participantStatus, const CSecurityCode& securityCode);
|
||
|
virtual void on_getShardsResult(NLNET::TSockId from, uint32 userId, const std::string &result);
|
||
|
virtual void on_CSessionBrowserServerWebClient_Disconnection(NLNET::TSockId from);
|
||
|
virtual void on_sessionList(NLNET::TSockId from, uint32 charId, const std::vector < RSMGR::TSessionDesc > &sessions);
|
||
|
virtual void on_charList(NLNET::TSockId from, uint32 charId, TSessionId sessionId, const std::vector < RSMGR::TCharDesc > &charDescs);
|
||
|
virtual void on_playerRatings(NLNET::TSockId from, uint32 charId, bool scenarioRated, uint32 rateFun, uint32 rateDifficulty, uint32 rateAccessibility, uint32 rateOriginality, uint32 rateDirection);
|
||
|
virtual void on_ringRatings(NLNET::TSockId from, uint32 charId, uint32 authorRating, uint32 AMRating, uint32 masterlessRating);
|
||
|
virtual void on_ringPoints(NLNET::TSockId from, uint32 charId, const std::string &ringPoints, const std::string &maxRingPoints);
|
||
|
// Return average scores of a session
|
||
|
virtual void on_sessionAverageScores(NLNET::TSockId from, bool scenarioRated, uint32 rateFun, uint32 rateDifficulty, uint32 rateAccessibility, uint32 rateOriginality, uint32 rateDirection, uint32 rrpTotal);
|
||
|
virtual void on_scenarioAverageScores(NLNET::TSockId from, bool scenarioRated, uint32 rateFun, uint32 rateDifficulty, uint32 rateAccessibility, uint32 rateOriginality, uint32 rateDirection, uint32 rrpTotal);
|
||
|
|
||
|
static uint32 getCharId();
|
||
|
|
||
|
// tmp, for local test
|
||
|
void testFill();
|
||
|
void testCharsFill();
|
||
|
|
||
|
|
||
|
// Result value
|
||
|
uint32 _LastInvokeResult;
|
||
|
std::string _LastInvokeResultMsg;
|
||
|
|
||
|
uint32 _LastJoinSessionResult;
|
||
|
TSessionId _LastJoinSessionId;
|
||
|
std::string _LastJoinSessionShardAddr;
|
||
|
RSMGR::TSessionPartStatus _LastJoinSessionPartStatus;
|
||
|
|
||
|
uint32 _LastScheduleSessionCharId;
|
||
|
uint32 _LastScheduleSessionResult;
|
||
|
TSessionId _LastScheduleSessionId;
|
||
|
std::string _LastScheduleSessionResulMsg;
|
||
|
|
||
|
CFarTP::TJoinMode CurrentJoinMode;
|
||
|
|
||
|
RSMGR::TRaceFilter _LastRaceFilter;
|
||
|
RSMGR::TReligionFilter _LastReligionFilter;
|
||
|
RSMGR::TGuildFilter _LastGuildFilter;
|
||
|
RSMGR::TShardFilter _LastShardFilter;
|
||
|
RSMGR::TLevelFilter _LastLevelFilter;
|
||
|
bool _LastSubscriptionClosed;
|
||
|
bool _LastAutoInvite;
|
||
|
std::string _LastDescription;
|
||
|
|
||
|
uint32 _LastAuthorRating;
|
||
|
uint32 _LastAMRating;
|
||
|
uint32 _LastMasterlessRating;
|
||
|
std::string _LastRingPoints;
|
||
|
std::string _LastMaxRingPoints;
|
||
|
|
||
|
static const std::string &getFrontEndAddress();
|
||
|
private:
|
||
|
CLuaState::TRefPtr _Lua;
|
||
|
static int luaGetRingSessionList(CLuaState &ls);
|
||
|
static int luaGetRingCharList(CLuaState &ls);
|
||
|
static int luaJoinRingSession(CLuaState &ls);
|
||
|
static int luaCheckRingAccess(CLuaState &ls);
|
||
|
static int luaGetFileHeader(CLuaState &ls);
|
||
|
static int luaGetRingStats(CLuaState &ls);
|
||
|
static int luaGetScenarioScores(CLuaState &ls);
|
||
|
static int luaUpdateScenarioScores(CLuaState &ls);
|
||
|
static int luaGetSessionAverageScores(CLuaState &ls);
|
||
|
static int luaGetScenarioAverageScores(CLuaState &ls);
|
||
|
// Call a method inside the 'RingAccessPoint' lua table
|
||
|
void callRingAccessPointMethod(const char *name, int numArg, int numResult);
|
||
|
void callRingCharTrackingMethod(const char *name, int numArg, int numResult);
|
||
|
void callRingPlayerInfoMethod(const char *name, int numArg, int numResult);
|
||
|
void callScenarioScoresMethod(const char *name, int numArg, int numResult);
|
||
|
|
||
|
void fill(const std::vector <RSMGR::TSessionDesc > &sessions);
|
||
|
void charsFill(const std::vector <RSMGR::TCharDesc > &chars);
|
||
|
void ringStatsFill();
|
||
|
void playerRatingFill(bool scenarioRated, uint32 rateFun, uint32 rateDifficulty, uint32 rateAccessibility, uint32 rateOriginality, uint32 rateDirection);
|
||
|
void averageScoresFill(bool scenarioRated, uint32 rateFun, uint32 rateDifficulty, uint32 rateAccessibility, uint32 rateOriginality, uint32 rateDirection, uint32 rrpTotal);
|
||
|
|
||
|
static const NLNET::CLoginCookie &getCookie();
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif //SESSION_BROWSER_H
|