OpenClonk
C4GameMessage Class Reference

#include <C4GameMessage.h>

Collaboration diagram for C4GameMessage:
[legend]

Public Member Functions

void Draw (C4TargetFacet &cgo, int32_t iPlayer)
 
 C4GameMessage ()
 
 ~C4GameMessage ()
 
int32_t GetPositioningFlags () const
 

Protected Member Functions

void Init (int32_t iType, const StdStrBuf &Text, C4Object *pTarget, int32_t iPlayer, int32_t iX, int32_t iY, uint32_t dwCol, C4ID idDecoID, C4PropList *pSrc, uint32_t dwFlags, int width)
 
void Append (const char *szText, bool fNoDuplicates=false)
 
bool Execute ()
 
const char * WordWrap (int32_t iMaxWidth)
 
void UpdateDef (C4ID idUpdDef)
 

Protected Attributes

int32_t X
 
int32_t Y
 
int32_t Wdt
 
int32_t Hgt
 
int32_t Delay
 
DWORD ColorDw
 
int32_t Player
 
int32_t Type
 
C4ObjectTarget
 
StdCopyStrBuf Text
 
C4GameMessageNext
 
C4ID DecoID
 
C4PropListPictureDef
 
C4Value PictureDefVal
 
C4GUI::FrameDecorationpFrameDeco {nullptr}
 
uint32_t dwFlags
 

Friends

class C4GameMessageList
 

Detailed Description

Definition at line 50 of file C4GameMessage.h.

Constructor & Destructor Documentation

◆ C4GameMessage()

C4GameMessage::C4GameMessage ( )
default

◆ ~C4GameMessage()

C4GameMessage::~C4GameMessage ( )

Definition at line 34 of file C4GameMessage.cpp.

35 {
36  delete pFrameDeco;
37 }
C4GUI::FrameDecoration * pFrameDeco
Definition: C4GameMessage.h:69

References pFrameDeco.

Member Function Documentation

◆ Append()

void C4GameMessage::Append ( const char *  szText,
bool  fNoDuplicates = false 
)
protected

Definition at line 96 of file C4GameMessage.cpp.

97 {
98  // Check for duplicates
99  if (fNoDuplicates)
100  for (const char *pPos = Text.getData(); *pPos; pPos = SAdvancePast(pPos, '|'))
101  if (SEqual2(pPos, szText))
102  return;
103  // Append new line
104  Text.AppendFormat("|%s", szText);
106 }
const int32_t ObjectMsgDelayFactor
const int32_t GlobalMsgDelayFactor
bool SEqual2(const char *szStr1, const char *szStr2)
Definition: Standard.cpp:204
const char * SAdvancePast(const char *szSPos, char cPast)
Definition: Standard.cpp:438
size_t SLen(const char *sptr)
Definition: Standard.h:74
StdCopyStrBuf Text
Definition: C4GameMessage.h:64
C4Object * Target
Definition: C4GameMessage.h:63
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:190
const char * getData() const
Definition: StdBuf.h:442

References StdStrBuf::AppendFormat(), Delay, StdStrBuf::getData(), GlobalMsgDelayFactor, ObjectMsgDelayFactor, SAdvancePast(), SEqual2(), SLen(), Target, and Text.

Referenced by C4GameMessageList::Append().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Draw()

void C4GameMessage::Draw ( C4TargetFacet cgo,
int32_t  iPlayer 
)

Definition at line 121 of file C4GameMessage.cpp.

