Rise
The Vieneo Province
AlertMessageStack.cpp
Go to the documentation of this file.
1 #include "../Instrument.h"
2 #define lineHeightC 11
3 
4 AlertMessageStack::AlertMessageStack(int prmX, int prmY, float prmXScale, float prmYScale, Bus* prmBus, Logger* prmLogger, DeviceObject* prmDevice, std::vector<Font*> prmFonts) :
5  Instrument(prmX, prmY, prmXScale, prmYScale, prmBus, prmLogger, prmDevice, prmFonts)
6 {
7  logger->AddToCallStack("AlertMessageStack::ctor");
8  defaultFont = 1;
9 
10  sprite = new Sprite(logger, pDevice, "Textures/Instruments/cas-bar.png", prmX, 0, 0.1f, 0, 0, 90, 10, 0x00000000);
11 }
12 
14 {
15  int yy = 0;
16  int warnCount = 0, cautionCount = 0, advisoryCount = 0, statusCount = 0;
17  bool messageFlashState = fmodf(static_cast<float>(bus->ProgramTime), 2.0f) > 1.0f;
18  for (UINT i = 0; i < bus->messages.size(); i++)
19  {
20  if (bus->messages.at(i).level == MessageLevel::Warning)
21  {
22  warnCount++;
24  DWORD m_clr;
25  if (!bus->messages.at(i).acknowledged && messageFlashState)
26  {
27  m_clr = 0xFFFFFFFF;
28  sprite->SetLocation(x, y + yy + 1);
29  sprite->Update();
30  sprite->Draw(0xFFFF0000);
31  }
32  else
33  {
34  m_clr = 0xFFFF0000;
35  }
36  DrawTextW(bus->messages.at(i).text.c_str(), 5, yy, 0.2f, DT_NOCLIP, m_clr, 1, "WarningAlertMessageStack");
37  yy += lineHeightC;
38  }
39  }
40  for (UINT i = 0; i < bus->messages.size(); i++)
41  {
42  if (bus->messages.at(i).level == MessageLevel::Caution)
43  {
44  cautionCount++;
46  DWORD m_clr;
47  if (!bus->messages.at(i).acknowledged && messageFlashState)
48  {
49  m_clr = 0xFF000000;
50  sprite->SetLocation(x, y + yy + 1);
51  sprite->Update();
52  sprite->Draw(0xFFFFFF00);
53  }
54  else
55  {
56  m_clr = 0xFFFFFF00;
57  }
58  DrawTextW(bus->messages.at(i).text.c_str(), 5, yy, 0.2f, DT_NOCLIP, m_clr, 1, "CautionAlertMessageStack");
59  yy += lineHeightC;
60  }
61  }
62  for (UINT i = 0; i < bus->messages.size(); i++)
63  {
64  if (bus->messages.at(i).level == MessageLevel::Advisory)
65  {
66  advisoryCount++;
68  DWORD m_clr;
69  if (!bus->messages.at(i).acknowledged && messageFlashState)
70  {
71  m_clr = 0xFF000000;
72  sprite->SetLocation(x, y + yy + 1);
73  sprite->Update();
74  sprite->Draw(0xFF00FFFF);
75  }
76  else
77  {
78  m_clr = 0xFF00FFFF;
79  }
80  DrawTextW(bus->messages.at(i).text.c_str(), 5, yy, 0.2f, DT_NOCLIP, m_clr, 1, "AdvisoryAlertMessageStack");
81  yy += lineHeightC;
82  }
83  }
84  for (UINT i = 0; i < bus->messages.size(); i++)
85  {
86  if (bus->messages.at(i).level == MessageLevel::Status)
87  {
88  statusCount++;
90  DrawTextW(bus->messages.at(i).text.c_str(), 5, yy, 0.2f, DT_NOCLIP, 0xFFFFFFFF, 1, "StatusAlertMessageStack");
91  yy += lineHeightC;
92  }
93  }
94 
96  DrawTextW(L"END", 35, yy, 0.2f, DT_NOCLIP, 0xFFFFFFFF, 1, "AlertMessageStack");
97 
99 }
void SetLocation(int absoluteX, int absoluteY)
Definition: Sprite.cpp:90
std::vector< Message > messages
Definition: Bus.h:345
double ProgramTime
Definition: Bus.h:373
Definition: Logger.h:9
Definition: Message.h:7
DeviceObject * pDevice
Definition: Instrument.h:17
void Update()
Definition: Sprite.cpp:41
AlertMessageStack(int prmX, int prmY, float prmXScale, float prmYScale, Bus *prmBus, Logger *prmLogger, DeviceObject *prmDevice, std::vector< Font *> prmFonts)
void Draw(D3DXCOLOR prmColor)
Definition: Sprite.cpp:66
Definition: Bus.h:16
Definition: Sprite.h:7
Definition: Message.h:8
Bus * bus
Definition: Instrument.h:18
UINT defaultFont
Definition: Instrument.h:20
#define lineHeightC
Logger * logger
Definition: Instrument.h:19
Definition: Message.h:10
void AddToCallStack(const char *msg)
Definition: Logger.cpp:86
void Render() override