Rise
The Vieneo Province
PeopleManagerDialog.cpp
Go to the documentation of this file.
1 #include "PeopleManagerDialog.h"
2 
3 #include <time.h>
4 
5 #include "../Networking.h"
6 #include "../GameClass.h"
7 
9 {
10  logger->AddToCallStack("PeopleManagerDialog::ctor");
11  usesHUD = true;
12  HUD.Init(&gui->g_DialogResourceManager, true, L"Textures\\GUI\\dxutcontrols.png");
13  HUD.SetCallback(&PeopleManagerDialog::DialogCallback, this);
14  HUD.SetFont(0, L"DejaVu Sans Mono", 12, FW_THIN);
15 
16  //dockedto = DD_PEOPLEMANAGER;
17  HUD.AddEditBox(IDC_FIELDEDIT, L"", 1, 1, 1, 1, false);
18  HUD.GetEditBox(IDC_FIELDEDIT)->SetVisible(false);
19  HUD.AddEditBox(IDC_TABEDIT, L"", 1, 1, 1, 1, false);
20  HUD.GetEditBox(IDC_TABEDIT)->SetVisible(false);
21  // defaultwidth=763-6;
22  defaultheight = 5 * 16;
23  icon = 3;
25  tabs = 1;
26  tabusedefaultlang[0] = 0;
27  tabstr[0][0] = 0; // unnamed
28  actions = 8; // enemy, neutral, ally, partner, delete, new folder, delete folder
29  action[0] = L_ACTION_ENEMY - L_ACTION_MARK; // activate
30  action[1] = L_ACTION_NEUTRAL - L_ACTION_MARK; // mark
31  action[2] = L_ACTION_ALLY - L_ACTION_MARK; // enter
32  action[3] = L_ACTION_PARTNER - L_ACTION_MARK; // enter
33  action[4] = L_ACTION_DELETE - L_ACTION_MARK; // delete
35  action[6] = L_ACTION_ADD_FOLDER - L_ACTION_MARK; // add folder
36  action[7] = L_ACTION_REMOVE_FOLDER - L_ACTION_MARK; // remove folder
37 
38  showfields = true;
39  fields = 8; // must be less than or equal to MAX_FIELDS
40 
41  fieldtype[0] = FIELD_ICON; // alignment icon
42  fieldwidth[0] = 25; // pixels
43 
44  fieldtype[1] = FIELD_VARTEXT; // variable width text (handle)
45  fieldwidth[1] = gui->FONT_WIDTH * 12; // 13-null
47 
48  fieldtype[2] = FIELD_RANKICON; // rank icon
49  fieldwidth[2] = 41; // n 00.000 w 000.000
50 
51  fieldtype[3] = FIELD_VARTEXT; // variable width text (name)
52  fieldwidth[3] = gui->FONT_WIDTH * 29; // 30-null
54 
55  fieldtype[4] = FIELD_VARTEXT; // variable width text (name)
56  fieldwidth[4] = gui->FONT_WIDTH * 12; // 26-null
58 
59  fieldtype[5] = FIELD_ALLIANCEICON; // alliance icon
60  fieldwidth[5] = 25; // pixels
61 
62  fieldtype[6] = FIELD_VARTEXT; // variable width text (name)
63  fieldwidth[6] = gui->FONT_WIDTH * 29; // 26-null
65 
66  fieldtype[7] = FIELD_VARTEXT; // variable width text (name)
67  fieldwidth[7] = gui->FONT_WIDTH * 29; // 30-null
69 
70  windowdefaultlocation = D3DXVECTOR3(128, 584, 0);
71  defaultwidth = 764;
72 }
73 
75 {
76  // logger->AddToCallStack("PeopleManagerDialog::Update");
77  // //dialogs[DD_PEOPLEMANAGER]->windowlocation = windowlocation;
78  // //dialogs[DD_PEOPLEMANAGER]->windowlocation.y += height + 32 + 56;
79  // //dialogs[DD_PEOPLEMANAGER]->windowseeklocation.z = -1.0f;
80 }
81 
82 void PeopleManagerDialog::Draw(D3DXVECTOR3* tracked)
83 {
84 }
85 
86 void CALLBACK PeopleManagerDialog::DialogCallback(UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext)
87 {
88  PeopleManagerDialog* pmd = static_cast<PeopleManagerDialog*>(pUserContext);
89  pmd->logger->AddToCallStack("PeopleManagerDialog::DialogCallback");
90 
91  switch (nControlID)
92  {
93  case IDC_FIELDEDIT:
94  {
95  if (nEvent == EVENT_EDITBOX_STRING)
96  {
97  short t = D_PEOPLEMANAGER;
98  SPlayerData tempplayer = gui->people.LoadPerson(pmd->linecursel + 1);
99  wcscpy_s(tempplayer.notes, 32, ((CDXUTEditBox*)pControl)->GetText());
100  gui->people.SavePerson(pmd->linecursel + 1, tempplayer);
101 
102  wcscpy_s(pmd->fieldline[pmd->editline][pmd->editfield], HELP_SIZE,
103  ((CDXUTEditBox*)pControl)->GetText());
104  pmd->ClearEdit();
105  pmd->CheckWidth(pmd->dialogid);
106  pmd->UpdateMenu(-1);
107  }
108  }
109  break;
110  case IDC_TABEDIT:
111  {
112  if ((((CDXUTEditBox*)pControl)->GetTextLength()) >= (MAX_TAB_CHARS - 4 - 1))
113  {
114  WCHAR str[MAX_TAB_CHARS - 4];
115  swprintf_s(str, MAX_TAB_CHARS - 4, L"%.*s", MAX_TAB_CHARS - 4 - 1, ((CDXUTEditBox*)pControl)->GetText());
116  ((CDXUTEditBox*)pControl)->SetText(str, false);
117  }
118  if (nEvent == EVENT_EDITBOX_STRING)
119  {
120  short t = D_PEOPLEMANAGER;
121  wcscpy_s(pmd->tabstr[pmd->edittab], MAX_TAB_CHARS - 4, ((CDXUTEditBox*)pControl)->GetText());
122  _wcsupr_s(pmd->tabstr[pmd->edittab], MAX_TAB_CHARS - 4);
123 
124  pmd->ClearEdit();
125  pmd->UpdateMenu(-1); // content changed
126  }
127  }
128  break;
129  }
130 }
131 
133 {
134  logger->AddToCallStack("PeopleManagerDialog::ClearEdit");
135  if (edittab != -1)
136  {
137  edittab = -1;
138  HUD.GetEditBox(IDC_TABEDIT)->SetVisible(false);
139  gui->Editing = false;
140  }
141  if (editline != -1)
142  {
143  HUD.GetEditBox(IDC_FIELDEDIT)->SetVisible(false);
144  editline = editfield = -1;
145  gui->Editing = false;
146  }
147 }
148 
150 {
151  logger->AddToCallStack("PeopleManagerDialog::UpdateMenu");
152  if (!active)
153  return;
154 
155  if (tab == -1)
156  {
157  // determine channel from activetab
158  tab = activetab;
159  }
160  else if (tab != activetab) // if not the one we are in right now
161  return;
162 
163  // sort messages first by their selected method (date default) then by folder
164  bool swapflag;
165  do
166  {
167  swapflag = false;
168  for (short t = 1; t < gui->people.peopletot; t++) // not <= because we swap t+1
169  {
170  SPlayerData t1 = gui->people.LoadPerson(t);
171  SPlayerData t2 = gui->people.LoadPerson(t + 1);
172  if (!t1.folder[tab] && t2.folder[tab])
173  {
174  gui->people.SavePerson(t + 1, t1);
175  gui->people.SavePerson(t, t2);
176  swapflag = true;
177  }
178  }
179  } while (swapflag);
180 
181  int temptot = 0;
182  for (short t = 1; t <= gui->people.peopletot; t++)
183  {
184  SPlayerData t1 = gui->people.LoadPerson(t);
185  if (t1.folder[tab])
186  temptot++;
187  }
188  /*
189  // sort based on sort flag
190  do
191  {
192  swapflag=false;
193  for (short t=1; t<temptot; t++) // not <= because we swap t+1
194  {
195  PEOPLE t1=messaging.LoadHeader(t);
196  MSGHEADER t2=messaging.LoadHeader(t+1);
197  if ((dialog[D_MESSAGECENTER].sortfield==4 && dialog[D_MESSAGECENTER].sortdirection==1 && t1.timestamp>t2.timestamp) ||
198  (dialog[D_MESSAGECENTER].sortfield==4 && dialog[D_MESSAGECENTER].sortdirection==-1 && t1.timestamp<t2.timestamp) ||
199  (dialog[D_MESSAGECENTER].sortfield==1 && dialog[D_MESSAGECENTER].sortdirection==1 && t1.subject[0]>t2.subject[0]) ||
200  (dialog[D_MESSAGECENTER].sortfield==1 && dialog[D_MESSAGECENTER].sortdirection==-1 && t1.subject[0]<t2.subject[0]))
201  {
202  messaging.SaveHeader(t+1, t1);
203  messaging.SaveHeader(t, t2);
204  swapflag=true;
205  }
206  }
207  }
208  while (swapflag);
209  */
210 
211  linetot = temptot;
212 
213  // 17-4<(18-1) = 13<17 (17-(18-1)=0
214  if ((linetot - linetop) < linedsp) // 8-3 is 5 OK, 8-4 is 4 NO, needs to be 5
215  linetop = linetot - linedsp;
216  if (linetop < 0)
217  linetop = 0;
218 
219  if (editline >= linedsp)
220  ClearEdit();
221 
222 
223  // if (dialog[D_PEOPLEMANAGER].lineact==dialog[D_PEOPLEMANAGER].linecursel)
224  // {
225  // g_BottomUI.GetStatic( GUI_WPACTIVATE )->SetText( L"ACTIVATE" );
226  // g_BottomUI.GetStatic( GUI_WPACTIVATE )->SetTextColor( 0xFFFFFFFF );
227  // }
228  if (linecursel > -1)
229  {
231  if (selectedPerson.serial == gui->player[gui->ourplayerC].serial)
232  {
233  actionenabled[0] = false;
234  actiontoggle[0] = false;
235  actionenabled[1] = false;
236  actiontoggle[1] = false;
237  actionenabled[2] = false;
238  actiontoggle[2] = false;
239  actionenabled[3] = false;
240  actiontoggle[3] = true;
241  }
242  else
243  {
244  if (selectedPerson.alignment == 0)
245  {
246  actionenabled[0] = false;
247  actiontoggle[0] = true;
248  }
249  else
250  {
251  actionenabled[0] = true;
252  actiontoggle[0] = false;
253  }
254  if (selectedPerson.alignment == 1)
255  {
256  actionenabled[1] = false;
257  actiontoggle[1] = true;
258  }
259  else
260  {
261  actionenabled[1] = true;
262  actiontoggle[1] = false;
263  }
264  if (selectedPerson.alignment == 2)
265  {
266  actionenabled[2] = false;
267  actiontoggle[2] = true;
268  }
269  else
270  {
271  actionenabled[2] = true;
272  actiontoggle[2] = false;
273  }
274  if (selectedPerson.alignment == 3)
275  {
276  actionenabled[3] = false;
277  actiontoggle[3] = true;
278  }
279  else
280  {
281  actionenabled[3] = true;
282  actiontoggle[3] = false;
283  }
284  }
285  if (gui->player[gui->ourplayerC].allianceHeadId != 0 && gui->player[gui->ourplayerC].allianceHeadId != gui->player[gui->ourplayerC].serial)
286  {
287  actionenabled[0] = false; // enemy
288  actionenabled[1] = false; // neutral
289  if (selectedPerson.alignment < 2)
290  {
291  actionenabled[2] = false; // ally
292  actionenabled[3] = false; // partner
293  }
294  }
295  actionenabled[4] = true; // delete
296  actionenabled[5] = true; // copy
297  }
298  else
299  {
300  selectedPerson = SPlayerData();
301  actionenabled[0] = false;
302  actionenabled[1] = false;
303  actionenabled[2] = false;
304  actionenabled[3] = false;
305  actiontoggle[0] = false;
306  actiontoggle[1] = false;
307  actiontoggle[2] = false;
308  actiontoggle[3] = false;
309  actionenabled[4] = false; // delete
310  actionenabled[5] = false; // copy
311  }
312  if (clipboardrecord)
313  actiontoggle[5] = true;
314  else
315  actiontoggle[5] = false;
316  //if (clipboardsourcetab != activetab && clipboardrecord)
317  // actionenabled[6] = true; // paste
318  //else
319  // actionenabled[6] = false; // paste
320  if (tabs < MAX_TAB)
321  actionenabled[6] = true; // add
322  else
323  actionenabled[6] = false;
324  if (tabs > 1)
325  actionenabled[7] = true; // remove
326  else
327  actionenabled[7] = false;
328 
329 
330  for (long t = 0; t < linedsp; t++)
331  {
332  if ((linetop + t) >= linetot)
333  {
334  fieldline[t][0][0] = 0;
335  fieldline[t][1][0] = 0;
336  fieldline[t][2][0] = fieldline[t][2][1] = 0;
337  fieldline[t][3][0] = 0;
338  fieldline[t][4][0] = 0;
339  fieldline[t][5][0] = 0;
340  fieldline[t][6][0] = 0;
341  fieldline[t][7][0] = 0;
342  }
343  else
344  {
345  SPlayerData tempperson = gui->people.LoadPerson(linetop + t + 1);
346  // if (chatchannel[channel].seqplayer[dialog[D_PEOPLEMANAGER].linetop+t]==ourplayerC)
347  // dialog[D_PEOPLEMANAGER].fieldline[t][0][0]=6; // partner
348  // else
349  fieldline[t][0][0] = 3 + tempperson.alignment;
350  swprintf_s(fieldline[t][1], HELP_SIZE, L"%S", tempperson.callsign);
351  fieldline[t][2][0] = tempperson.context;
352  fieldline[t][2][1] = tempperson.rank; // 1 is midshipman, 0 is do not display
353  swprintf_s(fieldline[t][3], HELP_SIZE, L"%S", tempperson.characterName);
354 
355  if (tempperson.createdate > 0)
356  {
357  tm tm_time;
358  _localtime64_s(&tm_time, &tempperson.createdate);
359  swprintf_s(fieldline[t][4], HELP_SIZE, L"%02i/%02i/%04i", tm_time.tm_mon+1, tm_time.tm_mday, tm_time.tm_year + 1900 + 225);
360  }
361  else
362  fieldline[t][4][0] = 0;
363 
365  fieldline[t][5][0] = tempperson.allianceHeadId;
366 
367  if (tempperson.allianceName[0])
368  swprintf_s(fieldline[t][6], HELP_SIZE, L"%S", tempperson.allianceName);
369  else
370  fieldline[t][6][0] = 0;
371 
372  wcscpy_s(fieldline[t][7], HELP_SIZE, tempperson.notes);
373  }
374  }
375 
376  CheckWidth(dialogid); // if content changes (tabs, received text) we have to adjust fit
378 }
379 
381 {
382  logger->AddToCallStack("PeopleManagerDialog::ActiveTab");
384 
386 }
387 
388 void PeopleManagerDialog::ClickTab(short clicked_tab)
389 {
390  logger->AddToCallStack("PeopleManagerDialog::ClickTab");
391  if (clicked_tab != activetab) // if tab wasn't the active one, make it active
392  {
393  activetab = clicked_tab;
394  //clearedit=true;
395  ActiveTab();
396  }
397  else // otherwise it was already active, edit it
398  {
399  if (edittab == -1 && editline == -1)
400  {
401  edittab = clicked_tab;
402  HUD.GetEditBox(IDC_TABEDIT)->SetLocation((int)(tabx[clicked_tab] - windowlocation.x) - 8, -46);
403  HUD.GetEditBox(IDC_TABEDIT)->SetSize((int)tabwidth[clicked_tab] + 20, 32);
404  HUD.GetEditBox(IDC_TABEDIT)->SetText(tabstr[clicked_tab], false);
405  HUD.GetEditBox(IDC_TABEDIT)->SetVisible(true);
406  HUD.GetEditBox(IDC_TABEDIT)->HandleMouse(WM_LBUTTONDOWN, gui->ptClick, 0, 0);
407  gui->Editing = true;
408  }
409  }
410 }
411 
413 {
414  logger->AddToCallStack("PeopleManagerDialog::ActionIconClick");
415  if (actionenabled[icon_id])
416  {
417  if (action[icon_id] == (L_ACTION_ADD_FOLDER - L_ACTION_MARK) && tabs < MAX_TAB) // add folder
418  {
419  tabusedefaultlang[tabs] = 0; // user config
420  tabstr[tabs][0] = 0; // unnamed
421  tabs++;
422  UpdateMenu(-1);
424  }
425  if (action[icon_id] == (L_ACTION_REMOVE_FOLDER - L_ACTION_MARK) && tabs > 1) // remove folder
426  {
427  // ian wants it to go through and remove group associations for records and delete
428  for (short p = 1; p <= gui->people.peopletot; p++)
429  gui->people.DeletePerson(p, (char)activetab);
430  for (short s = activetab; s < (tabs - 1); s++)
431  {
432  tabflash[s] = tabflash[s + 1];
433  wcscpy_s(tabstr[s], MAX_TAB_CHARS, tabstr[s + 1]);
435  for (short p = 1; p <= gui->people.peopletot; p++)
436  {
437  SPlayerData t1 = gui->people.LoadPerson(p);
438  t1.folder[s] = t1.folder[s + 1];
439  gui->people.SavePerson(p, t1);
440  }
441  }
442  tabs--;
443  if (activetab >= tabs)
444  activetab = tabs - 1;
445  ActiveTab();
446  // CheckWidth(t);
447  }
448  if (action[icon_id] == (L_ACTION_DELETE - L_ACTION_MARK))
449  {
451  linecursel = -1;
452  UpdateMenu(-1);
453  }
454  else if (action[icon_id] == (L_ACTION_COPY - L_ACTION_MARK))
455  {
458  UpdateMenu(-1);
459  }
460  /*else if (action[icon_id] == (L_ACTION_PASTE - L_ACTION_MARK))
461  {
462  long temprecord = gui->people.ResidesLocally(clipboardrecord);
463  SPlayerData tempperson = gui->people.LoadPerson(temprecord);
464  tempperson.folder[activetab] = true;
465  gui->people.SavePerson(temprecord, tempperson);
466  clipboardrecord = 0;
467  clipboardsourcetab = -1;
468  UpdateMenu(-1);
469  }*/
470  else if (action[icon_id] == (L_ACTION_PARTNER - L_ACTION_MARK))
471  {
472  SPlayerData tempperson = gui->people.LoadPerson(linecursel + 1);
473  tempperson.alignment = 3;
474  gui->people.SavePerson(linecursel + 1, tempperson);
475  SClientPacket outpacket;
476  outpacket.type = 8; // change alignment
477  outpacket.f_x = (float)tempperson.serial; // player record
478  outpacket.f_y = 3.0f; // new alignment
479  outpacket.f_z = 0.0f; // NULL
480  outpacket.f_w = 0.0f; // NULL
481  gui->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
482  UpdateMenu(-1);
483  UpdateOnlinePlayers(tempperson.serial, 3);
484  }
485  else if (action[icon_id] == (L_ACTION_ALLY - L_ACTION_MARK))
486  {
487  SPlayerData tempperson = gui->people.LoadPerson(linecursel + 1);
488  tempperson.alignment = 2;
489  gui->people.SavePerson(linecursel + 1, tempperson);
490  SClientPacket outpacket;
491  outpacket.type = 8; // change alignment
492  outpacket.f_x = (float)tempperson.serial; // player record
493  outpacket.f_y = 2.0f; // new alignment
494  outpacket.f_z = 0.0f; // NULL
495  outpacket.f_w = 0.0f; // NULL
496  gui->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
497  UpdateMenu(-1);
498  UpdateOnlinePlayers(tempperson.serial, 2);
499  }
500  else if (action[icon_id] == (L_ACTION_NEUTRAL - L_ACTION_MARK))
501  {
502  SPlayerData tempperson = gui->people.LoadPerson(linecursel + 1);
503  tempperson.alignment = 1;
504  gui->people.SavePerson(linecursel + 1, tempperson);
505  SClientPacket outpacket;
506  outpacket.type = 8; // change alignment
507  outpacket.f_x = (float)tempperson.serial; // player record
508  outpacket.f_y = 1.0f; // new alignment
509  outpacket.f_z = 0.0f; // NULL
510  outpacket.f_w = 0.0f; // NULL
511  gui->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
512  UpdateMenu(-1);
513  UpdateOnlinePlayers(tempperson.serial, 1);
514  }
515  else if (action[icon_id] == (L_ACTION_ENEMY - L_ACTION_MARK))
516  {
517  SPlayerData tempperson = gui->people.LoadPerson(linecursel + 1);
518  tempperson.alignment = 0;
519  gui->people.SavePerson(linecursel + 1, tempperson);
520  SClientPacket outpacket;
521  outpacket.type = 8; // change alignment
522  outpacket.f_x = (float)tempperson.serial; // player record
523  outpacket.f_y = 0.0f; // new alignment
524  outpacket.f_z = 0.0f; // NULL
525  outpacket.f_w = 0.0f; // NULL
526  gui->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
527  UpdateMenu(-1);
528  UpdateOnlinePlayers(tempperson.serial, 0);
529  }
530  }
531 }
532 
533 void PeopleManagerDialog::UpdateOnlinePlayers(unsigned short serial, char alignment)
534 {
535  logger->AddToCallStack("PeopleManagerDialog::UpdateOnlinePlayers");
536  for (short t = 0; t < MAX_ONLINEPLAYERS; t++)
537  {
538  if (gui->player[t].serial == serial)
539  gui->player[t].alignment = alignment;
540  }
541 
542  for (short t = 0; t < MAX_SCAN; t++)
543  {
544  // crap we can only do this with vehicles that we know about
545  if (playerships[t].active)
546  {
547  const Sscan scan = gui->game->bus->Scanner.Get(playerships[t].vehicleId);
548  if (scan.initialized)
550  else
551  playerships[t].align = 1;
552  }
553  }
554 
556 }
557 
559 {
560  logger->AddToCallStack("PeopleManagerDialog::DragDropItem");
561  if (gui->dragt == DD_COMMUNICATIONS) // player to people manager
562  {
563  SPlayerData tempplayer;
565  gui->people.AddUpdatePlayer(tempplayer, (char)s);
566  activetab = s;
567  UpdateMenu(-1);
568  linecursel = gui->people.AddUpdatePlayer(tempplayer, (char)s) - 1;
569  if (linecursel != -1)
570  linetop = linecursel - (linedsp - 1) / 2;
571  UpdateMenu(-1);
572  }
573  /* else if (dragt==D_MESSAGECENTER)
574  {
575  SPlayerData tempplayer;
576  tempplayer=player[chatchannel[dialog[D_COMMUNICATIONS].activetab].seqplayer[dragline]];
577  people.AddUpdatePlayer(tempplayer, (char)s);
578  UpdatePMMenu(-1);
579  }
580  */ else if (gui->dragt == D_PEOPLEMANAGER) // move one folder to another
581  {
582  SPlayerData tempplayer = gui->people.LoadPerson(linecursel + 1);
583  tempplayer.folder[activetab] = false;
584  tempplayer.folder[s] = true;
585  gui->people.SavePerson(linecursel + 1, tempplayer);
586  linecursel = -1;
587  UpdateMenu(-1);
588  }
589 }
short FONT_WIDTH
Definition: gui.h:713
void ClickTab(short clicked_tab)
SPlayerData LoadPerson(long temprecord) const
Definition: people.h:54
short tabx[MAX_TAB]
Definition: DialogBase.h:89
virtual void UpdateMenu(short tab)
void DeletePerson(long temprecord, char folder)
Definition: people.h:132
Networking * networking
Definition: gui.h:855
short actions
Definition: DialogBase.h:49
long editfield
Definition: DialogBase.h:79
void SendToServer(void *pData, DWORD dwSize, bool bGuaranteed, PacketOrdering order=ORDERING_NONE) const
Definition: Networking.cpp:59
short linedsp
Definition: DialogBase.h:72
GameClass * game
Definition: gui.h:857
D3DXVECTOR3 windowlocation
Definition: DialogBase.h:59
scanDb Scanner
Definition: Bus.h:379
long edittab
Definition: DialogBase.h:79
s_network_objects playerships[MAX_SCAN]
Definition: globals.cpp:174
bool actionenabled[MAX_ACTION]
Definition: DialogBase.h:77
unsigned short AddUpdatePlayer(SPlayerData tempplayer, char folder)
Definition: people.h:207
short fieldcontent[MAX_FIELDS]
Definition: DialogBase.h:48
short dialogid
Definition: DialogBase.h:101
short tabs
Definition: DialogBase.h:62
bool usesHUD
Definition: DialogBase.h:56
short dragt
Definition: gui.h:716
short defaultwidth
Definition: DialogBase.h:51
int linecursel
Definition: DialogBase.h:73
bool showfields
Definition: DialogBase.h:45
POINT ptClick
Definition: gui.h:724
short activetab
Definition: DialogBase.h:62
CDXUTDialogResourceManager g_DialogResourceManager
Definition: gui.h:752
WCHAR fieldline[MAX_LINES][MAX_FIELDS][HELP_SIZE]
Definition: DialogBase.h:94
short text
Definition: DialogBase.h:69
static DialogBase * dialogs[D_ENUMERATION]
Definition: DialogBase.h:39
short fieldwidth[MAX_FIELDS]
Definition: DialogBase.h:46
bool actiontoggle[MAX_ACTION]
Definition: DialogBase.h:77
unsigned char seqplayer[MAX_ONLINEPLAYERS]
Definition: chat.h:13
long peopletot
Definition: people.h:20
unsigned char ourplayerC
Definition: gui.h:766
short tabusedefaultlang[MAX_TAB]
Definition: DialogBase.h:50
static Logger * logger
Definition: DialogBase.h:41
SPlayerData player[MAX_ONLINEPLAYERS]
Definition: gui.h:765
short defaultheight
Definition: DialogBase.h:51
void ActionIconClick(long icon_id)
bool Editing
Definition: gui.h:778
long dragline
Definition: gui.h:717
static short CheckWidth(short dialogid)
int linetop
Definition: DialogBase.h:73
short action[MAX_ACTION]
Definition: DialogBase.h:49
WCHAR tabstr[MAX_TAB][MAX_TAB_CHARS]
Definition: DialogBase.h:63
Definition: gui.h:34
static void CALLBACK DialogCallback(UINT nEvent, int nControlID, CDXUTControl *pControl, void *pUserContext)
unsigned short clipboardrecord
Definition: DialogBase.h:84
static void UpdateOnlinePlayers(unsigned short serial, char alignment)
CHATCHANNEL chatchannel[MAX_TAB]
Definition: gui.h:768
bool active
Definition: DialogBase.h:71
short tabflash[MAX_TAB]
Definition: DialogBase.h:88
CDXUTDialog HUD
Definition: DialogBase.h:98
short icon
Definition: DialogBase.h:53
static HMI * gui
Definition: DialogBase.h:40
char clipboardsourcetab
Definition: DialogBase.h:85
PEOPLE people
Definition: gui.h:769
Sscandata scandata
Definition: scanDb.h:49
long editline
Definition: DialogBase.h:79
void Draw(D3DXVECTOR3 *tracked)
static void UpdateScrollBar(short t)
int ownerId
Definition: scanDb.h:22
void SavePerson(long temprecord, SPlayerData tempperson) const
Definition: people.h:94
char GetAlignment(int ownerId) const
Definition: people.h:196
SmodeAC modeAC
Definition: scanDb.h:41
Definition: scanDb.h:46
short tabwidth[MAX_TAB]
Definition: DialogBase.h:89
#define HELP_SIZE
Definition: gui.h:17
Sscan Get(USHORT vehicleId) const
Definition: scanDb.cpp:87
D3DXVECTOR3 windowdefaultlocation
Definition: DialogBase.h:52
void AddToCallStack(const char *msg)
Definition: Logger.cpp:86
Bus * bus
Definition: GameClass.h:112
virtual void ActiveTab()
int linetot
Definition: DialogBase.h:73
short fieldtype[MAX_FIELDS]
Definition: DialogBase.h:47
bool initialized
Definition: scanDb.h:48
short fields
Definition: DialogBase.h:44