annotate LightClone/Source/GuiInterface.cpp @ 19:51718795f019

Adding event handling & drag and drop to GuiInterface
author koryspansel
date Thu, 15 Sep 2011 12:13:40 -0700
parents 33cb6979ac51
children 4e9b5299ffdc
rev   line source
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
1 /*
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
2 * GuiInterface
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
3 */
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
4
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
5 #include "GuiInterface.h"
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
6
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
7 /*
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
8 * GuiInterface
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
9 */
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
10 GuiInterface::GuiInterface() : pInputManager(NULL), pDragSource(NULL)
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
11 {
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
12 }
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
13
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
14 /*
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
15 * Initialize
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
16 */
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
17 ErrorCode GuiInterface::Initialize(ResourceManager* pResourceManager, InputManager* pInput)
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
18 {
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
19 ErrorCode eCode = GuiElement::Initialize(pResourceManager);
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
20 if(eCode == Error_Success)
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
21 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
22 pInputManager = pInput;
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
23 //ASSERT(pInputManager);
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
24 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
25
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
26 return eCode;
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
27 }
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
28
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
29 /*
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
30 * Terminate
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
31 */
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
32 void GuiInterface::Terminate()
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
33 {
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
34 GuiElement::Terminate();
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
35 }
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
36
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
37 /*
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
38 * Update
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
39 */
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
40 void GuiInterface::Update(float fElapsed)
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
41 {
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
42 const float fX = pInputManager->GetMouseX();
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
43 const float fY = pInputManager->GetMouseY();
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
44
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
45 GuiElement::Update(fElapsed);
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
46
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
47 if(pInputManager->IsButtonDown(MouseButton_Left) && !pInputManager->WasButtonDown(MouseButton_Left))
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
48 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
49 GuiElement* pElement = Pick(fX, fY);
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
50 if(pElement)
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
51 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
52 pElement->OnMouseDown(MouseButton_Left, fX, fY);
17
4951acfe92fc Reworking GUI system
koryspansel <koryspansel@bendbroadband.com>
parents: 11
diff changeset
53
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
54 //TODO: pElement could also be the source of a drag operation
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
55 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
56 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
57 else
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
58
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
59 if(!pInputManager->IsButtonDown(MouseButton_Left) && pInputManager->WasButtonDown(MouseButton_Left))
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
60 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
61 GuiElement* pElement = Pick(fX, fY);
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
62 if(pElement)
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
63 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
64 GuiElement* pContainer = pElement;
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
65
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
66 if(pDragSource)
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
67 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
68 while(pContainer && !pElement->AllowDrop())
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
69 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
70 pContainer = pContainer->GetContainer();
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
71 }
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
72
19
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
73 if(pContainer)
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
74 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
75 pContainer->OnDrop(pDragSource, fX, fY);
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
76 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
77 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
78 else
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
79 {
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
80 pElement->OnMouseUp(MouseButton_Left, fX, fY);
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
81 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
82
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
83 pDragSource = NULL;
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
84 }
51718795f019 Adding event handling & drag and drop to GuiInterface
koryspansel
parents: 18
diff changeset
85 }
11
d80d06d5ff53 Begin working on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
86 }