33LevelHeader* createLevelHeader(
char* name,
char* value) {
46 if (header == 0)
return 0;
48 char* str = (
char*) malloc(strlen(header->
name) + strlen(header->
value) + 3);
49 sprintf(str,
"@%s %s", header->
name, header->
value);
59LevelHeader* LevelHeader_fromString(
const char* str) {
60 if (str == 0)
return 0;
62 char* str0 = (
char*) malloc(strlen(str) + 1);
65 char* name = strtok(str0,
" ") + 1;
66 char* value = name + strlen(name) + 1;
68 return createLevelHeader(name, value);
137int Level2D_getHeaderCount(
Level2D* level) {
138 if (level == 0)
return 0;
149 while (level->
headers[headerCount] != 0) {
162char* Level2D_getHeader(
Level2D* level,
char* name) {
163 if (level == 0)
return 0;
164 if (name == 0)
return 0;
165 if (level->
headers == 0)
return 0;
168 while (level->
headers[i] != 0) {
184 if (level == 0)
return;
192 int headerCount = Level2D_getHeaderCount(level);
193 for (
int i = 0; i < headerCount; i++) {
195 if (strcmp(header->
name, h->
name) == 0) {
200 level->
headers[headerCount] = h;
201 level->
headers[headerCount + 1] = 0;
213void Level2D_addHeader(
Level2D* level,
char* name,
char* value) {
214 if (level == 0)
return;
215 if (name == 0)
return;
216 if (value == 0)
return;
222 Level2D_setHeader(level, h);
230void Level2D_removeHeader(
Level2D* level,
char* name) {
231 if (level == 0)
return;
232 if (name == 0)
return;
233 if (level->
headers == 0)
return;
236 while (level->
headers[i] != 0) {
240 for (
int j = i; j <
sizeof(level->
headers) - 1; j++) {
255int Level2D_getBlockCount(
Level2D* level) {
256 if (level == 0)
return 0;
265 while (level->
blocks[blockCount] != 0) {
279 if (level == 0)
return 0;
280 if (coordinate == 0)
return 0;
281 if (level->
blocks == 0)
return 0;
284 while (level->
blocks[i] != 0) {
300 if (level == 0)
return;
301 if (block == 0)
return;
308 int size = Level2D_getBlockCount(level);
309 for (
int i = 0; i < size; i++) {
318 level->
blocks[size] = block;
319 level->
blocks[size + 1] = 0;
330 int size = CoordinateMatrix2D_size(matrix);
331 Coordinate2D** coordinates = CoordinateMatrix2D_coordinates(matrix);
333 for (
int i = 0; i < size; i++) {
335 Level2D_addBlock(level, createLevelObject2D(block, coordinate));
346 if (level->
blocks == 0)
return;
349 while (level->
blocks[i] != 0) {
350 if (level->
blocks[i] == block) {
353 for (
int j = i; j <
sizeof(level->
blocks) - 1; j++) {
369int Level2D_blockCount(
Level2D* level,
const char* name) {
370 if (level == 0)
return 0;
371 if (level->
blocks == 0)
return 0;
372 if (name == 0)
return 0;
375 for (
int i = 0; i < Level2D_getBlockCount(level); i++) {
423int Level3D_getHeaderCount(
Level3D* level) {
424 if (level == 0)
return 0;
435 while (level->
headers[headerCount] != 0) {
448char* Level3D_getHeader(
Level3D* level,
char* name) {
449 if (level == 0)
return 0;
450 if (name == 0)
return 0;
451 if (level->
headers == 0)
return 0;
454 while (level->
headers[i] != 0) {
470 if (level == 0)
return;
478 int headerCount = Level3D_getHeaderCount(level);
479 for (
int i = 0; i < headerCount; i++) {
481 if (strcmp(header->
name, h->
name) == 0) {
486 level->
headers[headerCount] = h;
487 level->
headers[headerCount + 1] = 0;
499void Level3D_addHeader(
Level3D* level,
char* name,
char* value) {
500 if (level == 0)
return;
501 if (name == 0)
return;
502 if (value == 0)
return;
508 Level3D_setHeader(level, h);
516void Level3D_removeHeader(
Level3D* level,
char* name) {
517 if (level == 0)
return;
518 if (name == 0)
return;
519 if (level->
headers == 0)
return;
522 while (level->
headers[i] != 0) {
526 for (
int j = i; j <
sizeof(level->
headers) - 1; j++) {
543 if (level->
blocks == 0)
return 0;
546 while (level->
blocks[i] != 0) {
561int Level3D_getBlockCount(
Level3D* level) {
563 while (level->
blocks[blockCount] != 0) {
581 int size = Level3D_getBlockCount(level);
583 for (
int i = 0; i < size; i++) {
592 level->
blocks[size] = block;
593 level->
blocks[size + 1] = 0;
604 int size = CoordinateMatrix3D_size(matrix);
605 Coordinate3D** coordinates = CoordinateMatrix3D_coordinates(matrix);
606 for (
int i = 0; i < size; i++) {
608 Level3D_addBlock(level, createLevelObject3D(block, coordinate));
618 if (level->
blocks == 0)
return;
621 while (level->
blocks[i] != 0) {
622 if (level->
blocks[i] == block) {
625 for (
int j = i; j <
sizeof(level->
blocks) - 1; j++) {
641int Level3D_blockCount(
Level3D* level,
const char* name) {
642 if (level == 0)
return 0;
643 if (level->
blocks == 0)
return 0;
644 if (name == 0)
return 0;
647 for (
int i = 0; i < Level3D_getBlockCount(level); i++) {
char * name
Definition block.h:34
Definition coordinate.h:11
double y
Definition coordinate.h:20
double x
Definition coordinate.h:15
Definition coordinate.h:108
double x
Definition coordinate.h:112
double z
Definition coordinate.h:122
double y
Definition coordinate.h:117
LevelObject2D ** blocks
Definition level.h:83
Coordinate2D * spawn
Definition level.h:88
LevelHeader ** headers
Definition level.h:78
LevelObject3D ** blocks
Definition level.h:396
LevelHeader ** headers
Definition level.h:391
Coordinate3D * spawn
Definition level.h:401
Block * block
Definition block.h:246
Coordinate2D * coordinate
Definition block.h:251
Block * block
Definition block.h:305
Coordinate3D * coordinate
Definition block.h:310