engine-c: denser BT_TURRET berm/bunker/cupola/barrel silhouettes
This commit is contained in:
parent
f2bcdb06c5
commit
a0d5e3ad41
2 changed files with 132 additions and 52 deletions
|
|
@ -1015,41 +1015,81 @@ static void draw_bld(Building *b, int sx, int sy) {
|
|||
fill_rect(sx + W - 4, sy + H - 12, 2, 4, 50, 48, 40); /* fence post R */
|
||||
break;
|
||||
case BT_TURRET:
|
||||
/* armored bunker + ringed cupola + thick barrel (KKND turret read) */
|
||||
fill_rect(sx + 2, sy + H - 14, W - 4, 12, ok, og, ob);
|
||||
fill_rect(sx + 3, sy + H - 12, W - 6, 9, 48, 44, 38); /* bunker slab */
|
||||
fill_rect(sx + 4, sy + H - 11, 4, 4, 70, 65, 55); /* armor plate L */
|
||||
fill_rect(sx + W - 8, sy + H - 11, 4, 4, 70, 65, 55); /* armor plate R */
|
||||
fill_rect(sx + W/2 - 5, sy + H - 8, 10, 3, 35, 32, 28); /* embrasure */
|
||||
fill_rect(sx + 5, sy + H - 6, 3, 2, 28, 26, 22); /* bolt L */
|
||||
fill_rect(sx + W - 8, sy + H - 6, 3, 2, 28, 26, 22); /* bolt R */
|
||||
/* ammo box + strut */
|
||||
fill_rect(sx + 3, sy + H/2 + 2, 7, 8, ok, og, ob);
|
||||
fill_rect(sx + 4, sy + H/2 + 3, 5, 6, 55, 50, 42);
|
||||
/* denser KKND turret: berm+bunker+cupola+barrel+radar+coax */
|
||||
fill_rect(sx + 1, sy + H - 8, W - 2, 6, 70, 58, 42); /* berm/sandbag ring */
|
||||
fill_rect(sx + 2, sy + H - 7, 4, 4, 95, 82, 60); /* bag L */
|
||||
fill_rect(sx + W - 6, sy + H - 7, 4, 4, 95, 82, 60); /* bag R */
|
||||
fill_rect(sx + W/2 - 4, sy + H - 6, 8, 3, 85, 72, 52); /* bag mid */
|
||||
fill_rect(sx + 2, sy + H - 16, W - 4, 12, ok, og, ob); /* bunker hull */
|
||||
fill_rect(sx + 3, sy + H - 14, W - 6, 9, 48, 44, 38); /* bunker slab */
|
||||
fill_rect(sx + 3, sy + H - 15, W - 6, 2, 90, 82, 68); /* top lip */
|
||||
fill_rect(sx + 4, sy + H - 13, 5, 5, 70, 65, 55); /* armor plate L */
|
||||
fill_rect(sx + W - 9, sy + H - 13, 5, 5, 70, 65, 55); /* armor plate R */
|
||||
fill_rect(sx + W/2 - 6, sy + H - 10, 12, 4, 35, 32, 28); /* embrasure */
|
||||
fill_rect(sx + W/2 - 5, sy + H - 9, 10, 2, 20, 18, 16); /* slit */
|
||||
fill_rect(sx + 5, sy + H - 8, 2, 2, 28, 26, 22); /* bolt L */
|
||||
fill_rect(sx + 8, sy + H - 8, 2, 2, 28, 26, 22);
|
||||
fill_rect(sx + W - 10, sy + H - 8, 2, 2, 28, 26, 22); /* bolt R */
|
||||
fill_rect(sx + W - 7, sy + H - 8, 2, 2, 28, 26, 22);
|
||||
fill_rect(sx + 2, sy + H - 4, 3, 3, 55, 48, 38); /* corner block L */
|
||||
fill_rect(sx + W - 5, sy + H - 4, 3, 3, 55, 48, 38); /* corner block R */
|
||||
/* dual ammo crates + feed strut */
|
||||
fill_rect(sx + 2, sy + H/2 + 1, 7, 9, ok, og, ob);
|
||||
fill_rect(sx + 3, sy + H/2 + 2, 5, 7, 55, 50, 42);
|
||||
fill_rect(sx + 4, sy + H/2 + 3, 3, 2, 200, 160, 40); /* hazard stripe */
|
||||
fill_rect(sx + W - 9, sy + H/2 + 2, 6, 8, ok, og, ob);
|
||||
fill_rect(sx + W - 8, sy + H/2 + 3, 4, 6, 50, 46, 38);
|
||||
fill_rect(sx + W - 7, sy + H/2 + 4, 2, 2, 200, 160, 40);
|
||||
line(sx + 6, sy + H/2 + 2, sx + W/2 - 4, sy + H/2, 40, 36, 30);
|
||||
/* ringed cupola */
|
||||
line(sx + W - 6, sy + H/2 + 3, sx + W/2 + 4, sy + H/2 + 1, 40, 36, 30);
|
||||
/* access ladder */
|
||||
fill_rect(sx + 1, sy + H/2 - 2, 2, 10, 60, 55, 45);
|
||||
fill_rect(sx + 1, sy + H/2, 3, 1, 90, 85, 70);
|
||||
fill_rect(sx + 1, sy + H/2 + 3, 3, 1, 90, 85, 70);
|
||||
fill_rect(sx + 1, sy + H/2 + 6, 3, 1, 90, 85, 70);
|
||||
/* ringed cupola + viewports */
|
||||
disc(sx + W/2, sy + H/2, W/3 + 3, ok, og, ob);
|
||||
disc(sx + W/2, sy + H/2, W/3 + 1, br, bg, bb);
|
||||
{
|
||||
uint8_t dr, dg, db;
|
||||
darken3(br, bg, bb, 0.45f, &dr, &dg, &db);
|
||||
ring(sx + W/2, sy + H/2, W/4 + 1, 2, dr, dg, db);
|
||||
ring(sx + W/2, sy + H/2, W/4 + 2, 2, dr, dg, db);
|
||||
}
|
||||
ring(sx + W/2, sy + H/2, W/4 - 1, 1, 35, 32, 28);
|
||||
disc(sx + W/2, sy + H/2, W/5, lr, lg, lb);
|
||||
disc(sx + W/2, sy + H/2 - 1, 3, 35, 32, 28); /* hatch */
|
||||
disc(sx + W/2 - 4, sy + H/2 + 3, 1, 90, 85, 70); /* rivet */
|
||||
disc(sx + W/2 + 4, sy + H/2 + 3, 1, 90, 85, 70);
|
||||
/* thick armored barrel + bands */
|
||||
fill_rect(sx + W/2 + 2, sy + H/2 - 3, 12, 5, ok, og, ob);
|
||||
fill_rect(sx + W/2 + 3, sy + H/2 - 2, 11, 3, 40, 36, 30);
|
||||
fill_rect(sx + W/2 + 5, sy + H/2 - 3, 2, 5, 70, 62, 50); /* band */
|
||||
fill_rect(sx + W/2 + 9, sy + H/2 - 3, 2, 5, 70, 62, 50);
|
||||
line(sx + W/2, sy + H/2, sx + W/2 + 14, sy + H/2 - 10, 28, 26, 22);
|
||||
line(sx + W/2 + 1, sy + H/2 + 1, sx + W/2 + 14, sy + H/2 - 9, 55, 48, 38);
|
||||
disc(sx + W/2 + 13, sy + H/2 - 10, 2, 255, 200, 80); /* muzzle tip */
|
||||
/* searchlight stub */
|
||||
fill_rect(sx + W/2 - 8, sy + H/2 - 6, 4, 3, 200, 195, 160);
|
||||
disc(sx + W/2 - 6, sy + H/2 - 7, 2, 255, 250, 210);
|
||||
fill_rect(sx + W/2 - 1, sy + H/2 - 3, 2, 2, 20, 18, 16); /* hatch handle */
|
||||
fill_rect(sx + W/2 - 6, sy + H/2 - 1, 3, 2, 25, 22, 18); /* viewport L */
|
||||
fill_rect(sx + W/2 + 3, sy + H/2 - 1, 3, 2, 25, 22, 18); /* viewport R */
|
||||
disc(sx + W/2 - 5, sy + H/2 + 4, 1, 90, 85, 70); /* rivet */
|
||||
disc(sx + W/2 + 5, sy + H/2 + 4, 1, 90, 85, 70);
|
||||
disc(sx + W/2 - 2, sy + H/2 + 5, 1, 90, 85, 70);
|
||||
disc(sx + W/2 + 2, sy + H/2 + 5, 1, 90, 85, 70);
|
||||
/* main barrel shroud + bands + rail */
|
||||
fill_rect(sx + W/2 + 1, sy + H/2 - 4, 14, 7, ok, og, ob);
|
||||
fill_rect(sx + W/2 + 2, sy + H/2 - 3, 13, 5, 40, 36, 30);
|
||||
fill_rect(sx + W/2 + 3, sy + H/2 - 2, 12, 3, 55, 50, 42); /* bore highlight */
|
||||
fill_rect(sx + W/2 + 4, sy + H/2 - 4, 2, 7, 70, 62, 50); /* band */
|
||||
fill_rect(sx + W/2 + 8, sy + H/2 - 4, 2, 7, 70, 62, 50);
|
||||
fill_rect(sx + W/2 + 12, sy + H/2 - 4, 2, 7, 70, 62, 50);
|
||||
fill_rect(sx + W/2 + 2, sy + H/2 + 3, 10, 2, 30, 28, 24); /* recoil rail */
|
||||
line(sx + W/2, sy + H/2, sx + W/2 + 15, sy + H/2 - 11, 28, 26, 22);
|
||||
line(sx + W/2 + 1, sy + H/2 + 1, sx + W/2 + 15, sy + H/2 - 10, 55, 48, 38);
|
||||
disc(sx + W/2 + 14, sy + H/2 - 11, 2, 255, 200, 80); /* muzzle tip */
|
||||
fill_rect(sx + W/2 + 13, sy + H/2 - 12, 3, 1, 255, 220, 120); /* flash tip */
|
||||
/* coax MG under barrel */
|
||||
fill_rect(sx + W/2 + 3, sy + H/2 + 1, 8, 2, 45, 42, 36);
|
||||
fill_rect(sx + W/2 + 10, sy + H/2 + 1, 3, 1, 30, 28, 24);
|
||||
/* radar dish + mast + cable */
|
||||
fill_rect(sx + W/2 - 2, sy + H/2 - 10, 3, 5, 50, 48, 40); /* mast */
|
||||
disc(sx + W/2 - 1, sy + H/2 - 11, 4, 90, 88, 78);
|
||||
disc(sx + W/2 - 1, sy + H/2 - 11, 2, 40, 38, 34);
|
||||
line(sx + W/2 - 1, sy + H/2 - 7, sx + W/2 - 6, sy + H/2 - 2, 60, 55, 45);
|
||||
/* searchlight + flood */
|
||||
fill_rect(sx + W/2 - 9, sy + H/2 - 7, 5, 4, 200, 195, 160);
|
||||
fill_rect(sx + W/2 - 8, sy + H/2 - 6, 3, 2, 255, 250, 210);
|
||||
disc(sx + W/2 - 7, sy + H/2 - 8, 2, 255, 250, 210);
|
||||
fill_rect(sx + W - 6, sy + H/2 - 5, 3, 2, 220, 210, 160); /* side flood */
|
||||
break;
|
||||
case BT_WALL:
|
||||
/* thick fort wall + crenels + seams + embrasure (KKND fort read) */
|
||||
|
|
|
|||
|
|
@ -821,37 +821,77 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) {
|
|||
fill_rect(s, W - 4, H - 12, 2, 4, 50, 48, 40, 255); /* fence post R */
|
||||
break;
|
||||
case BT_TURRET:
|
||||
/* armored bunker + ringed cupola + thick barrel (KKND turret read) */
|
||||
fill_rect(s, 2, H - 14, W - 4, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 3, H - 12, W - 6, 9, 48, 44, 38, 255); /* bunker slab */
|
||||
fill_rect(s, 4, H - 11, 4, 4, 70, 65, 55, 255); /* armor plate L */
|
||||
fill_rect(s, W - 8, H - 11, 4, 4, 70, 65, 55, 255); /* armor plate R */
|
||||
fill_rect(s, W/2 - 5, H - 8, 10, 3, 35, 32, 28, 255); /* embrasure */
|
||||
fill_rect(s, 5, H - 6, 3, 2, 28, 26, 22, 255); /* bolt L */
|
||||
fill_rect(s, W - 8, H - 6, 3, 2, 28, 26, 22, 255); /* bolt R */
|
||||
/* ammo box + strut */
|
||||
fill_rect(s, 3, H/2 + 2, 7, 8, ok, og, ob, 255);
|
||||
fill_rect(s, 4, H/2 + 3, 5, 6, 55, 50, 42, 255);
|
||||
/* denser KKND turret: berm+bunker+cupola+barrel+radar+coax */
|
||||
fill_rect(s, 1, H - 8, W - 2, 6, 70, 58, 42, 255); /* berm/sandbag ring */
|
||||
fill_rect(s, 2, H - 7, 4, 4, 95, 82, 60, 255); /* bag L */
|
||||
fill_rect(s, W - 6, H - 7, 4, 4, 95, 82, 60, 255); /* bag R */
|
||||
fill_rect(s, W/2 - 4, H - 6, 8, 3, 85, 72, 52, 255); /* bag mid */
|
||||
fill_rect(s, 2, H - 16, W - 4, 12, ok, og, ob, 255); /* bunker hull */
|
||||
fill_rect(s, 3, H - 14, W - 6, 9, 48, 44, 38, 255); /* bunker slab */
|
||||
fill_rect(s, 3, H - 15, W - 6, 2, 90, 82, 68, 255); /* top lip */
|
||||
fill_rect(s, 4, H - 13, 5, 5, 70, 65, 55, 255); /* armor plate L */
|
||||
fill_rect(s, W - 9, H - 13, 5, 5, 70, 65, 55, 255); /* armor plate R */
|
||||
fill_rect(s, W/2 - 6, H - 10, 12, 4, 35, 32, 28, 255); /* embrasure */
|
||||
fill_rect(s, W/2 - 5, H - 9, 10, 2, 20, 18, 16, 255); /* slit */
|
||||
fill_rect(s, 5, H - 8, 2, 2, 28, 26, 22, 255); /* bolt L */
|
||||
fill_rect(s, 8, H - 8, 2, 2, 28, 26, 22, 255);
|
||||
fill_rect(s, W - 10, H - 8, 2, 2, 28, 26, 22, 255); /* bolt R */
|
||||
fill_rect(s, W - 7, H - 8, 2, 2, 28, 26, 22, 255);
|
||||
fill_rect(s, 2, H - 4, 3, 3, 55, 48, 38, 255); /* corner block L */
|
||||
fill_rect(s, W - 5, H - 4, 3, 3, 55, 48, 38, 255); /* corner block R */
|
||||
/* dual ammo crates + feed strut */
|
||||
fill_rect(s, 2, H/2 + 1, 7, 9, ok, og, ob, 255);
|
||||
fill_rect(s, 3, H/2 + 2, 5, 7, 55, 50, 42, 255);
|
||||
fill_rect(s, 4, H/2 + 3, 3, 2, 200, 160, 40, 255); /* hazard stripe */
|
||||
fill_rect(s, W - 9, H/2 + 2, 6, 8, ok, og, ob, 255);
|
||||
fill_rect(s, W - 8, H/2 + 3, 4, 6, 50, 46, 38, 255);
|
||||
fill_rect(s, W - 7, H/2 + 4, 2, 2, 200, 160, 40, 255);
|
||||
line(s, 6, H/2 + 2, W/2 - 4, H/2, 40, 36, 30, 255);
|
||||
/* ringed cupola */
|
||||
line(s, W - 6, H/2 + 3, W/2 + 4, H/2 + 1, 40, 36, 30, 255);
|
||||
/* access ladder */
|
||||
fill_rect(s, 1, H/2 - 2, 2, 10, 60, 55, 45, 255);
|
||||
fill_rect(s, 1, H/2, 3, 1, 90, 85, 70, 255);
|
||||
fill_rect(s, 1, H/2 + 3, 3, 1, 90, 85, 70, 255);
|
||||
fill_rect(s, 1, H/2 + 6, 3, 1, 90, 85, 70, 255);
|
||||
/* ringed cupola + viewports */
|
||||
disc(s, W/2, H/2, W/3 + 3, ok, og, ob, 255);
|
||||
disc(s, W/2, H/2, W/3 + 1, base.r, base.g, base.b, 255);
|
||||
ring(s, W/2, H/2, W/4 + 1, 2, dark.r, dark.g, dark.b, 255);
|
||||
ring(s, W/2, H/2, W/4 + 2, 2, dark.r, dark.g, dark.b, 255);
|
||||
ring(s, W/2, H/2, W/4 - 1, 1, 35, 32, 28, 255);
|
||||
disc(s, W/2, H/2, W/5, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, W/2, H/2 - 1, 3, 35, 32, 28, 255); /* hatch */
|
||||
disc(s, W/2 - 4, H/2 + 3, 1, 90, 85, 70, 255); /* rivet */
|
||||
disc(s, W/2 + 4, H/2 + 3, 1, 90, 85, 70, 255);
|
||||
/* thick armored barrel + bands */
|
||||
fill_rect(s, W/2 + 2, H/2 - 3, 12, 5, ok, og, ob, 255);
|
||||
fill_rect(s, W/2 + 3, H/2 - 2, 11, 3, 40, 36, 30, 255);
|
||||
fill_rect(s, W/2 + 5, H/2 - 3, 2, 5, 70, 62, 50, 255); /* band */
|
||||
fill_rect(s, W/2 + 9, H/2 - 3, 2, 5, 70, 62, 50, 255);
|
||||
line(s, W/2, H/2, W/2 + 14, H/2 - 10, 28, 26, 22, 255);
|
||||
line(s, W/2 + 1, H/2 + 1, W/2 + 14, H/2 - 9, 55, 48, 38, 255);
|
||||
disc(s, W/2 + 13, H/2 - 10, 2, 255, 200, 80, 255); /* muzzle tip */
|
||||
/* searchlight stub */
|
||||
fill_rect(s, W/2 - 8, H/2 - 6, 4, 3, 200, 195, 160, 255);
|
||||
disc(s, W/2 - 6, H/2 - 7, 2, 255, 250, 210, 255);
|
||||
fill_rect(s, W/2 - 1, H/2 - 3, 2, 2, 20, 18, 16, 255); /* hatch handle */
|
||||
fill_rect(s, W/2 - 6, H/2 - 1, 3, 2, 25, 22, 18, 255); /* viewport L */
|
||||
fill_rect(s, W/2 + 3, H/2 - 1, 3, 2, 25, 22, 18, 255); /* viewport R */
|
||||
disc(s, W/2 - 5, H/2 + 4, 1, 90, 85, 70, 255); /* rivet */
|
||||
disc(s, W/2 + 5, H/2 + 4, 1, 90, 85, 70, 255);
|
||||
disc(s, W/2 - 2, H/2 + 5, 1, 90, 85, 70, 255);
|
||||
disc(s, W/2 + 2, H/2 + 5, 1, 90, 85, 70, 255);
|
||||
/* main barrel shroud + bands + rail */
|
||||
fill_rect(s, W/2 + 1, H/2 - 4, 14, 7, ok, og, ob, 255);
|
||||
fill_rect(s, W/2 + 2, H/2 - 3, 13, 5, 40, 36, 30, 255);
|
||||
fill_rect(s, W/2 + 3, H/2 - 2, 12, 3, 55, 50, 42, 255); /* bore highlight */
|
||||
fill_rect(s, W/2 + 4, H/2 - 4, 2, 7, 70, 62, 50, 255); /* band */
|
||||
fill_rect(s, W/2 + 8, H/2 - 4, 2, 7, 70, 62, 50, 255);
|
||||
fill_rect(s, W/2 + 12, H/2 - 4, 2, 7, 70, 62, 50, 255);
|
||||
fill_rect(s, W/2 + 2, H/2 + 3, 10, 2, 30, 28, 24, 255); /* recoil rail */
|
||||
line(s, W/2, H/2, W/2 + 15, H/2 - 11, 28, 26, 22, 255);
|
||||
line(s, W/2 + 1, H/2 + 1, W/2 + 15, H/2 - 10, 55, 48, 38, 255);
|
||||
disc(s, W/2 + 14, H/2 - 11, 2, 255, 200, 80, 255); /* muzzle tip */
|
||||
fill_rect(s, W/2 + 13, H/2 - 12, 3, 1, 255, 220, 120, 255); /* flash tip */
|
||||
/* coax MG under barrel */
|
||||
fill_rect(s, W/2 + 3, H/2 + 1, 8, 2, 45, 42, 36, 255);
|
||||
fill_rect(s, W/2 + 10, H/2 + 1, 3, 1, 30, 28, 24, 255);
|
||||
/* radar dish + mast + cable */
|
||||
fill_rect(s, W/2 - 2, H/2 - 10, 3, 5, 50, 48, 40, 255); /* mast */
|
||||
disc(s, W/2 - 1, H/2 - 11, 4, 90, 88, 78, 255);
|
||||
disc(s, W/2 - 1, H/2 - 11, 2, 40, 38, 34, 255);
|
||||
line(s, W/2 - 1, H/2 - 7, W/2 - 6, H/2 - 2, 60, 55, 45, 255);
|
||||
/* searchlight + flood */
|
||||
fill_rect(s, W/2 - 9, H/2 - 7, 5, 4, 200, 195, 160, 255);
|
||||
fill_rect(s, W/2 - 8, H/2 - 6, 3, 2, 255, 250, 210, 255);
|
||||
disc(s, W/2 - 7, H/2 - 8, 2, 255, 250, 210, 255);
|
||||
fill_rect(s, W - 6, H/2 - 5, 3, 2, 220, 210, 160, 255); /* side flood */
|
||||
break;
|
||||
case BT_WALL:
|
||||
/* thick fort wall + crenels + seams + embrasure (KKND fort read) */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue