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);
134int Level2D_getHeaderCount(
Level2D* level) {
136 while (level->
headers[headerCount] != NULL) {
149char* Level2D_getHeader(
Level2D* level,
char* name) {
150 if (level->
headers == 0)
return 0;
153 while (level->
headers[i] != 0) {
174 int headerCount = Level2D_getHeaderCount(level);
175 for (
int i = 0; i < headerCount; i++) {
177 if (strcmp(header->
name, h->
name) == 0) {
182 level->
headers[headerCount] = h;
183 level->
headers[headerCount + 1] = 0;
195void Level2D_addHeader(
Level2D* level,
char* name,
char* value) {
200 Level2D_setHeader(level, h);
208void Level2D_removeHeader(
Level2D* level,
char* name) {
209 if (level->
headers == 0)
return;
212 while (level->
headers[i] != 0) {
216 for (
int j = i; j <
sizeof(level->
headers) - 1; j++) {
231int Level2D_getBlockCount(
Level2D* level) {
233 while (level->
blocks[blockCount] != NULL) {
247 if (level->
blocks == 0)
return 0;
250 while (level->
blocks[i] != 0) {
266 if (level == 0)
return;
267 if (block == 0)
return;
274 int size = Level2D_getBlockCount(level);
275 for (
int i = 0; i < size; i++) {
284 level->
blocks[size] = block;
285 level->
blocks[size + 1] = 0;
296 int size = CoordinateMatrix2D_size(matrix);
297 Coordinate2D** coordinates = CoordinateMatrix2D_coordinates(matrix);
299 for (
int i = 0; i < size; i++) {
301 Level2D_addBlock(level, createLevelObject2D(block, coordinate));
312 if (level->
blocks == 0)
return;
315 while (level->
blocks[i] != 0) {
316 if (level->
blocks[i] == block) {
319 for (
int j = i; j <
sizeof(level->
blocks) - 1; j++) {
335int Level2D_blockCount(
Level2D* level,
const char* name) {
336 if (level == 0)
return 0;
337 if (level->
blocks == 0)
return 0;
338 if (name == 0)
return 0;
341 for (
int i = 0; i < Level2D_getBlockCount(level); i++) {
388int Level3D_getHeaderCount(
Level3D* level) {
390 while (level->
headers[headerCount] != NULL) {
403char* Level3D_getHeader(
Level3D* level,
char* name) {
404 if (level->
headers == 0)
return 0;
407 while (level->
headers[i] != 0) {
428 int headerCount = Level3D_getHeaderCount(level);
429 for (
int i = 0; i < headerCount; i++) {
431 if (strcmp(header->
name, h->
name) == 0) {
436 level->
headers[headerCount] = h;
437 level->
headers[headerCount + 1] = 0;
449void Level3D_addHeader(
Level3D* level,
char* name,
char* value) {
454 Level3D_setHeader(level, h);
462void Level3D_removeHeader(
Level3D* level,
char* name) {
463 if (level->
headers == 0)
return;
466 while (level->
headers[i] != 0) {
470 for (
int j = i; j <
sizeof(level->
headers) - 1; j++) {
487 if (level->
blocks == 0)
return 0;
490 while (level->
blocks[i] != 0) {
505int Level3D_getBlockCount(
Level3D* level) {
507 while (level->
blocks[blockCount] != NULL) {
525 int size = Level3D_getBlockCount(level);
527 for (
int i = 0; i < size; i++) {
536 level->
blocks[size] = block;
537 level->
blocks[size + 1] = 0;
548 int size = CoordinateMatrix3D_size(matrix);
549 Coordinate3D** coordinates = CoordinateMatrix3D_coordinates(matrix);
550 for (
int i = 0; i < size; i++) {
552 Level3D_addBlock(level, createLevelObject3D(block, coordinate));
562 if (level->
blocks == 0)
return;
565 while (level->
blocks[i] != 0) {
566 if (level->
blocks[i] == block) {
569 for (
int j = i; j <
sizeof(level->
blocks) - 1; j++) {
585int Level3D_blockCount(
Level3D* level,
const char* name) {
586 if (level == 0)
return 0;
587 if (level->
blocks == 0)
return 0;
588 if (name == 0)
return 0;
591 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:362
LevelHeader ** headers
Definition level.h:357
Coordinate3D * spawn
Definition level.h:367
Block * block
Definition block.h:246
Coordinate2D * coordinate
Definition block.h:251
Block * block
Definition block.h:305
Coordinate3D * coordinate
Definition block.h:310