122 {
123  // Globals or player
124  if (Type == C4GM_Global || ((Type == C4GM_GlobalPlayer) && (iPlayer == Player)))
125  {
126  int32_t iTextWdt,iTextHgt;
127  StdStrBuf sText;
128  int32_t x,y,wdt;
129  if (dwFlags & C4GM_XRel) x = X * cgo.Wdt / 100; else x = X;
130  if (dwFlags & C4GM_YRel) y = Y * cgo.Hgt / 100; else y = Y;
131  if (dwFlags & C4GM_WidthRel) wdt = Wdt * cgo.Wdt / 100; else wdt = Wdt;
132  if (~dwFlags & C4GM_NoBreak)
133  {
134  // Word wrap to cgo width
135  if (PictureDef)
136  {
137  if (!wdt) wdt = Clamp<int32_t>(cgo.Wdt/2, 50, std::min<int32_t>(500, cgo.Wdt-10));
138  int32_t iUnbrokenTextWidth = ::GraphicsResource.FontRegular.GetTextWidth(Text.getData(), true);
139  wdt = std::min<int32_t>(wdt, iUnbrokenTextWidth+10);
140  }
141  else
142  {
143  if (!wdt)
144  wdt = Clamp<int32_t>(cgo.Wdt-50, 50, 500);
145  else
146  wdt = Clamp<int32_t>(wdt, 10, cgo.Wdt-10);
147  }
148  iTextWdt = wdt * cgo.Zoom;
149  iTextHgt = ::GraphicsResource.FontRegular.BreakMessage(Text.getData(), iTextWdt, &sText, true);
150  }
151  else
152  {
153  ::GraphicsResource.FontRegular.GetTextExtent(Text.getData(), iTextWdt, iTextHgt, true);
154  sText.Ref(Text);
155  }
156  int32_t iDrawX = cgo.X+x;
157  int32_t iDrawY = cgo.Y+y;
158  // draw message
159  if (PictureDef)
160  {
161  // message with portrait
162  // bottom-placed portrait message: Y-Positioning 0 refers to bottom of viewport
163  if (dwFlags & C4GM_Bottom) iDrawY += cgo.Hgt;
164  else if (dwFlags & C4GM_VCenter) iDrawY += cgo.Hgt/2;
165  if (dwFlags & C4GM_Right) iDrawX += cgo.Wdt;
166  else if (dwFlags & C4GM_HCenter) iDrawX += cgo.Wdt/2;
167  // draw decoration
168  if (pFrameDeco)
169  {
170  iDrawX *= cgo.Zoom; iDrawY *= cgo.Zoom;
171  C4Rect rect(iDrawX-cgo.TargetX, iDrawY-cgo.TargetY, iTextWdt + PictureWidth + PictureIndent + pFrameDeco->iBorderLeft + pFrameDeco->iBorderRight, std::max(iTextHgt, PictureWidth) + pFrameDeco->iBorderTop + pFrameDeco->iBorderBottom);
172  if (dwFlags & C4GM_Bottom) { rect.y -= rect.Hgt; iDrawY -= rect.Hgt; }
173  else if (dwFlags & C4GM_VCenter) { rect.y -= rect.Hgt/2; iDrawY -= rect.Hgt/2; }
174  if (dwFlags & C4GM_Right) { rect.x -= rect.Wdt; iDrawX -= rect.Wdt; }
175  else if (dwFlags & C4GM_HCenter) { rect.x -= rect.Wdt/2; iDrawX -= rect.Wdt/2; }
176  pFrameDeco->Draw(cgo, rect);
177  iDrawX += pFrameDeco->iBorderLeft;
178  iDrawY += pFrameDeco->iBorderTop;
179  }
180  else
181  iDrawY -= iTextHgt;
182  // draw picture
183  // can only be def or object because has been checked on assignment
184 
185  C4Facet facet(cgo.Surface, iDrawX, iDrawY, PictureWidth, PictureWidth);
186  if(PictureDef->GetObject())
187  PictureDef->GetObject()->DrawPicture(facet);
188  else if (PictureDef->GetDef())
189  PictureDef->GetDef()->Draw(facet);
190  else
192 
193  // draw message
195  }
196  else
197  {
198  // message without picture
199  iDrawX += (cgo.Wdt/2) * cgo.Zoom;
200  iDrawY += (2 * cgo.Hgt / 3 + 50) * cgo.Zoom;
201  if (!(dwFlags & C4GM_Bottom)) iDrawY += DrawMessageOffset;
202  pDraw->TextOut(sText.getData(),::GraphicsResource.FontRegular,1.0,cgo.Surface,iDrawX,iDrawY,ColorDw,ACenter);
203  }
204  }
205  // Positioned
206  else if (Type == C4GM_Target || ((Type == C4GM_TargetPlayer) && (iPlayer == Player)))
207  {
208  // adjust position by object; care about parallaxity
209  float iMsgX, iMsgY, newzoom;
210  Target->GetDrawPosition(cgo, iMsgX, iMsgY, newzoom);
211  if(~dwFlags & C4GM_YRel)
212  iMsgY -= Target->Def->Shape.Hgt/2+5;
213  iMsgX+=X; iMsgY+=Y;
214  // check output bounds
215  if (Inside<float>((iMsgX - cgo.X) * newzoom, 0, cgo.Wdt * cgo.Zoom - 1) || (dwFlags & C4GM_XRel))
216  if (Inside<float>((iMsgY - cgo.Y) * newzoom, 0, cgo.Hgt * cgo.Zoom - 1) || (dwFlags & C4GM_YRel))
217  {
218  // if the message is attached to an object and the object
219  // is invisible for that player, the message won't be drawn
220  if (Type == C4GM_Target)
221  if (!Target->IsVisible(iPlayer, false))
222  return;
223  // Word wrap to cgo width
224  StdStrBuf sText;
225  if (~dwFlags & C4GM_NoBreak)
226  {
227  // standard break width
228  int breakWdt = Clamp<int32_t>(cgo.Wdt * cgo.Zoom, 50, 200);
229 
230  // user supplied width?
231  if (Wdt)
232  breakWdt = Wdt;
233 
234  ::GraphicsResource.FontRegular.BreakMessage(Text.getData(), breakWdt, &sText, true);
235  }
236  else
237  sText.Ref(Text);
238 
239  // vertical placement
240  if (dwFlags & C4GM_Bottom)
241  iMsgY += Hgt; // iTHgt will be substracted below
242  else if (dwFlags & C4GM_Top)
243  ;
244  else if (dwFlags & C4GM_VCenter)
245  iMsgY += Hgt / 2;
246 
247  // horizontal placement
248  int alignment = ACenter;
249 
250  if (dwFlags & C4GM_Left)
251  alignment = ALeft;
252  else if (dwFlags & C4GM_Right)
253  {
254  alignment = ARight;
255  iMsgX += Wdt;
256  }
257  else if (dwFlags & C4GM_HCenter)
258  iMsgX += Wdt / 2;
259 
260  // calculate display position and adjust position by output boundaries
261  float iTX, iTY;
262  iTX = (iMsgX - cgo.X) * newzoom;
263  iTY = (iMsgY - cgo.Y) * newzoom;
264  int iTWdt, iTHgt;
265  ::GraphicsResource.FontRegular.GetTextExtent(sText.getData(),iTWdt,iTHgt,true);
266 
267  // adjust zoom if needed
268  float zoom = 1.0;
269  if(dwFlags & C4GM_Zoom)
270  zoom = cgo.Zoom;
271 
272  if (dwFlags & C4GM_Bottom)
273  iTY -= zoom * float(iTHgt);
274  else if (dwFlags & C4GM_VCenter)
275  iTY -= zoom * float(iTHgt/2);
276  else if (~dwFlags & C4GM_Top)
277  iTY -= zoom * float(iTHgt); // above object is standard
278 
279  if (dwFlags & C4GM_Right)
280  iTX += 0.25f * float(iTWdt) * (1.0f - zoom);
281 
282  // adjustment for objects at border of screen?
283  // +0.5f for proper rounding; avoids oscillations near pixel border:
284  if (~dwFlags & C4GM_XRel) iTX = Clamp<float>(iTX, iTWdt/2, cgo.Wdt * cgo.Zoom - iTWdt / 2) + 0.5f;
285  if (~dwFlags & C4GM_YRel) iTY = Clamp<float>(iTY, 0, cgo.Hgt * cgo.Zoom - iTHgt) + 0.5f;
286 
287  // Draw
289  cgo.Surface,
290  cgo.X + iTX,
291  cgo.Y + iTY,
292  ColorDw, alignment);
293  return;
294  }
295  }
296 }
C4Draw * pDraw
Definition: C4Draw.cpp:42
int32_t PictureIndent
int32_t DrawMessageOffset
int32_t PictureWidth
const int32_t C4GM_Bottom
Definition: C4GameMessage.h:35
const int32_t C4GM_NoBreak
Definition: C4GameMessage.h:34
const int32_t C4GM_XRel
Definition: C4GameMessage.h:44
const int32_t C4GM_HCenter
Definition: C4GameMessage.h:40
const int32_t C4GM_VCenter
Definition: C4GameMessage.h:41
const int32_t C4GM_GlobalPlayer
Definition: C4GameMessage.h:30
const int32_t C4GM_Top
Definition: C4GameMessage.h:37
const int32_t C4GM_Right
Definition: C4GameMessage.h:39
const int32_t C4GM_TargetPlayer
Definition: C4GameMessage.h:32
const int32_t C4GM_Zoom
Definition: C4GameMessage.h:46
const int32_t C4GM_WidthRel
Definition: C4GameMessage.h:43
const int32_t C4GM_Target
Definition: C4GameMessage.h:31
const int32_t C4GM_Left
Definition: C4GameMessage.h:38
const int32_t C4GM_Global
Definition: C4GameMessage.h:29
const int32_t C4GM_YRel
Definition: C4GameMessage.h:45
C4Game Game
Definition: C4Globals.cpp:52
C4GraphicsResource GraphicsResource
const int ARight
Definition: C4Surface.h:41
const int ALeft
Definition: C4Surface.h:41
const int ACenter
Definition: C4Surface.h:41
C4Shape Shape
Definition: C4Def.h:104
void Draw(C4Facet &cgo, bool fSelected=false, DWORD iColor=0, C4Object *pObj=nullptr, int32_t iPhaseX=0, int32_t iPhaseY=0, C4DrawTransform *trans=nullptr, const char *graphicsName=nullptr)
Definition: C4Def.cpp:607
bool TextOut(const char *szText, CStdFont &rFont, float fZoom, C4Surface *sfcDest, float iTx, float iTy, DWORD dwFCol=0xffffffff, BYTE byForm=ALeft, bool fDoMarkup=true)
Definition: C4Draw.cpp:561
C4Surface * Surface
Definition: C4Facet.h:117
float Hgt
Definition: C4Facet.h:118
float Wdt
Definition: C4Facet.h:118
float Y
Definition: C4Facet.h:118
float X
Definition: C4Facet.h:118
void Draw(C4TargetFacet &cgo, C4Rect &rcDrawArea)
bool DrawPropListSpecImage(C4Facet &target, C4PropList *spec)
Definition: C4Game.cpp:4692
int32_t Player
Definition: C4GameMessage.h:61
uint32_t dwFlags
Definition: C4GameMessage.h:70
C4PropList * PictureDef
Definition: C4GameMessage.h:67
bool GetDrawPosition(const C4TargetFacet &cgo, float &resultx, float &resulty, float &resultzoom) const
void DrawPicture(C4Facet &cgo, bool fSelected=false, C4DrawTransform *transform=nullptr)
bool IsVisible(int32_t iForPlr, bool fAsOverlay) const
C4Def * Def
Definition: C4Object.h:141
virtual C4Object * GetObject()
Definition: C4PropList.cpp:636
virtual C4Def const * GetDef() const
Definition: C4PropList.cpp:654
Definition: C4Rect.h:28
int32_t Hgt
Definition: C4Rect.h:30
float TargetY
Definition: C4Facet.h:165
float TargetX
Definition: C4Facet.h:165
float Zoom
Definition: C4Facet.h:165
int32_t GetTextWidth(const char *szText, bool fCheckMarkup=true)
Definition: C4FontLoader.h:140
std::tuple< std::string, int > BreakMessage(const char *szMsg, int iWdt, bool fCheckMarkup, float fZoom=1.0f)
bool GetTextExtent(const char *szText, int32_t &rsx, int32_t &rsy, bool fCheckMarkup=true)
void Ref(const char *pnData)
Definition: StdBuf.h:455

