diff --git a/client/base_scene.cpp b/client/base_scene.cpp index ba62b4c..816f80b 100644 --- a/client/base_scene.cpp +++ b/client/base_scene.cpp @@ -127,7 +127,7 @@ void BaseScene::HandleEvents() { break; #ifdef USE_EVENT_JOYSTICK - //TODO: joystick/gamepad support + //EMPTY #endif #ifdef USE_EVENT_UNKNOWN diff --git a/client/base_scene.hpp b/client/base_scene.hpp index 453ab75..aae6161 100644 --- a/client/base_scene.hpp +++ b/client/base_scene.hpp @@ -59,7 +59,7 @@ protected: virtual void KeyUp(SDL_KeyboardEvent const&) {} #ifdef USE_EVENT_JOYSTICK - //TODO: joystick/gamepad support + //EMPTY #endif #ifdef USE_EVENT_UNKNOWN diff --git a/client/client_application.cpp b/client/client_application.cpp index 70957fe..21ad65e 100644 --- a/client/client_application.cpp +++ b/client/client_application.cpp @@ -83,7 +83,6 @@ void ClientApplication::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; diff --git a/client/entities/base_monster.cpp b/client/entities/base_monster.cpp index f2d6049..2d979e0 100644 --- a/client/entities/base_monster.cpp +++ b/client/entities/base_monster.cpp @@ -24,7 +24,7 @@ #include "config_utility.hpp" void BaseMonster::CorrectSprite() { - //TODO: CorrectSprite + //TODO: (1) CorrectSprite } std::string BaseMonster::SetHandle(std::string s) { diff --git a/client/gameplay_scenes/in_world.hpp b/client/gameplay_scenes/in_world.hpp index 7dfa1fc..bbf4705 100644 --- a/client/gameplay_scenes/in_world.hpp +++ b/client/gameplay_scenes/in_world.hpp @@ -142,7 +142,7 @@ protected: LocalCharacter* localCharacter = nullptr; //heartbeat - //TODO: Heartbeat needs it's own utility + //TODO: (9) Heartbeat needs it's own utility typedef std::chrono::steady_clock Clock; Clock::time_point lastBeat = Clock::now(); int attemptedBeats = 0; diff --git a/client/gameplay_scenes/in_world_characters.cpp b/client/gameplay_scenes/in_world_characters.cpp index 8002814..328cfd7 100644 --- a/client/gameplay_scenes/in_world_characters.cpp +++ b/client/gameplay_scenes/in_world_characters.cpp @@ -51,7 +51,7 @@ void InWorld::HandleCharacterCreate(CharacterPacket* const argPacket) { //fill the character's info character->SetOrigin(argPacket->origin); character->SetMotion(argPacket->motion); - character->SetBounds({CHARACTER_BOUNDS_X, CHARACTER_BOUNDS_Y, CHARACTER_BOUNDS_WIDTH, CHARACTER_BOUNDS_HEIGHT}); //TODO: send the bounds from the server + character->SetBounds({CHARACTER_BOUNDS_X, CHARACTER_BOUNDS_Y, CHARACTER_BOUNDS_WIDTH, CHARACTER_BOUNDS_HEIGHT}); //TODO: (1) send the bounds from the server character->SetHandle(argPacket->handle); character->SetAvatar(argPacket->avatar); character->SetOwner(argPacket->accountIndex); @@ -128,7 +128,7 @@ void InWorld::HandleCharacterQueryExists(CharacterPacket* const argPacket) { } void InWorld::HandleCharacterMovement(CharacterPacket* const argPacket) { - //TODO: Authentication + //TODO: (1) Authentication if (argPacket->characterIndex == characterIndex) { return; } @@ -144,7 +144,7 @@ void InWorld::HandleCharacterMovement(CharacterPacket* const argPacket) { } void InWorld::HandleCharacterAttack(CharacterPacket* const argPacket) { - //TODO: attack animation + //TODO: (1) attack animation } //------------------------- diff --git a/client/gameplay_scenes/in_world_monsters.cpp b/client/gameplay_scenes/in_world_monsters.cpp index d0e3b2c..c9f3a45 100644 --- a/client/gameplay_scenes/in_world_monsters.cpp +++ b/client/gameplay_scenes/in_world_monsters.cpp @@ -110,5 +110,5 @@ void InWorld::HandleMonsterMovement(MonsterPacket* const argPacket) { } void InWorld::HandleMonsterAttack(MonsterPacket* const argPacket) { - //TODO: HandleMonsterAttack + //TODO: (1) HandleMonsterAttack } \ No newline at end of file diff --git a/client/gameplay_scenes/in_world_scene.cpp b/client/gameplay_scenes/in_world_scene.cpp index 46db8e0..44004ea 100644 --- a/client/gameplay_scenes/in_world_scene.cpp +++ b/client/gameplay_scenes/in_world_scene.cpp @@ -60,12 +60,10 @@ InWorld::InWorld(int* const argClientIndex, int* const argAccountIndex): shutDownButton.SetText("Shut Down"); //load the tilesheet - //TODO: add the tilesheet to the map system - //TODO: Tile size and tile sheet should be loaded elsewhere + //TODO: (9) Tile size and tile sheet should be loaded elsewhere tileSheet.Load(config["dir.tilesets"] + "overworld.bmp", 32, 32); //Send the character data - //TODO: login scene, prompt, etc. CharacterPacket newPacket; newPacket.type = SerialPacketType::CHARACTER_LOAD; strncpy(newPacket.handle, config["client.handle"].c_str(), PACKET_STRING_SIZE); @@ -175,11 +173,10 @@ void InWorld::Render(SDL_Surface* const screen) { //draw the entities for (auto& it : characterMap) { - //TODO: depth ordering + //TODO: (1) depth ordering it.second.DrawTo(screen, camera.x, camera.y); } for (auto& it : monsterMap) { - //TODO: depth ordering it.second.DrawTo(screen, camera.x, camera.y); } @@ -224,7 +221,7 @@ void InWorld::KeyDown(SDL_KeyboardEvent const& key) { //hotkeys switch(key.keysym.sym) { case SDLK_ESCAPE: - //TODO: the escape key should actually control menus and stuff + //TODO: (9) the escape key should actually control menus and stuff SendLogoutRequest(); return; } diff --git a/client/menu_scenes/lobby_menu.cpp b/client/menu_scenes/lobby_menu.cpp index befc6f5..95704a0 100644 --- a/client/menu_scenes/lobby_menu.cpp +++ b/client/menu_scenes/lobby_menu.cpp @@ -100,14 +100,14 @@ void LobbyMenu::FrameEnd() { } void LobbyMenu::Render(SDL_Surface* const screen) { - //TODO: I need a proper UI system for the entire client and the editor + //TODO: (9) I need a proper UI system for the entire client and the editor //UI search.DrawTo(screen); join.DrawTo(screen); back.DrawTo(screen); - //TODO: draw headers for the server list + //TODO: (9) draw headers for the server list for (int i = 0; i < serverInfo.size(); i++) { //draw the selected server's highlight if (selection == &serverInfo[i]) { @@ -131,8 +131,6 @@ void LobbyMenu::Render(SDL_Surface* const screen) { if (!serverInfo[i].compatible) { font.DrawStringTo("?", screen, listBox.x - font.GetCharW(), listBox.y + i*listBox.h); } - - //TODO: ping/delay? } } @@ -254,11 +252,11 @@ void LobbyMenu::HandleLoginResponse(ClientPacket* const argPacket) { } void LobbyMenu::HandleJoinRejection(TextPacket* const argPacket) { - //TODO: Better output for join rejection + //TODO: (9) Better output for join rejection } void LobbyMenu::HandleLoginRejection(TextPacket* const argPacket) { - //TODO: Better output for login rejection + //TODO: (9) Better output for login rejection } //------------------------- diff --git a/client/menu_scenes/main_menu.cpp b/client/menu_scenes/main_menu.cpp index 064b485..cd62757 100644 --- a/client/menu_scenes/main_menu.cpp +++ b/client/menu_scenes/main_menu.cpp @@ -88,8 +88,7 @@ void MainMenu::Render(SDL_Surface* const screen) { //text font.DrawStringTo("Thanks for playing!", screen, 50, screen->h - 50 - image.GetClipH() * 2); font.DrawStringTo("You can get the latest version at: ", screen, 50, screen->h - 50 - image.GetClipH() * 1); - font.DrawStringTo("https://github.com/Ratstail91/Tortuga", screen, 50, screen->h - 50 - image.GetClipH() * 0); - //TODO: replace this with a website address + font.DrawStringTo("krgamestudios.com", screen, 50, screen->h - 50 - image.GetClipH() * 0); } //------------------------- @@ -109,7 +108,7 @@ void MainMenu::MouseButtonDown(SDL_MouseButtonEvent const& button) { } void MainMenu::MouseButtonUp(SDL_MouseButtonEvent const& button) { - //TODO: Buttons should only register as "selected" when the left button is used + //TODO: (9) Buttons should only register as "selected" when the left button is used if (startButton.MouseButtonUp(button) == Button::State::HOVER) { SetNextScene(SceneList::LOBBYMENU); } diff --git a/client/menu_scenes/options_menu.hpp b/client/menu_scenes/options_menu.hpp index bb15569..a828627 100644 --- a/client/menu_scenes/options_menu.hpp +++ b/client/menu_scenes/options_menu.hpp @@ -28,7 +28,7 @@ #include "raster_font.hpp" #include "button.hpp" -//TODO: The options screen needs to be USED +//NOTE: The options screen needs to be USED class OptionsMenu : public BaseScene { public: //Public access members diff --git a/common/network/packet_types/character_packet.hpp b/common/network/packet_types/character_packet.hpp index bd3d57e..c7e1040 100644 --- a/common/network/packet_types/character_packet.hpp +++ b/common/network/packet_types/character_packet.hpp @@ -34,14 +34,11 @@ struct CharacterPacket : SerialPacketBase { //the owner int accountIndex; - //TODO: Authentication token? //location int roomIndex; Vector2 origin; Vector2 motion; - - //TODO: gameplay components: equipment, items, buffs, debuffs... }; void serializeCharacter(void* buffer, CharacterPacket* packet); diff --git a/common/network/packet_types/client_packet.hpp b/common/network/packet_types/client_packet.hpp index 32efb06..2d684b1 100644 --- a/common/network/packet_types/client_packet.hpp +++ b/common/network/packet_types/client_packet.hpp @@ -28,6 +28,7 @@ struct ClientPacket : SerialPacketBase { int clientIndex; int accountIndex; char username[PACKET_STRING_SIZE]; + //TODO: (9) password, auth token }; void serializeClient(void* buffer, ClientPacket* packet); diff --git a/common/network/packet_types/monster_packet.cpp b/common/network/packet_types/monster_packet.cpp index 2b0c933..c365207 100644 --- a/common/network/packet_types/monster_packet.cpp +++ b/common/network/packet_types/monster_packet.cpp @@ -44,8 +44,6 @@ void serializeMonster(void* buffer, MonsterPacket* packet) { serialCopy(&buffer, &packet->origin.y, sizeof(double)); serialCopy(&buffer, &packet->motion.x, sizeof(double)); serialCopy(&buffer, &packet->motion.y, sizeof(double)); - - //TODO: attack data } void deserializeMonster(void* buffer, MonsterPacket* packet) { @@ -69,6 +67,4 @@ void deserializeMonster(void* buffer, MonsterPacket* packet) { deserialCopy(&buffer, &packet->origin.y, sizeof(double)); deserialCopy(&buffer, &packet->motion.x, sizeof(double)); deserialCopy(&buffer, &packet->motion.y, sizeof(double)); - - //TODO: attack data } diff --git a/common/network/packet_types/monster_packet.hpp b/common/network/packet_types/monster_packet.hpp index 97ebd38..1dfae0c 100644 --- a/common/network/packet_types/monster_packet.hpp +++ b/common/network/packet_types/monster_packet.hpp @@ -38,8 +38,6 @@ struct MonsterPacket : SerialPacketBase { int roomIndex; Vector2 origin; Vector2 motion; - - //TODO: attack data }; void serializeMonster(void* buffer, MonsterPacket* packet); diff --git a/common/network/serial_packet.hpp b/common/network/serial_packet.hpp index 0a73f43..0c07cae 100644 --- a/common/network/serial_packet.hpp +++ b/common/network/serial_packet.hpp @@ -34,7 +34,7 @@ typedef SerialPacketBase SerialPacket; //DOCS: NETWORK_VERSION is used to discern compatible servers and clients -constexpr int NETWORK_VERSION = 20150205; +constexpr int NETWORK_VERSION = 20150213; union MaxPacket { CharacterPacket a; diff --git a/common/network/serial_packet_type.hpp b/common/network/serial_packet_type.hpp index a27e0ea..d8b76e7 100644 --- a/common/network/serial_packet_type.hpp +++ b/common/network/serial_packet_type.hpp @@ -27,10 +27,9 @@ * valid data, but it will still be carried in that packet's format. */ -//TODO: This needs to be smoothed out enum class SerialPacketType { //default: there is something wrong - NONE = 0, + NONE, //------------------------- //ServerPacket @@ -38,12 +37,12 @@ enum class SerialPacketType { //------------------------- //heartbeat - PING = 1, - PONG = 2, + PING, + PONG, //Used for finding available servers - BROADCAST_REQUEST = 3, - BROADCAST_RESPONSE = 4, + BROADCAST_REQUEST, + BROADCAST_RESPONSE, //------------------------- //ClientPacket @@ -51,24 +50,24 @@ enum class SerialPacketType { //------------------------- //Connecting to a server as a client - JOIN_REQUEST = 5, - JOIN_RESPONSE = 6, + JOIN_REQUEST, + JOIN_RESPONSE, //disconnect from the server - DISCONNECT_REQUEST = 7, - DISCONNECT_RESPONSE = 8, - DISCONNECT_FORCED = 9, + DISCONNECT_REQUEST, + DISCONNECT_RESPONSE, + ADMIN_DISCONNECT_FORCED, //load the account - LOGIN_REQUEST = 10, - LOGIN_RESPONSE = 11, + LOGIN_REQUEST, + LOGIN_RESPONSE, //unload the account - LOGOUT_REQUEST = 12, - LOGOUT_RESPONSE = 13, + LOGOUT_REQUEST, + LOGOUT_RESPONSE, //shut down the server - SHUTDOWN_REQUEST = 14, + ADMIN_SHUTDOWN_REQUEST, //------------------------- //RegionPacket @@ -76,32 +75,32 @@ enum class SerialPacketType { //------------------------- //map data - REGION_REQUEST = 15, //NOTE: technically a query - REGION_CONTENT = 16, + REGION_REQUEST, + REGION_CONTENT, //------------------------- //CharacterPacket // character index, // handle, avatar, // account index (owner), - // room index, origin, motion, - // statistics + // room index, origin, motion //------------------------- //character management - CHARACTER_CREATE = 17, - CHARACTER_DELETE = 18, - CHARACTER_LOAD = 19, - CHARACTER_UNLOAD = 20, + CHARACTER_CREATE, + CHARACTER_DELETE, + CHARACTER_LOAD, + CHARACTER_UNLOAD, //find out info from the server - QUERY_CHARACTER_EXISTS = 21, - QUERY_CHARACTER_STATS = 22, - QUERY_CHARACTER_LOCATION = 23, + QUERY_CHARACTER_EXISTS, + QUERY_CHARACTER_STATS, + QUERY_CHARACTER_LOCATION, //set the info in the server - CHARACTER_MOVEMENT = 24, - CHARACTER_ATTACK = 25, + CHARACTER_MOVEMENT, + CHARACTER_ATTACK, + CHARACTER_DAMAGE, //admin control // ADMIN_SET_CHARACTER_ORIGIN, @@ -109,20 +108,21 @@ enum class SerialPacketType { //------------------------- //MonsterPacket // monster index, - // handle, avatar, hitbox + // handle, avatar + // bounds // room index, origin, motion - // TODO: attack data //------------------------- - MONSTER_CREATE = 26, - MONSTER_DELETE = 27, + MONSTER_CREATE, + MONSTER_DELETE, - QUERY_MONSTER_EXISTS = 28, //a list of monsters in a room - QUERY_MONSTER_STATS = 29, //statistics of a specific monster type or instance - QUERY_MONSTER_LOCATION = 30, //umm... + QUERY_MONSTER_EXISTS, + QUERY_MONSTER_STATS, + QUERY_MONSTER_LOCATION, - MONSTER_MOVEMENT = 31, //monster movement - MONSTER_ATTACK = 32, + MONSTER_MOVEMENT, + MONSTER_ATTACK, + MONSTER_DAMAGE, //------------------------- //TextPacket @@ -130,21 +130,21 @@ enum class SerialPacketType { //------------------------- //general speech - TEXT_BROADCAST = 33, + TEXT_BROADCAST, //rejection/error messages - JOIN_REJECTION = 34, - LOGIN_REJECTION = 35, - REGION_REJECTION = 36, - CHARACTER_REJECTION = 37, - MONSTER_REJECTION = 38, - SHUTDOWN_REJECTION = 39, + JOIN_REJECTION, + LOGIN_REJECTION, + REGION_REJECTION, + CHARACTER_REJECTION, + MONSTER_REJECTION, + SHUTDOWN_REJECTION, //------------------------- //not used //------------------------- - LAST = 40 + LAST }; #endif \ No newline at end of file diff --git a/common/network/serial_utility.cpp b/common/network/serial_utility.cpp index e258a9e..a584ad0 100644 --- a/common/network/serial_utility.cpp +++ b/common/network/serial_utility.cpp @@ -57,12 +57,12 @@ void serializePacket(void* buffer, SerialPacketBase* packet) { case SerialPacketType::JOIN_RESPONSE: case SerialPacketType::DISCONNECT_REQUEST: case SerialPacketType::DISCONNECT_RESPONSE: - case SerialPacketType::DISCONNECT_FORCED: + case SerialPacketType::ADMIN_DISCONNECT_FORCED: case SerialPacketType::LOGIN_REQUEST: case SerialPacketType::LOGIN_RESPONSE: case SerialPacketType::LOGOUT_REQUEST: case SerialPacketType::LOGOUT_RESPONSE: - case SerialPacketType::SHUTDOWN_REQUEST: + case SerialPacketType::ADMIN_SHUTDOWN_REQUEST: serializeClient(buffer, static_cast(packet)); break; case SerialPacketType::REGION_REQUEST: @@ -78,6 +78,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) { case SerialPacketType::QUERY_CHARACTER_LOCATION: case SerialPacketType::CHARACTER_MOVEMENT: case SerialPacketType::CHARACTER_ATTACK: + case SerialPacketType::CHARACTER_DAMAGE: serializeCharacter(buffer, static_cast(packet)); break; case SerialPacketType::MONSTER_CREATE: @@ -87,6 +88,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) { case SerialPacketType::QUERY_MONSTER_LOCATION: case SerialPacketType::MONSTER_MOVEMENT: case SerialPacketType::MONSTER_ATTACK: + case SerialPacketType::MONSTER_DAMAGE: serializeMonster(buffer, static_cast(packet)); break; case SerialPacketType::TEXT_BROADCAST: @@ -117,12 +119,12 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) { case SerialPacketType::JOIN_RESPONSE: case SerialPacketType::DISCONNECT_REQUEST: case SerialPacketType::DISCONNECT_RESPONSE: - case SerialPacketType::DISCONNECT_FORCED: + case SerialPacketType::ADMIN_DISCONNECT_FORCED: case SerialPacketType::LOGIN_REQUEST: case SerialPacketType::LOGIN_RESPONSE: case SerialPacketType::LOGOUT_REQUEST: case SerialPacketType::LOGOUT_RESPONSE: - case SerialPacketType::SHUTDOWN_REQUEST: + case SerialPacketType::ADMIN_SHUTDOWN_REQUEST: deserializeClient(buffer, static_cast(packet)); break; case SerialPacketType::REGION_REQUEST: @@ -138,6 +140,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) { case SerialPacketType::QUERY_CHARACTER_LOCATION: case SerialPacketType::CHARACTER_MOVEMENT: case SerialPacketType::CHARACTER_ATTACK: + case SerialPacketType::CHARACTER_DAMAGE: deserializeCharacter(buffer, static_cast(packet)); break; case SerialPacketType::MONSTER_CREATE: @@ -147,6 +150,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) { case SerialPacketType::QUERY_MONSTER_LOCATION: case SerialPacketType::MONSTER_MOVEMENT: case SerialPacketType::MONSTER_ATTACK: + case SerialPacketType::MONSTER_DAMAGE: deserializeMonster(buffer, static_cast(packet)); break; case SerialPacketType::TEXT_BROADCAST: diff --git a/common/network/udp_network_utility.cpp b/common/network/udp_network_utility.cpp index 4dfb044..ec8733f 100644 --- a/common/network/udp_network_utility.cpp +++ b/common/network/udp_network_utility.cpp @@ -140,7 +140,6 @@ int UDPNetworkUtility::SendToAllChannels(void* data, int len) { return sent; } -//TODO: put a void* and int* parameter list here int UDPNetworkUtility::Receive() { memset(packet->data, 0, packet->maxlen); int ret = SDLNet_UDP_Recv(socket, packet); diff --git a/rsc/scripts/map_saver.lua b/rsc/scripts/map_saver.lua index b9b77ea..0715807 100644 --- a/rsc/scripts/map_saver.lua +++ b/rsc/scripts/map_saver.lua @@ -11,5 +11,5 @@ function mapSaver.Save(r) io.write("map_saver:Save(", Region.GetX(r), ", ", Region.GetY(r), ")\n") end ---TODO: create a flexible saving & loading system +--TODO: (9) create a flexible saving & loading system return mapSaver \ No newline at end of file diff --git a/rsc/scripts/setup_server.sql b/rsc/scripts/setup_server.sql index 5109ae8..ddb1826 100644 --- a/rsc/scripts/setup_server.sql +++ b/rsc/scripts/setup_server.sql @@ -1,10 +1,10 @@ ---TODO: An archive table of all dead characters +--TODO: (9) An archive table of all dead characters CREATE TABLE IF NOT EXISTS Accounts ( uid INTEGER PRIMARY KEY AUTOINCREMENT, - username varchar(100) UNIQUE, --TODO: Swap username for email address + username varchar(100) UNIQUE, --TODO: (9) Swap username for email address - --TODO: server-client security + --server-client security -- passhash varchar(100), -- passsalt varchar(100), @@ -101,5 +101,5 @@ CREATE TABLE IF NOT EXISTS WornEquipment ( --unique information durability INTEGER DEFAULT 0, stats INTEGER REFERENCES StatisticSets(uid) - --TODO: attached script? + --attached script? ); diff --git a/server/accounts/account_data.hpp b/server/accounts/account_data.hpp index c40f281..97df753 100644 --- a/server/accounts/account_data.hpp +++ b/server/accounts/account_data.hpp @@ -47,7 +47,7 @@ private: int clientIndex; std::string username; - //TODO: password + //password/auth token //bit fields? bool blackListed = false; diff --git a/server/monsters/monster_manager.cpp b/server/monsters/monster_manager.cpp index d1f2d45..b0f3d11 100644 --- a/server/monsters/monster_manager.cpp +++ b/server/monsters/monster_manager.cpp @@ -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)> fn) { - //TODO: UnloadIf + //UnloadIf } MonsterData* MonsterManager::Get(int uid) { - //TODO: Get + //Get } int MonsterManager::GetLoadedCount() { - //TODO: GetLoadedCount + //GetLoadedCount } std::map* 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 } diff --git a/server/rooms/room_api.cpp b/server/rooms/room_api.cpp index 19b3a95..ffb9c8a 100644 --- a/server/rooms/room_api.cpp +++ b/server/rooms/room_api.cpp @@ -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(lua_touserdata(L, 1)); //set the refs of these parameters (backwards, since it pops from the top of the stack) diff --git a/server/rooms/room_manager_api.cpp b/server/rooms/room_manager_api.cpp index 1eade08..1d4ba15 100644 --- a/server/rooms/room_manager_api.cpp +++ b/server/rooms/room_manager_api.cpp @@ -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; diff --git a/server/server_application.hpp b/server/server_application.hpp index e9a0a41..42ea73b 100644 --- a/server/server_application.hpp +++ b/server/server_application.hpp @@ -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; diff --git a/server/server_character_methods.cpp b/server/server_character_methods.cpp index bf302b7..6a4d8b1 100644 --- a/server/server_character_methods.cpp +++ b/server/server_character_methods.cpp @@ -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 } \ No newline at end of file diff --git a/server/server_connections.cpp b/server/server_connections.cpp index 12ceda0..a9eeced 100644 --- a/server/server_connections.cpp +++ b/server/server_connections.cpp @@ -172,5 +172,5 @@ void ServerApplication::HandleDisconnectRequest(ClientPacket* const argPacket) { } void ServerApplication::HandleDisconnectForced(ClientPacket* const argPacket) { - //TODO: HandleDisconnectForced + //HandleDisconnectForced } \ No newline at end of file diff --git a/server/server_data.cpp b/server/server_data.cpp index c8f3c92..2554ba3 100644 --- a/server/server_data.cpp +++ b/server/server_data.cpp @@ -28,10 +28,10 @@ //General data management //------------------------- -//TODO: Queries +//NOTE: Queries go here void ServerApplication::SaveServerState() { - //TODO: SaveServerState + //SaveServerState } //------------------------- diff --git a/server/server_logic.cpp b/server/server_logic.cpp index 23a94d1..c2e7b28 100644 --- a/server/server_logic.cpp +++ b/server/server_logic.cpp @@ -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(argPacket)); + hPing(static_cast(argPacket)); break; case SerialPacketType::PONG: - HandlePong(static_cast(argPacket)); + hPong(static_cast(argPacket)); break; //client connections case SerialPacketType::BROADCAST_REQUEST: - HandleBroadcastRequest(static_cast(argPacket)); + hBroadcastRequest(static_cast(argPacket)); break; case SerialPacketType::JOIN_REQUEST: - HandleJoinRequest(static_cast(argPacket)); + hJoinRequest(static_cast(argPacket)); break; case SerialPacketType::LOGIN_REQUEST: - HandleLoginRequest(static_cast(argPacket)); + hLoginRequest(static_cast(argPacket)); break; //client disconnections case SerialPacketType::LOGOUT_REQUEST: - HandleLogoutRequest(static_cast(argPacket)); + hLogoutRequest(static_cast(argPacket)); break; case SerialPacketType::DISCONNECT_REQUEST: - HandleDisconnectRequest(static_cast(argPacket)); + hDisconnectRequest(static_cast(argPacket)); break; //server commands -// case SerialPacketType::DISCONNECT_FORCED: -// HandleDisconnectForced(static_cast(argPacket)); -// break; - case SerialPacketType::SHUTDOWN_REQUEST: - HandleShutdownRequest(static_cast(argPacket)); + case SerialPacketType::ADMIN_DISCONNECT_FORCED: + hAdminDisconnectForced(static_cast(argPacket)); + break; + case SerialPacketType::ADMIN_SHUTDOWN_REQUEST: + hAdminShutdownRequest(static_cast(argPacket)); break; //data management & queries case SerialPacketType::REGION_REQUEST: - HandleRegionRequest(static_cast(argPacket)); + hRegionRequest(static_cast(argPacket)); break; case SerialPacketType::QUERY_CHARACTER_EXISTS: - HandleCharacterExists(static_cast(argPacket)); + hQueryCharacterExists(static_cast(argPacket)); break; + case SerialPacketType::QUERY_CHARACTER_STATS: + hQueryCharacterStats(static_cast(argPacket)); + break; + case SerialPacketType::QUERY_CHARACTER_LOCATION: + hQueryCharacterLocation(static_cast(argPacket)); + break; + case SerialPacketType::QUERY_MONSTER_EXISTS: -// HandleMonsterExists(static_cast(argPacket)); + hQueryMonsterExists(static_cast(argPacket)); + break; + case SerialPacketType::QUERY_MONSTER_STATS: + hQueryMonsterStats(static_cast(argPacket)); + break; + case SerialPacketType::QUERY_MONSTER_LOCATION: + hQueryMonsterLocation(static_cast(argPacket)); break; //character management case SerialPacketType::CHARACTER_CREATE: - HandleCharacterCreate(static_cast(argPacket)); + hCharacterCreate(static_cast(argPacket)); break; case SerialPacketType::CHARACTER_DELETE: - HandleCharacterDelete(static_cast(argPacket)); + hCharacterDelete(static_cast(argPacket)); break; case SerialPacketType::CHARACTER_LOAD: - HandleCharacterLoad(static_cast(argPacket)); + hCharacterLoad(static_cast(argPacket)); break; case SerialPacketType::CHARACTER_UNLOAD: - HandleCharacterUnload(static_cast(argPacket)); + hCharacterUnload(static_cast(argPacket)); break; //character movement case SerialPacketType::CHARACTER_MOVEMENT: - HandleCharacterMovement(static_cast(argPacket)); + hCharacterMovement(static_cast(argPacket)); break; case SerialPacketType::CHARACTER_ATTACK: - HandleCharacterAttack(static_cast(argPacket)); + hCharacterAttack(static_cast(argPacket)); + break; + case SerialPacketType::CHARACTER_DAMAGE: + hCharacterDamage(static_cast(argPacket)); break; //monster management - case SerialPacketType::MONSTER_CREATE: -// HandleMonsterCreate(static_cast(argPacket)); + case SerialPacketType::MONSTER_DAMAGE: + hMonsterDamage(static_cast(argPacket)); break; - case SerialPacketType::MONSTER_DELETE: -// HandleMonsterDelete(static_cast(argPacket)); - break; - case SerialPacketType::MONSTER_MOVEMENT: -// HandleMonsterMovement(static_cast(argPacket)); - break; - case SerialPacketType::MONSTER_ATTACK: -// HandleMonsterAttack(static_cast(argPacket)); + + //chat + case SerialPacketType::TEXT_BROADCAST: + hTextBroadcast(static_cast(argPacket)); break; //handle errors diff --git a/server/waypoints/waypoint_manager_api.cpp b/server/waypoints/waypoint_manager_api.cpp index d8ce4fa..a88dc48 100644 --- a/server/waypoints/waypoint_manager_api.cpp +++ b/server/waypoints/waypoint_manager_api.cpp @@ -27,12 +27,10 @@ static int create(lua_State* L) { WaypointManager* mgr = static_cast(lua_touserdata(L, 1)); - //TODO: create } static int unload(lua_State* L) { WaypointManager* mgr = static_cast(lua_touserdata(L, 1)); - //TODO: create } static int getWaypoint(lua_State* L) { diff --git a/todo.txt b/todo.txt index c4582aa..eca1dfc 100644 --- a/todo.txt +++ b/todo.txt @@ -7,16 +7,21 @@ TODO: Account passwords (list) * ... * salts & hashes -TODO: Make sure login errors are sent to the client -TODO: Split config.cfg in two, one for the server and the client -TODO: Add the "home" parameter to the server's config file -TODO: Waypoints, with positions and trigger zones (collision areas) for doors, monster spawns, etc. -TODO: Fix shoddy movement -TODO: Periodic mass server saves -TODO: Remove the big "Shut Down" button (currently broken...) -TODO: Make a way for the server owner to control the server directly -TODO: The TileSheet class should implement the surface itself -TODO: Time delay for requesting region packets -TODO: A proper logging system -TODO: Fix the const-ness of accessors -TODO: Add a screenshot of the game to README.md \ No newline at end of file +TODO: Features + * Make sure login errors are sent to the client + * Split config.cfg in two, one for the server and the client + * Add the "home" parameter to the server's config file + * Waypoints, with positions and trigger zones (collision areas) for doors, monster spawns, etc. + * Fix shoddy movement + * Periodic mass server saves + * Remove the big "Shut Down" button (currently broken...) + * Make a way for the server owner to control the server directly + * The TileSheet class should implement the surface itself + * Time delay for requesting region packets + * A proper logging system + * Fix the const-ness of accessors + * Add a screenshot of the game to README.md + * joystick/gamepad support + * add the tilesheet to the map system + * ping/delay displayed in the lobby + * login screen prompting for username & password \ No newline at end of file