Để thuận tiện trong việc coding, một số struct cơ bản về các đối tượng đồ họa cần được hổ trợ như:
Các struct này được khai báo trong file SGraphics.h
SGraphics.h
#ifndef __SGRAPHICS_H__ #define __SGRAPHICS_H__ #include "Header.h" namespace GameTutor { template <class T> struct SColor { SColor (T r=0, T g=0, T b=0, T a=0) { Red = r; Green = g; Blue = b; Alpha = a; } T Red; T Green; T Blue; T Alpha; }; template <class T> struct SRect { SRect(T x=0, T y=0, T w=0, T h=0) { X = x; Y = y; W = w; H = h; } T X; T Y; T W; T H; }; template <class T> struct SDimension2D { SDimension2D(T w = 0, T h = 0) { H = h; W = w; } T W; T H; }; template <class T> struct SPosition2D { SPosition2D(T x=0, T y=0) {X = x; Y = y;} T X; T Y; }; } #endif
Các lớp được thiết kế dạng template để thuận tiện trong sử dụng. Ví dụ:
SColor<float> a(0.5, 0.5, 0.5, 1);
SColor<__UINT8> a(127, 127, 127, 255);
Trong phần này còn bổ sung một khố macros hữu ích cho việc debug:
macro
#define TODO(x) __pragma(message("[TODO]:" __FILE__ "("TOSTRING(__LINE__)")" TOSTRING(x))); Log(x); #define WARNING(x) Log("[WARNING] %s (%s - %s)", x, __FILE__, TOSTRING(__LINE__)); #define BREAK_IF(cond, _message) if (cond) {Log(_message); _asm int 3} #define BREAK(_message) BREAK_IF(true, _message)