References ACenter, ALeft, ARight, CStdFont::BreakMessage(), C4GM_Bottom, C4GM_Global, C4GM_GlobalPlayer, C4GM_HCenter, C4GM_Left, C4GM_NoBreak, C4GM_Right, C4GM_Target, C4GM_TargetPlayer, C4GM_Top, C4GM_VCenter, C4GM_WidthRel, C4GM_XRel, C4GM_YRel, C4GM_Zoom, ColorDw, C4Object::Def, C4Def::Draw(), C4GUI::FrameDecoration::Draw(), DrawMessageOffset, C4Object::DrawPicture(), C4Game::DrawPropListSpecImage(), dwFlags, C4GraphicsResource::FontRegular, Game, StdStrBuf::getData(), C4PropList::GetDef(), C4Object::GetDrawPosition(), C4PropList::GetObject(), CStdFont::GetTextExtent(), CStdFont::GetTextWidth(), GraphicsResource, C4Facet::Hgt, Hgt, C4Rect::Hgt, C4GUI::FrameDecoration::iBorderBottom, C4GUI::FrameDecoration::iBorderLeft, C4GUI::FrameDecoration::iBorderRight, C4GUI::FrameDecoration::iBorderTop, C4Object::IsVisible(), pDraw, pFrameDeco, PictureDef, PictureIndent, PictureWidth, Player, StdStrBuf::Ref(), C4Def::Shape, C4Facet::Surface, Target, C4TargetFacet::TargetX, C4TargetFacet::TargetY, Text, C4Draw::TextOut(), Type, C4Facet::Wdt, Wdt, C4Rect::Wdt, C4Facet::X, X, C4Rect::x, C4Facet::Y, Y, C4Rect::y, and C4TargetFacet::Zoom.

