$treeview $search $mathjax
Stratagus  2.2.7
$projectbrief
$projectbrief
$searchbox
-->
         _________ __                 __
        /   _____//  |_____________ _/  |______     ____  __ __  ______
        \_____  \\   __\_  __ \__  \\   __\__  \   / ___\|  |  \/  ___/
        /        \|  |  |  | \// __ \|  |  / __ \_/ /_/  >  |  /\___ \
       /_______  /|__|  |__|  (____  /__| (____  /\___  /|____//____  >
               \/                  \/          \//_____/            \/
    ______________________                           ______________________
                          T H E   W A R   B E G I N S
                   Stratagus - A free fantasy real time strategy game engine

src/ui/mouse.cpp File Reference

#include <ctype.h>
#include "stratagus.h"
#include "ui.h"
#include "action/action_train.h"
#include "actions.h"
#include "commands.h"
#include "cursor.h"
#include "font.h"
#include "interface.h"
#include "map.h"
#include "menus.h"
#include "minimap.h"
#include "missile.h"
#include "network.h"
#include "player.h"
#include "sound.h"
#include "spells.h"
#include "tileset.h"
#include "translate.h"
#include "unit.h"
#include "unit_find.h"
#include "unitsound.h"
#include "unittype.h"
#include "video.h"
#include "widgets.h"

mouse.cpp - The mouse handling.

#define ICON_SIZE_X   (UI.ButtonPanel.Buttons[0].Style->Width)
#define ICON_SIZE_Y   (UI.ButtonPanel.Buttons[0].Style->Height)
int MouseButtons
 pressed mouse buttons (normal,double,dragged,long)
int KeyModifiers
 Current pressed mouse buttons.
CUnitUnitUnderCursor
 Current keyboard modifiers.
int ButtonAreaUnderCursor = -1
 Unit under cursor.
int ButtonUnderCursor = -1
 Button area under cursor.
bool GameMenuButtonClicked
 Button under cursor.
bool GameDiplomacyButtonClicked
 Menu button was clicked.
bool LeaveStops
 Diplomacy button was clicked.
enum _cursor_on_ CursorOn = CursorOnUnknown
 Mouse leaves windows stops scroll.
static void HandlePieMenuMouseSelection ()
 Cursor on field.
CUnitGetUnitUnderCursor ()
void CancelBuildingMode ()
 Cancel the building input mode.
static void DoRightButton_ForForeignUnit (CUnit *dest)
static bool DoRightButton_Transporter (CUnit &unit, CUnit *dest, int flush, int &acknowledged)
static bool DoRightButton_Harvest (CUnit &unit, CUnit *dest, const Vec2i &pos, int flush, int &acknowledged)
static void DoRightButton_Attack (CUnit &unit, CUnit *dest, const Vec2i &pos, int flush, int &acknowledged)
static bool DoRightButton_Follow (CUnit &unit, CUnit &dest, int flush, int &acknowledged)
static bool DoRightButton_Harvest_Reverse (CUnit &unit, CUnit &dest, int flush, int &acknowledged)
static bool DoRightButton_NewOrder (CUnit &unit, CUnit *dest, const Vec2i &pos, int flush, int &acknowledged)
static void DoRightButton_ForSelectedUnit (CUnit &unit, CUnit *dest, const Vec2i &pos, int &acknowledged)
void DoRightButton (const PixelPos &mapPixelPos)
static void HandleMouseOn (const PixelPos screenPos)
void HandleMouseExit ()
 Called if the mouse exits the game window (only for some videomodes).
void RestrictCursorToViewport ()
 Restrict mouse cursor to viewport.
void RestrictCursorToMinimap ()
 Restrict mouse cursor to minimap.
void MouseScrollMap (int x, int y)
 Use the mouse to scroll the map.
void UIHandleMouseMove (const PixelPos &cursorPos)
 Called if the mouse is moved in Normal interface state.
static int SendRepair (const Vec2i &tilePos)
static int SendMove (const Vec2i &tilePos)
static int SendAttack (const Vec2i &tilePos)
static int SendAttackGround (const Vec2i &tilePos)
static int SendPatrol (const Vec2i &tilePos)
static int SendResource (const Vec2i &pos)
static int SendUnload (const Vec2i &tilePos)
static int SendSpellCast (const Vec2i &tilePos)
static void SendCommand (const Vec2i &tilePos)
static void DoSelectionButtons (int num, unsigned)
static void UISelectStateButtonDown (unsigned)
void UIHandleButtonDown (unsigned button)
 Called if any mouse button is pressed down.
void UIHandleButtonUp (unsigned button)
 Called if any mouse button is released up.
static int GetPieUnderCursor ()
void DrawPieMenu ()
 Draw the Pie Menu.

Defines

#define LongLeftButton   (MouseButtons & ((LeftButton << MouseHoldShift)))
#define DoubleLeftButton   (MouseButtons & (LeftButton << MouseDoubleShift))

Define Documentation

#define DoubleLeftButton   (MouseButtons & (LeftButton << MouseDoubleShift))

#define ICON_SIZE_X   (UI.ButtonPanel.Buttons[0].Style->Width)

#define ICON_SIZE_Y   (UI.ButtonPanel.Buttons[0].Style->Height)

#define LongLeftButton   (MouseButtons & ((LeftButton << MouseHoldShift)))


Function Documentation

void CancelBuildingMode (  ) 

Cancel the building input mode.

Cancel building cursor mode.

void DoRightButton ( const PixelPos mapPixelPos  ) 

Called when right button is pressed

Parameters:
mapPixelPos map position in pixels.

static void DoRightButton_Attack ( CUnit unit,
CUnit dest,
const Vec2i pos,
int  flush,
int &  acknowledged 
) [static]

static bool DoRightButton_Follow ( CUnit unit,
CUnit dest,
int  flush,
int &  acknowledged 
) [static]

static void DoRightButton_ForForeignUnit ( CUnit dest  )  [static]

static void DoRightButton_ForSelectedUnit ( CUnit unit,
CUnit dest,
const Vec2i pos,
int &  acknowledged 
) [static]

static bool DoRightButton_Harvest ( CUnit unit,
CUnit dest,
const Vec2i pos,
int  flush,
int &  acknowledged 
) [static]

static bool DoRightButton_Harvest_Reverse ( CUnit unit,
CUnit dest,
int  flush,
int &  acknowledged 
) [static]

static bool DoRightButton_NewOrder ( CUnit unit,
CUnit dest,
const Vec2i pos,
int  flush,
int &  acknowledged 
) [static]

static bool DoRightButton_Transporter ( CUnit unit,
CUnit dest,
int  flush,
int &  acknowledged 
) [static]

static void DoSelectionButtons ( int  num,
unsigned   
) [static]

Mouse button press on selection/group area.

Parameters:
num Button number.
button Mouse Button pressed.

void DrawPieMenu (  ) 

Draw the Pie Menu.

Draw Pie Menu

static int GetPieUnderCursor (  )  [static]

Get pie menu under the cursor

Returns:
Index of the pie menu under the cursor or -1 for none

CUnit* GetUnitUnderCursor (  ) 

void HandleMouseExit (  ) 

Called if the mouse exits the game window (only for some videomodes).

Handle cursor exits the game window (only for some videomodes)

Todo:
FIXME: make it so that the game is partially 'paused'. Game should run (for network play), but not react on or show interactive events.

static void HandleMouseOn ( const PixelPos  screenPos  )  [static]

Set flag on which area is the cursor.

Parameters:
screenPos screen position.

static void HandlePieMenuMouseSelection (  )  [static]

Cursor on field.

Handle pie menu mouse selection

void MouseScrollMap ( int  x,
int  y 
)

Use the mouse to scroll the map.

Use the mouse to scroll the map

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

void RestrictCursorToMinimap (  ) 

Restrict mouse cursor to minimap.

Restrict mouse cursor to minimap

void RestrictCursorToViewport (  ) 

Restrict mouse cursor to viewport.

Restrict mouse cursor to viewport.

static int SendAttack ( const Vec2i tilePos  )  [static]

Send the current selected group attacking.

To empty field: Move to this field attacking all enemy units in reaction range.

To unit: Move to unit attacking and tracing the unit until dead.

Parameters:
tilePos tile map position.
Returns:
1 if any unit have a new order, 0 else.
See also:
Selected,

NumSelected

static int SendAttackGround ( const Vec2i tilePos  )  [static]

Send the current selected group ground attacking.

Parameters:
tilePos tile map position.

static void SendCommand ( const Vec2i tilePos  )  [static]

Send a command to selected units.

Parameters:
tilePos tile map position.

static int SendMove ( const Vec2i tilePos  )  [static]

Send selected units to point.

Parameters:
tilePos tile map position.
Todo:
To reduce the CPU load for pathfinder, we should check if the destination is reachable and handle nice group movements.

static int SendPatrol ( const Vec2i tilePos  )  [static]

Let units patrol between current position and the selected.

Parameters:
tilePos tile map position.

static int SendRepair ( const Vec2i tilePos  )  [static]

Send selected units to repair

Parameters:
tilePos tile map position.

static int SendResource ( const Vec2i pos  )  [static]

Let units harvest wood/mine gold/haul oil

Parameters:
pos tile map position
See also:
Selected

static int SendSpellCast ( const Vec2i tilePos  )  [static]

Send the current selected group for spell cast.

To empty field: To unit: Spell cast on unit or on map spot.

Parameters:
tilePos tile map position.
See also:
Selected,

NumSelected

static int SendUnload ( const Vec2i tilePos  )  [static]

Send selected units to unload passengers.

Parameters:
tilePos tile map position.

void UIHandleButtonDown ( unsigned  button  ) 

Called if any mouse button is pressed down.

Called if mouse button pressed down.

Parameters:
button Button pressed down.

Detect long left selection click

Detect double left click

void UIHandleButtonUp ( unsigned  button  ) 

Called if any mouse button is released up.

Called if mouse button released.

Parameters:
button Button released.

void UIHandleMouseMove ( const PixelPos cursorPos  ) 

Called if the mouse is moved in Normal interface state.

Handle movement of the cursor.

Parameters:
mousePos Screen X position.

static void UISelectStateButtonDown ( unsigned   )  [static]

Handle mouse button pressed in select state.

Select state is used for target of patrol, attack, move, ....

Parameters:
button Button pressed down.


Variable Documentation

Unit under cursor.

button area under the cursor

Button area under cursor.

button number under the cursor

enum _cursor_on_ CursorOn = CursorOnUnknown

Mouse leaves windows stops scroll.

current CursorOn field

Menu button was clicked.

diplomacy button was clicked down

Button under cursor.

menu button was clicked down

Current pressed mouse buttons.

current active modifiers

bool LeaveStops

Diplomacy button was clicked.

Mouse leaves windows stops scroll.

pressed mouse buttons (normal,double,dragged,long)

Current keyboard modifiers.

shared pointer to unit under the cursor

(C) Copyright 1998-2012 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.