00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __INTERFACE_H__
00029 #define __INTERFACE_H__
00030
00032
00033
00034
00035
00036
00037 #include "icons.h"
00038
00039
00040
00041
00042
00043 class CUnit;
00044 struct _event_callback_;
00045
00046
00047
00048
00049
00051 enum ButtonCmd {
00052 ButtonMove,
00053 ButtonAttack,
00054 ButtonRepair,
00055 ButtonHarvest,
00056 ButtonBuild,
00057 ButtonPatrol,
00058 ButtonAttackGround,
00059 ButtonSpellCast,
00060 ButtonUnload,
00061 ButtonStop,
00062 ButtonButton,
00063 ButtonTrain,
00064 ButtonStandGround,
00065 ButtonCancel,
00066 ButtonCancelTrain,
00067 ButtonCancelBuild,
00068 };
00069
00070 class ButtonAction;
00071 typedef bool (*ButtonCheckFunc)(const CUnit *, const ButtonAction *);
00072
00074 class ButtonAction {
00075 public:
00076 ButtonAction() : Pos(0), Level(0), Action(ButtonMove), Value(0),
00077 Allowed(NULL), Key(0) {}
00078
00079 int Pos;
00080 int Level;
00081 ButtonCmd Action;
00082 int Value;
00083 std::string ValueStr;
00084
00085 ButtonCheckFunc Allowed;
00086 std::string AllowStr;
00087 std::string UnitMask;
00088 IconConfig Icon;
00089 int Key;
00090 std::string Hint;
00091 };
00092
00094 enum _button_area_ {
00095 ButtonAreaSelected,
00096 ButtonAreaTraining,
00097 ButtonAreaTransporting,
00098 ButtonAreaButton,
00099 ButtonAreaMenu,
00100 };
00101
00103 enum _menu_button_under_ {
00104 ButtonUnderMenu,
00105 ButtonUnderNetworkMenu,
00106 ButtonUnderNetworkDiplomacy,
00107 };
00108
00110 enum _iface_state_ {
00111 IfaceStateNormal,
00112 IfaceStateMenu,
00113 };
00114
00116 enum _key_state_ {
00117 KeyStateCommand = 0,
00118 KeyStateInput
00119 };
00120
00122 #define ModifierShift 1
00123 #define ModifierControl 2
00124 #define ModifierAlt 4
00125 #define ModifierSuper 8
00126 #define ModifierDoublePress 16
00127
00128 #define MouseDoubleShift 8
00129 #define MouseDragShift 16
00130 #define MouseHoldShift 24
00131
00133 #define NoButton 0
00134 #define LeftButton 2
00135 #define MiddleButton 4
00136 #define RightButton 8
00137
00138 #define UpButton 16
00139 #define DownButton 32
00140
00141 #define LeftAndMiddleButton (LeftButton | MiddleButton)
00142 #define LeftAndRightButton (LeftButton | RightButton)
00143 #define MiddleAndRightButton (MiddleButton | RightButton)
00144
00146 enum _cursor_on_ {
00147 CursorOnUnknown = -1,
00148 CursorOnMinimap,
00149 CursorOnButton,
00150 CursorOnMap,
00151 CursorOnScrollUp,
00152 CursorOnScrollDown,
00153 CursorOnScrollLeft,
00154 CursorOnScrollRight,
00155 CursorOnScrollLeftUp,
00156 CursorOnScrollLeftDown,
00157 CursorOnScrollRightUp,
00158 CursorOnScrollRightDown,
00159 };
00160
00162 #define ScrollNone 0
00163 #define ScrollUp 1
00164 #define ScrollDown 2
00165 #define ScrollLeft 4
00166 #define ScrollRight 8
00167 #define ScrollLeftUp 5
00168 #define ScrollLeftDown 6
00169 #define ScrollRightUp 9
00170 #define ScrollRightDown 10
00171
00172
00173
00174
00175
00177 extern bool GameRunning;
00179 extern bool GamePaused;
00181 extern bool GameObserve;
00183 extern char SkipGameCycle;
00185 extern bool GodMode;
00187 extern char BigMapMode;
00188
00190 extern int MouseButtons;
00192 extern int KeyModifiers;
00194 extern enum _iface_state_ InterfaceState;
00196 extern int KeyScrollState;
00198 extern int MouseScrollState;
00200 extern enum _key_state_ KeyState;
00202 extern CUnit *UnitUnderCursor;
00204 extern int ButtonAreaUnderCursor;
00206 extern int ButtonUnderCursor;
00208 extern bool GameMenuButtonClicked;
00210 extern bool GameDiplomacyButtonClicked;
00212 extern bool LeaveStops;
00214 extern enum _cursor_on_ CursorOn;
00215
00217 extern int CurrentButtonLevel;
00218
00220 extern int DoubleClickDelay;
00222 extern int HoldClickDelay;
00223
00224
00225
00226
00227
00228
00229
00230
00232 extern void InitButtons(void);
00234 extern void CleanButtons(void);
00236 extern int AddButton(int pos, int level, const std::string &IconIdent,
00237 ButtonCmd action, const std::string &value, const ButtonCheckFunc func,
00238 const std::string &arg, const std::string &hint, const std::string &umask);
00239
00240
00241
00242
00244 extern void HandleButtonDown(unsigned button);
00246 extern void HandleButtonUp(unsigned button);
00248 extern void HandleCursorMove(int *x, int *y);
00250 extern void HandleMouseMove(int x, int y);
00252 extern void HandleMouseExit(void);
00253
00255 extern int HandleKeyModifiersDown(unsigned keycode, unsigned keychar);
00257 extern int HandleKeyModifiersUp(unsigned keycode, unsigned keychar);
00258
00260 extern void HandleKeyDown(unsigned keycode, unsigned keychar);
00262 extern void HandleKeyUp(unsigned keycode, unsigned keychar);
00264 extern void HandleKeyRepeat(unsigned keycode, unsigned keychar);
00265
00266
00267
00268
00270 extern void InputMouseButtonPress(const struct _event_callback_ *callbacks,
00271 unsigned ticks, unsigned button);
00273 extern void InputMouseButtonRelease(const struct _event_callback_ *callbacks,
00274 unsigned ticks, unsigned button);
00276 extern void InputMouseMove(const struct _event_callback_ *callbacks,
00277 unsigned ticks, int x, int y);
00279 extern void InputMouseExit(const struct _event_callback_ *callbacks,
00280 unsigned ticks);
00282 extern void InputMouseTimeout(const struct _event_callback_ *callbacks,
00283 unsigned ticks);
00284
00286 extern void InputKeyButtonPress(const struct _event_callback_ *callbacks,
00287 unsigned ticks, unsigned ikey, unsigned ikeychar);
00289 extern void InputKeyButtonRelease(const struct _event_callback_ *callbacks,
00290 unsigned ticks, unsigned ikey, unsigned ikeychar);
00292 extern void InputKeyTimeout(const struct _event_callback_ *callbacks,
00293 unsigned ticks);
00294
00296 extern int GetDoubleClickDelay(void);
00298 extern void SetDoubleClickDelay(int delay);
00300 extern int GetHoldClickDelay(void);
00302 extern void SetHoldClickDelay(int delay);
00303
00305 extern void UiTogglePause(void);
00307 extern int HandleCheats(const std::string &input);
00308
00310 bool HandleCommandKey(int key);
00311
00312
00313
00314
00316 extern void DoRightButton(int tx, int ty);
00318 extern void CancelBuildingMode(void);
00319
00321 extern void DrawMenuButtonArea(void);
00323 extern void UpdateMessages(void);
00325 extern void DrawMessages(void);
00327 extern void DrawResources(void);
00329 extern void SetMessage(const char *fmt, ...);
00331 extern void SetMessageEvent(int x, int y, const char *fmt, ...);
00333 extern void CenterOnMessage(void);
00335 extern void CleanMessages(void);
00336
00338 extern void DrawCosts(void);
00340 extern void SetCosts(int mana, const int *costs);
00342 extern void ClearCosts(void);
00343
00345 extern void DrawTimer(void);
00347 extern void UpdateTimer(void);
00349 extern void UpdateStatusLineForButton(const ButtonAction *button);
00351 extern void DrawPieMenu(void);
00352
00354 extern int HandleMouseScrollArea(int x, int y);
00355
00356
00357
00358
00360 extern bool ButtonCheckTrue(const CUnit *unit,
00361 const ButtonAction *button);
00363 extern bool ButtonCheckFalse(const CUnit *unit,
00364 const ButtonAction *button);
00366 extern bool ButtonCheckUnitsOr(const CUnit *unit,
00367 const ButtonAction *button);
00369 extern bool ButtonCheckUnitsAnd(const CUnit *unit,
00370 const ButtonAction *button);
00372 extern bool ButtonCheckNetwork(const CUnit *unit,
00373 const ButtonAction *button);
00375 extern bool ButtonCheckNoNetwork(const CUnit *unit,
00376 const ButtonAction *button);
00378 extern bool ButtonCheckNoWork(const CUnit *unit,
00379 const ButtonAction *button);
00381 extern bool ButtonCheckAttack(const CUnit *unit,
00382 const ButtonAction *button);
00383
00384
00385
00386
00388 extern void SelectionChanged(void);
00390 extern void SelectedUnitChanged(void);
00391
00392
00393
00394
00396 extern void SetGamePaused(bool paused);
00398 extern bool GetGamePaused();
00400 extern void SetGameSpeed(int speed);
00402 extern int GetGameSpeed();
00403
00405
00406 #endif // !__INTERFACE_H__