Referenced by C4GameMessageList::Draw().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Execute()

bool C4GameMessage::Execute ( )
protected

Definition at line 108 of file C4GameMessage.cpp.

109 {
110  // Delay / removal
111  if (Delay>0) Delay--;
112  if (Delay==0) return false;
113  // Done
114  return true;
115 }

References Delay.

Referenced by C4GameMessageList::Execute().

Here is the caller graph for this function:

◆ GetPositioningFlags()

int32_t C4GameMessage::GetPositioningFlags ( ) const
inline

Definition at line 79 of file C4GameMessage.h.

79 { return dwFlags & C4GM_PositioningFlags; }
const int32_t C4GM_PositioningFlags
Definition: C4GameMessage.h:48

References C4GM_PositioningFlags, and dwFlags.

Referenced by C4GameMessageList::ClearPlayers().

Here is the caller graph for this function:

◆ Init()

void C4GameMessage::Init ( int32_t  iType,
const StdStrBuf Text,
C4Object pTarget,
int32_t  iPlayer,
int32_t  iX,
int32_t  iY,
uint32_t  dwCol,
C4ID  idDecoID,
C4PropList pSrc,
uint32_t  dwFlags,
int  width 
)
protected

Definition at line 39 of file C4GameMessage.cpp.

40 {
41  // safety!
42  if (pTarget && !pTarget->Status) pTarget = nullptr;
43  // Set data
44  Text.Copy(sText);
45  Target=pTarget;
46  X=iX; Y=iY; Wdt=width; Hgt=0;
47  Player=iPlayer;
48  ColorDw=dwClr;
49  Type=iType;
51  DecoID=idDecoID;
52  this->dwFlags=dwFlags;
53  PictureDef=nullptr;
55  if (pSrc)
56  {
57  // retain special width/height properties when using a message box on an object-local message
58  if (Target)
59  {
60  C4Value val;
61  if (pSrc->GetProperty(P_Wdt, &val))
62  Wdt = val.getInt();
63  if (pSrc->GetProperty(P_Hgt, &val))
64  Hgt = val.getInt();
65  }
66 
67  // retain object or definition from the proplist
68  PictureDef = pSrc->GetObject();
69  if (!PictureDef) PictureDef = pSrc->GetDef();
71  {
72  PictureDef = pSrc;
74  }
75  }
76  // Permanent message
77  if ('@' == Text[0])
78  {
79  Delay=-1;
80  Text.Move(1, Text.getLength());
81  Text.Shrink(1);
82  }
83  // frame decoration
84  delete pFrameDeco; pFrameDeco = nullptr;
85  if (DecoID)
86  {
88  if (!pFrameDeco->SetByDef(DecoID))
89  {
90  delete pFrameDeco;
91  pFrameDeco = nullptr;
92  }
93  }
94 }
const int32_t C4GM_MinDelay
Definition: C4GameMessage.h:27
@ P_Wdt
@ P_Hgt
@ P_Source
bool SetByDef(C4Def *pSrcDef)
C4Value PictureDefVal
Definition: C4GameMessage.h:68
int32_t Status
Definition: C4PropList.h:173
C4PropList * GetPropertyPropList(C4PropertyName k) const
Definition: C4PropList.cpp:869
bool GetProperty(C4PropertyName k, C4Value *pResult) const
Definition: C4PropList.h:105
void SetPropList(C4PropList *PropList)
Definition: C4Value.h:141
int32_t getInt() const
Definition: C4Value.h:112
void Set0()
Definition: C4Value.h:332
void Move(size_t iFrom, size_t inSize, size_t iTo=0)
Definition: StdBuf.h:471
void Shrink(size_t iShrink)
Definition: StdBuf.h:503
void Copy()
Definition: StdBuf.h:467
size_t getLength() const
Definition: StdBuf.h:445

