22 #ifndef WATCHMAKER_STRUCT_H 23 #define WATCHMAKER_STRUCT_H 25 #include "watchmaker/t3d.h" 26 #include "watchmaker/types.h" 27 #include "watchmaker/sysdef.h" 28 #include "common/stream.h" 29 #include "watchmaker/message.h" 39 template<u
int32 strSize>
41 char str[strSize] = {};
47 stream.
read(str, strSize);
53 for (uint32 i = 0; i < size; i++) {
54 array[i].loadFromStream(stream);
60 for (uint32 i = 0; i < size; i++) {
67 for (uint32 i = 0; i < size; i++) {
74 for (uint32 i = 0; i < size; i++) {
79 template<
typename T, u
int32 arraySize>
84 T &operator[](
int index) {
94 loadArrayFromStream(stream, _array, arraySize);
105 _array =
new T[size] {};
110 uint32 size()
const {
113 T &operator[](
int index) {
114 return _array[index];
117 loadArrayFromStream(stream, _array, _size);
122 uint8 name[T3D_NAMELEN];
133 stream.
read(name, T3D_NAMELEN);
134 stream.
read(desc, 64);
138 objects.loadFromStream(stream);
139 sounds.loadFromStream(stream);
140 anims.loadFromStream(stream);
141 actions.loadFromStream(stream);
161 bool meshLinkIsEmpty(
int index) {
return meshlink[index].empty() || meshlink[index][0] ==
'\0'; }
162 const Common::String& getMeshLink(
int index) {
return meshlink[index]; };
163 void setMeshLink(
int index,
const char *value) {
164 meshlink[index] = value;
169 examine.loadFromStream(stream);
170 action.loadFromStream(stream);
171 text.loadFromStream(stream);
172 anim.loadFromStream(stream);
173 anim2.loadFromStream(stream);
179 meshlink_int.loadFromStream(stream);
181 for (
int i = 0; i < MAX_OBJ_MESHLINKS; i++) {
182 meshlink[i] = (
char*)meshlink_int.rawArray()[i].rawArray();
200 examine.loadFromStream(stream);
201 action.loadFromStream(stream);
203 text.loadFromStream(stream);
205 anim.loadFromStream(stream);
206 anim2.loadFromStream(stream);
207 meshlink.loadFromStream(stream);
239 bool meshLinkIsEmpty(
int index) {
return meshlink[index].empty() || meshlink[index][0] ==
'\0'; }
240 const Common::String& getMeshLink(
int index) {
return meshlink[index]; }
241 void setMeshLink(
int index,
const char *value) {
242 meshlink[index] = value;
245 meshlink[index] = value;
250 meshlink_raw.loadFromStream(stream);
251 for (
int i = 0; i < MAX_SUBANIMS; i++) {
252 meshlink[i] = (
const char*)meshlink_raw.rawArray();
254 name.loadFromStream(stream);
255 RoomName.loadFromStream(stream);
256 atframe.loadFromStream(stream);
266 char name[T3D_NAMELEN];
269 uint32 ConeInside, ConeOutside;
270 int32 ConeOutsideVolume;
271 t3dF32 MinDist, MaxDist;
275 stream.
read(name, T3D_NAMELEN);
277 meshlink.loadFromStream(stream);
288 char name[MAX_SUB_MUSICS][T3D_NAMELEN];
292 for (
int i = 0; i < MAX_SUB_MUSICS; i++) {
293 stream.
read(name[i], T3D_NAMELEN);
295 vol.loadFromStream(stream);
326 item.loadFromStream(stream);
341 AltPosSco.loadFromStream(stream);
342 AltCamSco.loadFromStream(stream);
343 AltAnims.loadFromStream(stream);
344 ItemIndex.loadFromStream(stream);
352 uint16 bnd, saved_bnd;
365 anim.loadFromStream(stream);
384 item.loadFromStream(stream);
408 int32 menu_appartenenza = 0, menu_creato = 0;
411 int32 dx = 0, dy = 0;
415 info.loadFromStream(stream);
416 text.loadFromStream(stream);
417 formatted.loadFromStream(stream);
428 char text[MAX_STRING_LEN] = {};
429 uint16 x = 0, y = 0, dx = 0;
432 SString(
const char *_text, uint16 _x = 0, uint16 _y = 0, uint16 _dx = 0) : x(_x), y(_y), dx(_dx) {
433 if (_text !=
nullptr) {
434 memcpy(this->text, _text, strlen(_text));
440 int32 x1 = 0, y1 = 0, x2 = 0, y2 = 0;
441 constexpr
SRect() =
default;
442 constexpr
SRect(int32 _x1, int32 _y1, int32 _x2, int32 _y2): x1(_x1), y1(_y1), x2(_x2), y2(_y2) {}
453 int32 px = 0, py = 0, dx = 0, dy = 0;
454 uint8 r = 0, g = 0, b = 0, a = 0;
457 int32 x1 = 0, y1 = 0, x2 = 0, y2 = 0, x3 = 0, y3 = 0;
458 uint8 r = 0, g = 0, b = 0, a = 0;
462 int32 px = 0, py = 0, dx = 0, dy = 0;
467 int32 px, py, ox, oy, dx, dy;
489 SDDText(
const char *_text, FontKind _font, FontColor _color, int32 _tnum) : font(_font),
496 for(uint i = 0; i <
ARRAYSIZE(text); i++) text[i] =
'\0';
497 font = FontKind::Standard;
498 color = FontColor::WHITE_FONT;
502 char text[MAX_STRING_LEN];
509 uint16 firstframe = 0;
515 uint8 sound_volume = 0;
517 uint8 music_volume = 0;
519 uint8 speech_volume = 0;
520 uint8 subtitles_on = 0;
534 int32 lparam[3] = {};
539 message(EventClass _classe, uint8 _event, uint16 _flags) : classe(_classe), event(_event), flags(_flags) {}
548 for (uint i = 0; i <
ARRAYSIZE(lparam); i++) lparam[i] = 0;
554 uint8 head = 0, tail = 0, len = 0;
555 message *
event[MAX_MESSAGES] = {};
566 stream.
read(name, 64);
577 stream.
read(role, 48);
584 int32 px = 0, py = 0;
585 int32 dx = 0, dy = 0;
593 char fullstring[64 + 16 + 1] = {};
594 int32 px = 0, py = 0;
595 int32 dx = 0, dy = 0;
596 int32 _dx = 0, _dy = 0;
598 char *letter_ptr =
nullptr;
599 int16 t_next_letter = 0;
605 #endif // WATCHMAKER_STRUCT_H #define ARRAYSIZE(x)
Definition: util.h:103
Definition: 2d_stuff.h:30
uint16 readUint16LE()
Definition: stream.h:459
FORCEINLINE int32 readSint32LE()
Definition: stream.h:555
size_t strlcpy(char *dst, const char *src, size_t size)
uint32 readUint32LE()
Definition: stream.h:473
byte readByte()
Definition: stream.h:434
FORCEINLINE float readFloatLE()
Definition: stream.h:615
FORCEINLINE int16 readSint16LE()
Definition: stream.h:543
virtual uint32 read(void *dataPtr, uint32 dataSize)=0