fastpreview.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. #include "fastpreview.h"
  2. #include "mainwindow.h"
  3. #include "..\Attributes\BaseAttr.h"
  4. #include "..\attributes\attributes.h"
  5. #define WINDOW_POSX 10
  6. #define WINDOW_POSY 10
  7. #define WINDOW_WIDTH 600
  8. #define WINDOW_HEIGHT 480
  9. extern IRender * pRS;
  10. extern TMainWindow* MainWindow;
  11. extern char* IntToStr (int val);
  12. extern char* FloatToStr (float val);
  13. TFastPreviewWindow::TFastPreviewWindow (MissionEditor::tCreatedMO* pObject) : GUIWindow (NULL, WINDOW_POSX, WINDOW_POSY, WINDOW_WIDTH, WINDOW_HEIGHT)
  14. {
  15. int newHeight = pRS->GetScreenInfo3D().dwHeight;
  16. newHeight -= 20;
  17. SetHeight(newHeight);
  18. dword dwHeight = newHeight;
  19. bAlwaysOnTop = true;
  20. bSystemButton = false;
  21. Caption = "Object : ";
  22. Caption += pObject->pObject.SPtr()->GetObjectID().c_str();
  23. btnOK = NEW GUIButton (this, 4, dwHeight-60, WINDOW_WIDTH-9, 24);
  24. btnOK->Glyph->Load ("ok");
  25. btnOK->Caption = "Close window";
  26. btnOK->pFont->SetSize (12);
  27. btnOK->OnMousePressed = (CONTROL_EVENT)&TFastPreviewWindow::onOKPressed;
  28. btnOK->FlatButton = true;
  29. pAttrTable = NEW GUIListBox(this, 4, 2, WINDOW_WIDTH-9, dwHeight-70);
  30. //pAttrTable->Items
  31. int AttrCount = pObject->AttrList->GetCount();
  32. for (int n = 0 ; n < AttrCount; n++)
  33. {
  34. BaseAttribute* pBase = pObject->AttrList->Get(n);
  35. AddBaseAttr(pBase, 0);
  36. }
  37. }
  38. TFastPreviewWindow::~TFastPreviewWindow ()
  39. {
  40. }
  41. void _cdecl TFastPreviewWindow::onOKPressed (GUIControl* sender)
  42. {
  43. Close (this);
  44. }
  45. void TFastPreviewWindow::AddBaseAttr (BaseAttribute* pBase, int Level)
  46. {
  47. string v = "";
  48. for (int lvl = 0; lvl < Level; lvl++)
  49. {
  50. v+= " ";
  51. }
  52. v += "#b";
  53. v += pBase->GetName();
  54. v += "@b : ";
  55. bool bNeedAddLine = true;
  56. IMOParams::Type AttrType = pBase->GetType();
  57. switch (AttrType)
  58. {
  59. //--------------------------------------
  60. case IMOParams::t_bool:
  61. {
  62. BoolAttribute* pBoolAttr = (BoolAttribute*)pBase;
  63. if (pBoolAttr->GetValue())
  64. {
  65. v += "true";
  66. } else
  67. {
  68. v += "false";
  69. }
  70. break;
  71. }
  72. //--------------------------------------
  73. case IMOParams::t_long:
  74. {
  75. LongAttribute* pLongAttr = (LongAttribute*)pBase;
  76. v += string (IntToStr(pLongAttr->GetValue()));
  77. break;
  78. }
  79. //--------------------------------------
  80. case IMOParams::t_float:
  81. {
  82. FloatAttribute* pFloatAttr = (FloatAttribute*)pBase;
  83. v += string (FloatToStr(pFloatAttr->GetValue()));
  84. break;
  85. }
  86. //--------------------------------------
  87. case IMOParams::t_string:
  88. {
  89. StringAttribute* pStrAttr = (StringAttribute*)pBase;
  90. v+= "\"";
  91. v += pStrAttr->GetValue();
  92. v+= "\"";
  93. break;
  94. }
  95. //--------------------------------------
  96. case IMOParams::t_locstring:
  97. {
  98. LocStringAttribute* pStrAttr = (LocStringAttribute*)pBase;
  99. v+= "\"";
  100. v += pStrAttr->GetValue();
  101. v+= "\"";
  102. break;
  103. }
  104. //--------------------------------------
  105. case IMOParams::t_position:
  106. {
  107. PositionAttribute* pPosAttr = (PositionAttribute*)pBase;
  108. v += string (FloatToStr(pPosAttr->GetValue().x));
  109. v += ", ";
  110. v += string (FloatToStr(pPosAttr->GetValue().y));
  111. v += ", ";
  112. v += string (FloatToStr(pPosAttr->GetValue().z));
  113. break;
  114. }
  115. //--------------------------------------
  116. case IMOParams::t_angles:
  117. {
  118. RotationAttribute* pPosAttr = (RotationAttribute*)pBase;
  119. v += string (FloatToStr(pPosAttr->GetValue().x));
  120. v += ", ";
  121. v += string (FloatToStr(pPosAttr->GetValue().y));
  122. v += ", ";
  123. v += string (FloatToStr(pPosAttr->GetValue().z));
  124. break;
  125. }
  126. //--------------------------------------
  127. case IMOParams::t_color:
  128. {
  129. ColorAttribute* pClrAttr = (ColorAttribute*)pBase;
  130. v+= "RGBA (";
  131. v += string (FloatToStr(pClrAttr->GetValue().r));
  132. v += ", ";
  133. v += string (FloatToStr(pClrAttr->GetValue().g));
  134. v += ", ";
  135. v += string (FloatToStr(pClrAttr->GetValue().b));
  136. v += ", ";
  137. v += string (FloatToStr(pClrAttr->GetValue().a));
  138. v+= ")";
  139. break;
  140. }
  141. //--------------------------------------
  142. case IMOParams::t_enum:
  143. {
  144. EnumAttribute* pEnumAttr = (EnumAttribute*)pBase;
  145. v += "\"";
  146. v += pEnumAttr->GetStringValue();
  147. v += "\"";
  148. break;
  149. }
  150. case IMOParams::t_array:
  151. {
  152. ArrayAttribute* pArrayAttr = (ArrayAttribute*)pBase;
  153. int ValCount = pArrayAttr->GetValuesCount();
  154. v += string (IntToStr(ValCount));
  155. v += " items";
  156. pAttrTable->Items.Add(v);
  157. bNeedAddLine = false;
  158. for (int j = 0; j < ValCount; j++)
  159. {
  160. ArrayAttribute::ArrayElement* pElement = pArrayAttr->GetValue(j);
  161. for (dword q = 0; q < pElement->elements.Size(); q++)
  162. {
  163. AddBaseAttr(pElement->elements[q], Level+1);
  164. //
  165. }
  166. }
  167. break;
  168. }
  169. case IMOParams::t_group:
  170. {
  171. GroupAttribute* pGroupAttr = (GroupAttribute*)pBase;
  172. pAttrTable->Items.Add(v);
  173. bNeedAddLine = false;
  174. for (DWORD i = 0 ; i < pGroupAttr->Childs.Size(); i++)
  175. {
  176. AddBaseAttr(pGroupAttr->Childs[i], Level+1);
  177. }
  178. break;
  179. }
  180. default:
  181. {
  182. v+= "unknown";
  183. }
  184. }
  185. if (bNeedAddLine) pAttrTable->Items.Add(v);
  186. }
  187. void TFastPreviewWindow::Draw ()
  188. {
  189. GUIWindow::Draw();
  190. if (GetAsyncKeyState(VK_ESCAPE) < 0)
  191. {
  192. Close(this);
  193. }
  194. }