References C4GM_MinDelay, ColorDw, StdStrBuf::Copy(), DecoID, Delay, dwFlags, C4PropList::GetDef(), C4Value::getInt(), StdStrBuf::getLength(), C4PropList::GetObject(), C4PropList::GetProperty(), C4PropList::GetPropertyPropList(), GlobalMsgDelayFactor, Hgt, StdStrBuf::Move(), ObjectMsgDelayFactor, P_Hgt, P_Source, P_Wdt, pFrameDeco, PictureDef, PictureDefVal, Player, C4Value::Set0(), C4GUI::FrameDecoration::SetByDef(), C4Value::SetPropList(), StdStrBuf::Shrink(), C4PropList::Status, Target, Text, Type, Wdt, X, and Y.

Referenced by C4GameMessageList::New().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateDef()

void C4GameMessage::UpdateDef ( C4ID  idUpdDef)
protected

Definition at line 298 of file C4GameMessage.cpp.

299 {
300  // frame deco might be using updated/deleted def
301  if (pFrameDeco)
302  {
303  if (!pFrameDeco->UpdateGfx())
304  {
305  delete pFrameDeco;
306  pFrameDeco = nullptr;
307  }
308  }
309 }

References pFrameDeco, and C4GUI::FrameDecoration::UpdateGfx().

