From 6e081ce46f9b8a77261fc6a79426f4ad2d8331c9 Mon Sep 17 00:00:00 2001 From: "local-model/engine-L2-grok-4.5" Date: Sat, 19 Sep 2026 18:27:20 +0200 Subject: [PATCH] engine-c: denser INFANTRY/MUTANT/BEAST/HARVESTER silhouettes (sprites+snapshot) --- engine-c/src/snapshot.c | 80 +++++++++++++++++++++++++++++++++------- engine-c/src/sprites.c | 82 ++++++++++++++++++++++++++++++++++------- 2 files changed, 135 insertions(+), 27 deletions(-) diff --git a/engine-c/src/snapshot.c b/engine-c/src/snapshot.c index 500e39b..af8e0fa 100644 --- a/engine-c/src/snapshot.c +++ b/engine-c/src/snapshot.c @@ -146,22 +146,36 @@ static void draw_unit(Unit *u, int sx, int sy) { switch (u->type) { case UT_INFANTRY: - /* legs → torso → helmet/visor → pack → thick rifle (KKND2 foot soldier) */ + /* boots/knees → torso/belt/pouches → pads → pack → helmet/visor/antenna → rifle+bayonet */ disc(LX(11,23), LY(11,23), SI(3), ok, og, ob); disc(LX(19,23), LY(19,23), SI(3), ok, og, ob); disc(LX(11,23), LY(11,23), SI(2), br, bg, bb); disc(LX(19,23), LY(19,23), SI(2), br, bg, bb); + fill_rect(LX(10,24)-SI(1), LY(10,24)-1, SI(3), SI(2), 40, 36, 30); /* boot L */ + fill_rect(LX(18,24)-SI(1), LY(18,24)-1, SI(3), SI(2), 40, 36, 30); /* boot R */ + fill_rect(LX(10,20)-SI(1), LY(10,20)-1, SI(3), SI(2), 55, 50, 42); /* knee pad L */ + fill_rect(LX(18,20)-SI(1), LY(18,20)-1, SI(3), SI(2), 55, 50, 42); /* knee pad R */ disc(sx, sy, SI(9), ok, og, ob); disc(sx, sy, SI(7), br, bg, bb); + fill_rect(LX(11,17)-SI(1), LY(11,17)-1, SI(8), SI(2), 45, 42, 36); /* belt */ + fill_rect(LX(12,16)-SI(1), LY(12,16)-1, SI(2), SI(2), 60, 55, 45); /* pouch L */ + fill_rect(LX(16,16)-SI(1), LY(16,16)-1, SI(2), SI(2), 60, 55, 45); /* pouch R */ + fill_rect(LX(9,12)-SI(1), LY(9,12)-SI(1), SI(3), SI(3), 50, 46, 40); /* shoulder pad L */ + fill_rect(LX(19,12)-SI(1), LY(19,12)-SI(1), SI(3), SI(3), 50, 46, 40); /* shoulder pad R */ disc(LX(10,16), LY(10,16), SI(3), ok, og, ob); /* backpack */ disc(LX(10,16), LY(10,16), SI(2), 50, 46, 40); + fill_rect(LX(8,15)-SI(1), LY(8,15)-SI(1), SI(2), SI(3), 40, 38, 32); /* pack strap */ disc(LX(15,8), LY(15,8), SI(5), ok, og, ob); disc(LX(15,8), LY(15,8), SI(4), lr, lg, lb); /* helmet */ - fill_rect(LX(13,8)-SI(1), LY(13,8)-1, SI(5), SI(2), 30, 40, 50); /* visor */ + fill_rect(LX(12,7)-SI(1), LY(12,7)-1, SI(5), SI(2), 30, 40, 50); /* visor */ + line(LX(14,6), LY(14,6), LX(14,1), LY(14,1), 50, 46, 40); /* antenna */ + line(LX(15,6), LY(15,6), LX(15,0), LY(15,0), lr, lg, lb); line(LX(16,14), LY(16,14), LX(16,0), LY(16,0), 40, 36, 30); line(LX(17,14), LY(17,14), LX(17,1), LY(17,1), 55, 50, 40); line(LX(18,14), LY(18,14), LX(18,2), LY(18,2), 45, 40, 34); disc(LX(17,1), LY(17,1), SI(2), 60, 55, 45); /* muzzle tip */ + line(LX(17,2), LY(17,2), LX(20,0), LY(20,0), 70, 65, 55); /* bayonet */ + line(LX(18,2), LY(18,2), LX(21,1), LY(21,1), 55, 50, 40); break; case UT_BUGGY: /* fenders + bumper + cabin + roll bar + spare + exhaust + lights + MG */ @@ -280,12 +294,16 @@ static void draw_unit(Unit *u, int sx, int sy) { tyre_mark(LX(22,23), LY(22,23), SI(4), ph, 0); break; case UT_HARVESTER: { - /* cabin + scoop lip + cargo bed (gold by cargo) + hubbed dual wheels */ + /* cabin + boom/scoop + conveyor + hopper panels + exhaust/lights + hubbed wheels */ fill_rect(sx-SI(14), sy-SI(9), SI(28), SI(18), ok, og, ob); fill_rect(sx-SI(12), sy-SI(7), SI(24), SI(14), br, bg, bb); - fill_rect(LX(4,10)-SI(1), LY(4,10)-SI(2), SI(8), SI(8), lr, lg, lb); /* cabin */ - fill_rect(LX(5,9)-SI(1), LY(5,9)-SI(1), SI(6), SI(3), 35, 55, 75); /* glass */ - fill_rect(LX(2,14)-SI(1), LY(2,14)-SI(1), SI(4), SI(5), 90, 80, 55); /* scoop */ + fill_rect(LX(3,8)-SI(1), LY(3,8)-SI(2), SI(8), SI(8), lr, lg, lb); /* cabin */ + fill_rect(LX(4,8)-SI(1), LY(4,8)-SI(1), SI(6), SI(3), 35, 55, 75); /* glass */ + fill_rect(LX(5,12)-SI(1), LY(5,12)-1, SI(4), SI(2), 45, 42, 36); /* cabin panel */ + line(LX(2,14), LY(2,14), LX(8,11), LY(8,11), 50, 46, 40); /* boom arm */ + line(LX(2,15), LY(2,15), LX(8,12), LY(8,12), 70, 65, 55); + fill_rect(LX(0,14)-SI(1), LY(0,14)-SI(1), SI(5), SI(5), 90, 80, 55); /* scoop lip */ + fill_rect(LX(1,15)-SI(1), LY(1,15)-SI(1), SI(3), SI(3), 70, 60, 40); int bed_w = SI(14), bed_h = SI(10); int bed_x = sx - SI(4), bed_y = sy - SI(5); fill_rect(bed_x, bed_y, bed_w, bed_h, 55, 48, 32); @@ -297,10 +315,17 @@ static void draw_unit(Unit *u, int sx, int sy) { if (fw > 0) fill_rect(bed_x, bed_y, fw, bed_h, 200, 170, 90); if (fill > 0.15f) { - line(LX(14,10), LY(14,10), LX(26,10), LY(26,10), 160, 130, 70); - line(LX(14,13), LY(14,13), LX(26,13), LY(26,13), 160, 130, 70); - line(LX(14,16), LY(14,16), LX(26,16), LY(26,16), 160, 130, 70); + line(LX(14,10), LY(14,10), LX(24,10), LY(24,10), 160, 130, 70); + line(LX(14,13), LY(14,13), LX(24,13), LY(24,13), 160, 130, 70); + line(LX(14,16), LY(14,16), LX(24,16), LY(24,16), 160, 130, 70); } + fill_rect(LX(12,9)-SI(1), LY(12,9)-1, SI(12), SI(1), 45, 40, 32); /* hopper rim */ + fill_rect(LX(24,11)-SI(1), LY(24,11)-SI(2), SI(3), SI(8), 50, 46, 40); /* side panel */ + fill_rect(LX(25,12)-SI(1), LY(25,12)-SI(1), SI(1), SI(6), 70, 65, 55); + fill_rect(LX(20,18)-SI(1), LY(20,18)-1, SI(4), SI(2), 40, 38, 32); /* exhaust */ + fill_rect(LX(21,17)-SI(1), LY(21,17)-1, SI(2), SI(1), 70, 65, 55); + disc(LX(4,10), LY(4,10), SI(2), 220, 200, 80); /* cabin light */ + disc(LX(2,16), LY(2,16), SI(1), 220, 180, 60); /* scoop lamp */ disc(LX(8,23), LY(8,23), SI(5), ok, og, ob); disc(LX(22,23), LY(22,23), SI(5), ok, og, ob); disc(LX(8,23), LY(8,23), SI(4), mr, mg, mb); @@ -354,34 +379,58 @@ static void draw_unit(Unit *u, int sx, int sy) { disc(LX(28,15), LY(28,15), SI(2), 60, 55, 45); break; case UT_MUTANT: - /* hunched bulk + brow ridge + thick spikes + claw hand */ + /* plates + eyes/jaw + spikes + dual claws + tail */ disc(sx, sy+SI(2), SI(11), ok, og, ob); disc(sx, sy, SI(9), br, bg, bb); + fill_rect(LX(10,14)-SI(1), LY(10,14)-SI(1), SI(4), SI(3), 45, 40, 35); /* chest plate L */ + fill_rect(LX(17,14)-SI(1), LY(17,14)-SI(1), SI(4), SI(3), 45, 40, 35); /* chest plate R */ disc(LX(15,9), LY(15,9), SI(5), ok, og, ob); disc(LX(15,9), LY(15,9), SI(4), lr, lg, lb); - fill_rect(LX(12,8)-SI(1), LY(12,8)-1, SI(7), SI(2), 30, 40, 50); /* brow */ + fill_rect(LX(11,7)-SI(1), LY(11,7)-1, SI(7), SI(2), 30, 40, 50); /* brow */ + disc(LX(12,9), LY(12,9), SI(1), 200, 60, 40); /* eye L */ + disc(LX(18,9), LY(18,9), SI(1), 200, 60, 40); /* eye R */ + fill_rect(LX(13,11)-SI(1), LY(13,11)-1, SI(5), SI(2), 40, 30, 28); /* jaw */ + line(LX(14,12), LY(14,12), LX(14,13), LY(14,13), 70, 55, 45); /* fang */ + line(LX(16,12), LY(16,12), LX(16,13), LY(16,13), 70, 55, 45); line(LX(12,6), LY(12,6), LX(9,0), LY(9,0), 40, 36, 30); line(LX(13,6), LY(13,6), LX(10,1), LY(10,1), 55, 50, 40); line(LX(15,5), LY(15,5), LX(15,0), LY(15,0), 40, 36, 30); line(LX(16,5), LY(16,5), LX(16,0), LY(16,0), 55, 50, 40); line(LX(18,6), LY(18,6), LX(21,0), LY(21,0), 40, 36, 30); line(LX(17,6), LY(17,6), LX(20,1), LY(20,1), 55, 50, 40); + line(LX(14,4), LY(14,4), LX(12,0), LY(12,0), 50, 45, 35); /* extra spike */ line(sx, sy+SI(1), LX(26,8), LY(26,8), 40, 36, 30); line(sx, sy+SI(2), LX(26,9), LY(26,9), 50, 45, 35); line(LX(24,9), LY(24,9), LX(29,5), LY(29,5), 55, 50, 40); line(LX(24,9), LY(24,9), LX(29,11), LY(29,11), 55, 50, 40); line(LX(24,10), LY(24,10), LX(28,8), LY(28,8), 70, 60, 45); - disc(LX(28,8), LY(28,8), SI(2), 70, 60, 45); /* claw tip */ + disc(LX(28,8), LY(28,8), SI(2), 70, 60, 45); /* claw tip R */ + line(LX(12,16), LY(12,16), LX(4,10), LY(4,10), 40, 36, 30); /* second claw L */ + line(LX(12,17), LY(12,17), LX(4,11), LY(4,11), 50, 45, 35); + line(LX(5,10), LY(5,10), LX(1,7), LY(1,7), 55, 50, 40); + line(LX(5,11), LY(5,11), LX(1,13), LY(1,13), 55, 50, 40); + disc(LX(2,10), LY(2,10), SI(2), 70, 60, 45); + line(LX(15,20), LY(15,20), LX(15,27), LY(15,27), 45, 40, 35); /* tail */ + line(LX(16,20), LY(16,20), LX(18,28), LY(18,28), 55, 50, 40); + disc(LX(17,27), LY(17,27), SI(2), 60, 50, 40); disc(LX(10,22), LY(10,22), SI(4), ok, og, ob); disc(LX(20,22), LY(20,22), SI(4), ok, og, ob); disc(LX(10,22), LY(10,22), SI(3), br, bg, bb); disc(LX(20,22), LY(20,22), SI(3), br, bg, bb); break; case UT_BEAST: - /* armored carapace + thick snout/tusks + hubbed multi-wheel */ + /* carapace plates/spines + eye + vents + tusks + hubbed multi-wheel */ fill_rect(sx-SI(10), sy-SI(6), SI(20), SI(12), ok, og, ob); fill_rect(sx-SI(8), sy-SI(4), SI(16), SI(8), br, bg, bb); fill_rect(sx-SI(6), sy-SI(5), SI(12), SI(3), lr, lg, lb); /* carapace ridge */ + fill_rect(LX(8,13)-SI(1), LY(8,13)-SI(1), SI(5), SI(3), 50, 46, 40); /* plate L */ + fill_rect(LX(17,13)-SI(1), LY(17,13)-SI(1), SI(5), SI(3), 50, 46, 40); /* plate R */ + line(LX(10,9), LY(10,9), LX(10,5), LY(10,5), 40, 36, 30); /* spine */ + line(LX(13,9), LY(13,9), LX(13,4), LY(13,4), 55, 50, 40); + line(LX(16,9), LY(16,9), LX(16,4), LY(16,4), 55, 50, 40); + line(LX(19,9), LY(19,9), LX(19,5), LY(19,5), 40, 36, 30); + fill_rect(LX(11,16)-SI(1), LY(11,16)-1, SI(2), SI(2), 30, 28, 24); /* vent L */ + fill_rect(LX(17,16)-SI(1), LY(17,16)-1, SI(2), SI(2), 30, 28, 24); /* vent R */ disc(LX(9,21), LY(9,21), SI(4), ok, og, ob); disc(LX(14,22), LY(14,22), SI(4), ok, og, ob); disc(LX(19,21), LY(19,21), SI(4), ok, og, ob); @@ -390,12 +439,17 @@ static void draw_unit(Unit *u, int sx, int sy) { disc(LX(14,22), LY(14,22), SI(3), mr, mg, mb); disc(LX(19,21), LY(19,21), SI(3), mr, mg, mb); disc(LX(23,22), LY(23,22), SI(3), mr, mg, mb); + disc(LX(9,21), LY(9,21), SI(1), 90, 85, 75); /* hub */ + disc(LX(14,22), LY(14,22), SI(1), 90, 85, 75); + disc(LX(19,21), LY(19,21), SI(1), 90, 85, 75); + disc(LX(23,22), LY(23,22), SI(1), 90, 85, 75); tyre_mark(LX(9,21), LY(9,21), SI(3), ph, 1); tyre_mark(LX(14,22), LY(14,22), SI(3), ph, 1); tyre_mark(LX(19,21), LY(19,21), SI(3), ph, 1); tyre_mark(LX(23,22), LY(23,22), SI(3), ph, 1); disc(LX(24,12), LY(24,12), SI(6), ok, og, ob); disc(LX(24,12), LY(24,12), SI(5), lr, lg, lb); /* snout */ + disc(LX(26,11), LY(26,11), SI(1), 200, 80, 40); /* eye */ line(LX(26,10), LY(26,10), LX(29,8), LY(29,8), 40, 36, 30); /* tusk */ line(LX(26,14), LY(26,14), LX(29,16), LY(29,16), 40, 36, 30); line(LX(26,12), LY(26,12), LX(29,12), LY(29,12), 55, 50, 40); diff --git a/engine-c/src/sprites.c b/engine-c/src/sprites.c index 4f64b6d..7495bb6 100644 --- a/engine-c/src/sprites.c +++ b/engine-c/src/sprites.c @@ -84,22 +84,36 @@ SDL_Texture *sprites_make_unit(SDL_Renderer *r, UnitType t, Faction f) { switch (t) { case UT_INFANTRY: - /* legs → torso → pack → helmet/visor → thick rifle (parity snapshot) */ + /* boots/knees → torso/belt/pouches → pads → pack → helmet/visor/antenna → rifle+bayonet */ disc(s, 11, 23, 3, ok, og, ob, 255); disc(s, 19, 23, 3, ok, og, ob, 255); disc(s, 11, 23, 2, base.r, base.g, base.b, 255); disc(s, 19, 23, 2, base.r, base.g, base.b, 255); + fill_rect(s, 10, 24, 3, 2, 40, 36, 30, 255); /* boot L */ + fill_rect(s, 18, 24, 3, 2, 40, 36, 30, 255); /* boot R */ + fill_rect(s, 10, 20, 3, 2, 55, 50, 42, 255); /* knee pad L */ + fill_rect(s, 18, 20, 3, 2, 55, 50, 42, 255); /* knee pad R */ disc(s, 15, 15, 9, ok, og, ob, 255); disc(s, 15, 15, 7, base.r, base.g, base.b, 255); + fill_rect(s, 11, 17, 8, 2, 45, 42, 36, 255); /* belt */ + fill_rect(s, 12, 16, 2, 2, 60, 55, 45, 255); /* pouch L */ + fill_rect(s, 16, 16, 2, 2, 60, 55, 45, 255); /* pouch R */ + fill_rect(s, 9, 12, 3, 3, 50, 46, 40, 255); /* shoulder pad L */ + fill_rect(s, 19, 12, 3, 3, 50, 46, 40, 255); /* shoulder pad R */ disc(s, 10, 16, 3, ok, og, ob, 255); /* backpack */ disc(s, 10, 16, 2, 50, 46, 40, 255); + fill_rect(s, 8, 15, 2, 3, 40, 38, 32, 255); /* pack strap */ disc(s, 15, 8, 5, ok, og, ob, 255); disc(s, 15, 8, 4, lite.r, lite.g, lite.b, 255); fill_rect(s, 12, 7, 5, 2, 30, 40, 50, 255); /* visor */ + line(s, 14, 6, 14, 1, 50, 46, 40, 255); /* antenna */ + line(s, 15, 6, 15, 0, lite.r, lite.g, lite.b, 255); line(s, 16, 14, 16, 0, 40, 36, 30, 255); line(s, 17, 14, 17, 1, 55, 50, 40, 255); line(s, 18, 14, 18, 2, 45, 40, 34, 255); disc(s, 17, 1, 2, 60, 55, 45, 255); /* muzzle tip */ + line(s, 17, 2, 20, 0, 70, 65, 55, 255); /* bayonet */ + line(s, 18, 2, 21, 1, 55, 50, 40, 255); break; case UT_BUGGY: /* fenders + bumper + cabin + roll bar + spare + exhaust + lights + MG */ @@ -210,17 +224,28 @@ SDL_Texture *sprites_make_unit(SDL_Renderer *r, UnitType t, Faction f) { disc(s, 22, 23, 4, tr, tg, tb, 255); break; case UT_HARVESTER: - /* cabin + scoop + mid cargo + hubbed wheels */ + /* cabin + boom/scoop + conveyor + hopper panels + exhaust/lights + hubbed wheels */ fill_rect(s, 1, 6, 28, 18, ok, og, ob, 255); fill_rect(s, 3, 8, 24, 14, base.r, base.g, base.b, 255); fill_rect(s, 3, 8, 8, 8, lite.r, lite.g, lite.b, 255); - fill_rect(s, 4, 8, 6, 3, 35, 55, 75, 255); - fill_rect(s, 1, 13, 4, 5, 90, 80, 55, 255); /* scoop */ - fill_rect(s, 11, 10, 14, 10, 55, 48, 32, 255); + fill_rect(s, 4, 8, 6, 3, 35, 55, 75, 255); /* glass */ + fill_rect(s, 5, 12, 4, 2, 45, 42, 36, 255); /* cabin panel */ + line(s, 2, 14, 8, 11, 50, 46, 40, 255); /* boom arm */ + line(s, 2, 15, 8, 12, 70, 65, 55, 255); + fill_rect(s, 0, 14, 5, 5, 90, 80, 55, 255); /* scoop lip */ + fill_rect(s, 1, 15, 3, 3, 70, 60, 40, 255); + fill_rect(s, 11, 10, 14, 10, 55, 48, 32, 255); /* hopper bed */ fill_rect(s, 11, 10, 8, 10, 200, 170, 90, 255); - line(s, 14, 10, 19, 10, 160, 130, 70, 255); - line(s, 14, 13, 19, 13, 160, 130, 70, 255); - line(s, 14, 16, 19, 16, 160, 130, 70, 255); + line(s, 14, 10, 24, 10, 160, 130, 70, 255); /* conveyor ribs */ + line(s, 14, 13, 24, 13, 160, 130, 70, 255); + line(s, 14, 16, 24, 16, 160, 130, 70, 255); + fill_rect(s, 12, 9, 12, 1, 45, 40, 32, 255); /* hopper rim */ + fill_rect(s, 24, 11, 3, 8, 50, 46, 40, 255); /* side panel */ + fill_rect(s, 25, 12, 1, 6, 70, 65, 55, 255); + fill_rect(s, 20, 18, 4, 2, 40, 38, 32, 255); /* exhaust */ + fill_rect(s, 21, 17, 2, 1, 70, 65, 55, 255); + disc(s, 4, 10, 2, 220, 200, 80, 255); /* cabin light */ + disc(s, 2, 16, 1, 220, 180, 60, 255); /* scoop lamp */ disc(s, 8, 23, 5, ok, og, ob, 255); disc(s, 22, 23, 5, ok, og, ob, 255); disc(s, 8, 23, 4, tr, tg, tb, 255); @@ -269,34 +294,58 @@ SDL_Texture *sprites_make_unit(SDL_Renderer *r, UnitType t, Faction f) { disc(s, 28, 15, 2, 60, 55, 45, 255); break; case UT_MUTANT: - /* brow + thick spikes + claw tip */ + /* plates + eyes/jaw + spikes + dual claws + tail */ disc(s, 15, 17, 11, ok, og, ob, 255); disc(s, 15, 15, 9, base.r, base.g, base.b, 255); + fill_rect(s, 10, 14, 4, 3, 45, 40, 35, 255); /* chest plate L */ + fill_rect(s, 17, 14, 4, 3, 45, 40, 35, 255); /* chest plate R */ disc(s, 15, 9, 5, ok, og, ob, 255); disc(s, 15, 9, 4, lite.r, lite.g, lite.b, 255); fill_rect(s, 11, 7, 7, 2, 30, 40, 50, 255); /* brow */ + disc(s, 12, 9, 1, 200, 60, 40, 255); /* eye L */ + disc(s, 18, 9, 1, 200, 60, 40, 255); /* eye R */ + fill_rect(s, 13, 11, 5, 2, 40, 30, 28, 255); /* jaw */ + line(s, 14, 12, 14, 13, 70, 55, 45, 255); /* fang */ + line(s, 16, 12, 16, 13, 70, 55, 45, 255); line(s, 12, 6, 9, 0, 40, 36, 30, 255); line(s, 13, 6, 10, 1, 55, 50, 40, 255); line(s, 15, 5, 15, 0, 40, 36, 30, 255); line(s, 16, 5, 16, 0, 55, 50, 40, 255); line(s, 18, 6, 21, 0, 40, 36, 30, 255); line(s, 17, 6, 20, 1, 55, 50, 40, 255); + line(s, 14, 4, 12, 0, 50, 45, 35, 255); /* extra spike */ line(s, 15, 16, 26, 8, 40, 36, 30, 255); line(s, 15, 17, 26, 9, 50, 45, 35, 255); line(s, 24, 9, 29, 5, 55, 50, 40, 255); line(s, 24, 9, 29, 11, 55, 50, 40, 255); line(s, 24, 10, 28, 8, 70, 60, 45, 255); - disc(s, 28, 8, 2, 70, 60, 45, 255); + disc(s, 28, 8, 2, 70, 60, 45, 255); /* claw tip R */ + line(s, 12, 16, 4, 10, 40, 36, 30, 255); /* second claw L */ + line(s, 12, 17, 4, 11, 50, 45, 35, 255); + line(s, 5, 10, 1, 7, 55, 50, 40, 255); + line(s, 5, 11, 1, 13, 55, 50, 40, 255); + disc(s, 2, 10, 2, 70, 60, 45, 255); + line(s, 15, 20, 15, 27, 45, 40, 35, 255); /* tail */ + line(s, 16, 20, 18, 28, 55, 50, 40, 255); + disc(s, 17, 27, 2, 60, 50, 40, 255); disc(s, 10, 22, 4, ok, og, ob, 255); disc(s, 20, 22, 4, ok, og, ob, 255); disc(s, 10, 22, 3, base.r, base.g, base.b, 255); disc(s, 20, 22, 3, base.r, base.g, base.b, 255); break; case UT_BEAST: - /* carapace ridge + tusks + hubbed multi-wheel */ + /* carapace plates/spines + eye + vents + tusks + hubbed multi-wheel */ fill_rect(s, 5, 9, 20, 12, ok, og, ob, 255); fill_rect(s, 7, 11, 16, 8, base.r, base.g, base.b, 255); - fill_rect(s, 9, 10, 12, 3, lite.r, lite.g, lite.b, 255); + fill_rect(s, 9, 10, 12, 3, lite.r, lite.g, lite.b, 255); /* carapace ridge */ + fill_rect(s, 8, 13, 5, 3, 50, 46, 40, 255); /* plate L */ + fill_rect(s, 17, 13, 5, 3, 50, 46, 40, 255); /* plate R */ + line(s, 10, 9, 10, 5, 40, 36, 30, 255); /* spine */ + line(s, 13, 9, 13, 4, 55, 50, 40, 255); + line(s, 16, 9, 16, 4, 55, 50, 40, 255); + line(s, 19, 9, 19, 5, 40, 36, 30, 255); + fill_rect(s, 11, 16, 2, 2, 30, 28, 24, 255); /* vent L */ + fill_rect(s, 17, 16, 2, 2, 30, 28, 24, 255); /* vent R */ disc(s, 9, 21, 4, ok, og, ob, 255); disc(s, 14, 22, 4, ok, og, ob, 255); disc(s, 19, 21, 4, ok, og, ob, 255); @@ -305,9 +354,14 @@ SDL_Texture *sprites_make_unit(SDL_Renderer *r, UnitType t, Faction f) { disc(s, 14, 22, 3, tr, tg, tb, 255); disc(s, 19, 21, 3, tr, tg, tb, 255); disc(s, 23, 22, 3, tr, tg, tb, 255); + disc(s, 9, 21, 1, 90, 85, 75, 255); /* hub */ + disc(s, 14, 22, 1, 90, 85, 75, 255); + disc(s, 19, 21, 1, 90, 85, 75, 255); + disc(s, 23, 22, 1, 90, 85, 75, 255); disc(s, 24, 12, 6, ok, og, ob, 255); - disc(s, 24, 12, 5, lite.r, lite.g, lite.b, 255); - line(s, 26, 10, 29, 8, 40, 36, 30, 255); + disc(s, 24, 12, 5, lite.r, lite.g, lite.b, 255); /* snout */ + disc(s, 26, 11, 1, 200, 80, 40, 255); /* eye */ + line(s, 26, 10, 29, 8, 40, 36, 30, 255); /* tusk */ line(s, 26, 14, 29, 16, 40, 36, 30, 255); line(s, 26, 12, 29, 12, 55, 50, 40, 255); disc(s, 29, 12, 2, 60, 55, 45, 255);