3 int AreaInMap(TMap
*m
, Area
*p
, int FromLayer
, int ToLayer
){ //returns 0 if p collides with something in m otherwise 1
5 if(!AreaInAreaComp(m
->BoundingArea
, p
)){
8 for(i
= FromLayer
; i
< m
->noLayer
&& i
<= ToLayer
; i
++){
9 for(j
=0; j
< m
->Layer
[i
]->noFArea
; j
++)
10 if(AreaInArea(p
, m
->Layer
[i
]->FArea
[j
]))
16 //TODO: support for another architectures than 32-bit x86
17 typedef unsigned int uint32
;
19 typedef double double64
;
28 uint32
*Layer_seek
; //[noLayer]
29 uint32
*Sprite_seek
; //[noSprite]
35 uint32
*string_seek
; //noFArea
48 TMapFileHeader header
;
49 TMapFileLayer
*layers
;
50 TMapFileSprite
*sprites
;
54 uint32
AddStringToFile(TMapFileHelper
*h
, char *s
) {
55 uint32 strl
= strlen(s
);
56 h
->buffer
= realloc(h
->buffer
, h
->buffer_lenght
+ strl
*sizeof(char) + 1);
57 memcpy(h
->buffer
+h
->buffer_lenght
, s
, strl
*sizeof(char) + 1);
58 h
->buffer_lenght
+= strl
*sizeof(char) + 1;
60 return h
->buffer_lenght
- strl
*sizeof(char) + 1;
65 void FillTMapFileHeader(TMapFileHeader
*header
, TMap
*m
) {
67 char *TMapFileHeader2String (TMapFileHeader
*header
) {
70 char *Map2String(TMap
*m
, size_t *bytes
) {
74 memset(&h
, 0, sizeof(TMapFileHelper
));
76 FillTMapFileHeader(&h
.header
, m
); //warning, Layer_seek&Sprite_seek are only allocated, not filled
77 buffer
= TMapFileHeader2String (&h
.header
);
78 AddStringToFile(&h
, buffer
);
83 *bytes
= h
.buffer_lenght
;
84 return (char *)(h
.buffer
);