Rearranged the methods
This commit is contained in:
@@ -29,7 +29,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
//Define the public members
|
//public methods
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
|
||||||
void ServerApplication::Init(int argc, char** argv) {
|
void ServerApplication::Init(int argc, char** argv) {
|
||||||
@@ -75,17 +75,13 @@ void ServerApplication::Init(int argc, char** argv) {
|
|||||||
//Setup the objects
|
//Setup the objects
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
|
||||||
//setup the map object
|
accountMgr.SetDatabase(database);
|
||||||
regionPager.GetAllocator()->SetLuaState(luaState);
|
characterMgr.SetDatabase(database);
|
||||||
regionPager.GetFormat()->SetLuaState(luaState);
|
|
||||||
regionPager.GetFormat()->SetSaveDir(config["dir.maps"] + config["map.savename"]);
|
|
||||||
std::cout << "Prepared the map system" << std::endl;
|
|
||||||
|
|
||||||
//push the pager onto the lua registry
|
combatMgr.SetLuaState(luaState);
|
||||||
lua_pushstring(luaState, "pager");
|
roomMgr.SetLuaState(luaState);
|
||||||
lua_pushlightuserdata(luaState, reinterpret_cast<void*>(®ionPager));
|
|
||||||
lua_settable(luaState, LUA_REGISTRYINDEX);
|
std::cout << "Internal managers ready" << std::endl;
|
||||||
std::cout << "Registered the map system in lua" << std::endl;
|
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
//Run the startup scripts
|
//Run the startup scripts
|
||||||
@@ -103,16 +99,21 @@ void ServerApplication::Init(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
std::cout << "Completed lua's setup script" << std::endl;
|
std::cout << "Completed lua's setup script" << std::endl;
|
||||||
|
|
||||||
|
//-------------------------
|
||||||
//debug output
|
//debug output
|
||||||
|
//-------------------------
|
||||||
|
|
||||||
std::cout << "Internal sizes:" << std::endl;
|
std::cout << "Internal sizes:" << std::endl;
|
||||||
std::cout << "\tsizeof(SerialPacket): " << sizeof(SerialPacket) << std::endl;
|
std::cout << "\tTile Size: " << sizeof(Region::type_t) << std::endl;
|
||||||
std::cout << "\tPACKET_BUFFER_SIZE: " << PACKET_BUFFER_SIZE << std::endl;
|
std::cout << "\tRegion Format: " << REGION_WIDTH << ", " << REGION_HEIGHT << ", " << REGION_DEPTH << << std::endl;
|
||||||
|
std::cout << "\tRegion Content Footprint: " << REGION_WIDTH * REGION_HEIGHT * REGION_DEPTH * sizeof(Region::type_t) << std::endl;
|
||||||
|
std::cout << "\tPACKET_BUFFER_SIZE (max size): " << PACKET_BUFFER_SIZE << std::endl;
|
||||||
|
|
||||||
|
//-------------------------
|
||||||
//finalize the startup
|
//finalize the startup
|
||||||
std::cout << "Startup completed successfully" << std::endl;
|
//-------------------------
|
||||||
|
|
||||||
//debugging
|
std::cout << "Startup completed successfully" << std::endl;
|
||||||
//
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerApplication::Proc() {
|
void ServerApplication::Proc() {
|
||||||
@@ -156,7 +157,7 @@ void ServerApplication::Quit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
//Define the network switch
|
//handle incoming traffic
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
|
||||||
void ServerApplication::HandlePacket(SerialPacket packet) {
|
void ServerApplication::HandlePacket(SerialPacket packet) {
|
||||||
@@ -191,9 +192,7 @@ void ServerApplication::HandlePacket(SerialPacket packet) {
|
|||||||
HandleCharacterDelete(packet);
|
HandleCharacterDelete(packet);
|
||||||
break;
|
break;
|
||||||
case SerialPacketType::CHARACTER_UPDATE:
|
case SerialPacketType::CHARACTER_UPDATE:
|
||||||
HandleCharacterUpdate(packet);
|
case SerialPacketType::CHARACTER_STATS_REQUEST: //TODO: ?
|
||||||
break;
|
|
||||||
case SerialPacketType::CHARACTER_STATS_REQUEST:
|
|
||||||
HandleCharacterUpdate(packet);
|
HandleCharacterUpdate(packet);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -213,7 +212,7 @@ void ServerApplication::HandlePacket(SerialPacket packet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
//Define the network handlers
|
//basic connections
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
|
||||||
void ServerApplication::HandleBroadcastRequest(SerialPacket packet) {
|
void ServerApplication::HandleBroadcastRequest(SerialPacket packet) {
|
||||||
@@ -344,6 +343,37 @@ void ServerApplication::HandleShutdown(SerialPacket packet) {
|
|||||||
std::cout << "Shutdown signal accepted" << std::endl;
|
std::cout << "Shutdown signal accepted" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------
|
||||||
|
//map management
|
||||||
|
//-------------------------
|
||||||
|
|
||||||
|
void ServerApplication::HandleRegionRequest(SerialPacket packet) {
|
||||||
|
//TODO: this should be moved elsewhere
|
||||||
|
packet.meta.type = SerialPacket::Type::REGION_CONTENT;
|
||||||
|
packet.regionInfo.region = regionPager.GetRegion(packet.regionInfo.x, packet.regionInfo.y);
|
||||||
|
|
||||||
|
//send the content
|
||||||
|
network.SendTo(&packet.meta.srcAddress, &packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------
|
||||||
|
//combat management
|
||||||
|
//-------------------------
|
||||||
|
|
||||||
|
//TODO: combat management
|
||||||
|
|
||||||
|
//-------------------------
|
||||||
|
//Character Management
|
||||||
|
//-------------------------
|
||||||
|
|
||||||
|
void ServerApplication::HandleCharacterNew(SerialPacket) {
|
||||||
|
//TODO: fill this
|
||||||
|
}
|
||||||
|
|
||||||
|
void ServerApplication::HandleCharacterDelete(SerialPacket) {
|
||||||
|
//TODO: fill this
|
||||||
|
}
|
||||||
|
|
||||||
void ServerApplication::HandleCharacterUpdate(SerialPacket packet) {
|
void ServerApplication::HandleCharacterUpdate(SerialPacket packet) {
|
||||||
//TODO: this should be moved elsewhere
|
//TODO: this should be moved elsewhere
|
||||||
if (characterMap.find(packet.characterInfo.characterIndex) == characterMap.end()) {
|
if (characterMap.find(packet.characterInfo.characterIndex) == characterMap.end()) {
|
||||||
@@ -357,14 +387,17 @@ void ServerApplication::HandleCharacterUpdate(SerialPacket packet) {
|
|||||||
PumpPacket(packet);
|
PumpPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ServerApplication::HandleRegionRequest(SerialPacket packet) {
|
//-------------------------
|
||||||
//TODO: this should be moved elsewhere
|
//enemy management
|
||||||
packet.meta.type = SerialPacket::Type::REGION_CONTENT;
|
//-------------------------
|
||||||
packet.regionInfo.region = regionPager.GetRegion(packet.regionInfo.x, packet.regionInfo.y);
|
|
||||||
|
|
||||||
//send the content
|
//TODO: enemy management
|
||||||
network.SendTo(&packet.meta.srcAddress, &packet);
|
|
||||||
}
|
//-------------------------
|
||||||
|
//utility methods
|
||||||
|
//-------------------------
|
||||||
|
|
||||||
|
//TODO: a function that only sends to characters in a certain proximity
|
||||||
|
|
||||||
void ServerApplication::PumpPacket(SerialPacket packet) {
|
void ServerApplication::PumpPacket(SerialPacket packet) {
|
||||||
//NOTE: I don't really like this, but it'll do for now
|
//NOTE: I don't really like this, but it'll do for now
|
||||||
@@ -380,10 +413,3 @@ void ServerApplication::PumpCharacterUnload(int uid) {
|
|||||||
delPacket.characterInfo.characterIndex = uid;
|
delPacket.characterInfo.characterIndex = uid;
|
||||||
PumpPacket(delPacket);
|
PumpPacket(delPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------
|
|
||||||
//Define the utility methods
|
|
||||||
//-------------------------
|
|
||||||
|
|
||||||
//TODO: utility methods
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,22 +24,19 @@
|
|||||||
|
|
||||||
//server specific stuff
|
//server specific stuff
|
||||||
#include "client_data.hpp"
|
#include "client_data.hpp"
|
||||||
#include "account_data.hpp"
|
#include "account_manager.hpp"
|
||||||
#include "character_data.hpp"
|
#include "character_manager.hpp"
|
||||||
#include "combat_data.hpp"
|
#include "combat_manager.hpp"
|
||||||
#include "enemy_factory_generic.hpp"
|
#include "room_manager.hpp"
|
||||||
|
|
||||||
//maps
|
//maps
|
||||||
#include "map_allocator.hpp"
|
#include "map_allocator.hpp"
|
||||||
#include "map_file_format.hpp"
|
#include "map_file_format.hpp"
|
||||||
#include "region_pager.hpp"
|
#include "region_pager.hpp"
|
||||||
|
|
||||||
//networking
|
//common utilities
|
||||||
#include "udp_network_utility.hpp"
|
#include "udp_network_utility.hpp"
|
||||||
|
|
||||||
//common
|
|
||||||
#include "config_utility.hpp"
|
#include "config_utility.hpp"
|
||||||
#include "vector2.hpp"
|
|
||||||
|
|
||||||
//APIs
|
//APIs
|
||||||
#include "lua/lua.hpp"
|
#include "lua/lua.hpp"
|
||||||
@@ -51,10 +48,9 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
//The main application class
|
//The main application class
|
||||||
//TODO: modulate this god class
|
|
||||||
class ServerApplication {
|
class ServerApplication {
|
||||||
public:
|
public:
|
||||||
//standard functions
|
//public methods
|
||||||
ServerApplication() = default;
|
ServerApplication() = default;
|
||||||
~ServerApplication() = default;
|
~ServerApplication() = default;
|
||||||
|
|
||||||
@@ -63,47 +59,55 @@ public:
|
|||||||
void Quit();
|
void Quit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
//handle incoming traffic
|
||||||
void HandlePacket(SerialPacket);
|
void HandlePacket(SerialPacket);
|
||||||
|
|
||||||
//handle incoming traffic
|
//basic connections
|
||||||
void HandleBroadcastRequest(SerialPacket);
|
void HandleBroadcastRequest(SerialPacket);
|
||||||
void HandleJoinRequest(SerialPacket);
|
void HandleJoinRequest(SerialPacket);
|
||||||
void HandleSynchronize(SerialPacket);
|
|
||||||
void HandleDisconnect(SerialPacket);
|
void HandleDisconnect(SerialPacket);
|
||||||
void HandleShutdown(SerialPacket);
|
void HandleShutdown(SerialPacket);
|
||||||
void HandleCharacterUpdate(SerialPacket);
|
|
||||||
|
//map management
|
||||||
void HandleRegionRequest(SerialPacket);
|
void HandleRegionRequest(SerialPacket);
|
||||||
|
|
||||||
|
//combat management
|
||||||
|
//TODO: combat management
|
||||||
|
|
||||||
|
//character management
|
||||||
|
void HandleCharacterNew(SerialPacket);
|
||||||
|
void HandleCharacterDelete(SerialPacket);
|
||||||
|
void HandleCharacterUpdate(SerialPacket);
|
||||||
|
|
||||||
|
//enemy management
|
||||||
|
//TODO: enemy management
|
||||||
|
|
||||||
|
//mismanagement
|
||||||
|
void HandleSynchronize(SerialPacket);
|
||||||
|
|
||||||
|
//utility methods
|
||||||
//TODO: a function that only sends to characters in a certain proximity
|
//TODO: a function that only sends to characters in a certain proximity
|
||||||
void PumpPacket(SerialPacket);
|
void PumpPacket(SerialPacket);
|
||||||
void PumpCharacterUnload(int uid);
|
void PumpCharacterUnload(int uid);
|
||||||
|
|
||||||
//TODO: Account management
|
//APIs and utilities
|
||||||
//TODO: character management
|
|
||||||
//TODO: combat management
|
|
||||||
|
|
||||||
//APIs
|
|
||||||
UDPNetworkUtility network;
|
|
||||||
sqlite3* database = nullptr;
|
sqlite3* database = nullptr;
|
||||||
lua_State* luaState = nullptr;
|
lua_State* luaState = nullptr;
|
||||||
|
UDPNetworkUtility network;
|
||||||
|
ConfigUtility config;
|
||||||
|
|
||||||
//server tables
|
//server tables
|
||||||
std::map<int, ClientData> clientMap;
|
std::map<int, ClientData> clientMap;
|
||||||
std::map<int, CombatData> combatMap;
|
|
||||||
std::map<int, EnemyData> enemyMap;
|
|
||||||
|
|
||||||
//maps
|
//managers
|
||||||
//TODO: I need to handle multiple map objects
|
AccountManager accountMgr;
|
||||||
//TODO: Unload regions that are distant from any characters
|
CharacterManager characterMgr;
|
||||||
RegionPager<LuaAllocator, LuaFormat> regionPager;
|
CombatManager combatMgr;
|
||||||
EnemyFactoryGeneric enemyFactory;
|
RoomManager roomMgr;
|
||||||
|
|
||||||
//misc
|
//misc
|
||||||
bool running = true;
|
bool running = true;
|
||||||
ConfigUtility config;
|
|
||||||
int clientUID = 0;
|
int clientUID = 0;
|
||||||
int combatUID = 0;
|
|
||||||
int enemyUID = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user