This commit is contained in:
2025-11-24 14:19:51 +05:30
commit f5c1412b28
6734 changed files with 1527575 additions and 0 deletions

View File

@ -0,0 +1,101 @@
/*
* Copyright (c) 2014, Oculus VR, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
*
*/
// You can extend Lobby2 with your own messages, either overriding existing messages
// or adding new ones
// In both cases, you'll need to create a custom class factory to handle this.
#include "Lobby2Message_PGSQL.h"
// --------------------------------------------------------------
// Override an existing message (Platform_Startup) to do user-custom behaviors
// Requires:
// 1. New class factory to create this message, instead of the old one
// --------------------------------------------------------------
namespace RakNet
{
class Platform_Startup_Overridden : public Platform_Startup_PGSQL
{
virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
{
printf("Platform_Startup_Overridden");
return false;
}
};
// --------------------------------------------------------------
// Create an entirely new message
// Requires:
// 1. New class factory to create this message, in addition to the old ones
// 2. New custom callback handler to process this message's result
// 3. New enumeration list, which appends your messages to the old list
// --------------------------------------------------------------
// New enumeration list
enum Lobby2MessageID_Custom
{
L2MID_MyCustomMessage=L2MID_COUNT,
};
// Forward declaration(s) of my new message types
struct MyCustomMessage;
// New custom callback handler
struct Lobby2CustomizedHandler : public Lobby2Callbacks
{
virtual void MessageResult(MyCustomMessage *message);
virtual void ExecuteDefaultResult(Lobby2Message *message) {message->DebugPrintf();}
};
// Macro to make things easier, customized for our new callback handler
#define __L2_MSG_MY_CUSTOM_IMPL(__NAME__) \
virtual void CallCallback(Lobby2Callbacks *cb) {((Lobby2CustomizedHandler*)cb)->MessageResult(this);}; \
virtual Lobby2MessageID GetID(void) const {return (Lobby2MessageID) L2MID_##__NAME__;} \
virtual const char* GetName(void) const {return #__NAME__;} \
virtual void DebugMsg(RakNet::RakString &out) const {out.Set(#__NAME__ " result=%s\n", Lobby2ResultCodeDescription::ToEnglish(resultCode));};
// The new message
struct MyCustomMessage : public Lobby2Message
{
__L2_MSG_MY_CUSTOM_IMPL(MyCustomMessage)
virtual bool RequiresAdmin(void) const {return false;}
virtual bool RequiresRankingPermission(void) const {return false;}
virtual bool CancelOnDisconnect(void) const {return true;}
virtual bool RequiresLogin(void) const {return false;}
virtual void Serialize( bool writeToBitstream, bool serializeOutput, RakNet::BitStream *bitStream );
virtual bool PrevalidateInput(void) {return true;}
virtual bool ServerDBImpl( Lobby2ServerCommand *command, void *databaseInterface )
{
printf("MyCustomMessage");
return false;
}
};
// The new class factory
struct Lobby2MessageFactory_Customized : public Lobby2MessageFactory_PGSQL
{
virtual Lobby2Message *Alloc(Lobby2MessageID id)
{
switch (id)
{
case L2MID_Platform_Startup:
return RakNet::OP_NEW<Platform_Startup_Overridden>(__FILE__, __LINE__);
case L2MID_MyCustomMessage:
return RakNet::OP_NEW<MyCustomMessage>(__FILE__, __LINE__);
}
return Lobby2MessageFactory_PGSQL::Alloc(id);
}
};
} // end namespace