Mercurial > LightClone
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 } |