File: AdventureMapShortcuts.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 (105 lines) | stat: -rw-r--r-- 2,394 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
98
99
100
101
102
103
104
105
/*
 * AdventureMapShortcuts.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 Point;
class Rect;
VCMI_LIB_NAMESPACE_END

enum class EShortcut;
class AdventureMapInterface;
enum class EAdventureState;

struct AdventureMapShortcutState
{
	EShortcut shortcut;
	bool isEnabled;
	std::function<void()> callback;
};

/// Class that contains list of functions for shortcuts available from adventure map
class AdventureMapShortcuts
{
	AdventureMapInterface & owner;
	EAdventureState state;
	int mapLevel;

	std::string searchLast;
	int searchPos;
	
	void showOverview();
	void worldViewBack();
	void worldViewScale1x();
	void worldViewScale2x();
	void worldViewScale4x();
	void switchMapLevel();
	void showQuestlog();
	void toggleTrackHero();
	void toggleGrid();
	void toggleVisitable();
	void toggleBlocked();
	void toggleSleepWake();
	void setHeroSleeping();
	void setHeroAwake();
	void moveHeroAlongPath();
	void showSpellbook();
	void adventureOptions();
	void systemOptions();
	void firstHero();
	void nextHero();
	void endTurn();
	void showThievesGuild();
	void showScenarioInfo();
	void toMainMenu();
	void newGame();
	void quitGame();
	void saveGame();
	void loadGame();
	void digGrail();
	void viewPuzzleMap();
	void restartGame();
	void visitObject();
	void openObject();
	void showMarketplace();
	void firstTown();
	void nextTown();
	void nextObject();
	void zoom( int distance);
	void search(bool next);
	void moveHeroDirectional(const Point & direction);

public:
	explicit AdventureMapShortcuts(AdventureMapInterface & owner);

	std::vector<AdventureMapShortcutState> getShortcuts();

	bool optionCanViewQuests();
	bool optionCanToggleLevel();
	bool optionMapLevelSurface();
	bool optionHeroSleeping();
	bool optionHeroAwake();
	bool optionHeroSelected();
	bool optionHeroCanMove();
	bool optionHasNextHero();
	bool optionCanVisitObject();
	bool optionCanEndTurn();
	bool optionSpellcasting();
	bool optionInMapView();
	bool optionInWorldView();
	bool optionSidePanelActive();
	bool optionMapScrollingActive();
	bool optionMapViewActive();

	void setState(EAdventureState newState);
	EAdventureState getState() const;
	void onMapViewMoved(const Rect & visibleArea, int mapLevel);
};