feat: World loading that's broken
This commit is contained in:
128
code/first.c
128
code/first.c
@@ -95,7 +95,8 @@ int main(int argc, char **argv)
|
||||
camera->farp = 1000.0f;
|
||||
|
||||
game->draw.camera = camera;
|
||||
World *world = M_ArenaPush(arena, World);//LoadWorld(arena);
|
||||
World *world = M_ArenaPush(arena, World);
|
||||
//LoadWorld(arena, world);
|
||||
game->world = world;
|
||||
world->arena = arena;
|
||||
world->navMesh = &TestNavMesh;
|
||||
@@ -135,88 +136,90 @@ int main(int argc, char **argv)
|
||||
world->player.bulletsLoaded = PLAYER_BULLET_COUNT;
|
||||
world->player.reloadTimer = 0;
|
||||
world->player.currentArea = WORLD_AREA_OUTSIDE;
|
||||
for(int i =0; i< 4200; i++) {
|
||||
world->map[i] = map[i];
|
||||
}
|
||||
world->map = map;
|
||||
|
||||
world->tileTypes = M_ArenaPush(arena, World_Tile, .count=WORLD_TILE_TYPE_MAX);
|
||||
world->tileTypes[0].rotation=0;
|
||||
world->tileTypes[0].collision=false;
|
||||
world->tileTypes[0].tile=D_ImageHandle(&game->draw, S("tile_dirt_0"));
|
||||
world->tileTypes[0].tag=S("tile_dirt_0");
|
||||
world->tileTypes[1].rotation=0,
|
||||
world->tileTypes[1].collision=false,
|
||||
world->tileTypes[1].tile=D_ImageHandle(&game->draw, S("path_middle"));
|
||||
world->tileTypes[1].tag=S("path_middle");
|
||||
world->tileTypes[2].rotation=0;
|
||||
world->tileTypes[2].collision=false;
|
||||
world->tileTypes[2].tile=D_ImageHandle(&game->draw, S("path_middle_edge"));
|
||||
world->tileTypes[2].tag=S("path_middle_edge");
|
||||
world->tileTypes[3].rotation=PI_F32/2;
|
||||
world->tileTypes[3].collision=false;
|
||||
world->tileTypes[3].tile=D_ImageHandle(&game->draw, S("path_middle_edge"));
|
||||
world->tileTypes[3].tag=S("path_middle_edge");
|
||||
world->tileTypes[4].rotation=PI_F32;
|
||||
world->tileTypes[4].collision=false;
|
||||
world->tileTypes[4].tile=D_ImageHandle(&game->draw, S("path_middle_edge"));
|
||||
world->tileTypes[4].tag=S("path_middle_edge");
|
||||
world->tileTypes[5].rotation=-PI_F32/2;
|
||||
world->tileTypes[5].collision=false;
|
||||
world->tileTypes[5].tile=D_ImageHandle(&game->draw, S("path_middle_edge"));
|
||||
world->tileTypes[5].tag=S("path_middle_edge");
|
||||
world->tileTypes[6].rotation=0;
|
||||
world->tileTypes[6].collision=false;
|
||||
world->tileTypes[6].tile=D_ImageHandle(&game->draw, S("path_middle"));
|
||||
world->tileTypes[6].tag=S("path_middle");
|
||||
world->tileTypes[7].rotation=PI_F32/2;
|
||||
world->tileTypes[7].collision=false;
|
||||
world->tileTypes[7].tile=D_ImageHandle(&game->draw, S("path_middle"));
|
||||
world->tileTypes[7].tag=S("path_middle");
|
||||
world->tileTypes[8].rotation=-PI_F32;
|
||||
world->tileTypes[8].collision=false;
|
||||
world->tileTypes[8].tile=D_ImageHandle(&game->draw, S("path_middle"));
|
||||
world->tileTypes[8].tag=S("path_middle");
|
||||
world->tileTypes[9].rotation=-PI_F32/2;
|
||||
world->tileTypes[9].collision=false;
|
||||
world->tileTypes[9].tile=D_ImageHandle(&game->draw, S("path_middle"));
|
||||
world->tileTypes[9].tag=S("path_middle");
|
||||
world->tileTypes[10].rotation=0;
|
||||
world->tileTypes[10].collision=false;
|
||||
world->tileTypes[10].tile=D_ImageHandle(&game->draw, S("path_corner"));
|
||||
world->tileTypes[10].tag=S("path_corner");
|
||||
world->tileTypes[11].rotation=PI_F32/2;
|
||||
world->tileTypes[11].collision=false;
|
||||
world->tileTypes[11].tile=D_ImageHandle(&game->draw, S("path_corner"));
|
||||
world->tileTypes[11].tag=S("path_corner");
|
||||
world->tileTypes[12].rotation=-PI_F32/2;
|
||||
world->tileTypes[12].collision=false;
|
||||
world->tileTypes[12].tile=D_ImageHandle(&game->draw, S("path_corner"));
|
||||
world->tileTypes[12].tag=S("path_corner");
|
||||
world->tileTypes[13].rotation=PI_F32;
|
||||
world->tileTypes[13].collision=false;
|
||||
world->tileTypes[13].tile=D_ImageHandle(&game->draw, S("path_corner"));
|
||||
world->tileTypes[13].tag=S("path_corner");
|
||||
world->tileTypes[14].rotation=0;
|
||||
world->tileTypes[14].collision=false;
|
||||
world->tileTypes[14].tile=D_ImageHandle(&game->draw, S("tile_dirt_1"));
|
||||
world->tileTypes[14].tag=S("tile_dirt_1");
|
||||
|
||||
world->propTypes[0].assetHandle=D_ImageHandle(&game->draw, S("rug0"));
|
||||
world->propTypes = M_ArenaPush(arena, World_PropType, .count=WORLD_PROP_TYPE_MAX);
|
||||
world->propTypes[0].tag=S("rug0");
|
||||
world->propTypes[0].scale=1;
|
||||
world->propTypes[1].assetHandle=D_ImageHandle(&game->draw, S("rug1"));
|
||||
world->propTypes[1].tag=S("rug1");
|
||||
world->propTypes[1].scale=1;
|
||||
world->propTypes[2].assetHandle=D_ImageHandle(&game->draw, S("skull"));
|
||||
world->propTypes[2].tag=S("skull");
|
||||
world->propTypes[2].scale=1;
|
||||
world->propTypes[3].assetHandle=D_ImageHandle(&game->draw, S("table"));
|
||||
world->propTypes[3].scale=1;
|
||||
world->propTypes[4].assetHandle=D_ImageHandle(&game->draw, S("barrel"));
|
||||
world->propTypes[3].tag = S("table");
|
||||
world->propTypes[3].scale=2;
|
||||
world->propTypes[4].tag = S("barrel");
|
||||
world->propTypes[4].scale=1;
|
||||
world->propTypes[5].assetHandle=D_ImageHandle(&game->draw, S("can"));
|
||||
world->propTypes[5].tag = S("can");
|
||||
world->propTypes[5].scale=1;
|
||||
world->propTypes[6].assetHandle=D_ImageHandle(&game->draw, S("candle"));
|
||||
world->propTypes[6].tag = S("candle");
|
||||
world->propTypes[6].scale=1;
|
||||
world->propTypes[7].assetHandle=D_ImageHandle(&game->draw, S("clock"));
|
||||
world->propTypes[7].tag = S("clock");
|
||||
world->propTypes[7].scale=1;
|
||||
world->propTypes[8].assetHandle=D_ImageHandle(&game->draw, S("log_pile"));
|
||||
world->propTypes[8].tag = S("log_pile");
|
||||
world->propTypes[8].scale=1;
|
||||
world->propTypes[9].assetHandle=D_ImageHandle(&game->draw, S("nightstand"));
|
||||
world->propTypes[9].tag = S("nightstand");
|
||||
world->propTypes[9].scale=1;
|
||||
world->propTypes[10].assetHandle=D_ImageHandle(&game->draw, S("pool_table"));
|
||||
world->propTypes[10].scale=1;
|
||||
world->propTypes[11].assetHandle=D_ImageHandle(&game->draw, S("saloon_ext"));
|
||||
world->propTypes[10].tag = S("pool_table");
|
||||
world->propTypes[10].scale=2;
|
||||
world->propTypes[11].tag = S("saloon_ext");
|
||||
world->propTypes[11].scale=6.875f;
|
||||
world->propTypes[12].assetHandle=D_ImageHandle(&game->draw, S("saloon_int"));
|
||||
world->propTypes[12].scale=6.875f;
|
||||
world->propTypes[11].assetHandle=D_ImageHandle(&game->draw, S("house"));
|
||||
world->propTypes[11].scale=6.875f;
|
||||
world->propTypes[12].assetHandle=D_ImageHandle(&game->draw, S("house_int"));
|
||||
world->propTypes[12].scale=6.875f;
|
||||
world->propTypes[12].tag = S("saloon_int");
|
||||
world->propTypes[12].scale=2*6.875f;
|
||||
world->propTypes[13].tag = S("house");
|
||||
world->propTypes[13].scale=6.875f;
|
||||
world->propTypes[14].tag = S("house_int");
|
||||
world->propTypes[14].scale=6.875f;
|
||||
world->propTypes[15].tag=S("tile_detail_0");
|
||||
world->propTypes[15].scale=1;
|
||||
world->propTypes[16].tag = S("tile_detail_1");
|
||||
world->propTypes[16].scale=1;
|
||||
world->propTypes[17].tag = S("tile_detail_2");
|
||||
world->propTypes[17].scale=1;
|
||||
world->propTypes[18].tag= S("tile_detail_3");
|
||||
world->propTypes[18].scale=1;
|
||||
world->propTypes[19].tag= S("tile_detail_4");
|
||||
world->propTypes[19].scale=1;
|
||||
world->propTypes[20].tag=S("tile_detail_5");
|
||||
world->propTypes[20].scale=1;
|
||||
world->propTypes[21].tag=S("tile_detail_6");
|
||||
world->propTypes[21].scale=1;
|
||||
world->propCount = 0;
|
||||
world->props = M_ArenaPush(arena, World_Prop, .count=WORLD_PROP_MAX);
|
||||
world->hitboxes = M_ArenaPush(arena, AABB, .count=WORLD_HITBOX_MAX);
|
||||
}
|
||||
game->editor.enabled = true;
|
||||
game->editor.enabled = false;
|
||||
game->editor.mode = G_EDITOR_MODE_TILE;
|
||||
game->editor.currentLevel = WORLD_AREA_OUTSIDE;
|
||||
|
||||
@@ -328,6 +331,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
case SDLK_SPACE: {
|
||||
game->editor.mode = (game->editor.mode + 1) % 4;
|
||||
printf("EDITOR MODE %d\n", game->editor.mode);
|
||||
break;
|
||||
}
|
||||
case SDLK_U: {
|
||||
@@ -396,18 +400,26 @@ int main(int argc, char **argv)
|
||||
switch(game->editor.mode) {
|
||||
case G_EDITOR_MODE_TILE: {
|
||||
World_Tile asset = game->world->tileTypes[editor.currentAsset];
|
||||
D_Rect(&game->draw, tilex, tiley, .texture=asset.tile, .angle=asset.rotation);
|
||||
D_Rect(&game->draw, tilex, tiley, .texture=D_ImageHandle(&game->draw, asset.tag), .angle=asset.rotation);
|
||||
break;
|
||||
}
|
||||
case G_EDITOR_MODE_PROP: {
|
||||
World_PropType prop = game->world->propTypes[editor.currentAsset];
|
||||
D_Rect(&game->draw, editor.cursor.x, editor.cursor.y, .texture=prop.assetHandle, .scale=prop.scale);
|
||||
D_Rect(&game->draw, editor.cursor.x, editor.cursor.y, .texture=D_ImageHandle(&game->draw, prop.tag), .scale=prop.scale);
|
||||
break;
|
||||
}
|
||||
case G_EDITOR_MODE_HITBOX: {
|
||||
for(int i = 0; i < game->world->hitboxCount; i++) {
|
||||
V2f centre = AABB_Centre(game->world->hitboxes[i]);
|
||||
D_Rect(&game->draw, centre.x, centre.y, .texture=0, .dim=game->world->hitboxes[i].size, .flags=D_RECT_IGNORE_ASPECT);
|
||||
D_Rect(
|
||||
&game->draw,
|
||||
centre.x,
|
||||
centre.y,
|
||||
.texture=0,
|
||||
.dim=game->world->hitboxes[i].size,
|
||||
.flags=D_RECT_IGNORE_ASPECT,
|
||||
.c=V4F(100,0,0,0.7),
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user