Corrected game mode enum and added a mode changing tool to the playground.
parent
47c3f57206
commit
5c32991c40
@ -0,0 +1,121 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
#include <DFHack.h>
|
||||
using namespace DFHack;
|
||||
|
||||
void printCurrentModes(t_gamemodes gm)
|
||||
{
|
||||
cout << "Current game mode:\t" << gm.game_mode << " (";
|
||||
switch(gm.game_mode)
|
||||
{
|
||||
case GM_Fort:
|
||||
cout << "Fortress)" << endl;
|
||||
break;
|
||||
case GM_Adventurer:
|
||||
cout << "Adventurer)" << endl;
|
||||
break;
|
||||
case GM_Menu:
|
||||
cout << "Menu)" << endl;
|
||||
break;
|
||||
case GM_Arena:
|
||||
cout << "Arena)" << endl;
|
||||
break;
|
||||
case GM_Arena_Assumed:
|
||||
cout << "Arena - Assumed)" << endl;
|
||||
break;
|
||||
case GM_Kittens:
|
||||
cout << "Kittens!)" << endl;
|
||||
break;
|
||||
case GM_Worldgen:
|
||||
cout << "Worldgen)" << endl;
|
||||
break;
|
||||
}
|
||||
cout << "Current control mode:\t" << gm.control_mode << " (";
|
||||
switch (gm.control_mode)
|
||||
{
|
||||
case CM_Managing:
|
||||
cout << "Managing)" << endl;
|
||||
break;
|
||||
case CM_DirectControl:
|
||||
cout << "Direct Control)" << endl;
|
||||
break;
|
||||
case CM_Kittens:
|
||||
cout << "Kittens!)" << endl;
|
||||
break;
|
||||
case CM_Menu:
|
||||
cout << "Menu)" << endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
string command = "";
|
||||
DFHack::ContextManager DFMgr("Memory.xml");
|
||||
DFHack::Context *DF = DFMgr.getSingleContext();
|
||||
try
|
||||
{
|
||||
DF->Attach();
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
std::cerr << e.what() << std::endl;
|
||||
#ifndef LINUX_BUILD
|
||||
cin.ignore();
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
World *world = DF->getWorld();
|
||||
world->Start();
|
||||
bool end = false;
|
||||
t_gamemodes gm;
|
||||
while(!end)
|
||||
{
|
||||
DF->Suspend();
|
||||
world->ReadGameMode(gm);
|
||||
DF->Resume();
|
||||
printCurrentModes(gm);
|
||||
|
||||
cout << "\nOptions:" << endl
|
||||
<< "'c' to change modes" << endl
|
||||
<< "'q' to quit" << endl
|
||||
<< "anything else to refresh" << endl
|
||||
<< ">";
|
||||
getline(cin, command);
|
||||
if (command=="c")
|
||||
{
|
||||
cout << "\n\tPossible choices:" << endl
|
||||
<< "Game Modes:\t\tControl Modes:" << endl
|
||||
<< "0 = Fortress\t\t0 = Managing" << endl
|
||||
<< "1 = Adventurer\t\t1 = Direct Control" << endl
|
||||
<< "2 = Legends\t\t2 = Kittens!" << endl
|
||||
<< "3 = Menu\t\t3 = Menu" << endl
|
||||
<< "4 = Arena" << endl
|
||||
<< "5 = Arena - Assumed" << endl
|
||||
<< "6 = Kittens!" << endl
|
||||
<< "7 = Worldgen" << endl << endl;
|
||||
uint32_t newgm=99, newcm=99;
|
||||
while (newgm>GM_MAX)
|
||||
{
|
||||
cout << "Enter new game mode: ";
|
||||
cin >> newgm;
|
||||
}
|
||||
while (newcm>CM_MAX)
|
||||
{
|
||||
cout << "Enter new control mode: ";
|
||||
cin >> newcm;
|
||||
}
|
||||
gm.game_mode = (GameMode)newgm;
|
||||
gm.control_mode = (ControlMode)newcm;
|
||||
DF->Suspend();
|
||||
world->WriteGameMode(gm);
|
||||
DF->Resume();
|
||||
cout << endl;
|
||||
}
|
||||
else if (command == "q")
|
||||
{
|
||||
end = true;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue