From 42af7e91bb65af2dfda3e163c71237f143ab5309 Mon Sep 17 00:00:00 2001 From: "local-model/engine-L2-grok-4.5" Date: Sat, 19 Sep 2026 20:10:21 +0200 Subject: [PATCH] engine-c: denser BT_REFINERY oil-field/derrick/tank silhouettes --- engine-c/src/snapshot.c | 36 ++++++++++++++++++++++++++++++++++-- engine-c/src/sprites.c | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/engine-c/src/snapshot.c b/engine-c/src/snapshot.c index ae9fd65..2a6f7e3 100644 --- a/engine-c/src/snapshot.c +++ b/engine-c/src/snapshot.c @@ -975,19 +975,25 @@ static void draw_bld(Building *b, int sx, int sy) { line(sx + 14, sy + H - 5, sx + W - 16, sy + H - 5, 55, 50, 38); break; case BT_REFINERY: - /* dense oil-field: pad, derrick, pumpjack, twin tanks, pipes, hopper (KKND) */ + /* denser oil-field: pad, derrick, pumpjack, twin tanks, pipes, hopper (KKND) */ fill_rect(sx + 3, sy + H - 12, W - 6, 10, ok, og, ob); /* slab */ fill_rect(sx + 5, sy + H - 10, W - 10, 6, 70, 62, 48); fill_rect(sx + 6, sy + H - 9, 2, 2, 35, 32, 28); /* pad bolt L */ fill_rect(sx + W - 8, sy + H - 9, 2, 2, 35, 32, 28); /* pad bolt R */ fill_rect(sx + W/2 - 2, sy + H - 9, 2, 2, 35, 32, 28); /* pad bolt C */ + fill_rect(sx + W/2 - 8, sy + H - 9, 2, 2, 35, 32, 28); /* pad bolt CL */ + fill_rect(sx + W/2 + 4, sy + H - 9, 2, 2, 35, 32, 28); /* pad bolt CR */ fill_rect(sx + 4, sy + H - 4, W - 8, 2, 45, 38, 28); /* curb */ + fill_rect(sx + 8, sy + H - 11, W - 16, 1, 55, 48, 36); /* grate seam */ /* latticed derrick mast + braces */ fill_rect(sx + W/2 - 3, sy + 4, 6, H - 18, ok, og, ob); fill_rect(sx + W/2 - 2, sy + 5, 4, H - 20, 95, 85, 65); fill_rect(sx + W/2 - 4, sy + 12, 8, 2, 55, 48, 38); /* cross brace */ fill_rect(sx + W/2 - 4, sy + 26, 8, 2, 55, 48, 38); fill_rect(sx + W/2 - 4, sy + 40, 8, 2, 55, 48, 38); + fill_rect(sx + W/2 - 4, sy + 19, 8, 1, 50, 44, 34); /* mid brace thin */ + fill_rect(sx + W/2 - 4, sy + 33, 8, 1, 50, 44, 34); + fill_rect(sx + W/2 - 5, sy + H - 20, 10, 3, 60, 52, 40); /* mast foot plate */ line(sx + W/2 - 6, sy + 10, sx + W/2 + 6, sy + 22, 55, 48, 38); line(sx + W/2 + 6, sy + 10, sx + W/2 - 6, sy + 22, 55, 48, 38); line(sx + W/2 - 6, sy + 24, sx + W/2 + 6, sy + 36, 55, 48, 38); @@ -999,6 +1005,13 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W/2 - 7, sy + 2, 14, 5, ok, og, ob); /* crown */ fill_rect(sx + W/2 - 5, sy + 3, 10, 3, 200, 170, 80); /* beacon */ fill_rect(sx + W/2 - 1, sy + 1, 2, 2, 255, 230, 120); /* beacon tip */ + fill_rect(sx + W/2 - 6, sy + 7, 2, 2, 70, 60, 45); /* crown rivet L */ + fill_rect(sx + W/2 + 4, sy + 7, 2, 2, 70, 60, 45); /* crown rivet R */ + /* mast ladder rungs */ + fill_rect(sx + W/2 + 4, sy + 14, 3, 1, 80, 70, 50); + fill_rect(sx + W/2 + 4, sy + 20, 3, 1, 80, 70, 50); + fill_rect(sx + W/2 + 4, sy + 28, 3, 1, 80, 70, 50); + fill_rect(sx + W/2 + 4, sy + 36, 3, 1, 80, 70, 50); /* pumpjack horse-head (left of mast) */ fill_rect(sx + 8, sy + H/2 - 2, 4, H/2 - 8, ok, og, ob); fill_rect(sx + 9, sy + H/2, 2, H/2 - 12, 90, 80, 60); @@ -1009,13 +1022,19 @@ static void draw_bld(Building *b, int sx, int sy) { disc(sx + 8, sy + H/2 - 8, 2, 130, 110, 80); line(sx + 10, sy + H/2 - 4, sx + W/2 - 4, sy + 16, 80, 70, 50); /* bridle cable */ fill_rect(sx + 7, sy + H - 14, 6, 3, 50, 44, 34); /* pump base */ + fill_rect(sx + 5, sy + H/2 + 6, 5, 3, 55, 48, 38); /* counterweight */ + fill_rect(sx + 6, sy + H/2 + 7, 3, 1, 90, 80, 60); /* CW stripe */ + fill_rect(sx + 4, sy + H - 16, 3, 2, 45, 40, 32); /* pump foot L */ + fill_rect(sx + 12, sy + H - 16, 3, 2, 45, 40, 32); /* pump foot R */ /* gantry arm + walkway + bracing toward hopper */ fill_rect(sx + W/2 + 2, sy + 14, W/2 - 10, 4, ok, og, ob); fill_rect(sx + W/2 + 3, sy + 15, W/2 - 12, 2, 120, 100, 60); fill_rect(sx + W/2 + 4, sy + 18, W/2 - 16, 2, 70, 60, 45); /* catwalk */ fill_rect(sx + W/2 + 6, sy + 20, 2, 8, 60, 52, 40); /* catwalk post */ fill_rect(sx + W - 18, sy + 20, 2, 8, 60, 52, 40); + fill_rect(sx + W/2 + 14, sy + 20, 2, 8, 60, 52, 40); /* mid post */ fill_rect(sx + W/2 + 8, sy + 22, W/2 - 28, 1, 90, 75, 50); /* rail */ + fill_rect(sx + W/2 + 8, sy + 17, W/2 - 28, 1, 85, 70, 48); /* upper rail */ line(sx + W/2 + 4, sy + 18, sx + W - 12, sy + H - 22, 90, 75, 50); /* hopper / processing shed + windows/door/hazard */ fill_rect(sx + W - 24, sy + H - 32, 18, 18, ok, og, ob); @@ -1030,21 +1049,29 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W - 21, sy + H - 16, 5, 1, 200, 160, 40); /* hazard */ fill_rect(sx + W - 19, sy + H - 13, 1, 2, 180, 170, 90); /* handle */ fill_rect(sx + W - 12, sy + H - 34, 4, 3, 90, 80, 55); /* roof vent */ + fill_rect(sx + W - 23, sy + H - 33, 16, 1, 70, 60, 45); /* roof ridge */ + fill_rect(sx + W - 10, sy + H - 29, 2, 4, 100, 90, 60); /* side vent */ + fill_rect(sx + W - 15, sy + H - 19, 2, 2, 200, 160, 40); /* chute hazard */ /* twin scrap tanks + bands/rivets */ disc(sx + 14, sy + H - 18, 9, ok, og, ob); disc(sx + 14, sy + H - 18, 7, 200, 165, 85); ring(sx + 14, sy + H - 18, 4, 2, 90, 70, 45); fill_rect(sx + 8, sy + H - 20, 12, 1, 120, 95, 50); /* tank band */ fill_rect(sx + 8, sy + H - 16, 12, 1, 110, 88, 45); + fill_rect(sx + 8, sy + H - 18, 12, 1, 100, 82, 42); /* mid band */ fill_rect(sx + 10, sy + H - 22, 2, 2, 90, 75, 45); /* rivet */ fill_rect(sx + 16, sy + H - 14, 2, 2, 90, 75, 45); + fill_rect(sx + 12, sy + H - 14, 2, 2, 85, 70, 40); /* rivet mid */ disc(sx + 28, sy + H - 16, 7, ok, og, ob); disc(sx + 28, sy + H - 16, 5, 180, 150, 75); ring(sx + 28, sy + H - 16, 3, 1, 80, 60, 40); fill_rect(sx + 23, sy + H - 18, 10, 1, 100, 80, 40); /* tank2 band */ + fill_rect(sx + 23, sy + H - 16, 10, 1, 95, 76, 38); /* tank2 mid band */ fill_rect(sx + 25, sy + H - 14, 2, 2, 85, 70, 40); /* rivet */ fill_rect(sx + 12, sy + H - 28, 4, 3, ok, og, ob); /* tank cap L */ fill_rect(sx + 26, sy + H - 24, 4, 2, ok, og, ob); /* tank cap R */ + fill_rect(sx + 13, sy + H - 29, 2, 1, 200, 170, 80); /* cap gauge L */ + fill_rect(sx + 27, sy + H - 25, 2, 1, 200, 170, 80); /* cap gauge R */ /* pipe runs tank→mast→hopper + valves */ line(sx + 20, sy + H - 16, sx + W/2 - 4, sy + H - 12, 110, 90, 50); line(sx + 28, sy + H - 14, sx + W/2 - 2, sy + H - 14, 100, 85, 45); @@ -1054,11 +1081,16 @@ static void draw_bld(Building *b, int sx, int sy) { fill_rect(sx + W/2 - 2, sy + H - 15, 5, 1, 200, 160, 40); /* valve hazard */ fill_rect(sx + 18, sy + H - 15, 3, 3, 75, 65, 48); /* elbow flange */ fill_rect(sx + W - 22, sy + H - 21, 3, 3, 75, 65, 48); /* hopper flange */ - /* oil stain + drip pans */ + fill_rect(sx + W/2 + 6, sy + H - 15, 3, 3, 75, 65, 48); /* mid pipe flange */ + fill_rect(sx + W/2 + 2, sy + H - 18, 2, 2, 90, 75, 50); /* pipe clamp */ + /* oil stain + drip pans + barrels */ disc(sx + W/2 - 8, sy + H - 6, 4, 40, 32, 20); disc(sx + W/2 + 6, sy + H - 5, 3, 35, 28, 18); fill_rect(sx + 10, sy + H - 8, 8, 2, 30, 24, 16); /* drip pan */ fill_rect(sx + 24, sy + H - 7, 6, 2, 28, 22, 14); + fill_rect(sx + W - 28, sy + H - 10, 4, 5, 55, 48, 35); /* oil drum */ + fill_rect(sx + W - 27, sy + H - 9, 2, 1, 200, 160, 40); /* drum band */ + fill_rect(sx + W - 32, sy + H - 9, 3, 4, 50, 44, 32); /* crate */ break; case BT_POWER: /* denser KKND plant: pad, twin cooling, reactor, stack, switchyard, steam */ diff --git a/engine-c/src/sprites.c b/engine-c/src/sprites.c index 94c846b..55c5f7f 100644 --- a/engine-c/src/sprites.c +++ b/engine-c/src/sprites.c @@ -781,19 +781,25 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { line(s, 14, H - 5, W - 16, H - 5, 55, 50, 38, 255); break; case BT_REFINERY: - /* dense oil-field: pad, derrick, pumpjack, twin tanks, pipes, hopper (KKND) */ + /* denser oil-field: pad, derrick, pumpjack, twin tanks, pipes, hopper (KKND) */ fill_rect(s, 3, H - 12, W - 6, 10, ok, og, ob, 255); /* slab */ fill_rect(s, 5, H - 10, W - 10, 6, 70, 62, 48, 255); fill_rect(s, 6, H - 9, 2, 2, 35, 32, 28, 255); /* pad bolt L */ fill_rect(s, W - 8, H - 9, 2, 2, 35, 32, 28, 255); /* pad bolt R */ fill_rect(s, W/2 - 2, H - 9, 2, 2, 35, 32, 28, 255); /* pad bolt C */ + fill_rect(s, W/2 - 8, H - 9, 2, 2, 35, 32, 28, 255); /* pad bolt CL */ + fill_rect(s, W/2 + 4, H - 9, 2, 2, 35, 32, 28, 255); /* pad bolt CR */ fill_rect(s, 4, H - 4, W - 8, 2, 45, 38, 28, 255); /* curb */ + fill_rect(s, 8, H - 11, W - 16, 1, 55, 48, 36, 255); /* grate seam */ /* latticed derrick mast + braces */ fill_rect(s, W/2 - 3, 4, 6, H - 18, ok, og, ob, 255); fill_rect(s, W/2 - 2, 5, 4, H - 20, 95, 85, 65, 255); fill_rect(s, W/2 - 4, 12, 8, 2, 55, 48, 38, 255); /* cross brace */ fill_rect(s, W/2 - 4, 26, 8, 2, 55, 48, 38, 255); fill_rect(s, W/2 - 4, 40, 8, 2, 55, 48, 38, 255); + fill_rect(s, W/2 - 4, 19, 8, 1, 50, 44, 34, 255); /* mid brace thin */ + fill_rect(s, W/2 - 4, 33, 8, 1, 50, 44, 34, 255); + fill_rect(s, W/2 - 5, H - 20, 10, 3, 60, 52, 40, 255); /* mast foot plate */ line(s, W/2 - 6, 10, W/2 + 6, 22, 55, 48, 38, 255); line(s, W/2 + 6, 10, W/2 - 6, 22, 55, 48, 38, 255); line(s, W/2 - 6, 24, W/2 + 6, 36, 55, 48, 38, 255); @@ -805,6 +811,13 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, W/2 - 7, 2, 14, 5, ok, og, ob, 255); /* crown */ fill_rect(s, W/2 - 5, 3, 10, 3, 200, 170, 80, 255); /* beacon */ fill_rect(s, W/2 - 1, 1, 2, 2, 255, 230, 120, 255); /* beacon tip */ + fill_rect(s, W/2 - 6, 7, 2, 2, 70, 60, 45, 255); /* crown rivet L */ + fill_rect(s, W/2 + 4, 7, 2, 2, 70, 60, 45, 255); /* crown rivet R */ + /* mast ladder rungs */ + fill_rect(s, W/2 + 4, 14, 3, 1, 80, 70, 50, 255); + fill_rect(s, W/2 + 4, 20, 3, 1, 80, 70, 50, 255); + fill_rect(s, W/2 + 4, 28, 3, 1, 80, 70, 50, 255); + fill_rect(s, W/2 + 4, 36, 3, 1, 80, 70, 50, 255); /* pumpjack horse-head (left of mast) */ fill_rect(s, 8, H/2 - 2, 4, H/2 - 8, ok, og, ob, 255); fill_rect(s, 9, H/2, 2, H/2 - 12, 90, 80, 60, 255); @@ -815,13 +828,19 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { disc(s, 8, H/2 - 8, 2, 130, 110, 80, 255); line(s, 10, H/2 - 4, W/2 - 4, 16, 80, 70, 50, 255); /* bridle cable */ fill_rect(s, 7, H - 14, 6, 3, 50, 44, 34, 255); /* pump base */ + fill_rect(s, 5, H/2 + 6, 5, 3, 55, 48, 38, 255); /* counterweight */ + fill_rect(s, 6, H/2 + 7, 3, 1, 90, 80, 60, 255); /* CW stripe */ + fill_rect(s, 4, H - 16, 3, 2, 45, 40, 32, 255); /* pump foot L */ + fill_rect(s, 12, H - 16, 3, 2, 45, 40, 32, 255); /* pump foot R */ /* gantry arm + walkway + bracing toward hopper */ fill_rect(s, W/2 + 2, 14, W/2 - 10, 4, ok, og, ob, 255); fill_rect(s, W/2 + 3, 15, W/2 - 12, 2, 120, 100, 60, 255); fill_rect(s, W/2 + 4, 18, W/2 - 16, 2, 70, 60, 45, 255); /* catwalk */ fill_rect(s, W/2 + 6, 20, 2, 8, 60, 52, 40, 255); /* catwalk post */ fill_rect(s, W - 18, 20, 2, 8, 60, 52, 40, 255); + fill_rect(s, W/2 + 14, 20, 2, 8, 60, 52, 40, 255); /* mid post */ fill_rect(s, W/2 + 8, 22, W/2 - 28, 1, 90, 75, 50, 255); /* rail */ + fill_rect(s, W/2 + 8, 17, W/2 - 28, 1, 85, 70, 48, 255); /* upper rail */ line(s, W/2 + 4, 18, W - 12, H - 22, 90, 75, 50, 255); /* hopper / processing shed + windows/door/hazard */ fill_rect(s, W - 24, H - 32, 18, 18, ok, og, ob, 255); @@ -836,21 +855,29 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, W - 21, H - 16, 5, 1, 200, 160, 40, 255); /* hazard */ fill_rect(s, W - 19, H - 13, 1, 2, 180, 170, 90, 255); /* handle */ fill_rect(s, W - 12, H - 34, 4, 3, 90, 80, 55, 255); /* roof vent */ + fill_rect(s, W - 23, H - 33, 16, 1, 70, 60, 45, 255); /* roof ridge */ + fill_rect(s, W - 10, H - 29, 2, 4, 100, 90, 60, 255); /* side vent */ + fill_rect(s, W - 15, H - 19, 2, 2, 200, 160, 40, 255); /* chute hazard */ /* twin scrap tanks + bands/rivets */ disc(s, 14, H - 18, 9, ok, og, ob, 255); disc(s, 14, H - 18, 7, 200, 165, 85, 255); ring(s, 14, H - 18, 4, 2, 90, 70, 45, 255); fill_rect(s, 8, H - 20, 12, 1, 120, 95, 50, 255); /* tank band */ fill_rect(s, 8, H - 16, 12, 1, 110, 88, 45, 255); + fill_rect(s, 8, H - 18, 12, 1, 100, 82, 42, 255); /* mid band */ fill_rect(s, 10, H - 22, 2, 2, 90, 75, 45, 255); /* rivet */ fill_rect(s, 16, H - 14, 2, 2, 90, 75, 45, 255); + fill_rect(s, 12, H - 14, 2, 2, 85, 70, 40, 255); /* rivet mid */ disc(s, 28, H - 16, 7, ok, og, ob, 255); disc(s, 28, H - 16, 5, 180, 150, 75, 255); ring(s, 28, H - 16, 3, 1, 80, 60, 40, 255); fill_rect(s, 23, H - 18, 10, 1, 100, 80, 40, 255); /* tank2 band */ + fill_rect(s, 23, H - 16, 10, 1, 95, 76, 38, 255); /* tank2 mid band */ fill_rect(s, 25, H - 14, 2, 2, 85, 70, 40, 255); /* rivet */ fill_rect(s, 12, H - 28, 4, 3, ok, og, ob, 255); /* tank cap L */ fill_rect(s, 26, H - 24, 4, 2, ok, og, ob, 255); /* tank cap R */ + fill_rect(s, 13, H - 29, 2, 1, 200, 170, 80, 255); /* cap gauge L */ + fill_rect(s, 27, H - 25, 2, 1, 200, 170, 80, 255); /* cap gauge R */ /* pipe runs tank→mast→hopper + valves */ line(s, 20, H - 16, W/2 - 4, H - 12, 110, 90, 50, 255); line(s, 28, H - 14, W/2 - 2, H - 14, 100, 85, 45, 255); @@ -860,11 +887,16 @@ SDL_Texture *sprites_make_bld(SDL_Renderer *r, BuildingType t, Faction f) { fill_rect(s, W/2 - 2, H - 15, 5, 1, 200, 160, 40, 255); /* valve hazard */ fill_rect(s, 18, H - 15, 3, 3, 75, 65, 48, 255); /* elbow flange */ fill_rect(s, W - 22, H - 21, 3, 3, 75, 65, 48, 255); /* hopper flange */ - /* oil stain + drip pans */ + fill_rect(s, W/2 + 6, H - 15, 3, 3, 75, 65, 48, 255); /* mid pipe flange */ + fill_rect(s, W/2 + 2, H - 18, 2, 2, 90, 75, 50, 255); /* pipe clamp */ + /* oil stain + drip pans + barrels */ disc(s, W/2 - 8, H - 6, 4, 40, 32, 20, 255); disc(s, W/2 + 6, H - 5, 3, 35, 28, 18, 255); fill_rect(s, 10, H - 8, 8, 2, 30, 24, 16, 255); /* drip pan */ fill_rect(s, 24, H - 7, 6, 2, 28, 22, 14, 255); + fill_rect(s, W - 28, H - 10, 4, 5, 55, 48, 35, 255); /* oil drum */ + fill_rect(s, W - 27, H - 9, 2, 1, 200, 160, 40, 255); /* drum band */ + fill_rect(s, W - 32, H - 9, 3, 4, 50, 44, 32, 255); /* crate */ break; case BT_POWER: /* denser KKND plant: pad, twin cooling, reactor, stack, switchyard, steam */