Files
src-1.2/external/3rd/library/soePlatform/CTServiceGameAPI/test/main.cpp
T

293 lines
8.5 KiB
C++

#include <conio.h>
#include <time.h>
#include <stdio.h>
#include <map>
#include "CTServiceGameAPI/CTServiceAPI.h"
namespace CTService
{
class Client : public CTServiceAPI
{
public:
Client(const char *hostList, const char *game);
virtual ~Client();
virtual void onConnect(const char *host, const short port, const short current, const short max);
virtual void onDisconnect(const char *host, const short port, const short current, const short max);
virtual void onTest(const unsigned track, const int resultCode, const unsigned value, void *user);
virtual void onReplyTest(const unsigned track, const int resultCode, void *user);
virtual void onReplyMoveStatus(const unsigned track, const int resultCode, void *user);
virtual void onReplyValidateMove(const unsigned track, const int resultCode, void *user);
virtual void onReplyMove(const unsigned track, const int resultCode, void *user);
virtual void onReplyCharacterList(const unsigned track, const int resultCode, void *user);
virtual void onReplyServerList(const unsigned track, const int resultCode, void *user);
virtual void onReplyDestinationServerList(const unsigned track, const int resultCode, void *user);
virtual void onServerTest(const unsigned server_track, const char *game, const char *param);
virtual void onRequestMoveStatus(const unsigned server_track, const char *language,
const unsigned transactionID);
virtual void onRequestValidateMove(const unsigned server_track, const char *language,
const CTUnicodeChar *sourceServer,
const CTUnicodeChar *destServer,
const CTUnicodeChar *sourceCharacter,
const CTUnicodeChar *destCharacter, const unsigned uid,
const unsigned destuid, bool withItems);
virtual void onRequestMove(const unsigned server_track, const char *language,
const CTUnicodeChar *sourceServer,
const CTUnicodeChar *destServer,
const CTUnicodeChar *sourceCharacter,
const CTUnicodeChar *destCharacter, const unsigned uid,
const unsigned destuid, const unsigned transactionID, bool withItems);
virtual void onRequestCharacterList(const unsigned server_track, const char *language,
const CTUnicodeChar *server, const unsigned uid);
virtual void onRequestServerList(const unsigned server_track, const char *language);
virtual void onRequestDestinationServerList(const unsigned server_track, const char *language,
const CTUnicodeChar *character, const CTUnicodeChar *server);
std::map<unsigned, unsigned> mTransactionMap;
};
Client::Client(const char *hostList, const char *game) :
CTServiceAPI(hostList, game),
mTransactionMap()
{
}
Client::~Client()
{
}
void Client::onConnect(const char *host,
const short port,
const short current,
const short max)
{
printf("onConnect(%s, %u, %d, %d)\n",host,port,current,max);
}
void Client::onDisconnect(const char *host,
const short port,
const short current,
const short max)
{
printf("onDisconnect(%s, %u, %d, %d)\n",host,port,current,max);
}
void Client::onTest(const unsigned track,
const int resultCode,
const unsigned value,
void *user)
{
printf("onTest(%u, %d, %u, 0x%x)\n", track, resultCode, value, user);
}
void Client::onReplyTest(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyTest(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onReplyMoveStatus(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyMoveStatus(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onReplyValidateMove(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyValidateMove(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onReplyMove(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyMove(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onReplyCharacterList(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyCharacterList(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onReplyServerList(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyServerList(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onReplyDestinationServerList(const unsigned track,
const int resultCode,
void *user)
{
printf("onReplyDestinationServerList(%u, %d, 0x%x)\n", track, resultCode, user);
}
void Client::onServerTest(const unsigned server_track,
const char *game,
const char *param)
{
printf("onServerTest(%u, %s, %s)\n", server_track, game ? game : "(null)", param ? param : "(null)");
replyTest(server_track, 999, 0);
}
void Client::onRequestMoveStatus(const unsigned server_track,
const char *language,
const unsigned transactionID)
{
unsigned status;
unsigned result;
unsigned short * reason = L"makes me horny it does";
printf("#%x onRequestMoveStatus(%s, #%u)\n",
server_track,
language,
transactionID);
if (mTransactionMap.find(transactionID) != mTransactionMap.end())
{
status = CT_STATUS_COMPLETE;
result = mTransactionMap[transactionID];
}
else
{
status = CT_STATUS_UNKNOWN;
result = CT_GAMERESULT_SUCCESS;
}
replyMoveStatus(server_track, status, result, reason, 0);
}
void Client::onRequestValidateMove(const unsigned server_track,
const char *language,
const CTUnicodeChar *sourceServer,
const CTUnicodeChar *destServer,
const CTUnicodeChar *sourceCharacter,
const CTUnicodeChar *destCharacter,
const unsigned uid,
const unsigned destuid, bool withItems)
{
static resultArray[4] = {CT_GAMERESULT_SUCCESS, CT_GAMERESULT_SOFTERROR, CT_GAMERESULT_HARDERROR, CT_GAMERESULT_INVALID_NAME};
static resultIndex = 0;
printf("#%x onRequestValidateMove(%s): server(%S > %S) character (%S > %S) user(%u > %u) %s\n",
server_track,
language,
sourceServer,
destServer,
sourceCharacter,
destCharacter,
uid,
destuid,
withItems ? "/w items" : "/wo items");
int result = resultArray[(resultIndex++)%4];
unsigned short * reason = L"makes me horny it does";
unsigned short * suggested = L"yoda";
replyValidateMove(server_track, result, reason, suggested, 0);
}
void Client::onRequestMove(const unsigned server_track,
const char *language,
const CTUnicodeChar *sourceServer,
const CTUnicodeChar *destServer,
const CTUnicodeChar *sourceCharacter,
const CTUnicodeChar *destCharacter,
const unsigned uid,
const unsigned destuid,
const unsigned transactionID, bool withItems)
{
static resultArray[4] = {CT_GAMERESULT_SUCCESS, CT_GAMERESULT_SOFTERROR, CT_GAMERESULT_HARDERROR, CT_GAMERESULT_INVALID_NAME};
static resultIndex = 0;
printf("#%x onRequestMove(%s, #%u): server(%S > %S) character (%S > %S) user(%u > %u) %s\n",
server_track,
language,
transactionID,
sourceServer,
destServer,
sourceCharacter,
destCharacter,
uid,
destuid,
withItems ? "/w items" : "/wo items");
int result = resultArray[(resultIndex++)%4];
unsigned short * reason = L"makes me horny it does";
unsigned short * suggested = L"yoda";
mTransactionMap[transactionID] = result;
replyMove(server_track, result, reason, 0);
}
void Client::onRequestCharacterList(const unsigned server_track,
const char *language,
const CTUnicodeChar *server,
const unsigned uid)
{
CTServiceCharacter characters[4] =
{
L"wussup1",
L"wussup2",
L"wussup3",
L"wussup4"
};
printf("#%x onRequestCharacterList(%s, %S, %u)\n", server_track, language, server,uid);
replyCharacterList(server_track, CT_GAMERESULT_SUCCESS, 4, characters, 0);
}
void Client::onRequestServerList(const unsigned server_track,
const char *language)
{
CTServiceServer servers[4] =
{
L"crib1",
L"crib2",
L"crib3",
L"crib4"
};
printf("#%x onRequestServerList(%s)\n", server_track, language);
replyServerList(server_track, CT_GAMERESULT_SUCCESS, 4, servers, 0);
}
void Client::onRequestDestinationServerList(const unsigned server_track,
const char *language,
const CTUnicodeChar *character,
const CTUnicodeChar *server)
{
CTServiceServer servers[2] =
{
L"crib5",
L"crib6"
};
printf("#%x onRequestDestinationServerList(%s)\n", server_track, language);
replyDestinationServerList(server_track, CT_GAMERESULT_SUCCESS, 2, servers, 0);
}
}
int main()
{
char * hostList = "sdplatdev2:2000";
char * game = "SWG";
CTService::Client client(hostList, game);
while (!kbhit())
{
client.process();
}
return 0;
}