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:
Kayne Ruse
2015-02-13 02:05:10 +11:00
parent bad6cc2fab
commit ca2d4c9217
32 changed files with 196 additions and 184 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ private:
int clientIndex;
std::string username;
//TODO: password
//password/auth token
//bit fields?
bool blackListed = false;
+11 -11
View File
@@ -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
}
-1
View File
@@ -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)
+1 -1
View File
@@ -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;
+34 -23
View File
@@ -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;
+5 -5
View File
@@ -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
}
+1 -1
View File
@@ -172,5 +172,5 @@ void ServerApplication::HandleDisconnectRequest(ClientPacket* const argPacket) {
}
void ServerApplication::HandleDisconnectForced(ClientPacket* const argPacket) {
//TODO: HandleDisconnectForced
//HandleDisconnectForced
}
+2 -2
View File
@@ -28,10 +28,10 @@
//General data management
//-------------------------
//TODO: Queries
//NOTE: Queries go here
void ServerApplication::SaveServerState() {
//TODO: SaveServerState
//SaveServerState
}
//-------------------------
+44 -33
View File
@@ -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) {