All the Stuff(Forgot to commit)
This commit is contained in:
parent
7eb2832f9b
commit
7d08458f3f
22 changed files with 1668 additions and 319 deletions
|
@ -8,8 +8,12 @@ s16 calculateImportantEntites(EntityManager * eManager, int level){
|
|||
case ENTITY_AIRWIZARD:
|
||||
case ENTITY_SLIME:
|
||||
case ENTITY_ZOMBIE:
|
||||
case ENTITY_SKELETON:
|
||||
case ENTITY_KNIGHT:
|
||||
case ENTITY_ITEM:
|
||||
case ENTITY_FURNITURE:
|
||||
case ENTITY_PASSIVE:
|
||||
case ENTITY_GLOWWORM:
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
|
@ -22,8 +26,12 @@ bool entityIsImportant(Entity * e){
|
|||
case ENTITY_AIRWIZARD:
|
||||
case ENTITY_SLIME:
|
||||
case ENTITY_ZOMBIE:
|
||||
case ENTITY_SKELETON:
|
||||
case ENTITY_KNIGHT:
|
||||
case ENTITY_ITEM:
|
||||
case ENTITY_FURNITURE:
|
||||
case ENTITY_PASSIVE:
|
||||
case ENTITY_GLOWWORM:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
@ -75,8 +83,10 @@ void saveCurrentWorld(char * filename, EntityManager * eManager, Entity * player
|
|||
fwrite(&eManager->entities[i][j].slime.lvl, sizeof(s8), 1, file);
|
||||
break;
|
||||
case ENTITY_ZOMBIE:
|
||||
fwrite(&eManager->entities[i][j].zombie.health, sizeof(s16), 1, file);
|
||||
fwrite(&eManager->entities[i][j].zombie.lvl, sizeof(s8), 1, file);
|
||||
case ENTITY_SKELETON:
|
||||
case ENTITY_KNIGHT:
|
||||
fwrite(&eManager->entities[i][j].hostile.health, sizeof(s16), 1, file);
|
||||
fwrite(&eManager->entities[i][j].hostile.lvl, sizeof(s8), 1, file);
|
||||
break;
|
||||
case ENTITY_ITEM:
|
||||
fwrite(&eManager->entities[i][j].entityItem.item.id, sizeof(s16), 1, file);
|
||||
|
@ -87,14 +97,21 @@ void saveCurrentWorld(char * filename, EntityManager * eManager, Entity * player
|
|||
fwrite(&eManager->entities[i][j].entityFurniture.itemID, sizeof(s16), 1, file);
|
||||
int invIndex = eManager->entities[i][j].entityFurniture.inv - eManager->invs;
|
||||
fwrite(&invIndex, sizeof(int), 1, file);
|
||||
break;
|
||||
case ENTITY_PASSIVE:
|
||||
fwrite(&eManager->entities[i][j].passive.health, sizeof(s16), 1, file);
|
||||
fwrite(&eManager->entities[i][j].passive.mtype, sizeof(u8), 1, file);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Map Data
|
||||
//Don't write or load dungeon, so only first 5 levels not 6
|
||||
fwrite(map, sizeof(u8), 128*128*5, file); // Map Tile IDs, 128*128*5 bytes = 80KB
|
||||
fwrite(mapData, sizeof(u8), 128*128*5, file); // Map Tile Data (Damage done to trees/rocks, age of wheat & saplings, etc). 80KB
|
||||
|
||||
fwrite(&daytime, sizeof(u16), 1, file);
|
||||
|
||||
fclose(file);
|
||||
}
|
||||
|
@ -195,21 +212,58 @@ int loadWorld(char * filename, EntityManager * eManager, Entity * player, u8 * m
|
|||
}
|
||||
break;
|
||||
case ENTITY_ZOMBIE:
|
||||
fread(&eManager->entities[i][j].zombie.health, sizeof(s16), 1, file);
|
||||
fread(&eManager->entities[i][j].zombie.lvl, sizeof(s8), 1, file);
|
||||
fread(&eManager->entities[i][j].hostile.health, sizeof(s16), 1, file);
|
||||
fread(&eManager->entities[i][j].hostile.lvl, sizeof(s8), 1, file);
|
||||
eManager->entities[i][j].level = i;
|
||||
eManager->entities[i][j].hurtTime = 0;
|
||||
eManager->entities[i][j].xKnockback = 0;
|
||||
eManager->entities[i][j].yKnockback = 0;
|
||||
eManager->entities[i][j].zombie.dir = 0;
|
||||
eManager->entities[i][j].hostile.dir = 0;
|
||||
eManager->entities[i][j].xr = 4;
|
||||
eManager->entities[i][j].yr = 3;
|
||||
eManager->entities[i][j].canPass = false;
|
||||
switch(eManager->entities[i][j].zombie.lvl){
|
||||
case 2: eManager->entities[i][j].zombie.color = 0xFF8282CC; break;
|
||||
case 3: eManager->entities[i][j].zombie.color = 0xFFEFEFEF; break;
|
||||
case 4: eManager->entities[i][j].zombie.color = 0xFFAA6262; break;
|
||||
default: eManager->entities[i][j].zombie.color = 0xFF95DB95; break;
|
||||
switch(eManager->entities[i][j].hostile.lvl){
|
||||
case 2: eManager->entities[i][j].hostile.color = 0xFF8282CC; break;
|
||||
case 3: eManager->entities[i][j].hostile.color = 0xFFEFEFEF; break;
|
||||
case 4: eManager->entities[i][j].hostile.color = 0xFFAA6262; break;
|
||||
default: eManager->entities[i][j].hostile.color = 0xFF95DB95; break;
|
||||
}
|
||||
break;
|
||||
case ENTITY_SKELETON:
|
||||
fread(&eManager->entities[i][j].hostile.health, sizeof(s16), 1, file);
|
||||
fread(&eManager->entities[i][j].hostile.lvl, sizeof(s8), 1, file);
|
||||
eManager->entities[i][j].level = i;
|
||||
eManager->entities[i][j].hurtTime = 0;
|
||||
eManager->entities[i][j].xKnockback = 0;
|
||||
eManager->entities[i][j].yKnockback = 0;
|
||||
eManager->entities[i][j].hostile.dir = 0;
|
||||
eManager->entities[i][j].hostile.randAttackTime = 0;
|
||||
eManager->entities[i][j].xr = 4;
|
||||
eManager->entities[i][j].yr = 3;
|
||||
eManager->entities[i][j].canPass = false;
|
||||
switch(eManager->entities[i][j].hostile.lvl){
|
||||
case 2: eManager->entities[i][j].hostile.color = 0xFFC4C4C4; break;
|
||||
case 3: eManager->entities[i][j].hostile.color = 0xFFA0A0A0; break;
|
||||
case 4: eManager->entities[i][j].hostile.color = 0xFF7A7A7A; break;
|
||||
default: eManager->entities[i][j].hostile.color = 0xFFFFFFFF; break;
|
||||
}
|
||||
break;
|
||||
case ENTITY_KNIGHT:
|
||||
fread(&eManager->entities[i][j].hostile.health, sizeof(s16), 1, file);
|
||||
fread(&eManager->entities[i][j].hostile.lvl, sizeof(s8), 1, file);
|
||||
eManager->entities[i][j].level = i;
|
||||
eManager->entities[i][j].hurtTime = 0;
|
||||
eManager->entities[i][j].xKnockback = 0;
|
||||
eManager->entities[i][j].yKnockback = 0;
|
||||
eManager->entities[i][j].hostile.dir = 0;
|
||||
eManager->entities[i][j].xr = 4;
|
||||
eManager->entities[i][j].yr = 3;
|
||||
eManager->entities[i][j].canPass = false;
|
||||
switch(eManager->entities[i][j].hostile.lvl){
|
||||
case 2: eManager->entities[i][j].hostile.color = 0xFF0000C6; break;
|
||||
case 3: eManager->entities[i][j].hostile.color = 0xFF00A3C6; break;
|
||||
case 4: eManager->entities[i][j].hostile.color = 0xFF707070; break;
|
||||
default: eManager->entities[i][j].hostile.color = 0xFFFFFFFF; break;
|
||||
}
|
||||
break;
|
||||
case ENTITY_ITEM:
|
||||
|
@ -239,11 +293,35 @@ int loadWorld(char * filename, EntityManager * eManager, Entity * player, u8 * m
|
|||
eManager->entities[i][j].canPass = false;
|
||||
if(eManager->entities[i][j].entityFurniture.itemID == ITEM_LANTERN) eManager->entities[i][j].entityFurniture.r = 8;
|
||||
break;
|
||||
case ENTITY_PASSIVE:
|
||||
fread(&eManager->entities[i][j].passive.health, sizeof(s16), 1, file);
|
||||
fread(&eManager->entities[i][j].passive.mtype, sizeof(u8), 1, file);
|
||||
eManager->entities[i][j].level = i;
|
||||
eManager->entities[i][j].hurtTime = 0;
|
||||
eManager->entities[i][j].xKnockback = 0;
|
||||
eManager->entities[i][j].yKnockback = 0;
|
||||
eManager->entities[i][j].passive.dir = 0;
|
||||
eManager->entities[i][j].xr = 4;
|
||||
eManager->entities[i][j].yr = 3;
|
||||
eManager->entities[i][j].canPass = false;
|
||||
break;
|
||||
case ENTITY_GLOWWORM:
|
||||
eManager->entities[i][j].glowworm.xa = 0;
|
||||
eManager->entities[i][j].glowworm.ya = 0;
|
||||
eManager->entities[i][j].glowworm.randWalkTime = 0;
|
||||
eManager->entities[i][j].glowworm.waitTime = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Don't write or load dungeon, so only first 5 levels not 6
|
||||
fread(map, sizeof(u8), 128*128*5, file);
|
||||
fread(mapData, sizeof(u8), 128*128*5, file);
|
||||
|
||||
//set to startvalue incase file is old and doesn't contain saved time
|
||||
daytime = 6001;
|
||||
fread(&daytime, sizeof(u16), 1, file);
|
||||
|
||||
fclose(file);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue