____                _       __
    / __ )____  _____   | |     / /___ ___________
   / __  / __ \/ ___/   | | /| / / __ `/ ___/ ___/
  / /_/ / /_/ (__  )    | |/ |/ / /_/ / /  (__  )
 /_____/\____/____/     |__/|__/\__,_/_/  /____/

       A futuristic real-time strategy game.
          This file is part of Bos Wars.
(C) Copyright 2001-2007 by the Bos Wars and Stratagus Project. Distributed under the "GNU General Public License"

ui.h File Reference

The user interface header file. More...

#include <vector>
#include <string>
#include <map>
#include "SDL.h"
#include "upgrade_structs.h"
#include "cursor.h"
#include "interface.h"
#include "minimap.h"

Go to the source code of this file.

Classes

class  ButtonStyleProperties
class  ButtonStyle
class  CUIButton
class  CViewport
class  CMapArea
class  CFiller
class  CButtonPanel
class  CPieMenu
class  CResourceInfo
class  CInfoPanel
class  CStatusLine
class  CUITimer
class  CUserInterface

Defines

#define MAX_NUM_VIEWPORTS   8
 Number of supported viewports.

Enumerations

enum  TextAlignment { TextAlignUndefined, TextAlignCenter, TextAlignLeft, TextAlignRight }
enum  ViewportModeType {
  VIEWPORT_SINGLE, VIEWPORT_SPLIT_HORIZ, VIEWPORT_SPLIT_HORIZ3, VIEWPORT_SPLIT_VERT,
  VIEWPORT_QUAD, NUM_VIEWPORT_MODES
}

Functions

void InitUserInterface (void)
 < Initialize the ui
void SaveUserInterface (CFile *file)
 Clean up the ui module.
void CleanUserInterface (void)
 Register ccl features.
void UserInterfaceCclRegister (void)
 Find a button style.
ButtonStyleFindButtonStyle (const std::string &style)
 Called if the mouse is moved in Normal interface state.
void UIHandleMouseMove (int x, int y)
 Called if any mouse button is pressed down.
void UIHandleButtonDown (unsigned button)
 Called if any mouse button is released up.
void UIHandleButtonUp (unsigned button)
 Restrict mouse cursor to viewport.
void RestrictCursorToViewport (void)
 Restrict mouse cursor to minimap.
void RestrictCursorToMinimap (void)
 Get viewport for screen pixel position.
CViewportGetViewport (int x, int y)
 Cycle through all available viewport modes.
void CycleViewportMode (int)
 Select viewport mode.
void SetViewportMode (ViewportModeType mode)
 Use the mouse to scroll the map.
void MouseScrollMap (int x, int y)
 Check if mouse scrolling is enabled.
bool GetMouseScroll (void)
 Enable/disable scrolling with the mouse.
void SetMouseScroll (bool enabled)
 Check if keyboard scrolling is enabled.
bool GetKeyScroll (void)
 Enable/disable scrolling with the keyboard.
void SetKeyScroll (bool enabled)
 Check if mouse grabbing is enabled.
bool GetGrabMouse (void)
 Enable/disable grabbing the mouse.
void SetGrabMouse (bool enabled)
 Check if scrolling stops when leaving the window.
bool GetLeaveStops (void)
 Enable/disable leaving the window stops scrolling.
void SetLeaveStops (bool enabled)
int AddHandler (lua_State *l)
void CallHandler (unsigned int handle, int value)

Variables

CUserInterface UI
 The user interface.
std::map< std::string,
ButtonStyle * > 
ButtonStyleHash
bool RightButtonAttacks
 right button attacks
ButtonActionCurrentButtons
 Current Selected Buttons.
std::string UiGroupKeys
 Up to 11 keys used for group selection.


Detailed Description

The user interface header file.

Definition in file ui.h.


Define Documentation

#define MAX_NUM_VIEWPORTS   8

Number of supported viewports.

Definition at line 120 of file ui.h.

Referenced by SetViewportModeQuad(), SetViewportModeSingle(), SetViewportModeSplitHoriz(), SetViewportModeSplitHoriz3(), and SetViewportModeSplitVert().


Enumeration Type Documentation

Enumerator:
TextAlignUndefined 
TextAlignCenter 
TextAlignLeft 
TextAlignRight 

Definition at line 61 of file ui.h.

Enumeration of the different predefined viewport configurations.

Add new types of viewports at the end of the enumeration for backward compatibility of save games.

Enumerator:
VIEWPORT_SINGLE  Old single viewport.
VIEWPORT_SPLIT_HORIZ  Two viewports split horizontal.
VIEWPORT_SPLIT_HORIZ3  Three viewports split horiontal.
VIEWPORT_SPLIT_VERT  Two viewports split vertical.
VIEWPORT_QUAD  Four viewports split symmetric.
NUM_VIEWPORT_MODES  Number of different viewports.

Definition at line 203 of file ui.h.


Function Documentation

int AddHandler ( lua_State *  l  ) 

Add a Lua handler FIXME: when should these be freed?

Definition at line 694 of file script_ui.cpp.

References HandleCount.

void CallHandler ( unsigned int  handle,
int  value 
)

Call a Lua handler

Definition at line 716 of file script_ui.cpp.

References Lua, and LuaCall().

void CleanUserInterface ( void   ) 

void CycleViewportMode ( int  step  ) 

Select viewport mode.

Cycles through predefined viewport modes (geometry configurations) in order defined by the ViewportMode enumerated type.

Parameters:
step The size of step used for cycling. Values that make sense are mostly 1 (next viewport mode) and -1 (previous viewport mode).

Definition at line 608 of file ui.cpp.

References NUM_VIEWPORT_MODES, SetViewportMode(), and CUserInterface::ViewportMode.

Referenced by CommandKey(), and EditorCallbackKeyDown().

ButtonStyle* FindButtonStyle ( const std::string &  style  ) 

Called if the mouse is moved in Normal interface state.

Find a button style

Parameters:
style Name of the style to find.
Returns:
Button style, NULL if not found.

Definition at line 484 of file script_ui.cpp.

References ButtonStyleHash.

Referenced by tolua_stratagus_FindButtonStyle00().

bool GetGrabMouse ( void   ) 

Enable/disable grabbing the mouse.

Check if mouse grabbing is enabled

Definition at line 661 of file ui.cpp.

References SdlGetGrabMouse().

Referenced by tolua_stratagus_GetGrabMouse00().

bool GetKeyScroll ( void   ) 

Enable/disable scrolling with the keyboard.

Check if keyboard scrolling is enabled

Definition at line 643 of file ui.cpp.

References CUserInterface::KeyScroll.

Referenced by tolua_stratagus_GetKeyScroll00().

bool GetLeaveStops ( void   ) 

Enable/disable leaving the window stops scrolling.

Check if scrolling stops when leaving the window

Definition at line 679 of file ui.cpp.

References LeaveStops.

Referenced by tolua_stratagus_GetLeaveStops00().

bool GetMouseScroll ( void   ) 

Enable/disable scrolling with the mouse.

Check if mouse scrolling is enabled

Definition at line 625 of file ui.cpp.

References CUserInterface::MouseScroll.

Referenced by tolua_stratagus_GetMouseScroll00().

CViewport* GetViewport ( int  x,
int  y 
)

Cycle through all available viewport modes.

Takes coordinates of a pixel in stratagus's window and computes the map viewport which contains this pixel.

Parameters:
x x pixel coordinate with origin at UL corner of screen
y y pixel coordinate with origin at UL corner of screen
Returns:
viewport pointer or NULL if this pixel is not inside any of the viewports.
Note:
This functions only works with rectangular viewports, when we support shaped map window, this must be rewritten.

Definition at line 307 of file ui.cpp.

References CUserInterface::NumViewports, CUserInterface::Viewports, CViewport::X, and CViewport::Y.

Referenced by EditorCallbackButtonDown(), EditorCallbackMouse(), FinishViewportModeConfiguration(), and HandleMouseOn().

void InitUserInterface ( void   ) 

void MouseScrollMap ( int  x,
int  y 
)

void RestrictCursorToMinimap ( void   ) 

Get viewport for screen pixel position.

Restrict mouse cursor to minimap

Definition at line 618 of file mouse.cpp.

References CursorOn, CursorOnMinimap, CursorStartX, CursorStartY, CursorX, CursorY, CMinimap::H, CUserInterface::Minimap, CUserInterface::MouseWarpX, CUserInterface::MouseWarpY, UI, CMinimap::W, CMinimap::X, and CMinimap::Y.

Referenced by EditorCallbackMouse(), and UIHandleMouseMove().

void RestrictCursorToViewport ( void   ) 

Restrict mouse cursor to minimap.

Restrict mouse cursor to viewport.

Definition at line 592 of file mouse.cpp.

References CursorOn, CursorOnMap, CursorStartX, CursorStartY, CursorX, CursorY, CViewport::EndX, CViewport::EndY, CUserInterface::MouseWarpX, CUserInterface::MouseWarpY, CUserInterface::SelectedViewport, UI, CViewport::X, and CViewport::Y.

Referenced by EditorCallbackMouse().

void SaveUserInterface ( CFile file  ) 

Clean up the ui module.

Save the user interface module.

Parameters:
file Save file handle

Definition at line 225 of file ui.cpp.

References SaveViewports().

Referenced by SaveGame().

void SetGrabMouse ( bool  enabled  ) 

Check if scrolling stops when leaving the window.

Enable/disable grabbing the mouse

Parameters:
enabled True to enable mouse grabbing, false to disable

Definition at line 671 of file ui.cpp.

References ToggleGrabMouse().

Referenced by tolua_stratagus_SetGrabMouse00().

void SetKeyScroll ( bool  enabled  ) 

Check if mouse grabbing is enabled.

Enable/disable scrolling with the keyboard

Parameters:
enabled True to enable keyboard scrolling, false to disable

Definition at line 653 of file ui.cpp.

References CUserInterface::KeyScroll.

Referenced by tolua_stratagus_SetKeyScroll00().

void SetLeaveStops ( bool  enabled  ) 

Enable/disable leaving the window stops scrolling

Parameters:
enabled True to stop scrolling, false to disable

Definition at line 689 of file ui.cpp.

References LeaveStops.

Referenced by tolua_stratagus_SetLeaveStops00().

void SetMouseScroll ( bool  enabled  ) 

Check if keyboard scrolling is enabled.

Enable/disable scrolling with the mouse

Parameters:
enabled True to enable mouse scrolling, false to disable

Definition at line 635 of file ui.cpp.

References CUserInterface::MouseScroll.

Referenced by tolua_stratagus_SetMouseScroll00().

void SetViewportMode ( ViewportModeType  new_mode  ) 

Use the mouse to scroll the map.

Sets up (calls geometry setup routines for) a new viewport mode.

Parameters:
new_mode New mode's number.

Definition at line 576 of file ui.cpp.

References DebugPrint, SetViewportModeQuad(), SetViewportModeSingle(), SetViewportModeSplitHoriz(), SetViewportModeSplitHoriz3(), SetViewportModeSplitVert(), VIEWPORT_QUAD, VIEWPORT_SINGLE, VIEWPORT_SPLIT_HORIZ, VIEWPORT_SPLIT_HORIZ3, VIEWPORT_SPLIT_VERT, and CUserInterface::ViewportMode.

Referenced by CycleViewportMode(), InitUserInterface(), and UiToggleBigMap().

void UIHandleButtonDown ( unsigned  button  ) 

Called if any mouse button is released up.

Called if mouse button pressed down.

Parameters:
button Button pressed down.

Detect long selection click, FIXME: tempory hack to test the feature.

Definition at line 1300 of file mouse.cpp.

References _C_, Assert, CUnit::Blink, CUnit::Boarded, ButtonAreaButton, ButtonAreaMenu, ButtonAreaSelected, ButtonAreaTraining, ButtonAreaTransporting, ButtonAreaUnderCursor, CUserInterface::ButtonPanel, ButtonUnderCursor, ButtonUnderMenu, ButtonUnderNetworkDiplomacy, ButtonUnderNetworkMenu, CanBuildUnitType(), CancelBuildingMode(), CViewport::Center(), GameSound::Click, ClickMissile, CUserInterface::Cross, CursorConfig::Cursor, CursorBuilding, CursorOn, CursorOnButton, CursorOnMap, CursorOnMinimap, CursorStartScrMapX, CursorStartScrMapY, CursorStartX, CursorStartY, CursorState, CursorStatePieMenu, CursorStatePoint, CursorStateRectangle, CursorStateSelect, CursorX, CursorY, DebugPrint, CUnitType::Decoration, CButtonPanel::DoClicked(), DoRightButton(), DoSelectionButtons(), GameCursor, GameDiplomacyButtonClicked, GameMenuButtonClicked, GameObserve, GamePaused, GameSounds, HandleMouseOn(), HandlePieMenuMouseSelection(), CMap::IsFieldExplored(), CViewport::IsInsideMapArea(), CPlayer::IsTeamed(), KeyModifiers, LeftButton, LongSelected, MakeLocalMissile(), Map, CViewport::MapX, CViewport::MapY, MaxSampleVolume, MiddleButton, CUserInterface::Minimap, MissileTypeByIdent(), ModifierAlt, ModifierShift, CPieMenu::MouseButton, MouseButtons, CUserInterface::MouseViewport, CUnit::NextContained, NumSelected, CViewport::OffsetX, CViewport::OffsetY, CUserInterface::PieMenu, GameSound::PlacementError, GameSound::PlacementSuccess, PlayGameSound(), CUserInterface::Point, Preference, ReplayRevealMap, RightButton, CMinimap::Screen2MapX(), CMinimap::Screen2MapY(), CUserInterface::Scroll, Selected, CUserInterface::SelectedViewport, SendCommandBuildBuilding(), SendCommandCancelTraining(), SendCommandUnload(), CPreference::ShowAttackRange, CPreference::ShowReactionRange, CPreference::ShowSightRange, SoundConfig::Sound, ThisPlayer, CUnitType::TileHeight, TileSizeX, TileSizeY, CUnitType::TileWidth, CUnit::Type, UI, UISelectStateButtonDown(), CViewport::Unit, UnitActionTrain, CUnit::UnitInside, UnitOnMapTile(), CViewport::Viewport2MapX(), CViewport::Viewport2MapY(), CUserInterface::Viewports, CViewport::X, CViewport::Y, and y.

Referenced by HandleButtonDown().

void UIHandleButtonUp ( unsigned  button  ) 

Restrict mouse cursor to viewport.

Called if mouse button released.

Parameters:
button Button released.

Definition at line 1586 of file mouse.cpp.

References _, LuaActionListener::action(), AddGroupFromUnitToSelection(), AddSelectedAirUnitsInRectangle(), AddSelectedGroundUnitsInRectangle(), AddSelectedUnitsInRectangle(), CUnitType::Building, ButtonAreaMenu, ButtonAreaUnderCursor, ButtonUnderCursor, ButtonUnderMenu, ButtonUnderNetworkDiplomacy, ButtonUnderNetworkMenu, CUIButton::Callback, CStatusLine::Clear(), ClearCosts(), GameSound::Click, CurrentButtonLevel, CursorConfig::Cursor, CursorStartScrMapX, CursorStartScrMapY, CursorStartX, CursorStartY, CursorState, CursorStatePieMenu, CursorStatePoint, CursorStateRectangle, CursorX, CursorY, GameCursor, GameDiplomacyButtonClicked, GameMenuButtonClicked, GamePaused, GameSounds, HandlePieMenuMouseSelection(), CMap::IsFieldVisible(), IsNetworkGame, CPlayer::IsTeamed(), KeyModifiers, CUnit::LastGroup, LeftButton, Map, CViewport::MapX, CViewport::MapY, MaxSampleVolume, CUserInterface::MenuButton, ModifierAlt, ModifierControl, ModifierShift, MouseButtons, MouseDoubleShift, CUserInterface::MouseViewport, CUnitType::Name, CUserInterface::NetworkDiplomacyButton, CUserInterface::NetworkMenuButton, NumSelected, CViewport::OffsetX, CViewport::OffsetY, CUnit::Player, PlayerNeutral, PlayGameSound(), PlayUnitSound(), CUserInterface::Point, ReplayRevealMap, CUserInterface::Scroll, SelectAirUnitsInRectangle(), Selected, SelectGroundUnitsInRectangle(), SelectGroupFromUnit(), SelectionChanged(), SelectSingleUnit(), SelectUnitsByType(), SelectUnitsInRectangle(), CStatusLine::Set(), CUnitType::Slot, SoundConfig::Sound, SoundForName(), sprintf_s(), CUserInterface::StatusLine, ThisPlayer, TileSizeX, TileSizeY, ToggleSelectUnit(), ToggleUnitsByType(), CPlayer::Type, CUnit::Type, UI, UnitActionBuilt, UnitOnScreen(), CViewport::Viewport2MapX(), CViewport::Viewport2MapY(), VoiceBuilding, VoiceSelected, CViewport::X, and CViewport::Y.

Referenced by HandleButtonUp().

void UIHandleMouseMove ( int  x,
int  y 
)

Called if any mouse button is pressed down.

Handle movement of the cursor.

Parameters:
x Screen X position.
y Screen Y position.

Definition at line 670 of file mouse.cpp.

References CViewport::Center(), CursorConfig::Cursor, CursorOn, CursorOnMap, CursorOnMinimap, CursorStartX, CursorStartY, CursorState, CursorStatePieMenu, CursorStateRectangle, CursorStateSelect, CursorX, CursorY, CUnitType::Decoration, CViewport::EndX, CViewport::EndY, GameCursor, GameDiplomacyButtonClicked, GameMenuButtonClicked, CUserInterface::Glass, CUserInterface::GreenHair, HandleMouseOn(), CPlayer::Index, CPlayer::IsAllied(), CMap::IsFieldExplored(), CViewport::IsInsideMapArea(), CUnit::IsVisible(), CUnit::IsVisibleAsGoal(), LeftButton, Map, CViewport::MapX, CViewport::MapY, CUserInterface::Minimap, MouseButtons, MouseScrollMap(), CUserInterface::MouseViewport, CUserInterface::MouseWarpX, CUserInterface::MouseWarpY, CViewport::OffsetX, CViewport::OffsetY, CUserInterface::PieMenu, CUnit::Player, PlayerNumNeutral, CUserInterface::Point, CUserInterface::RedHair, ReplayRevealMap, RestrictCursorToMinimap(), RightButton, CMinimap::Screen2MapX(), CMinimap::Screen2MapY(), CUserInterface::Scroll, CUserInterface::SelectedViewport, ThisPlayer, TileSizeX, TileSizeY, CUnit::Type, UI, UnitOnMapTile(), UnitOnScreen(), CViewport::Viewport2MapX(), CViewport::Viewport2MapY(), CPieMenu::X, CViewport::X, CPieMenu::Y, CViewport::Y, and CUserInterface::YellowHair.

Referenced by HandleMouseMove(), HandlePieMenuMouseSelection(), and MenuScreen::stop().

void UserInterfaceCclRegister ( void   ) 


Variable Documentation

std::map<std::string, ButtonStyle *> ButtonStyleHash

Definition at line 59 of file script_ui.cpp.

Referenced by CclDefineButtonStyle(), and FindButtonStyle().

Current Selected Buttons.

Definition at line 73 of file botpanel.cpp.

Referenced by DrawPieMenu(), HandleMouseOn(), and HandlePieMenuMouseSelection().

right button attacks

Definition at line 55 of file ui.cpp.

Referenced by CclRightButtonAttacks(), CclRightButtonMoves(), and DoRightButton().

The user interface.

Hash table of all the button styles

The user interface configuration

Definition at line 61 of file ui.cpp.

Referenced by MessagesDisplay::AddMessage(), CalculateStereo(), CalculateVisibleIcons(), CancelBuildingMode(), CclCenterMap(), CclDefineViewports(), CclSetMinimapTerrain(), CclSetMouseScrollSpeedControl(), CclSetMouseScrollSpeedDefault(), CenterOnMessage(), CMap::Clean(), CreateGame(), CButtonPanel::DoClicked(), CButtonPanel::DoKey(), DoScrollArea(), DoSelectionButtons(), CButtonPanel::Draw(), CViewport::DrawBorder(), DrawBuildingCursor(), DrawCosts(), CMinimap::DrawCursor(), DrawCursor(), DrawEditorPanel(), DrawInfoPanelMultipleSelected(), DrawInfoPanelNoneSelected(), DrawInfoPanelSingleSelected(), DrawMapArea(), DrawMapCursor(), DrawMenuButtonArea(), MessagesDisplay::DrawMessages(), DrawPatchIcons(), DrawPieMenu(), DrawPlayers(), DrawPopup(), DrawStartLocations(), DrawTimer(), DrawTrainingUnits(), DrawTransportingUnits(), CIcon::DrawUnitIcon(), DrawUnitIcons(), DrawUnitInfo(), DrawUnitOn(), DrawUnitStats(), DrawVisibleRectangleCursor(), EditorActionRemoveUnit(), EditorCallbackButtonDown(), EditorCallbackButtonUp(), EditorCallbackKeyDown(), EditorCallbackMouse(), EditorMainLoop(), EditorUpdateDisplay(), GameMainLoop(), GetPieUnderCursor(), HandleActionTrain(), HandleKeyDown(), HandleMouseExit(), HandleMouseOn(), HandleMouseScrollArea(), HandlePieMenuMouseSelection(), InitSoundClient(), InitVideoSdl(), InputKey(), CUnit::IsVisibleOnScreen(), LoadModules(), MenuLoop(), MouseScrollMap(), CPlayer::Notify(), PatchEditorCallbackMouse(), PlayMissileSound(), PreMenuSetup(), ReloadOpenGL(), CVideo::ResizeScreen(), RestrictCursorToMinimap(), RestrictCursorToViewport(), MenuScreen::run(), SdlDoEvent(), SelectedUnitChanged(), SelectionChanged(), SelectUnitsByType(), SelectUnitsInRectangle(), SendCommand(), CViewport::Set(), ShowInput(), ShowPatchInfo(), ShowUnitInfo(), MenuScreen::stop(), ToggleUnitsByType(), tolua_get_UI(), tolua_set_UI(), UiCenterOnGroup(), UiCenterOnSelected(), UiDecreaseGameSpeed(), UiFindIdleWorker(), UIHandleButtonDown(), UIHandleButtonUp(), UIHandleMouseMove(), UiIncreaseGameSpeed(), UiRecallMapPosition(), UiSaveMapPosition(), UISelectStateButtonDown(), UiToggleBigMap(), UiToggleGrabMouse(), UiToggleMusic(), UiTogglePause(), UiToggleSound(), UiToggleTerrain(), UiTrackUnit(), UpdateButtonPanelMultipleUnits(), UpdateButtonPanelSingleUnit(), UpdateDisplay(), MessagesDisplay::UpdateMessages(), UpdateStatusLineForButton(), ViewPointDistance(), and ViewPointDistanceToUnit().

std::string UiGroupKeys

Up to 11 keys used for group selection.

Definition at line 86 of file interface.cpp.

Referenced by CclSetGroupKeys(), and CommandKey().


Generated on Sat Feb 21 00:28:21 2009 for Bos Wars by  doxygen 1.5.6