From 93bd4967f95333f4500a2c7edd6258df3bd50d0f Mon Sep 17 00:00:00 2001 From: WibbenZ Date: Sun, 5 Jul 2015 00:26:59 +0200 Subject: [PATCH] Fix report widget --- src/enums.h | 7 +++++++ src/game.cpp | 11 ++++++++--- src/game.h | 2 +- src/protocolgame.cpp | 11 +++++++++-- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/enums.h b/src/enums.h index 51d37b190c..90e08a29c5 100644 --- a/src/enums.h +++ b/src/enums.h @@ -20,6 +20,13 @@ #ifndef FS_ENUMS_H_003445999FEE4A67BCECBE918B0124CE #define FS_ENUMS_H_003445999FEE4A67BCECBE918B0124CE +enum BugReportType_t : uint8_t { + BUG_CATEGORY_MAP = 0, + BUG_CATEGORY_TYPO = 1, + BUG_CATEGORY_TECHNICAL = 2, + BUG_CATEGORY_OTHER = 3 +}; + enum ThreadState { THREAD_STATE_RUNNING, THREAD_STATE_CLOSING, diff --git a/src/game.cpp b/src/game.cpp index 23f06feb3d..faa1893371 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -4838,7 +4838,7 @@ void Game::kickPlayer(uint32_t playerId, bool displayEffect) player->kickPlayer(displayEffect); } -void Game::playerReportBug(uint32_t playerId, const std::string& bug) +void Game::playerReportBug(uint32_t playerId, const std::string& message, const Position position, uint8_t category) { Player* player = getPlayerByID(playerId); if (!player) { @@ -4852,8 +4852,13 @@ void Game::playerReportBug(uint32_t playerId, const std::string& bug) std::string fileName = "data/reports/" + player->getName() + " report.txt"; FILE* file = fopen(fileName.c_str(), "a"); if (file) { - const Position& position = player->getPosition(); - fprintf(file, "------------------------------\nName: %s [Position X: %u Y: %u Z: %u]\nBug Report: %s\n", player->getName().c_str(), position.x, position.y, position.z, bug.c_str()); + const Position& playerPosition = player->getPosition(); + if (category == BUG_CATEGORY_MAP) { + fprintf(file, "------------------------------\nName: %s [Map Position: %u, %u, %u] [Player Position: %u, %u, %u]\nComment: %s\n", player->getName().c_str(), position.x, position.y, position.z, playerPosition.x, playerPosition.y, playerPosition.z, message.c_str()); + } else { + fprintf(file, "------------------------------\nName: %s [Player Position: %u, %u, %u]\nComment: %s\n", player->getName().c_str(), playerPosition.x, playerPosition.y, playerPosition.z, message.c_str()); + } + fclose(file); } diff --git a/src/game.h b/src/game.h index cb11f3bf3a..874a4c8191 100644 --- a/src/game.h +++ b/src/game.h @@ -315,7 +315,7 @@ class Game void sendGuildMotd(uint32_t playerId); void kickPlayer(uint32_t playerId, bool displayEffect); - void playerReportBug(uint32_t playerId, const std::string& bug); + void playerReportBug(uint32_t playerId, const std::string& message, const Position position, uint8_t category); void playerDebugAssert(uint32_t playerId, const std::string& assertLine, const std::string& date, const std::string& description, const std::string& comment); void playerAnswerModalWindow(uint32_t playerId, uint32_t modalWindowId, uint8_t button, uint8_t choice); diff --git a/src/protocolgame.cpp b/src/protocolgame.cpp index 41cf19b693..a36ee8d44b 100644 --- a/src/protocolgame.cpp +++ b/src/protocolgame.cpp @@ -1059,8 +1059,15 @@ void ProtocolGame::parseRotateItem(NetworkMessage& msg) void ProtocolGame::parseBugReport(NetworkMessage& msg) { - std::string bug = msg.getString(); - addGameTask(&Game::playerReportBug, player->getID(), bug); + uint8_t category = msg.getByte(); + std::string message = msg.getString(); + + Position position; + if (category == BUG_CATEGORY_MAP) { + position = msg.getPosition(); + } + + addGameTask(&Game::playerReportBug, player->getID(), message, position, category); } void ProtocolGame::parseDebugAssert(NetworkMessage& msg)