File: ClientCommandManager.h

package info (click to toggle)
vcmi 1.6.5%2Bdfsg-2
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid, trixie
  • size: 32,060 kB
  • sloc: cpp: 238,971; python: 265; sh: 224; xml: 157; ansic: 78; objc: 61; makefile: 49
file content (97 lines) | stat: -rw-r--r-- 3,635 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
 * ClientCommandManager.h, part of VCMI engine
 *
 * Authors: listed in file AUTHORS in main folder
 *
 * License: GNU General Public License v2.0 or later
 * Full text of license available in license.txt file, in main folder
 *
 */

#pragma once

VCMI_LIB_NAMESPACE_BEGIN
class PlayerColor;
VCMI_LIB_NAMESPACE_END
class CIntObject;

class ClientCommandManager //take mantis #2292 issue about account if thinking about handling cheats from command-line
{
	bool currentCallFromIngameConsole = false; // commands can come from 2 sources: ingame console (chat) and client console
	
	// Quits the game (die, fool command)
	void handleQuitCommand();

	// Saves current game under the given filename
	void handleSaveCommand(std::istringstream & singleWordBuffer);

	// Loads a game with the given filename
	void handleLoadCommand(std::istringstream & singleWordBuffer);

	// AI takes over until the end of turn (unlike original H3 currently causes AI to take over until typed again)
	void handleGoSoloCommand();

	// Toggles autoskip mode on and off. In this mode, player turns are automatically skipped and only AI moves.
	// However, GUI is still present and allows to observe AI moves. After this option is activated, you need to end first turn manually.
	// Press [Shift] before your turn starts to not skip it.
	void handleAutoskipCommand();

	// Gives you control over specified AI player. If none is specified gives you control over all AI players
	void handleControlaiCommand(std::istringstream& singleWordBuffer);

	// Change battle AI used by neutral creatures to the one specified. Persists through game quit
	void handleSetBattleAICommand(std::istringstream& singleWordBuffer);

	// Redraw the current screen
	void handleRedrawCommand();

	// Extracts all translateable game texts into Translation directory, separating files on per-mod basis
	void handleTranslateGameCommand(bool onlyMissing);

	// Extracts all translateable texts from maps and campaigns into Translation directory, separating files on per-mod basis
	void handleTranslateMapsCommand();

	// Saves current game configuration into extracted/configuration folder
	void handleGetConfigCommand();

	// Dumps all scripts in Extracted/Scripts
	void handleGetScriptsCommand();

	// Dumps all .txt files from DATA into Extracted/DATA
	void handleGetTextCommand();

	// Extract .def animation as BMP files
	void handleDef2bmpCommand(std::istringstream& singleWordBuffer);

	// Export file into Extracted directory
	void handleExtractCommand(std::istringstream& singleWordBuffer);

	// Print in console the current bonuses for current army
	void handleBonusesCommand(std::istringstream & singleWordBuffer);

	// Get what artifact is present on artifact slot with specified ID for hero with specified ID
	void handleTellCommand(std::istringstream& singleWordBuffer);

	// Show current movement points, max movement points on land / max movement points on water.
	void handleMpCommand();

	// set <command> <on/off> - sets special temporary settings that reset on game quit.
	void handleSetCommand(std::istringstream& singleWordBuffer);

	// Crashes the game forcing an exception
	void handleCrashCommand();

	// shows object graph
	void handleVsLog(std::istringstream & singleWordBuffer);

	// generate all assets
	void handleGenerateAssets();

	// Prints in Chat the given message
	void printCommandMessage(const std::string &commandMessage, ELogLevel::ELogLevel messageType = ELogLevel::NOT_SET);
	void giveTurn(const PlayerColor &color);

public:
	ClientCommandManager() = default;
	void processCommand(const std::string & message, bool calledFromIngameConsole);
};