From 5f63b079fe8e3b3f08d3be8b6e51473c1142bdaf Mon Sep 17 00:00:00 2001 From: "local-model/engine-L2-grok-4.5" Date: Sat, 19 Sep 2026 20:03:04 +0200 Subject: [PATCH] engine-c: denser BT_RESEARCH lab/dish/instrument silhouettes --- engine-c/src/snapshot.c | 26 ++++++++++++++++++++------ engine-c/src/sprites.c | 26 ++++++++++++++++++++------ 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/engine-c/src/snapshot.c b/engine-c/src/snapshot.c index a16ce65..ae9fd65 100644 --- a/engine-c/src/snapshot.c +++ b/engine-c/src/snapshot.c @@ -1377,11 +1377,13 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W/2 - 2, sy + 6, 4, 2, 90, 100, 110); /* roof vent */ break; case BT_RESEARCH: - /* dense lab: pad, hull, windows, dish mast, annex, instruments (KKND) */ + /* denser lab: pad, hull, windows, dish mast, annex, instruments (KKND) */ fill_rect(sx + 3, sy + H - 8, W - 6, 6, ok, og, ob); /* pad */ fill_rect(sx + 4, sy + H - 7, W - 8, 4, 55, 50, 40); fill_rect(sx + 5, sy + H - 6, 2, 2, 35, 32, 28); /* pad bolt L */ fill_rect(sx + W - 7, sy + H - 6, 2, 2, 35, 32, 28); /* pad bolt R */ + fill_rect(sx + 7, sy + H - 5, 2, 1, 45, 40, 32); /* pad plate L */ + fill_rect(sx + W - 9, sy + H - 5, 2, 1, 45, 40, 32); /* pad plate R */ /* main hull + upper band + rivets */ fill_rect(sx + 5, sy + 12, W - 10, H - 18, ok, og, ob); fill_rect(sx + 7, sy + 14, W - 14, H - 22, br, bg, bb); @@ -1390,8 +1392,10 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W - 12, sy + 15, 2, 2, 90, 85, 70); fill_rect(sx + 8, sy + H - 20, 2, 2, 90, 85, 70); fill_rect(sx + W - 12, sy + H - 20, 2, 2, 90, 85, 70); + fill_rect(sx + W/2 - 1, sy + 15, 2, 2, 90, 85, 70); /* mid rivet */ line(sx + 7, sy + 26, sx + W - 8, sy + 26, 70, 65, 55); /* hull seam */ - /* glowing lab windows (2 rows + mullions + glow) */ + fill_rect(sx + 7, sy + 27, W - 14, 1, 50, 48, 42); /* seam shadow */ + /* glowing lab windows (2 rows + mullions + glow + frames) */ fill_rect(sx + 10, sy + H/2 - 6, 8, 5, 180, 230, 255); fill_rect(sx + 22, sy + H/2 - 6, 8, 5, 160, 220, 250); fill_rect(sx + 34, sy + H/2 - 6, 8, 5, 180, 230, 255); @@ -1401,6 +1405,9 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + 12, sy + H/2 - 4, 4, 2, 240, 250, 255); fill_rect(sx + 24, sy + H/2 - 4, 4, 2, 230, 245, 255); fill_rect(sx + 36, sy + H/2 - 4, 4, 2, 240, 250, 255); + fill_rect(sx + 12, sy + H/2 + 4, 4, 1, 220, 240, 255); /* lower glow */ + fill_rect(sx + 24, sy + H/2 + 4, 4, 1, 210, 235, 255); + fill_rect(sx + 36, sy + H/2 + 4, 4, 1, 220, 240, 255); line(sx + 14, sy + H/2 - 6, sx + 14, sy + H/2 - 1, 90, 140, 180); line(sx + 26, sy + H/2 - 6, sx + 26, sy + H/2 - 1, 90, 140, 180); line(sx + 38, sy + H/2 - 6, sx + 38, sy + H/2 - 1, 90, 140, 180); @@ -1409,7 +1416,9 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W/2 - 4, sy + H - 21, 8, 10, 40, 38, 45); fill_rect(sx + W/2 - 4, sy + H - 21, 8, 2, 200, 160, 40); fill_rect(sx + W/2 - 1, sy + H - 16, 2, 3, 180, 170, 90); /* handle */ - /* primary dish on tall mast + braces */ + fill_rect(sx + W/2 - 3, sy + H - 12, 6, 1, 200, 160, 40); /* door stripe */ + /* primary dish on tall mast + braces + mount */ + fill_rect(sx + W/2 + 2, sy + 18, 9, 3, ok, og, ob); /* mast base */ fill_rect(sx + W/2 + 4, sy + 2, 5, 18, ok, og, ob); fill_rect(sx + W/2 + 5, sy + 3, 3, 16, 110, 100, 75); line(sx + W/2 + 2, sy + 14, sx + W/2 + 5, sy + 8, 80, 75, 55); @@ -1427,11 +1436,12 @@ static void draw_bld(Building *b, int sx, int sy) { disc(sx + 9, sy + 8, 3, 190, 160, 70); disc(sx + 9, sy + 8, 1, 255, 240, 160); line(sx + 12, sy + 10, sx + W/2 + 4, sy + 14, 90, 85, 60); /* coax */ - /* roof vents / AC + floodlight */ + /* roof vents / AC + floodlight + grille */ fill_rect(sx + 16, sy + 8, 6, 4, ok, og, ob); fill_rect(sx + 17, sy + 9, 4, 2, 120, 115, 95); fill_rect(sx + 24, sy + 7, 5, 3, 70, 68, 60); fill_rect(sx + 25, sy + 6, 3, 2, 90, 88, 78); + fill_rect(sx + 18, sy + 10, 2, 1, 40, 38, 35); /* vent slot */ fill_rect(sx + W - 14, sy + 4, 2, 2, 220, 200, 80); /* floodlight */ fill_rect(sx + W - 13, sy + 3, 1, 3, 90, 85, 70); /* side antenna array */ @@ -1441,7 +1451,7 @@ static void draw_bld(Building *b, int sx, int sy) { disc(sx + 11, sy + 5, 2, 255, 240, 120); disc(sx + 19, sy + 3, 2, 255, 230, 100); disc(sx + 15, sy + 4, 1, 255, 220, 90); - /* side annex / sample bay */ + /* side annex / sample bay + shelf */ { uint8_t dr, dg, db; darken3(br, bg, bb, 0.5f, &dr, &dg, &db); @@ -1451,11 +1461,14 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W - 13, sy + H - 25, 6, 4, 140, 200, 255); /* annex window */ fill_rect(sx + W - 12, sy + H - 24, 2, 2, 230, 245, 255); fill_rect(sx + W - 14, sy + H - 18, 8, 2, 200, 160, 40); /* hazard */ - /* cooling pipes along hull */ + fill_rect(sx + W - 14, sy + H - 20, 8, 1, 90, 85, 70); /* shelf */ + /* cooling pipes along hull + clamps */ line(sx + 6, sy + 20, sx + 6, sy + H - 14, 100, 140, 180); line(sx + W - 8, sy + 20, sx + W - 8, sy + H - 14, 100, 140, 180); fill_rect(sx + 5, sy + H/2, 3, 3, 80, 110, 140); /* valve L */ fill_rect(sx + W - 9, sy + H/2 + 4, 3, 3, 80, 110, 140); + fill_rect(sx + 5, sy + H/2 + 8, 3, 2, 70, 100, 130); /* clamp L */ + fill_rect(sx + W - 9, sy + H/2 - 2, 3, 2, 70, 100, 130); /* clamp R */ /* instrument bank / console strip denser */ { uint8_t dr, dg, db; @@ -1467,6 +1480,7 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + 22, sy + H - 14, 3, 3, 255, 180, 80); fill_rect(sx + 27, sy + H - 14, 3, 3, 200, 100, 255); fill_rect(sx + 32, sy + H - 14, 3, 3, 255, 80, 120); + fill_rect(sx + 37, sy + H - 14, 2, 2, 100, 255, 200); /* extra LED */ fill_rect(sx + 12, sy + H - 10, 22, 1, 60, 55, 50); /* LED rail */ break; default: diff --git a/engine-c/src/sprites.c b/engine-c/src/sprites.c index ed25373..94c846b 100644 --- a/engine-c/src/sprites.c +++ b/engine-c/src/sprites.c @@ -1175,11 +1175,13 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, W/2 - 2, 6, 4, 2, 90, 100, 110, 255); /* roof vent */ break; case BT_RESEARCH: - /* dense lab: pad, hull, windows, dish mast, annex, instruments (KKND) */ + /* denser lab: pad, hull, windows, dish mast, annex, instruments (KKND) */ fill_rect(s, 3, H - 8, W - 6, 6, ok, og, ob, 255); /* pad */ fill_rect(s, 4, H - 7, W - 8, 4, 55, 50, 40, 255); fill_rect(s, 5, H - 6, 2, 2, 35, 32, 28, 255); /* pad bolt L */ fill_rect(s, W - 7, H - 6, 2, 2, 35, 32, 28, 255); /* pad bolt R */ + fill_rect(s, 7, H - 5, 2, 1, 45, 40, 32, 255); /* pad plate L */ + fill_rect(s, W - 9, H - 5, 2, 1, 45, 40, 32, 255); /* pad plate R */ /* main hull + upper band + rivets */ fill_rect(s, 5, 12, W - 10, H - 18, ok, og, ob, 255); fill_rect(s, 7, 14, W - 14, H - 22, base.r, base.g, base.b, 255); @@ -1188,8 +1190,10 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, W - 12, 15, 2, 2, 90, 85, 70, 255); fill_rect(s, 8, H - 20, 2, 2, 90, 85, 70, 255); fill_rect(s, W - 12, H - 20, 2, 2, 90, 85, 70, 255); + fill_rect(s, W/2 - 1, 15, 2, 2, 90, 85, 70, 255); /* mid rivet */ line(s, 7, 26, W - 8, 26, 70, 65, 55, 255); /* hull seam */ - /* glowing lab windows (2 rows + mullions + glow) */ + fill_rect(s, 7, 27, W - 14, 1, 50, 48, 42, 255); /* seam shadow */ + /* glowing lab windows (2 rows + mullions + glow + frames) */ fill_rect(s, 10, H/2 - 6, 8, 5, 180, 230, 255, 255); fill_rect(s, 22, H/2 - 6, 8, 5, 160, 220, 250, 255); fill_rect(s, 34, H/2 - 6, 8, 5, 180, 230, 255, 255); @@ -1199,6 +1203,9 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, 12, H/2 - 4, 4, 2, 240, 250, 255, 255); fill_rect(s, 24, H/2 - 4, 4, 2, 230, 245, 255, 255); fill_rect(s, 36, H/2 - 4, 4, 2, 240, 250, 255, 255); + fill_rect(s, 12, H/2 + 4, 4, 1, 220, 240, 255, 255); /* lower glow */ + fill_rect(s, 24, H/2 + 4, 4, 1, 210, 235, 255, 255); + fill_rect(s, 36, H/2 + 4, 4, 1, 220, 240, 255, 255); line(s, 14, H/2 - 6, 14, H/2 - 1, 90, 140, 180, 255); line(s, 26, H/2 - 6, 26, H/2 - 1, 90, 140, 180, 255); line(s, 38, H/2 - 6, 38, H/2 - 1, 90, 140, 180, 255); @@ -1207,7 +1214,9 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, W/2 - 4, H - 21, 8, 10, 40, 38, 45, 255); fill_rect(s, W/2 - 4, H - 21, 8, 2, 200, 160, 40, 255); fill_rect(s, W/2 - 1, H - 16, 2, 3, 180, 170, 90, 255); /* handle */ - /* primary dish on tall mast + braces */ + fill_rect(s, W/2 - 3, H - 12, 6, 1, 200, 160, 40, 255); /* door stripe */ + /* primary dish on tall mast + braces + mount */ + fill_rect(s, W/2 + 2, 18, 9, 3, ok, og, ob, 255); /* mast base */ fill_rect(s, W/2 + 4, 2, 5, 18, ok, og, ob, 255); fill_rect(s, W/2 + 5, 3, 3, 16, 110, 100, 75, 255); line(s, W/2 + 2, 14, W/2 + 5, 8, 80, 75, 55, 255); @@ -1225,11 +1234,12 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { disc(s, 9, 8, 3, 190, 160, 70, 255); disc(s, 9, 8, 1, 255, 240, 160, 255); line(s, 12, 10, W/2 + 4, 14, 90, 85, 60, 255); /* coax */ - /* roof vents / AC + floodlight */ + /* roof vents / AC + floodlight + grille */ fill_rect(s, 16, 8, 6, 4, ok, og, ob, 255); fill_rect(s, 17, 9, 4, 2, 120, 115, 95, 255); fill_rect(s, 24, 7, 5, 3, 70, 68, 60, 255); fill_rect(s, 25, 6, 3, 2, 90, 88, 78, 255); + fill_rect(s, 18, 10, 2, 1, 40, 38, 35, 255); /* vent slot */ fill_rect(s, W - 14, 4, 2, 2, 220, 200, 80, 255); /* floodlight */ fill_rect(s, W - 13, 3, 1, 3, 90, 85, 70, 255); /* side antenna array */ @@ -1239,17 +1249,20 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { disc(s, 11, 5, 2, 255, 240, 120, 255); disc(s, 19, 3, 2, 255, 230, 100, 255); disc(s, 15, 4, 1, 255, 220, 90, 255); - /* side annex / sample bay */ + /* side annex / sample bay + shelf */ fill_rect(s, W - 16, H - 28, 12, 14, ok, og, ob, 255); fill_rect(s, W - 15, H - 27, 10, 12, dark.r, dark.g, dark.b, 255); fill_rect(s, W - 13, H - 25, 6, 4, 140, 200, 255, 255); /* annex window */ fill_rect(s, W - 12, H - 24, 2, 2, 230, 245, 255, 255); fill_rect(s, W - 14, H - 18, 8, 2, 200, 160, 40, 255); /* hazard */ - /* cooling pipes along hull */ + fill_rect(s, W - 14, H - 20, 8, 1, 90, 85, 70, 255); /* shelf */ + /* cooling pipes along hull + clamps */ line(s, 6, 20, 6, H - 14, 100, 140, 180, 255); line(s, W - 8, 20, W - 8, H - 14, 100, 140, 180, 255); fill_rect(s, 5, H/2, 3, 3, 80, 110, 140, 255); /* valve L */ fill_rect(s, W - 9, H/2 + 4, 3, 3, 80, 110, 140, 255); + fill_rect(s, 5, H/2 + 8, 3, 2, 70, 100, 130, 255); /* clamp L */ + fill_rect(s, W - 9, H/2 - 2, 3, 2, 70, 100, 130, 255); /* clamp R */ /* instrument bank / console strip denser */ fill_rect(s, 10, H - 16, W - 30, 7, dark.r, dark.g, dark.b, 255); fill_rect(s, 12, H - 14, 3, 3, 80, 220, 120, 255); @@ -1257,6 +1270,7 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, 22, H - 14, 3, 3, 255, 180, 80, 255); fill_rect(s, 27, H - 14, 3, 3, 200, 100, 255, 255); fill_rect(s, 32, H - 14, 3, 3, 255, 80, 120, 255); + fill_rect(s, 37, H - 14, 2, 2, 100, 255, 200, 255); /* extra LED */ fill_rect(s, 12, H - 10, 22, 1, 60, 55, 50, 255); /* LED rail */ break; default: