engine-c: denser BT_BASE HQ/hive/tower/courtyard/entry silhouettes
This commit is contained in:
parent
4f7fdef912
commit
f8eb12737c
2 changed files with 91 additions and 11 deletions
|
|
@ -766,7 +766,7 @@ static void draw_bld(Building *b, int sx, int sy) {
|
|||
switch (b->type) {
|
||||
case BT_BASE:
|
||||
if (b->faction == FACTION_EVOLVED) {
|
||||
/* hive: lobes + membrane ridges + spine + pit eye (KKND HQ read) */
|
||||
/* hive densify: lobes + bone plates + veins + sacs + mouth + pit eye */
|
||||
disc(sx + 14, sy + 18, 14, ok, og, ob);
|
||||
disc(sx + 14, sy + 18, 12, br, bg, bb);
|
||||
disc(sx + W - 14, sy + 18, 14, ok, og, ob);
|
||||
|
|
@ -787,6 +787,24 @@ static void draw_bld(Building *b, int sx, int sy) {
|
|||
fill_rect(sx + W/2 - 1, sy + 5, 2, H/2 - 10, 90, 40, 55);
|
||||
line(sx + W/2, sy + 8, sx + W/2 - 10, sy + 18, 70, 30, 45);
|
||||
line(sx + W/2, sy + 8, sx + W/2 + 10, sy + 18, 70, 30, 45);
|
||||
/* bone plates + vein strips */
|
||||
fill_rect(sx + 8, sy + 14, 6, 3, 110, 70, 80);
|
||||
fill_rect(sx + W - 14, sy + 14, 6, 3, 110, 70, 80);
|
||||
fill_rect(sx + 10, sy + H - 20, 5, 3, 100, 55, 70);
|
||||
fill_rect(sx + W - 15, sy + H - 20, 5, 3, 100, 55, 70);
|
||||
fill_rect(sx + W/2 - 12, sy + H/2 - 2, 8, 2, 80, 35, 50);
|
||||
fill_rect(sx + W/2 + 4, sy + H/2 - 2, 8, 2, 80, 35, 50);
|
||||
fill_rect(sx + W/2 - 1, sy + H/2 + 8, 2, 6, 70, 30, 45);
|
||||
/* membrane pads + egg sacs */
|
||||
fill_rect(sx + 20, sy + 24, 5, 4, lr, lg, lb);
|
||||
fill_rect(sx + W - 25, sy + 24, 5, 4, lr, lg, lb);
|
||||
fill_rect(sx + 22, sy + H - 22, 4, 4, 160, 60, 90);
|
||||
fill_rect(sx + W - 26, sy + H - 22, 4, 4, 160, 60, 90);
|
||||
fill_rect(sx + W/2 - 14, sy + H - 18, 4, 3, 140, 50, 80);
|
||||
fill_rect(sx + W/2 + 10, sy + H - 18, 4, 3, 140, 50, 80);
|
||||
/* mouth / entry slit */
|
||||
fill_rect(sx + W/2 - 6, sy + H - 10, 12, 4, 30, 18, 22);
|
||||
fill_rect(sx + W/2 - 4, sy + H - 9, 8, 2, 200, 40, 70);
|
||||
/* dark pit + glowing eye */
|
||||
disc(sx + W/2, sy + H/2, 8, 28, 18, 22);
|
||||
disc(sx + W/2, sy + H/2, 5, 60, 20, 30);
|
||||
|
|
@ -799,8 +817,9 @@ static void draw_bld(Building *b, int sx, int sy) {
|
|||
disc(sx + 10, sy + H/2 + 2, 3, lr, lg, lb);
|
||||
disc(sx + W - 10, sy + H/2 - 4, 3, lr, lg, lb);
|
||||
disc(sx + W/2 + 8, sy + 14, 2, 180, 70, 100);
|
||||
disc(sx + W/2 - 6, sy + H - 14, 2, 200, 80, 110);
|
||||
} else {
|
||||
/* Survivors HQ: towers + walkways + dome + dish + entry (KKND HQ read) */
|
||||
/* Survivors HQ densify: battlements + courtyard + flag + sandbags */
|
||||
fill_rect(sx + 4, sy + 4, 14, 14, ok, og, ob);
|
||||
fill_rect(sx + 6, sy + 6, 10, 10, br, bg, bb);
|
||||
fill_rect(sx + W - 18, sy + 4, 14, 14, ok, og, ob);
|
||||
|
|
@ -809,31 +828,52 @@ static void draw_bld(Building *b, int sx, int sy) {
|
|||
fill_rect(sx + 6, sy + H - 16, 10, 10, br, bg, bb);
|
||||
fill_rect(sx + W - 18, sy + H - 18, 14, 14, ok, og, ob);
|
||||
fill_rect(sx + W - 16, sy + H - 16, 10, 10, br, bg, bb);
|
||||
/* tower windows + corner lights */
|
||||
/* battlement teeth */
|
||||
fill_rect(sx + 5, sy + 3, 3, 2, 100, 95, 80);
|
||||
fill_rect(sx + 11, sy + 3, 3, 2, 100, 95, 80);
|
||||
fill_rect(sx + W - 16, sy + 3, 3, 2, 100, 95, 80);
|
||||
fill_rect(sx + W - 10, sy + 3, 3, 2, 100, 95, 80);
|
||||
/* tower windows + lower windows + corner lights */
|
||||
fill_rect(sx + 8, sy + 8, 3, 3, 200, 230, 255);
|
||||
fill_rect(sx + W - 13, sy + 8, 3, 3, 200, 230, 255);
|
||||
fill_rect(sx + 8, sy + H - 13, 3, 3, 200, 230, 255);
|
||||
fill_rect(sx + W - 13, sy + H - 13, 3, 3, 200, 230, 255);
|
||||
fill_rect(sx + 8, sy + 12, 2, 2, 180, 210, 240);
|
||||
fill_rect(sx + W - 12, sy + 12, 2, 2, 180, 210, 240);
|
||||
fill_rect(sx + 8, sy + H - 10, 2, 2, 180, 210, 240);
|
||||
fill_rect(sx + W - 12, sy + H - 10, 2, 2, 180, 210, 240);
|
||||
disc(sx + 7, sy + 5, 2, 255, 220, 80);
|
||||
disc(sx + W - 7, sy + 5, 2, 255, 220, 80);
|
||||
/* courtyard body + roof band */
|
||||
disc(sx + 7, sy + H - 6, 2, 255, 200, 60);
|
||||
disc(sx + W - 7, sy + H - 6, 2, 255, 200, 60);
|
||||
/* courtyard body + roof band + tiles */
|
||||
fill_rect(sx + 14, sy + 14, W - 28, H - 28, ok, og, ob);
|
||||
fill_rect(sx + 16, sy + 16, W - 32, H - 32, br, bg, bb);
|
||||
fill_rect(sx + 18, sy + 18, W - 36, 8, lr, lg, lb);
|
||||
fill_rect(sx + 20, sy + 28, 4, 3, 120, 110, 90);
|
||||
fill_rect(sx + W/2 - 2, sy + 28, 4, 3, 120, 110, 90);
|
||||
fill_rect(sx + W - 24, sy + 28, 4, 3, 120, 110, 90);
|
||||
/* walkways between towers */
|
||||
fill_rect(sx + 16, sy + 8, W - 32, 3, 90, 85, 70);
|
||||
fill_rect(sx + 16, sy + H - 11, W - 32, 3, 90, 85, 70);
|
||||
fill_rect(sx + 8, sy + 16, 3, H - 32, 90, 85, 70);
|
||||
fill_rect(sx + W - 11, sy + 16, 3, H - 32, 90, 85, 70);
|
||||
/* command dome + mast + radar dish */
|
||||
/* command dome + mast + radar dish + antenna stubs */
|
||||
disc(sx + W/2, sy + H/2 - 2, 10, ok, og, ob);
|
||||
disc(sx + W/2, sy + H/2 - 2, 8, lr, lg, lb);
|
||||
disc(sx + W/2, sy + H/2 - 2, 4, 255, 250, 180);
|
||||
fill_rect(sx + W/2 - 2, sy + 2, 4, H/2 - 6, 200, 180, 60);
|
||||
fill_rect(sx + W/2 - 6, sy + 2, 12, 3, 220, 210, 80);
|
||||
fill_rect(sx + W/2 - 8, sy + 1, 2, 4, 180, 170, 90);
|
||||
fill_rect(sx + W/2 + 6, sy + 1, 2, 4, 180, 170, 90);
|
||||
disc(sx + W/2 + 8, sy + 8, 5, ok, og, ob); /* dish */
|
||||
disc(sx + W/2 + 8, sy + 8, 3, 180, 200, 220);
|
||||
line(sx + W/2 + 2, sy + 6, sx + W/2 + 8, sy + 8, 160, 150, 100);
|
||||
/* flag + sandbags */
|
||||
fill_rect(sx + W/2 - 14, sy + 6, 2, 8, 160, 40, 40);
|
||||
fill_rect(sx + W/2 - 12, sy + 6, 5, 3, 200, 50, 50);
|
||||
fill_rect(sx + W/2 - 10, sy + H - 8, 4, 2, 130, 110, 80);
|
||||
fill_rect(sx + W/2 + 6, sy + H - 8, 4, 2, 130, 110, 80);
|
||||
/* entry bunker + blast doors */
|
||||
fill_rect(sx + W/2 - 8, sy + H - 14, 16, 8, ok, og, ob);
|
||||
fill_rect(sx + W/2 - 6, sy + H - 12, 12, 6, 40, 38, 34);
|
||||
|
|
|
|||
|
|
@ -576,7 +576,7 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) {
|
|||
switch (t) {
|
||||
case BT_BASE:
|
||||
if (f == FACTION_EVOLVED) {
|
||||
/* hive: lobes + membrane ridges + spine + pit eye (KKND HQ read) */
|
||||
/* hive densify: lobes + bone plates + veins + sacs + mouth + pit eye */
|
||||
disc(s, 14, 18, 14, ok, og, ob, 255);
|
||||
disc(s, 14, 18, 12, base.r, base.g, base.b, 255);
|
||||
disc(s, W - 14, 18, 14, ok, og, ob, 255);
|
||||
|
|
@ -597,6 +597,24 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) {
|
|||
fill_rect(s, W/2 - 1, 5, 2, H/2 - 10, 90, 40, 55, 255);
|
||||
line(s, W/2, 8, W/2 - 10, 18, 70, 30, 45, 255);
|
||||
line(s, W/2, 8, W/2 + 10, 18, 70, 30, 45, 255);
|
||||
/* bone plates + vein strips */
|
||||
fill_rect(s, 8, 14, 6, 3, 110, 70, 80, 255);
|
||||
fill_rect(s, W - 14, 14, 6, 3, 110, 70, 80, 255);
|
||||
fill_rect(s, 10, H - 20, 5, 3, 100, 55, 70, 255);
|
||||
fill_rect(s, W - 15, H - 20, 5, 3, 100, 55, 70, 255);
|
||||
fill_rect(s, W/2 - 12, H/2 - 2, 8, 2, 80, 35, 50, 255);
|
||||
fill_rect(s, W/2 + 4, H/2 - 2, 8, 2, 80, 35, 50, 255);
|
||||
fill_rect(s, W/2 - 1, H/2 + 8, 2, 6, 70, 30, 45, 255);
|
||||
/* membrane pads + egg sacs */
|
||||
fill_rect(s, 20, 24, 5, 4, lite.r, lite.g, lite.b, 255);
|
||||
fill_rect(s, W - 25, 24, 5, 4, lite.r, lite.g, lite.b, 255);
|
||||
fill_rect(s, 22, H - 22, 4, 4, 160, 60, 90, 255);
|
||||
fill_rect(s, W - 26, H - 22, 4, 4, 160, 60, 90, 255);
|
||||
fill_rect(s, W/2 - 14, H - 18, 4, 3, 140, 50, 80, 255);
|
||||
fill_rect(s, W/2 + 10, H - 18, 4, 3, 140, 50, 80, 255);
|
||||
/* mouth / entry slit */
|
||||
fill_rect(s, W/2 - 6, H - 10, 12, 4, 30, 18, 22, 255);
|
||||
fill_rect(s, W/2 - 4, H - 9, 8, 2, 200, 40, 70, 255);
|
||||
/* dark pit + glowing eye */
|
||||
disc(s, W/2, H/2, 8, 28, 18, 22, 255);
|
||||
disc(s, W/2, H/2, 5, 60, 20, 30, 255);
|
||||
|
|
@ -609,8 +627,9 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) {
|
|||
disc(s, 10, H/2 + 2, 3, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, W - 10, H/2 - 4, 3, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, W/2 + 8, 14, 2, 180, 70, 100, 255);
|
||||
disc(s, W/2 - 6, H - 14, 2, 200, 80, 110, 255);
|
||||
} else {
|
||||
/* Survivors HQ: towers + walkways + dome + dish + entry (KKND HQ read) */
|
||||
/* Survivors HQ densify: battlements + courtyard + flag + sandbags */
|
||||
fill_rect(s, 4, 4, 14, 14, ok, og, ob, 255);
|
||||
fill_rect(s, 6, 6, 10, 10, base.r, base.g, base.b, 255);
|
||||
fill_rect(s, W - 18, 4, 14, 14, ok, og, ob, 255);
|
||||
|
|
@ -619,37 +638,58 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) {
|
|||
fill_rect(s, 6, H - 16, 10, 10, base.r, base.g, base.b, 255);
|
||||
fill_rect(s, W - 18, H - 18, 14, 14, ok, og, ob, 255);
|
||||
fill_rect(s, W - 16, H - 16, 10, 10, base.r, base.g, base.b, 255);
|
||||
/* tower windows + corner lights */
|
||||
/* battlement teeth */
|
||||
fill_rect(s, 5, 3, 3, 2, 100, 95, 80, 255);
|
||||
fill_rect(s, 11, 3, 3, 2, 100, 95, 80, 255);
|
||||
fill_rect(s, W - 16, 3, 3, 2, 100, 95, 80, 255);
|
||||
fill_rect(s, W - 10, 3, 3, 2, 100, 95, 80, 255);
|
||||
/* tower windows + lower windows + corner lights */
|
||||
fill_rect(s, 8, 8, 3, 3, 200, 230, 255, 255);
|
||||
fill_rect(s, W - 13, 8, 3, 3, 200, 230, 255, 255);
|
||||
fill_rect(s, 8, H - 13, 3, 3, 200, 230, 255, 255);
|
||||
fill_rect(s, W - 13, H - 13, 3, 3, 200, 230, 255, 255);
|
||||
fill_rect(s, 8, 12, 2, 2, 180, 210, 240, 255);
|
||||
fill_rect(s, W - 12, 12, 2, 2, 180, 210, 240, 255);
|
||||
fill_rect(s, 8, H - 10, 2, 2, 180, 210, 240, 255);
|
||||
fill_rect(s, W - 12, H - 10, 2, 2, 180, 210, 240, 255);
|
||||
disc(s, 7, 5, 2, 255, 220, 80, 255);
|
||||
disc(s, W - 7, 5, 2, 255, 220, 80, 255);
|
||||
/* courtyard body + roof band */
|
||||
disc(s, 7, H - 6, 2, 255, 200, 60, 255);
|
||||
disc(s, W - 7, H - 6, 2, 255, 200, 60, 255);
|
||||
/* courtyard body + roof band + tiles */
|
||||
fill_rect(s, 14, 14, W - 28, H - 28, ok, og, ob, 255);
|
||||
fill_rect(s, 16, 16, W - 32, H - 32, base.r, base.g, base.b, 255);
|
||||
fill_rect(s, 18, 18, W - 36, 8, lite.r, lite.g, lite.b, 255);
|
||||
fill_rect(s, 20, 28, 4, 3, 120, 110, 90, 255);
|
||||
fill_rect(s, W/2 - 2, 28, 4, 3, 120, 110, 90, 255);
|
||||
fill_rect(s, W - 24, 28, 4, 3, 120, 110, 90, 255);
|
||||
/* walkways between towers */
|
||||
fill_rect(s, 16, 8, W - 32, 3, 90, 85, 70, 255);
|
||||
fill_rect(s, 16, H - 11, W - 32, 3, 90, 85, 70, 255);
|
||||
fill_rect(s, 8, 16, 3, H - 32, 90, 85, 70, 255);
|
||||
fill_rect(s, W - 11, 16, 3, H - 32, 90, 85, 70, 255);
|
||||
/* command dome + mast + radar dish */
|
||||
/* command dome + mast + radar dish + antenna stubs */
|
||||
disc(s, W/2, H/2 - 2, 10, ok, og, ob, 255);
|
||||
disc(s, W/2, H/2 - 2, 8, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, W/2, H/2 - 2, 4, 255, 250, 180, 255);
|
||||
fill_rect(s, W/2 - 2, 2, 4, H/2 - 6, 200, 180, 60, 255);
|
||||
fill_rect(s, W/2 - 6, 2, 12, 3, 220, 210, 80, 255);
|
||||
fill_rect(s, W/2 - 8, 1, 2, 4, 180, 170, 90, 255);
|
||||
fill_rect(s, W/2 + 6, 1, 2, 4, 180, 170, 90, 255);
|
||||
disc(s, W/2 + 8, 8, 5, ok, og, ob, 255); /* dish */
|
||||
disc(s, W/2 + 8, 8, 3, 180, 200, 220, 255);
|
||||
line(s, W/2 + 2, 6, W/2 + 8, 8, 160, 150, 100, 255);
|
||||
/* flag + sandbags */
|
||||
fill_rect(s, W/2 - 14, 6, 2, 8, 160, 40, 40, 255);
|
||||
fill_rect(s, W/2 - 12, 6, 5, 3, 200, 50, 50, 255);
|
||||
fill_rect(s, W/2 - 10, H - 8, 4, 2, 130, 110, 80, 255);
|
||||
fill_rect(s, W/2 + 6, H - 8, 4, 2, 130, 110, 80, 255);
|
||||
/* entry bunker + blast doors */
|
||||
fill_rect(s, W/2 - 8, H - 14, 16, 8, ok, og, ob, 255);
|
||||
fill_rect(s, W/2 - 6, H - 12, 12, 6, 40, 38, 34, 255);
|
||||
fill_rect(s, W/2 - 4, H - 11, 3, 4, 70, 65, 55, 255);
|
||||
fill_rect(s, W/2 + 1, H - 11, 3, 4, 70, 65, 55, 255);
|
||||
/* side annex slits */
|
||||
/* side annex windows */
|
||||
fill_rect(s, 18, H/2 + 2, 6, 4, 160, 200, 230, 255);
|
||||
fill_rect(s, W - 24, H/2 + 2, 6, 4, 160, 200, 230, 255);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue