Browse Source

Make debug compatible with GCC 6.2

pull/2750/head
Anders Jenbo 5 years ago
parent
commit
de01f15398
  1. 64
      Source/debug.cpp
  2. 4
      Source/debug.h

64
Source/debug.cpp

@ -81,15 +81,15 @@ void PrintDebugMonster(int m)
} }
struct DebugCmdItem { struct DebugCmdItem {
const std::string_view text; const string_view text;
const std::string_view description; const string_view description;
const std::string_view requiredParameter; const string_view requiredParameter;
std::string (*actionProc)(const std::string_view); std::string (*actionProc)(const string_view);
}; };
extern std::vector<DebugCmdItem> DebugCmdList; extern std::vector<DebugCmdItem> DebugCmdList;
std::string DebugCmdHelp(const std::string_view parameter) std::string DebugCmdHelp(const string_view parameter)
{ {
if (parameter.empty()) { if (parameter.empty()) {
std::string ret = "Available Debug Commands: "; std::string ret = "Available Debug Commands: ";
@ -99,7 +99,7 @@ std::string DebugCmdHelp(const std::string_view parameter)
first = false; first = false;
else else
ret.append(" - "); ret.append(" - ");
ret.append(dbgCmd.text); ret.append(std::string(dbgCmd.text));
} }
return ret; return ret;
} else { } else {
@ -113,7 +113,7 @@ std::string DebugCmdHelp(const std::string_view parameter)
} }
} }
std::string DebugCmdGiveGoldCheat(const std::string_view parameter) std::string DebugCmdGiveGoldCheat(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
@ -134,7 +134,7 @@ std::string DebugCmdGiveGoldCheat(const std::string_view parameter)
return "You are now rich! If only this was as easy in real life..."; return "You are now rich! If only this was as easy in real life...";
} }
std::string DebugCmdTakeGoldCheat(const std::string_view parameter) std::string DebugCmdTakeGoldCheat(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
@ -154,7 +154,7 @@ std::string DebugCmdTakeGoldCheat(const std::string_view parameter)
return "You are poor..."; return "You are poor...";
} }
std::string DebugCmdWarpToLevel(const std::string_view parameter) std::string DebugCmdWarpToLevel(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
auto level = atoi(parameter.data()); auto level = atoi(parameter.data());
@ -168,7 +168,7 @@ std::string DebugCmdWarpToLevel(const std::string_view parameter)
return fmt::format("Welcome to level {}.", level); return fmt::format("Welcome to level {}.", level);
} }
std::string DebugCmdLoadMap(const std::string_view parameter) std::string DebugCmdLoadMap(const string_view parameter)
{ {
if (parameter.empty()) { if (parameter.empty()) {
std::string ret = "What mapid do you want to visit?"; std::string ret = "What mapid do you want to visit?";
@ -200,7 +200,7 @@ std::string DebugCmdLoadMap(const std::string_view parameter)
return fmt::format("Level {} is not known. Do you want to write a mod?", level); return fmt::format("Level {} is not known. Do you want to write a mod?", level);
} }
std::unordered_map<std::string_view, _talker_id> TownerShortNameToTownerId = { std::unordered_map<string_view, _talker_id> TownerShortNameToTownerId = {
{ "griswold", _talker_id::TOWN_SMITH }, { "griswold", _talker_id::TOWN_SMITH },
{ "pepin", _talker_id::TOWN_HEALER }, { "pepin", _talker_id::TOWN_HEALER },
{ "ogden", _talker_id::TOWN_TAVERN }, { "ogden", _talker_id::TOWN_TAVERN },
@ -214,7 +214,7 @@ std::unordered_map<std::string_view, _talker_id> TownerShortNameToTownerId = {
{ "nut", _talker_id::TOWN_COWFARM }, { "nut", _talker_id::TOWN_COWFARM },
}; };
std::string DebugCmdVisitTowner(const std::string_view parameter) std::string DebugCmdVisitTowner(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
@ -226,7 +226,7 @@ std::string DebugCmdVisitTowner(const std::string_view parameter)
ret = "Who? "; ret = "Who? ";
for (auto &entry : TownerShortNameToTownerId) { for (auto &entry : TownerShortNameToTownerId) {
ret.append(" "); ret.append(" ");
ret.append(entry.first); ret.append(std::string(entry.first));
} }
return ret; return ret;
} }
@ -254,7 +254,7 @@ std::string DebugCmdVisitTowner(const std::string_view parameter)
return fmt::format("Couldn't find {}.", parameter); return fmt::format("Couldn't find {}.", parameter);
} }
std::string DebugCmdResetLevel(const std::string_view parameter) std::string DebugCmdResetLevel(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
@ -277,7 +277,7 @@ std::string DebugCmdResetLevel(const std::string_view parameter)
return fmt::format("Level {} was restored and looks fabulous.", level); return fmt::format("Level {} was restored and looks fabulous.", level);
} }
std::string DebugCmdGodMode(const std::string_view parameter) std::string DebugCmdGodMode(const string_view parameter)
{ {
DebugGodMode = !DebugGodMode; DebugGodMode = !DebugGodMode;
if (DebugGodMode) if (DebugGodMode)
@ -285,21 +285,21 @@ std::string DebugCmdGodMode(const std::string_view parameter)
return "You are mortal, beware of the darkness."; return "You are mortal, beware of the darkness.";
} }
std::string DebugCmdLighting(const std::string_view parameter) std::string DebugCmdLighting(const string_view parameter)
{ {
ToggleLighting(); ToggleLighting();
return "All raindrops are the same."; return "All raindrops are the same.";
} }
std::string DebugCmdMap(const std::string_view parameter) std::string DebugCmdMap(const string_view parameter)
{ {
std::fill(&AutomapView[0][0], &AutomapView[DMAXX - 1][DMAXX - 1], true); std::fill(&AutomapView[0][0], &AutomapView[DMAXX - 1][DMAXX - 1], true);
return "The way is made clear when viewed from above"; return "The way is made clear when viewed from above";
} }
std::string DebugCmdVision(const std::string_view parameter) std::string DebugCmdVision(const string_view parameter)
{ {
DebugVision = !DebugVision; DebugVision = !DebugVision;
if (DebugVision) if (DebugVision)
@ -308,7 +308,7 @@ std::string DebugCmdVision(const std::string_view parameter)
return "My path is set."; return "My path is set.";
} }
std::string DebugCmdQuest(const std::string_view parameter) std::string DebugCmdQuest(const string_view parameter)
{ {
if (parameter.empty()) { if (parameter.empty()) {
std::string ret = "You must provide an id. This could be: all"; std::string ret = "You must provide an id. This could be: all";
@ -347,7 +347,7 @@ std::string DebugCmdQuest(const std::string_view parameter)
return fmt::format("{} enabled.", QuestData[questId]._qlstr); return fmt::format("{} enabled.", QuestData[questId]._qlstr);
} }
std::string DebugCmdLevelUp(const std::string_view parameter) std::string DebugCmdLevelUp(const string_view parameter)
{ {
int levels = std::max(1, atoi(parameter.data())); int levels = std::max(1, atoi(parameter.data()));
for (int i = 0; i < levels; i++) for (int i = 0; i < levels; i++)
@ -355,7 +355,7 @@ std::string DebugCmdLevelUp(const std::string_view parameter)
return "New experience leads to new insights."; return "New experience leads to new insights.";
} }
std::string DebugCmdSetSpellsLevel(const std::string_view parameter) std::string DebugCmdSetSpellsLevel(const string_view parameter)
{ {
int level = std::max(0, atoi(parameter.data())); int level = std::max(0, atoi(parameter.data()));
for (int i = SPL_FIREBOLT; i < MAX_SPELLS; i++) { for (int i = SPL_FIREBOLT; i < MAX_SPELLS; i++) {
@ -369,7 +369,7 @@ std::string DebugCmdSetSpellsLevel(const std::string_view parameter)
return "Knowledge is power."; return "Knowledge is power.";
} }
std::string DebugCmdRefillHealthMana(const std::string_view parameter) std::string DebugCmdRefillHealthMana(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
myPlayer._pMana = myPlayer._pMaxMana; myPlayer._pMana = myPlayer._pMaxMana;
@ -382,24 +382,24 @@ std::string DebugCmdRefillHealthMana(const std::string_view parameter)
return "Ready for more."; return "Ready for more.";
} }
std::string DebugCmdGenerateUniqueItem(const std::string_view parameter) std::string DebugCmdGenerateUniqueItem(const string_view parameter)
{ {
return DebugSpawnItem(parameter.data(), true); return DebugSpawnItem(parameter.data(), true);
} }
std::string DebugCmdGenerateItem(const std::string_view parameter) std::string DebugCmdGenerateItem(const string_view parameter)
{ {
return DebugSpawnItem(parameter.data(), false); return DebugSpawnItem(parameter.data(), false);
} }
std::string DebugCmdExit(const std::string_view parameter) std::string DebugCmdExit(const string_view parameter)
{ {
gbRunGame = false; gbRunGame = false;
gbRunGameResult = false; gbRunGameResult = false;
return "See you again my Lord."; return "See you again my Lord.";
} }
std::string DebugCmdArrow(const std::string_view parameter) std::string DebugCmdArrow(const string_view parameter)
{ {
auto &myPlayer = Players[MyPlayerId]; auto &myPlayer = Players[MyPlayerId];
@ -421,7 +421,7 @@ std::string DebugCmdArrow(const std::string_view parameter)
return "I can shoot any arrow."; return "I can shoot any arrow.";
} }
std::string DebugCmdTalkToTowner(const std::string_view parameter) std::string DebugCmdTalkToTowner(const string_view parameter)
{ {
if (DebugTalkToTowner(parameter.data())) { if (DebugTalkToTowner(parameter.data())) {
return "Hello from the other side."; return "Hello from the other side.";
@ -429,7 +429,7 @@ std::string DebugCmdTalkToTowner(const std::string_view parameter)
return "NPC not found."; return "NPC not found.";
} }
std::string DebugCmdShowCoords(const std::string_view parameter) std::string DebugCmdShowCoords(const string_view parameter)
{ {
DebugCoords = !DebugCoords; DebugCoords = !DebugCoords;
if (DebugCoords) if (DebugCoords)
@ -438,7 +438,7 @@ std::string DebugCmdShowCoords(const std::string_view parameter)
return "I hate math."; return "I hate math.";
} }
std::string DebugCmdShowGrid(const std::string_view parameter) std::string DebugCmdShowGrid(const string_view parameter)
{ {
DebugGrid = !DebugGrid; DebugGrid = !DebugGrid;
if (DebugGrid) if (DebugGrid)
@ -447,7 +447,7 @@ std::string DebugCmdShowGrid(const std::string_view parameter)
return "Back to boring."; return "Back to boring.";
} }
std::string DebugCmdShowCursorCoords(const std::string_view parameter) std::string DebugCmdShowCursorCoords(const string_view parameter)
{ {
DebugCursorCoords = !DebugCursorCoords; DebugCursorCoords = !DebugCursorCoords;
if (DebugCursorCoords) if (DebugCursorCoords)
@ -576,14 +576,14 @@ void SetDebugLevelSeedInfos(uint32_t mid1Seed, uint32_t mid2Seed, uint32_t mid3S
glEndSeed[currlevel] = endSeed; glEndSeed[currlevel] = endSeed;
} }
bool CheckDebugTextCommand(const std::string_view text) bool CheckDebugTextCommand(const string_view text)
{ {
auto debugCmdIterator = std::find_if(DebugCmdList.begin(), DebugCmdList.end(), [&](const DebugCmdItem &elem) { return text.find(elem.text) == 0 && (text.length() == elem.text.length() || text[elem.text.length()] == ' '); }); auto debugCmdIterator = std::find_if(DebugCmdList.begin(), DebugCmdList.end(), [&](const DebugCmdItem &elem) { return text.find(elem.text) == 0 && (text.length() == elem.text.length() || text[elem.text.length()] == ' '); });
if (debugCmdIterator == DebugCmdList.end()) if (debugCmdIterator == DebugCmdList.end())
return false; return false;
auto &dbgCmd = *debugCmdIterator; auto &dbgCmd = *debugCmdIterator;
std::string_view parameter = ""; string_view parameter = "";
if (text.length() > (dbgCmd.text.length() + 1)) if (text.length() > (dbgCmd.text.length() + 1))
parameter = text.substr(dbgCmd.text.length() + 1); parameter = text.substr(dbgCmd.text.length() + 1);
const auto result = dbgCmd.actionProc(parameter); const auto result = dbgCmd.actionProc(parameter);

4
Source/debug.h

@ -5,13 +5,13 @@
*/ */
#pragma once #pragma once
#include <string_view>
#include <unordered_map> #include <unordered_map>
#include "engine.h" #include "engine.h"
#include "engine/cel_sprite.hpp" #include "engine/cel_sprite.hpp"
#include "miniwin/miniwin.h" #include "miniwin/miniwin.h"
#include "utils/stdcompat/optional.hpp" #include "utils/stdcompat/optional.hpp"
#include "utils/stdcompat/string_view.hpp"
namespace devilution { namespace devilution {
@ -30,6 +30,6 @@ void PrintDebugQuest();
void GetDebugMonster(); void GetDebugMonster();
void NextDebugMonster(); void NextDebugMonster();
void SetDebugLevelSeedInfos(uint32_t mid1Seed, uint32_t mid2Seed, uint32_t mid3Seed, uint32_t endSeed); void SetDebugLevelSeedInfos(uint32_t mid1Seed, uint32_t mid2Seed, uint32_t mid3Seed, uint32_t endSeed);
bool CheckDebugTextCommand(const std::string_view text); bool CheckDebugTextCommand(const string_view text);
} // namespace devilution } // namespace devilution

Loading…
Cancel
Save