Expanded network protocol, read more
Not really doing much, just busywork with the server's handlers. I've tweaked the TODO tags as well.
This commit is contained in:
@@ -47,7 +47,7 @@ private:
|
||||
|
||||
int clientIndex;
|
||||
std::string username;
|
||||
//TODO: password
|
||||
//password/auth token
|
||||
|
||||
//bit fields?
|
||||
bool blackListed = false;
|
||||
|
||||
@@ -30,45 +30,45 @@ MonsterManager::~MonsterManager() {
|
||||
}
|
||||
|
||||
int MonsterManager::Create(std::string) {
|
||||
//TODO: Create
|
||||
//Create
|
||||
}
|
||||
|
||||
void MonsterManager::Unload(int uid) {
|
||||
//TODO: Unload
|
||||
//Unload
|
||||
}
|
||||
|
||||
void MonsterManager::UnloadAll() {
|
||||
//TODO: UnloadAll
|
||||
//UnloadAll
|
||||
}
|
||||
|
||||
void MonsterManager::UnloadIf(std::function<bool(std::pair<const int, MonsterData const&>)> fn) {
|
||||
//TODO: UnloadIf
|
||||
//UnloadIf
|
||||
}
|
||||
|
||||
MonsterData* MonsterManager::Get(int uid) {
|
||||
//TODO: Get
|
||||
//Get
|
||||
}
|
||||
|
||||
int MonsterManager::GetLoadedCount() {
|
||||
//TODO: GetLoadedCount
|
||||
//GetLoadedCount
|
||||
}
|
||||
|
||||
std::map<int, MonsterData>* MonsterManager::GetContainer() {
|
||||
//TODO: GetContainer
|
||||
//GetContainer
|
||||
}
|
||||
|
||||
lua_State* MonsterManager::SetLuaState(lua_State* L) {
|
||||
//TODO: SetLuaState
|
||||
//SetLuaState
|
||||
}
|
||||
|
||||
lua_State* MonsterManager::GetLuaState() {
|
||||
//TODO: GetLuaState
|
||||
//GetLuaState
|
||||
}
|
||||
|
||||
sqlite3* MonsterManager::SetDatabase(sqlite3* db) {
|
||||
//TODO: SetDatabase
|
||||
//SetDatabase
|
||||
}
|
||||
|
||||
sqlite3* MonsterManager::GetDatabase() {
|
||||
//TODO: GetDatabase
|
||||
//GetDatabase
|
||||
}
|
||||
|
||||
@@ -66,7 +66,6 @@ static int getWaypointMgr(lua_State* L) {
|
||||
}
|
||||
|
||||
static int initialize(lua_State* L) {
|
||||
//TODO: This could fit into the room system's globals
|
||||
RoomData* room = static_cast<RoomData*>(lua_touserdata(L, 1));
|
||||
|
||||
//set the refs of these parameters (backwards, since it pops from the top of the stack)
|
||||
|
||||
@@ -71,7 +71,7 @@ int unloadRoom(lua_State* L) {
|
||||
}
|
||||
|
||||
int getRoom(lua_State* L) {
|
||||
//TODO: integer vs name for getRoom()
|
||||
//integer vs name for getRoom()
|
||||
RoomManager& roomMgr = RoomManager::GetSingleton();
|
||||
RoomData* room = nullptr;
|
||||
|
||||
|
||||
@@ -65,46 +65,57 @@ private:
|
||||
//handle incoming traffic
|
||||
void HandlePacket(SerialPacket* const);
|
||||
|
||||
//heartbeat sustem
|
||||
void HandlePing(ServerPacket* const);
|
||||
void HandlePong(ServerPacket* const);
|
||||
//heartbeat system
|
||||
void hPing(ServerPacket* const);
|
||||
void hPong(ServerPacket* const);
|
||||
|
||||
//basic connections
|
||||
void HandleBroadcastRequest(ServerPacket* const);
|
||||
void HandleJoinRequest(ClientPacket* const);
|
||||
void HandleLoginRequest(ClientPacket* const);
|
||||
void hBroadcastRequest(ServerPacket* const);
|
||||
void hJoinRequest(ClientPacket* const);
|
||||
void hLoginRequest(ClientPacket* const);
|
||||
|
||||
//client disconnections
|
||||
void HandleLogoutRequest(ClientPacket* const);
|
||||
void HandleDisconnectRequest(ClientPacket* const);
|
||||
void hLogoutRequest(ClientPacket* const);
|
||||
void hDisconnectRequest(ClientPacket* const);
|
||||
|
||||
//server commands
|
||||
void HandleDisconnectForced(ClientPacket* const);
|
||||
void HandleShutdownRequest(ClientPacket* const);
|
||||
void hAdminDisconnectForced(ClientPacket* const);
|
||||
void hAdminShutdownRequest(ClientPacket* const);
|
||||
|
||||
//data management
|
||||
void HandleRegionRequest(RegionPacket* const);
|
||||
void HandleCharacterExists(CharacterPacket* const);
|
||||
|
||||
void SaveServerState();
|
||||
void FullClientUnload(int index);
|
||||
void FullAccountUnload(int index);
|
||||
void FullCharacterUnload(int index);
|
||||
void hRegionRequest(RegionPacket* const);
|
||||
void hQueryCharacterExists(CharacterPacket* const);
|
||||
void hQueryCharacterStats(CharacterPacket* const);
|
||||
void hQueryCharacterLocation(CharacterPacket* const);
|
||||
void hQueryMonsterExists(MonsterPacket* const);
|
||||
void hQueryMonsterStats(MonsterPacket* const);
|
||||
void hQueryMonsterLocation(MonsterPacket* const);
|
||||
|
||||
//character management
|
||||
void HandleCharacterCreate(CharacterPacket* const);
|
||||
void HandleCharacterDelete(CharacterPacket* const);
|
||||
void HandleCharacterLoad(CharacterPacket* const);
|
||||
void HandleCharacterUnload(CharacterPacket* const);
|
||||
void hCharacterCreate(CharacterPacket* const);
|
||||
void hCharacterDelete(CharacterPacket* const);
|
||||
void hCharacterLoad(CharacterPacket* const);
|
||||
void hCharacterUnload(CharacterPacket* const);
|
||||
|
||||
//character movement
|
||||
void HandleCharacterMovement(CharacterPacket* const);
|
||||
void HandleCharacterAttack(CharacterPacket* const);
|
||||
void hCharacterMovement(CharacterPacket* const);
|
||||
void hCharacterAttack(CharacterPacket* const);
|
||||
void hCharacterDamage(CharacterPacket* const);
|
||||
|
||||
//character management
|
||||
void hMonsterDamage(MonsterPacket* const);
|
||||
|
||||
//chat
|
||||
void hTextBroadcast(TextPacket* const);
|
||||
|
||||
//utility methods
|
||||
void PumpPacket(SerialPacket* const);
|
||||
void PumpPacketProximity(SerialPacket* const argPacket, int roomIndex, Vector2 position, int distance);
|
||||
void CopyCharacterToPacket(CharacterPacket* const packet, int characterIndex);
|
||||
void SaveServerState();
|
||||
void FullClientUnload(int index);
|
||||
void FullAccountUnload(int index);
|
||||
void FullCharacterUnload(int index);
|
||||
|
||||
//APIs and utilities
|
||||
sqlite3* database = nullptr;
|
||||
|
||||
@@ -144,12 +144,12 @@ void ServerApplication::HandleCharacterUnload(CharacterPacket* const argPacket)
|
||||
|
||||
AccountData* accountData = accountMgr.Get(characterData->GetOwner());
|
||||
if (!accountData) {
|
||||
return; //TODO: logic_error
|
||||
return;
|
||||
}
|
||||
|
||||
ClientData* clientData = clientMgr.Get(accountData->GetClientIndex());
|
||||
if (!clientData) {
|
||||
return; //TODO: logic_error
|
||||
return;
|
||||
}
|
||||
|
||||
//check for fraud
|
||||
@@ -175,7 +175,7 @@ void ServerApplication::HandleCharacterUnload(CharacterPacket* const argPacket)
|
||||
//character movement
|
||||
//-------------------------
|
||||
|
||||
//TODO: Could replace this verbosity with a "verify" method, taking a client, account and character ptr as arguments
|
||||
//TODO: (9) Could replace this verbosity with a "verify" method, taking a client, account and character ptr as arguments
|
||||
|
||||
void ServerApplication::HandleCharacterMovement(CharacterPacket* const argPacket) {
|
||||
//get the specified objects
|
||||
@@ -197,7 +197,7 @@ void ServerApplication::HandleCharacterMovement(CharacterPacket* const argPacket
|
||||
|
||||
//check if allowed
|
||||
if (characterData->GetOwner() != argPacket->accountIndex && !accountData->GetModerator() && !accountData->GetAdministrator()) {
|
||||
//TODO: send to the client?
|
||||
//TODO: (9) send to the client?
|
||||
std::cerr << "Failed to set character motion due to lack of permissions targeting uid(" << argPacket->characterIndex << ")" << std::endl;
|
||||
return;
|
||||
}
|
||||
@@ -235,5 +235,5 @@ void ServerApplication::HandleCharacterMovement(CharacterPacket* const argPacket
|
||||
}
|
||||
|
||||
void ServerApplication::HandleCharacterAttack(CharacterPacket* const) {
|
||||
//TODO: bounce graphical attack data
|
||||
//TODO: (9) bounce graphical attack data
|
||||
}
|
||||
@@ -172,5 +172,5 @@ void ServerApplication::HandleDisconnectRequest(ClientPacket* const argPacket) {
|
||||
}
|
||||
|
||||
void ServerApplication::HandleDisconnectForced(ClientPacket* const argPacket) {
|
||||
//TODO: HandleDisconnectForced
|
||||
//HandleDisconnectForced
|
||||
}
|
||||
@@ -28,10 +28,10 @@
|
||||
//General data management
|
||||
//-------------------------
|
||||
|
||||
//TODO: Queries
|
||||
//NOTE: Queries go here
|
||||
|
||||
void ServerApplication::SaveServerState() {
|
||||
//TODO: SaveServerState
|
||||
//SaveServerState
|
||||
}
|
||||
|
||||
//-------------------------
|
||||
|
||||
+44
-33
@@ -128,7 +128,6 @@ void ServerApplication::Init(int argc, char* argv[]) {
|
||||
//debug output
|
||||
//-------------------------
|
||||
|
||||
//TODO: enable/disable these with a switch
|
||||
#define DEBUG_OUTPUT_VAR(x) std::cout << "\t" << #x << ": " << x << std::endl;
|
||||
|
||||
std::cout << "Internal sizes:" << std::endl;
|
||||
@@ -195,7 +194,7 @@ void ServerApplication::Proc() {
|
||||
void ServerApplication::Quit() {
|
||||
std::cout << "Shutting down" << std::endl;
|
||||
|
||||
//TODO: save the server state
|
||||
//TODO: (9) save the server state
|
||||
|
||||
//close the managers
|
||||
accountMgr.UnloadAll();
|
||||
@@ -221,84 +220,96 @@ void ServerApplication::HandlePacket(SerialPacket* const argPacket) {
|
||||
switch(argPacket->type) {
|
||||
//heartbeat system
|
||||
case SerialPacketType::PING:
|
||||
HandlePing(static_cast<ServerPacket*>(argPacket));
|
||||
hPing(static_cast<ServerPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::PONG:
|
||||
HandlePong(static_cast<ServerPacket*>(argPacket));
|
||||
hPong(static_cast<ServerPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//client connections
|
||||
case SerialPacketType::BROADCAST_REQUEST:
|
||||
HandleBroadcastRequest(static_cast<ServerPacket*>(argPacket));
|
||||
hBroadcastRequest(static_cast<ServerPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::JOIN_REQUEST:
|
||||
HandleJoinRequest(static_cast<ClientPacket*>(argPacket));
|
||||
hJoinRequest(static_cast<ClientPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::LOGIN_REQUEST:
|
||||
HandleLoginRequest(static_cast<ClientPacket*>(argPacket));
|
||||
hLoginRequest(static_cast<ClientPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//client disconnections
|
||||
case SerialPacketType::LOGOUT_REQUEST:
|
||||
HandleLogoutRequest(static_cast<ClientPacket*>(argPacket));
|
||||
hLogoutRequest(static_cast<ClientPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::DISCONNECT_REQUEST:
|
||||
HandleDisconnectRequest(static_cast<ClientPacket*>(argPacket));
|
||||
hDisconnectRequest(static_cast<ClientPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//server commands
|
||||
// case SerialPacketType::DISCONNECT_FORCED:
|
||||
// HandleDisconnectForced(static_cast<ClientPacket*>(argPacket));
|
||||
// break;
|
||||
case SerialPacketType::SHUTDOWN_REQUEST:
|
||||
HandleShutdownRequest(static_cast<ClientPacket*>(argPacket));
|
||||
case SerialPacketType::ADMIN_DISCONNECT_FORCED:
|
||||
hAdminDisconnectForced(static_cast<ClientPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::ADMIN_SHUTDOWN_REQUEST:
|
||||
hAdminShutdownRequest(static_cast<ClientPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//data management & queries
|
||||
case SerialPacketType::REGION_REQUEST:
|
||||
HandleRegionRequest(static_cast<RegionPacket*>(argPacket));
|
||||
hRegionRequest(static_cast<RegionPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::QUERY_CHARACTER_EXISTS:
|
||||
HandleCharacterExists(static_cast<CharacterPacket*>(argPacket));
|
||||
hQueryCharacterExists(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::QUERY_CHARACTER_STATS:
|
||||
hQueryCharacterStats(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
||||
hQueryCharacterLocation(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
case SerialPacketType::QUERY_MONSTER_EXISTS:
|
||||
// HandleMonsterExists(static_cast<MonsterPacket*>(argPacket));
|
||||
hQueryMonsterExists(static_cast<MonsterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::QUERY_MONSTER_STATS:
|
||||
hQueryMonsterStats(static_cast<MonsterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::QUERY_MONSTER_LOCATION:
|
||||
hQueryMonsterLocation(static_cast<MonsterPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//character management
|
||||
case SerialPacketType::CHARACTER_CREATE:
|
||||
HandleCharacterCreate(static_cast<CharacterPacket*>(argPacket));
|
||||
hCharacterCreate(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::CHARACTER_DELETE:
|
||||
HandleCharacterDelete(static_cast<CharacterPacket*>(argPacket));
|
||||
hCharacterDelete(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::CHARACTER_LOAD:
|
||||
HandleCharacterLoad(static_cast<CharacterPacket*>(argPacket));
|
||||
hCharacterLoad(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::CHARACTER_UNLOAD:
|
||||
HandleCharacterUnload(static_cast<CharacterPacket*>(argPacket));
|
||||
hCharacterUnload(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//character movement
|
||||
case SerialPacketType::CHARACTER_MOVEMENT:
|
||||
HandleCharacterMovement(static_cast<CharacterPacket*>(argPacket));
|
||||
hCharacterMovement(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::CHARACTER_ATTACK:
|
||||
HandleCharacterAttack(static_cast<CharacterPacket*>(argPacket));
|
||||
hCharacterAttack(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::CHARACTER_DAMAGE:
|
||||
hCharacterDamage(static_cast<CharacterPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//monster management
|
||||
case SerialPacketType::MONSTER_CREATE:
|
||||
// HandleMonsterCreate(static_cast<MonsterPacket*>(argPacket));
|
||||
case SerialPacketType::MONSTER_DAMAGE:
|
||||
hMonsterDamage(static_cast<MonsterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::MONSTER_DELETE:
|
||||
// HandleMonsterDelete(static_cast<MonsterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::MONSTER_MOVEMENT:
|
||||
// HandleMonsterMovement(static_cast<MonsterPacket*>(argPacket));
|
||||
break;
|
||||
case SerialPacketType::MONSTER_ATTACK:
|
||||
// HandleMonsterAttack(static_cast<MonsterPacket*>(argPacket));
|
||||
|
||||
//chat
|
||||
case SerialPacketType::TEXT_BROADCAST:
|
||||
hTextBroadcast(static_cast<TextPacket*>(argPacket));
|
||||
break;
|
||||
|
||||
//handle errors
|
||||
|
||||
@@ -27,12 +27,10 @@
|
||||
|
||||
static int create(lua_State* L) {
|
||||
WaypointManager* mgr = static_cast<WaypointManager*>(lua_touserdata(L, 1));
|
||||
//TODO: create
|
||||
}
|
||||
|
||||
static int unload(lua_State* L) {
|
||||
WaypointManager* mgr = static_cast<WaypointManager*>(lua_touserdata(L, 1));
|
||||
//TODO: create
|
||||
}
|
||||
|
||||
static int getWaypoint(lua_State* L) {
|
||||
|
||||
Reference in New Issue
Block a user