Rise
The Vieneo Province
IntermediaDialog.cpp
Go to the documentation of this file.
1 #include "IntermediaDialog.h"
2 
3 #include "../Networking.h"
4 #include "../GameClass.h"
5 #include "InformationDialog.h"
6 
7 #define lineHeightC 16
8 
10 {
11  logger->AddToCallStack("IntermediaDialog::Update");
12 
13  usesHUD = true;
14  HUD.Init(&gui->g_DialogResourceManager, true, L"Textures\\GUI\\dxutcontrols.png");
15  HUD.EnableKeyboardInput(true);
16  HUD.SetCallback(&IntermediaDialog::DialogCallback, this);
17 
18  active = false;
19  normalinterlace = false;
20  tabs = 0;
21  windowdefaultlocation = D3DXVECTOR3(1278, 16, 0);
22  defaultwidth = 265 - 6;
23  defaultheight = 7 * 16;
24  icon = 10;
26  allowresize = false;
27  allowscroll = false;
28 
29  for (short t = 0; t < maxmenuC; t++)
30  {
31  menu[t][0] = NULL;
32  menubool[t] = false;
33  }
34 }
35 
37 {
38  logger->AddToCallStack("IntermediaDialog::UpdateMenu");
39 
40  if (!active)
41  {
42  for (short t = 0; t < maxmenuC; t++)
43  {
44  if (menu[t][0] && menu[t][1] == ']')
45  {
46  PopUpDialog();
47  break;
48  }
49  }
50  }
51 
52  if (!active)
53  return;
54 
56 
57  if (!intermedia1)
58  return;
59 
60  intermedia1->SetChecked(false);
61  intermedia2->SetChecked(false);
62  intermedia3->SetChecked(false);
63  intermedia4->SetChecked(false);
64  intermedia5->SetChecked(false);
65  intermedia6->SetChecked(false);
66 
67  intermedia1->SetVisible(false);
68  intermedia2->SetVisible(false);
69  intermedia3->SetVisible(false);
70  intermedia4->SetVisible(false);
71  intermedia5->SetVisible(false);
72  intermedia6->SetVisible(false);
73 
74  for (short t = 0; t < maxmenuC; t++)
75  {
76  if (menu[t][0] && menu[t][1] == ']')
77  {
78  // ReSharper disable once CppDefaultCaseNotHandledInSwitchStatement
79  switch (menu[t][0]) // command #
80  {
81  case '0':
82  case '1':
83  intermedia1->SetVisible(true);
84  intermedia1->SetEnabled(true);
85  intermedia1->SetLocation((int)(4.0f * gui->game->displayscale), (int)((float)(3 + lineHeightC * t)*gui->game->displayscale));
86  intermedia1->SetText(&menu[t][3]);
88  break;
89  case '2':
90  intermedia2->SetVisible(true);
91  intermedia2->SetEnabled(true);
92  intermedia2->SetLocation((int)(4.0f * gui->game->displayscale), (int)((float)(3 + lineHeightC * t)*gui->game->displayscale));
93  intermedia2->SetText(&menu[t][3]);
95  break;
96  case '3':
97  intermedia3->SetVisible(true);
98  intermedia3->SetEnabled(true);
99  intermedia3->SetLocation((int)(4.0f * gui->game->displayscale), (int)((float)(3 + lineHeightC * t)*gui->game->displayscale));
100  intermedia3->SetText(&menu[t][3]);
102  break;
103  case '4':
104  intermedia4->SetVisible(true);
105  intermedia4->SetEnabled(true);
106  intermedia4->SetLocation((int)(4.0f * gui->game->displayscale), (int)((float)(3 + lineHeightC * t)*gui->game->displayscale));
107  intermedia4->SetText(&menu[t][3]);
109  break;
110  case '5':
111  intermedia5->SetVisible(true);
112  intermedia5->SetEnabled(true);
113  intermedia5->SetLocation((int)(4.0f * gui->game->displayscale), (int)((float)(3 + lineHeightC * t)*gui->game->displayscale));
114  intermedia5->SetText(&menu[t][3]);
116  break;
117  case '6':
118  intermedia6->SetVisible(true);
119  intermedia6->SetEnabled(true);
120  intermedia6->SetLocation((int)(4.0f * gui->game->displayscale), (int)((float)(3 + lineHeightC * t)*gui->game->displayscale));
121  intermedia6->SetText(&menu[t][3]);
123  break;
124  }
125 
126  menubool[t] = true;
127  }
128  }
129 
130  if (gui->IsAdmin)
131  {
132  swprintf_s(msgbartext, HELP_SIZE, L"Menu Level %i", menuLevel);
133  msgbarcolor = 0; // normal
134  }
135 }
136 
138 {
139  HUD.SetFont(0, L"DejaVu Sans Mono", static_cast<LONG>(14.0f * gui->game->displayscale), FW_NORMAL);
140 
141  HUD.RemoveControl(IDC_INTERMEDIA1);
142  HUD.RemoveControl(IDC_INTERMEDIA2);
143  HUD.RemoveControl(IDC_INTERMEDIA3);
144  HUD.RemoveControl(IDC_INTERMEDIA4);
145  HUD.RemoveControl(IDC_INTERMEDIA5);
146  HUD.RemoveControl(IDC_INTERMEDIA6);
147 
148  HUD.AddRadioButton(IDC_INTERMEDIA1, IDC_INTERMEDIA, L"", 1, 1, static_cast<int>(defaultwidth * gui->game->displayscale), static_cast<int>(lineHeightC * gui->game->displayscale), false, 33, false, &intermedia1);
149  intermedia1->SetVisible(false);
150  HUD.AddRadioButton(IDC_INTERMEDIA2, IDC_INTERMEDIA, L"", 1, 1, static_cast<int>(defaultwidth * gui->game->displayscale), static_cast<int>(lineHeightC * gui->game->displayscale), false, 64, false, &intermedia2);
151  intermedia2->SetVisible(false);
152  HUD.AddRadioButton(IDC_INTERMEDIA3, IDC_INTERMEDIA, L"", 1, 1, static_cast<int>(defaultwidth * gui->game->displayscale), static_cast<int>(lineHeightC * gui->game->displayscale), false, 35, false, &intermedia3);
153  intermedia3->SetVisible(false);
154  HUD.AddRadioButton(IDC_INTERMEDIA4, IDC_INTERMEDIA, L"", 1, 1, static_cast<int>(defaultwidth * gui->game->displayscale), static_cast<int>(lineHeightC * gui->game->displayscale), false, 36, false, &intermedia4);
155  intermedia4->SetVisible(false);
156  HUD.AddRadioButton(IDC_INTERMEDIA5, IDC_INTERMEDIA, L"", 1, 1, static_cast<int>(defaultwidth * gui->game->displayscale), static_cast<int>(lineHeightC * gui->game->displayscale), false, 37, false, &intermedia5);
157  intermedia5->SetVisible(false);
158  HUD.AddRadioButton(IDC_INTERMEDIA6, IDC_INTERMEDIA, L"", 1, 1, static_cast<int>(defaultwidth * gui->game->displayscale), static_cast<int>(lineHeightC * gui->game->displayscale), false, 38, false, &intermedia6);
159  intermedia6->SetVisible(false);
160 
161  UpdateMenu(-1);
162 }
163 
164 void IntermediaDialog::Draw(D3DXVECTOR3* tracked)
165 {
166  logger->AddToCallStack("IntermediaDialog::Draw");
167 
168  RECT rect;
169  rect.top = static_cast<long>(tracked->y) + 2;
170  rect.left = static_cast<long>(tracked->x) + 5;
171  rect.bottom = 0;
172  rect.right = 0;
173 
174  for (short t = 0; t < maxmenuC; t++)
175  {
176  if (!menubool[t])
177  gui->g_pFont->DrawText(gui->g_pTextSprite, menu[t], -1, &rect, DT_NOCLIP | DT_EXPANDTABS, 0xFFFFFFFF);
178  rect.top += lineHeightC;
179  }
180 
181  if (menuLevel == -1)
182  {
183  rect.top = rect.left = 0;
184  rect.right = 258;
185  rect.bottom = 110;
186  gui->g_pTextSprite->Draw(gui->m_pddsEasydockAd, &rect, nullptr, tracked, 0xFFFFFFFF);
187  }
188 }
189 
190 void CALLBACK IntermediaDialog::DialogCallback(UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext)
191 {
192  logger->AddToCallStack("IntermediaDialog::DialogCallback");
193 
194  IntermediaDialog* dialog = static_cast<IntermediaDialog*>(pUserContext);
195 
196  pControl->SetEnabled(false);
197 
199 
200  SClientPacket outpacket;
201  outpacket.type = 11; // Menu type
202  int option = nControlID - IDC_INTERMEDIA1;
203  if (option == 0 && dialog->menu[5][0] == '0')
204  outpacket.f_x = 11.0f; // selection
205  else
206  outpacket.f_x = static_cast<float>(option + 2); // selection
207  outpacket.f_y = 0.0f; // NULL
208  outpacket.f_z = 0.0f; // NULL
209  outpacket.f_w = 0.0f; // NULL
210  gui->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
211 }
static void CheckMoved(short t)
bool DismissHelp(int helpId, int nControlID=GUI_UNDERSTOOD)
CDXUTRadioButton * intermedia4
Networking * networking
Definition: gui.h:855
void ActiveTab() override
void SendToServer(void *pData, DWORD dwSize, bool bGuaranteed, PacketOrdering order=ORDERING_NONE) const
Definition: Networking.cpp:59
GameClass * game
Definition: gui.h:857
ID3DXFont * g_pFont
Definition: gui.h:727
CDXUTRadioButton * intermedia6
InformationDialog * informationDialog
Definition: gui.h:789
void UpdateMenu(short tab) override
short tabs
Definition: DialogBase.h:62
bool usesHUD
Definition: DialogBase.h:56
CDXUTRadioButton * intermedia1
short defaultwidth
Definition: DialogBase.h:51
CDXUTRadioButton * intermedia5
CDXUTDialogResourceManager g_DialogResourceManager
Definition: gui.h:752
void PopUpDialog()
short text
Definition: DialogBase.h:69
CDXUTRadioButton * intermedia2
WCHAR menu[maxmenuC][44]
bool IsAdmin
Definition: gui.h:777
WCHAR msgbartext[HELP_SIZE]
Definition: DialogBase.h:82
char msgbarcolor
Definition: DialogBase.h:81
static Logger * logger
Definition: DialogBase.h:41
short defaultheight
Definition: DialogBase.h:51
LPDIRECT3DTEXTURE9 m_pddsEasydockAd
Definition: gui.h:743
void Draw(D3DXVECTOR3 *tracked) override
CDXUTRadioButton * intermedia3
bool allowscroll
Definition: DialogBase.h:45
bool menubool[maxmenuC]
#define maxmenuC
bool active
Definition: DialogBase.h:71
CDXUTDialog HUD
Definition: DialogBase.h:98
short icon
Definition: DialogBase.h:53
static HMI * gui
Definition: DialogBase.h:40
bool allowresize
Definition: DialogBase.h:45
#define lineHeightC
ID3DXSprite * g_pTextSprite
Definition: gui.h:726
static void CALLBACK DialogCallback(UINT nEvent, int nControlID, CDXUTControl *pControl, void *pUserContext)
#define HELP_SIZE
Definition: gui.h:17
float displayscale
Definition: GameClass.h:128
D3DXVECTOR3 windowdefaultlocation
Definition: DialogBase.h:52
bool normalinterlace
Definition: DialogBase.h:54
void AddToCallStack(const char *msg)
Definition: Logger.cpp:86
IntermediaDialog(short id)