Referenced by C4GameMessageList::UpdateDef().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WordWrap()

const char* C4GameMessage::WordWrap ( int32_t  iMaxWidth)
protected

Friends And Related Function Documentation

◆ C4GameMessageList

friend class C4GameMessageList
friend

Definition at line 52 of file C4GameMessage.h.

Member Data Documentation

◆ ColorDw

DWORD C4GameMessage::ColorDw
protected

Definition at line 60 of file C4GameMessage.h.

Referenced by Draw(), and Init().

◆ DecoID

C4ID C4GameMessage::DecoID
protected

Definition at line 66 of file C4GameMessage.h.

Referenced by Init().

◆ Delay

int32_t C4GameMessage::Delay
protected

Definition at line 59 of file C4GameMessage.h.

Referenced by Append(), Execute(), and Init().

◆ dwFlags

uint32_t C4GameMessage::dwFlags
protected

Definition at line 70 of file C4GameMessage.h.

Referenced by Draw(), GetPositioningFlags(), and Init().

◆ Hgt

int32_t C4GameMessage::Hgt
protected

Definition at line 58 of file C4GameMessage.h.

Referenced by Draw(), and Init().

◆ Next

◆ pFrameDeco

C4GUI::FrameDecoration* C4GameMessage::pFrameDeco {nullptr}
protected

Definition at line 69 of file C4GameMessage.h.

Referenced by Draw(), Init(), UpdateDef(), and ~C4GameMessage().

◆ PictureDef

C4PropList* C4GameMessage::PictureDef
protected

Definition at line 67 of file C4GameMessage.h.

Referenced by Draw(), and Init().

◆ PictureDefVal

C4Value C4GameMessage::PictureDefVal
protected

Definition at line 68 of file C4GameMessage.h.

Referenced by Init().

◆ Player

int32_t C4GameMessage::Player
protected

◆ Target

C4Object* C4GameMessage::Target
protected

◆ Text

StdCopyStrBuf C4GameMessage::Text
protected

Definition at line 64 of file C4GameMessage.h.

Referenced by Append(), Draw(), and Init().

◆ Type

int32_t C4GameMessage::Type
protected

◆ Wdt

int32_t C4GameMessage::Wdt
protected

Definition at line 58 of file C4GameMessage.h.

Referenced by Draw(), and Init().

◆ X

int32_t C4GameMessage::X
protected

Definition at line 58 of file C4GameMessage.h.

Referenced by Draw(), and Init().

◆ Y

int32_t C4GameMessage::Y
protected

Definition at line 58 of file C4GameMessage.h.

Referenced by Draw(), and Init().


The documentation for this class was generated from the following files: