UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ui_dragndrop.cpp File Reference
#include "ui_internal.h"
#include "ui_dragndrop.h"
#include "ui_input.h"
#include "ui_node.h"
#include "ui_sound.h"
#include "node/ui_node_abstractnode.h"
#include "node/ui_node_container.h"
#include "../input/cl_input.h"

Go to the source code of this file.

Functions

bool UI_DNDIsDragging (void)
 Return true if we are dragging something. More...
 
bool UI_DNDIsTargetNode (uiNode_t *node)
 Return true if the requested node is the current target of the DND. More...
 
bool UI_DNDIsSourceNode (uiNode_t *node)
 Return true if the requested node is the source of the DND. More...
 
int UI_DNDGetType (void)
 Return the current type of the dragging object, else DND_NOTHING. More...
 
uiNode_tUI_DNDGetTargetNode (void)
 Return target of the DND. More...
 
uiNode_tUI_DNDGetSourceNode (void)
 Return source of the DND. More...
 
static void UI_DNDDrag (uiNode_t *node)
 Private function to initialize a the start of a DND. More...
 
void UI_DNDDragItem (uiNode_t *node, const Item *item)
 Start to drag an item. More...
 
static void UI_DNDCleanup (void)
 Cleanup data about DND. More...
 
void UI_DNDAbort (void)
 Drop the object at the current position. More...
 
void UI_DNDDrop (void)
 Drop the object at the current position. More...
 
ItemUI_DNDGetItem (void)
 
static void UI_DNDMouseMove (int mousePosX, int mousePosY)
 Manage the DND when we move the mouse. More...
 
void UI_DrawDragAndDrop (int mousePosX, int mousePosY)
 Draw to dragging object and catch mouse move event. More...
 

Variables

static int oldMousePosX = -1
 
static int oldMousePosY = -1
 
static bool nodeAcceptDND = false
 
static bool positionAcceptDND = false
 
static uiDNDType_t objectType
 
static Item draggingItem
 
static uiNode_tsourceNode
 
static uiNode_ttargetNode
 

Function Documentation

static void UI_DNDCleanup ( void  )
inlinestatic

Cleanup data about DND.

Definition at line 135 of file ui_dragndrop.cpp.

References DND_NOTHING, and objectType.

Referenced by UI_DNDAbort(), and UI_DNDDrop().

static void UI_DNDDrag ( uiNode_t node)
static

Private function to initialize a the start of a DND.

See also
UI_DNDDragItem
UI_DNDDrop
UI_DNDAbort

Definition at line 109 of file ui_dragndrop.cpp.

References DND_SOMETHING, objectType, UI_DNDIsDragging(), and UI_PlaySound().

Referenced by UI_DNDDragItem().

void UI_DNDDragItem ( uiNode_t node,
const Item item 
)
uiNode_t* UI_DNDGetSourceNode ( void  )

Return source of the DND.

Definition at line 97 of file ui_dragndrop.cpp.

References sourceNode, and UI_DNDIsDragging().

Referenced by uiBaseInventoryNode::onDndEnter(), and uiContainerNode::onDndEnter().

uiNode_t* UI_DNDGetTargetNode ( void  )

Return target of the DND.

Definition at line 88 of file ui_dragndrop.cpp.

References targetNode, and UI_DNDIsDragging().

Referenced by uiContainerNode::onDndFinished().

int UI_DNDGetType ( void  )

Return the current type of the dragging object, else DND_NOTHING.

Definition at line 80 of file ui_dragndrop.cpp.

References objectType.

Referenced by uiBaseInventoryNode::draw(), uiContainerNode::draw(), uiBaseInventoryNode::onDndEnter(), and uiContainerNode::onDndEnter().

bool UI_DNDIsSourceNode ( uiNode_t node)

Return true if the requested node is the source of the DND.

Definition at line 70 of file ui_dragndrop.cpp.

References UI_DNDIsDragging().

Referenced by UI_ContainerNodeDrawFreeSpace().

bool UI_DNDIsTargetNode ( uiNode_t node)

Return true if the requested node is the current target of the DND.

Definition at line 60 of file ui_dragndrop.cpp.

References UI_DNDIsDragging().

Referenced by uiContainerNode::draw().

static void UI_DNDMouseMove ( int  mousePosX,
int  mousePosY 
)
static

Manage the DND when we move the mouse.

Definition at line 199 of file ui_dragndrop.cpp.

References nodeAcceptDND, positionAcceptDND, UI_GetNodeAtPosition(), UI_Node_DndEnter(), UI_Node_DndLeave(), and UI_Node_DndMove().

Referenced by UI_DrawDragAndDrop().

void UI_DrawDragAndDrop ( int  mousePosX,
int  mousePosY 
)

Draw to dragging object and catch mouse move event.

Definition at line 230 of file ui_dragndrop.cpp.

References DND_ITEM, mousePosX, mousePosY, objectType, oldMousePosX, oldMousePosY, positionAcceptDND, scale, UI_DNDMouseMove(), UI_DrawItem(), and VectorSet.

Referenced by UI_DrawCursor().

Variable Documentation

Item draggingItem
static

Save the dragging object

Definition at line 43 of file ui_dragndrop.cpp.

Referenced by UI_DNDGetItem().

bool nodeAcceptDND = false
static

Save if the current target node can accept the DND object

Definition at line 39 of file ui_dragndrop.cpp.

Referenced by UI_DNDAbort(), and UI_DNDMouseMove().

uiDNDType_t objectType
static

Save the type of the object we are dragging

Definition at line 42 of file ui_dragndrop.cpp.

Referenced by UI_DNDAbort(), UI_DNDCleanup(), UI_DNDDrag(), UI_DNDDragItem(), UI_DNDDrop(), UI_DNDGetItem(), UI_DNDGetType(), UI_DNDIsDragging(), and UI_DrawDragAndDrop().

int oldMousePosX = -1
static

Save position X of the mouse to know when it move

Definition at line 36 of file ui_dragndrop.cpp.

Referenced by UI_DrawDragAndDrop().

int oldMousePosY = -1
static

Save position Y of the mouse to know when it move

Definition at line 37 of file ui_dragndrop.cpp.

Referenced by UI_DrawDragAndDrop().

bool positionAcceptDND = false
static

Save if the current position accept the DND object

Definition at line 40 of file ui_dragndrop.cpp.

Referenced by UI_DNDDrop(), UI_DNDMouseMove(), and UI_DrawDragAndDrop().

uiNode_t* sourceNode
static

Node where come from the DND object

Definition at line 45 of file ui_dragndrop.cpp.

Referenced by UI_DNDGetSourceNode().

uiNode_t* targetNode
static

Current node under the mouse

Definition at line 46 of file ui_dragndrop.cpp.

Referenced by UI_ContainerNodeAutoPlaceItem(), and UI_DNDGetTargetNode().