engine-c: richer procedural unit silhouettes (snapshot+sprites)
This commit is contained in:
parent
2f5ad59d45
commit
60161ae9c7
2 changed files with 195 additions and 58 deletions
|
|
@ -146,15 +146,24 @@ static void draw_unit(Unit *u, int sx, int sy) {
|
|||
|
||||
switch (u->type) {
|
||||
case UT_INFANTRY:
|
||||
disc(sx, sy, SI(9), ok, og, ob);
|
||||
disc(sx, sy, SI(7), br, bg, bb);
|
||||
disc(LX(15,11), LY(15,11), SI(4), lr, lg, lb);
|
||||
line(sx, sy, LX(15,1), LY(15,1), 40, 36, 30);
|
||||
/* legs → torso → helmet → rifle (KKND2 foot soldier read) */
|
||||
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);
|
||||
disc(sx, sy, SI(8), ok, og, ob);
|
||||
disc(sx, sy, SI(6), br, bg, bb);
|
||||
disc(LX(15,9), LY(15,9), SI(4), ok, og, ob);
|
||||
disc(LX(15,9), LY(15,9), SI(3), lr, lg, lb);
|
||||
line(LX(16,14), LY(16,14), LX(16,1), LY(16,1), 40, 36, 30);
|
||||
line(LX(17,14), LY(17,14), LX(17,2), LY(17,2), 55, 50, 40);
|
||||
break;
|
||||
case UT_BUGGY:
|
||||
/* cabin + windshield + chassis + wheels */
|
||||
fill_rect(sx-SI(12), sy-SI(8), SI(24), SI(16), ok, og, ob);
|
||||
fill_rect(sx-SI(10), sy-SI(6), SI(20), SI(12), br, bg, bb);
|
||||
fill_rect(sx-SI(8), sy-SI(4), SI(16), SI(8), lr, lg, lb);
|
||||
fill_rect(LX(7,10)-SI(1), LY(7,10)-SI(1), SI(10), SI(6), lr, lg, lb); /* cabin */
|
||||
fill_rect(LX(8,9)-SI(1), LY(8,9)-SI(1), SI(8), SI(3), 35, 55, 75); /* windshield */
|
||||
disc(LX(8,7), LY(8,7), SI(4), mr, mg, mb);
|
||||
disc(LX(22,7), LY(22,7), SI(4), mr, mg, mb);
|
||||
disc(LX(8,23), LY(8,23), SI(4), mr, mg, mb);
|
||||
|
|
@ -166,26 +175,49 @@ static void draw_unit(Unit *u, int sx, int sy) {
|
|||
line(sx, sy, LX(29,15), LY(29,15), 40, 36, 30);
|
||||
break;
|
||||
case UT_TANK:
|
||||
fill_rect(sx-SI(13), sy-SI(7), SI(26), SI(14), ok, og, ob);
|
||||
fill_rect(sx-SI(11), sy-SI(5), SI(22), SI(10), br, bg, bb);
|
||||
disc(sx, sy, SI(7), lr, lg, lb);
|
||||
line(sx, sy, LX(30,15), LY(30,15), 50, 45, 35);
|
||||
/* side tracks + hull + cupola + thick barrel */
|
||||
fill_rect(LX(3,10)-SI(1), LY(3,10)-SI(2), SI(5), SI(12), ok, og, ob);
|
||||
fill_rect(LX(24,10)-SI(1), LY(24,10)-SI(2), SI(5), SI(12), ok, og, ob);
|
||||
fill_rect(LX(4,11)-SI(1), LY(4,11)-SI(1), SI(3), SI(10), mr, mg, mb);
|
||||
fill_rect(LX(25,11)-SI(1), LY(25,11)-SI(1), SI(3), SI(10), mr, mg, mb);
|
||||
fill_rect(sx-SI(11), sy-SI(5), SI(22), SI(10), ok, og, ob);
|
||||
fill_rect(sx-SI(9), sy-SI(4), SI(18), SI(8), br, bg, bb);
|
||||
disc(sx, sy, SI(6), ok, og, ob);
|
||||
disc(sx, sy, SI(5), lr, lg, lb); /* cupola */
|
||||
disc(LX(15,12), LY(15,12), SI(2), 40, 38, 32); /* hatch */
|
||||
line(LX(15,14), LY(15,14), LX(29,14), LY(29,14), 50, 45, 35);
|
||||
line(LX(15,15), LY(15,15), LX(29,15), LY(29,15), 50, 45, 35);
|
||||
line(LX(15,16), LY(15,16), LX(28,16), LY(28,16), 50, 45, 35);
|
||||
disc(LX(8,23), LY(8,23), SI(4), mr, mg, mb);
|
||||
disc(LX(22,23), LY(22,23), SI(4), mr, mg, mb);
|
||||
tyre_mark(LX(8,23), LY(8,23), SI(4), ph, 0);
|
||||
tyre_mark(LX(22,23), LY(22,23), SI(4), ph, 0);
|
||||
break;
|
||||
case UT_ARTILLERY:
|
||||
/* chassis + long barrel tube */
|
||||
fill_rect(sx-SI(13), sy-SI(5), SI(26), SI(12), ok, og, ob);
|
||||
fill_rect(sx-SI(11), sy-SI(3), SI(22), SI(8), br, bg, bb);
|
||||
disc(sx, sy, SI(6), lr, lg, lb);
|
||||
line(sx, sy, LX(3,3), LY(3,3), 50, 45, 35);
|
||||
line(sx, sy, LX(27,27), LY(27,27), 50, 45, 35);
|
||||
disc(sx, sy, SI(5), ok, og, ob);
|
||||
disc(sx, sy, SI(4), lr, lg, lb);
|
||||
line(LX(15,14), LY(15,14), LX(4,3), LY(4,3), 50, 45, 35);
|
||||
line(LX(15,15), LY(15,15), LX(3,2), LY(3,2), 55, 50, 40);
|
||||
line(LX(15,16), LY(15,16), LX(4,4), LY(4,4), 50, 45, 35);
|
||||
disc(LX(4,3), LY(4,3), SI(2), 60, 55, 45); /* muzzle */
|
||||
disc(LX(8,23), LY(8,23), SI(3), mr, mg, mb);
|
||||
disc(LX(22,23), LY(22,23), SI(3), mr, mg, mb);
|
||||
tyre_mark(LX(8,23), LY(8,23), SI(3), ph, 0);
|
||||
tyre_mark(LX(22,23), LY(22,23), SI(3), ph, 0);
|
||||
break;
|
||||
case UT_HARVESTER:
|
||||
/* cabin nose + scrap bed ridges + 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(sx-SI(10), sy-SI(5), SI(20), SI(10), 200, 170, 90);
|
||||
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); /* cabin glass */
|
||||
fill_rect(sx-SI(4), sy-SI(5), SI(14), SI(10), 200, 170, 90); /* bed */
|
||||
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);
|
||||
disc(LX(8,23), LY(8,23), SI(4), mr, mg, mb);
|
||||
disc(LX(22,23), LY(22,23), SI(4), mr, mg, mb);
|
||||
tyre_mark(LX(8,23), LY(8,23), SI(4), ph, 1);
|
||||
|
|
@ -193,22 +225,38 @@ static void draw_unit(Unit *u, int sx, int sy) {
|
|||
line(LX(5,7), LY(5,7), LX(5,2), LY(5,2), lr, lg, lb);
|
||||
break;
|
||||
case UT_JEEP:
|
||||
/* open cabin + roll bar + MG */
|
||||
fill_rect(sx-SI(11), sy-SI(6), SI(22), SI(12), ok, og, ob);
|
||||
fill_rect(sx-SI(9), sy-SI(4), SI(18), SI(8), br, bg, bb);
|
||||
fill_rect(LX(8,11)-SI(1), LY(8,11)-SI(1), SI(8), SI(5), lr, lg, lb);
|
||||
disc(LX(9,22), LY(9,22), SI(4), mr, mg, mb);
|
||||
disc(LX(21,22), LY(21,22), SI(4), mr, mg, mb);
|
||||
tyre_mark(LX(9,22), LY(9,22), SI(4), ph, 1);
|
||||
tyre_mark(LX(21,22), LY(21,22), SI(4), ph, 1);
|
||||
line(LX(15,11), LY(15,11), LX(15,3), LY(15,3), lr, lg, lb);
|
||||
line(LX(11,11), LY(11,11), LX(11,3), LY(11,3), lr, lg, lb);
|
||||
line(LX(19,11), LY(19,11), LX(19,3), LY(19,3), lr, lg, lb);
|
||||
line(LX(11,3), LY(11,3), LX(19,3), LY(19,3), lr, lg, lb);
|
||||
line(sx, sy, LX(28,15), LY(28,15), 50, 45, 35);
|
||||
break;
|
||||
case UT_MUTANT:
|
||||
disc(sx, sy+SI(1), SI(10), ok, og, ob);
|
||||
disc(sx, sy-SI(1), SI(8), br, bg, bb);
|
||||
disc(LX(15,10), LY(15,10), SI(4), lr, lg, lb);
|
||||
line(sx, sy+SI(1), LX(24,9), LY(24,9), 40, 36, 30);
|
||||
/* hunched body + spikes + claws */
|
||||
disc(sx, sy+SI(2), SI(10), ok, og, ob);
|
||||
disc(sx, sy, SI(8), br, bg, bb);
|
||||
disc(LX(15,9), LY(15,9), SI(4), ok, og, ob);
|
||||
disc(LX(15,9), LY(15,9), SI(3), lr, lg, lb);
|
||||
line(LX(12,6), LY(12,6), LX(10,1), LY(10,1), 40, 36, 30); /* back spike */
|
||||
line(LX(15,5), LY(15,5), LX(15,0), LY(15,0), 40, 36, 30);
|
||||
line(LX(18,6), LY(18,6), LX(20,1), LY(20,1), 40, 36, 30);
|
||||
line(sx, sy+SI(1), LX(26,8), LY(26,8), 40, 36, 30); /* claw arm */
|
||||
line(LX(24,9), LY(24,9), LX(28,6), LY(28,6), 55, 50, 40);
|
||||
line(LX(24,9), LY(24,9), LX(28,11), LY(28,11), 55, 50, 40);
|
||||
disc(LX(10,22), LY(10,22), SI(3), ok, og, ob);
|
||||
disc(LX(20,22), LY(20,22), SI(3), ok, og, ob);
|
||||
disc(LX(10,22), LY(10,22), SI(2), br, bg, bb);
|
||||
disc(LX(20,22), LY(20,22), SI(2), br, bg, bb);
|
||||
break;
|
||||
case UT_BEAST:
|
||||
/* chunky body + snout + 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);
|
||||
disc(LX(9,21), LY(9,21), SI(3), mr, mg, mb);
|
||||
|
|
@ -219,27 +267,47 @@ static void draw_unit(Unit *u, int sx, int sy) {
|
|||
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(23,12), LY(23,12), SI(5), lr, lg, lb);
|
||||
disc(LX(24,12), LY(24,12), SI(5), ok, og, ob);
|
||||
disc(LX(24,12), LY(24,12), SI(4), lr, lg, lb); /* snout */
|
||||
line(LX(26,12), LY(26,12), LX(29,12), LY(29,12), 40, 36, 30);
|
||||
break;
|
||||
case UT_RAVAGER:
|
||||
fill_rect(sx-SI(15), sy-SI(8), SI(30), SI(16), ok, og, ob);
|
||||
fill_rect(sx-SI(13), sy-SI(6), SI(26), SI(12), br, bg, bb);
|
||||
disc(sx, sy, SI(8), lr, lg, lb);
|
||||
line(sx, sy, LX(29,15), LY(29,15), 50, 45, 35);
|
||||
/* heavy hull + side skirts + big barrel */
|
||||
fill_rect(LX(1,9)-SI(1), LY(1,9)-SI(2), SI(5), SI(14), ok, og, ob);
|
||||
fill_rect(LX(26,9)-SI(1), LY(26,9)-SI(2), SI(5), SI(14), ok, og, ob);
|
||||
fill_rect(sx-SI(13), sy-SI(6), SI(26), SI(12), ok, og, ob);
|
||||
fill_rect(sx-SI(11), sy-SI(5), SI(22), SI(10), br, bg, bb);
|
||||
disc(sx, sy, SI(7), ok, og, ob);
|
||||
disc(sx, sy, SI(6), lr, lg, lb);
|
||||
line(LX(15,14), LY(15,14), LX(29,14), LY(29,14), 50, 45, 35);
|
||||
line(LX(15,15), LY(15,15), LX(29,15), LY(29,15), 50, 45, 35);
|
||||
line(LX(15,16), LY(15,16), LX(28,16), LY(28,16), 50, 45, 35);
|
||||
disc(LX(7,23), LY(7,23), SI(4), mr, mg, mb);
|
||||
disc(LX(23,23), LY(23,23), SI(4), mr, mg, mb);
|
||||
tyre_mark(LX(7,23), LY(7,23), SI(4), ph, 0);
|
||||
tyre_mark(LX(23,23), LY(23,23), SI(4), ph, 0);
|
||||
break;
|
||||
case UT_FLAME:
|
||||
fill_rect(sx-SI(10), sy-SI(4), SI(20), SI(15), ok, og, ob);
|
||||
fill_rect(sx-SI(8), sy-SI(2), SI(16), SI(11), br, bg, bb);
|
||||
disc(LX(15,10), LY(15,10), SI(5), lr, lg, lb);
|
||||
line(sx, sy, LX(28,20), LY(28,20), 255, 150, 50);
|
||||
/* backpack tank + nozzle + body */
|
||||
fill_rect(sx-SI(8), sy-SI(3), SI(16), SI(12), ok, og, ob);
|
||||
fill_rect(sx-SI(6), sy-SI(1), SI(12), SI(9), br, bg, bb);
|
||||
disc(LX(15,9), LY(15,9), SI(4), ok, og, ob);
|
||||
disc(LX(15,9), LY(15,9), SI(3), lr, lg, lb);
|
||||
disc(LX(8,14), LY(8,14), SI(5), ok, og, ob); /* fuel tank */
|
||||
disc(LX(8,14), LY(8,14), SI(4), 90, 70, 40);
|
||||
disc(LX(8,14), LY(8,14), SI(2), 200, 120, 40);
|
||||
line(LX(18,15), LY(18,15), LX(28,20), LY(28,20), 255, 150, 50);
|
||||
line(LX(18,16), LY(18,16), LX(27,21), LY(27,21), 255, 180, 60);
|
||||
disc(LX(28,20), LY(28,20), SI(2), 255, 200, 80);
|
||||
break;
|
||||
case UT_MISSILE:
|
||||
/* launcher rails + tubes on wheeled chassis */
|
||||
fill_rect(sx-SI(11), sy-SI(4), SI(22), SI(14), ok, og, ob);
|
||||
fill_rect(sx-SI(9), sy-SI(2), SI(18), SI(10), br, bg, bb);
|
||||
fill_rect(LX(12,8)-SI(1), LY(12,8)-SI(2), SI(10), SI(4), ok, og, ob);
|
||||
fill_rect(LX(13,7)-SI(1), LY(13,7)-SI(1), SI(8), SI(2), 255, 80, 60);
|
||||
fill_rect(LX(12,13)-SI(1), LY(12,13)-SI(2), SI(10), SI(4), ok, og, ob);
|
||||
fill_rect(LX(13,12)-SI(1), LY(13,12)-SI(1), SI(8), SI(2), 255, 100, 70);
|
||||
disc(LX(9,23), LY(9,23), SI(4), mr, mg, mb);
|
||||
disc(LX(21,23), LY(21,23), SI(4), mr, mg, mb);
|
||||
tyre_mark(LX(9,23), LY(9,23), SI(4), ph, 1);
|
||||
|
|
@ -249,6 +317,7 @@ static void draw_unit(Unit *u, int sx, int sy) {
|
|||
case UT_MEDIC:
|
||||
fill_rect(sx-SI(10), sy-SI(5), SI(20), SI(15), ok, og, ob);
|
||||
fill_rect(sx-SI(8), sy-SI(3), SI(16), SI(11), 245, 245, 245);
|
||||
fill_rect(LX(7,10)-SI(1), LY(7,10)-SI(1), SI(6), SI(4), 200, 220, 240); /* cab glass */
|
||||
disc(LX(10,24), LY(10,24), SI(4), mr, mg, mb);
|
||||
disc(LX(20,24), LY(20,24), SI(4), mr, mg, mb);
|
||||
tyre_mark(LX(10,24), LY(10,24), SI(4), ph, 1);
|
||||
|
|
|
|||
|
|
@ -69,7 +69,8 @@ static SDL_Color lighten(SDL_Color c, float f) {
|
|||
}
|
||||
|
||||
/* ---------------- unit sprites ---------------- */
|
||||
/* Near-black outline first (KKND2 silhouette), then bright faction fill. */
|
||||
/* Near-black outline first (KKND2 silhouette), then bright faction fill.
|
||||
* Geometry mirrors snapshot.c draw_unit atlas coords (center 15,15); SDL rotates live. */
|
||||
SDL_Texture *sprites_make_unit(SDL_Renderer *r, UnitType t, Faction f) {
|
||||
int S = 30;
|
||||
SDL_Surface *s = new_surf(S, S);
|
||||
|
|
@ -83,91 +84,158 @@ SDL_Texture *sprites_make_unit(SDL_Renderer *r, UnitType t, Faction f) {
|
|||
|
||||
switch (t) {
|
||||
case UT_INFANTRY:
|
||||
disc(s, 15, 15, 9, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 7, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 11, 4, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 15, 15, 1, ok, og, ob, 255); /* rifle */
|
||||
/* legs → torso → helmet → rifle */
|
||||
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);
|
||||
disc(s, 15, 15, 8, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 6, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 9, 4, ok, og, ob, 255);
|
||||
disc(s, 15, 9, 3, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 16, 14, 16, 1, 40, 36, 30, 255);
|
||||
line(s, 17, 14, 17, 2, 55, 50, 40, 255);
|
||||
break;
|
||||
case UT_BUGGY:
|
||||
/* cabin + windshield + chassis + wheels */
|
||||
fill_rect(s, 3, 7, 24, 16, ok, og, ob, 255);
|
||||
fill_rect(s, 5, 9, 20, 12, base.r, base.g, base.b, 255);
|
||||
fill_rect(s, 7, 11, 16, 8, lite.r, lite.g, lite.b, 255); /* mid body */
|
||||
fill_rect(s, 6, 9, 10, 6, lite.r, lite.g, lite.b, 255); /* cabin */
|
||||
fill_rect(s, 7, 8, 8, 3, 35, 55, 75, 255); /* windshield */
|
||||
disc(s, 8, 7, 4, tr, tg, tb, 255);
|
||||
disc(s, 22, 7, 4, tr, tg, tb, 255);
|
||||
disc(s, 8, 23, 4, tr, tg, tb, 255);
|
||||
disc(s, 22, 23, 4, tr, tg, tb, 255);
|
||||
line(s, 15, 15, 29, 15, ok, og, ob, 255);
|
||||
line(s, 15, 15, 29, 15, 40, 36, 30, 255);
|
||||
break;
|
||||
case UT_TANK:
|
||||
fill_rect(s, 2, 8, 26, 14, ok, og, ob, 255);
|
||||
fill_rect(s, 4, 10, 22, 10, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 15, 7, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 15, 30, 15, ok, og, ob, 255);
|
||||
/* side tracks + hull + cupola + thick barrel */
|
||||
fill_rect(s, 2, 8, 5, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 23, 8, 5, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 3, 10, 3, 10, tr, tg, tb, 255);
|
||||
fill_rect(s, 24, 10, 3, 10, tr, tg, tb, 255);
|
||||
fill_rect(s, 4, 10, 22, 10, ok, og, ob, 255);
|
||||
fill_rect(s, 6, 11, 18, 8, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 15, 6, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 5, lite.r, lite.g, lite.b, 255); /* cupola */
|
||||
disc(s, 15, 12, 2, 40, 38, 32, 255); /* hatch */
|
||||
line(s, 15, 14, 29, 14, 50, 45, 35, 255);
|
||||
line(s, 15, 15, 29, 15, 50, 45, 35, 255);
|
||||
line(s, 15, 16, 28, 16, 50, 45, 35, 255);
|
||||
disc(s, 8, 23, 4, tr, tg, tb, 255);
|
||||
disc(s, 22, 23, 4, tr, tg, tb, 255);
|
||||
break;
|
||||
case UT_ARTILLERY:
|
||||
/* chassis + long barrel tube + muzzle */
|
||||
fill_rect(s, 2, 10, 26, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 4, 12, 22, 8, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 15, 6, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 15, 3, 3, ok, og, ob, 255);
|
||||
line(s, 15, 15, 27, 27, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 5, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 4, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 14, 4, 3, 50, 45, 35, 255);
|
||||
line(s, 15, 15, 3, 2, 55, 50, 40, 255);
|
||||
line(s, 15, 16, 4, 4, 50, 45, 35, 255);
|
||||
disc(s, 4, 3, 2, 60, 55, 45, 255); /* muzzle */
|
||||
disc(s, 8, 23, 3, tr, tg, tb, 255);
|
||||
disc(s, 22, 23, 3, tr, tg, tb, 255);
|
||||
break;
|
||||
case UT_HARVESTER:
|
||||
/* cabin nose + scrap bed ridges + 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, 5, 10, 20, 10, 200, 170, 90, 255); /* scrap bed */
|
||||
fill_rect(s, 3, 8, 8, 8, lite.r, lite.g, lite.b, 255); /* cabin */
|
||||
fill_rect(s, 4, 8, 6, 3, 35, 55, 75, 255); /* cabin glass */
|
||||
fill_rect(s, 11, 10, 14, 10, 200, 170, 90, 255); /* bed */
|
||||
line(s, 14, 10, 26, 10, 160, 130, 70, 255);
|
||||
line(s, 14, 13, 26, 13, 160, 130, 70, 255);
|
||||
line(s, 14, 16, 26, 16, 160, 130, 70, 255);
|
||||
disc(s, 8, 23, 4, tr, tg, tb, 255);
|
||||
disc(s, 22, 23, 4, tr, tg, tb, 255);
|
||||
line(s, 5, 7, 5, 2, lite.r, lite.g, lite.b, 255);
|
||||
break;
|
||||
case UT_JEEP:
|
||||
/* open cabin + roll bar + MG */
|
||||
fill_rect(s, 4, 9, 22, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 6, 11, 18, 8, base.r, base.g, base.b, 255);
|
||||
fill_rect(s, 7, 10, 8, 5, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, 9, 22, 4, tr, tg, tb, 255);
|
||||
disc(s, 21, 22, 4, tr, tg, tb, 255);
|
||||
line(s, 15, 11, 15, 3, lite.r, lite.g, lite.b, 255); /* roll bar */
|
||||
line(s, 15, 15, 28, 15, ok, og, ob, 255);
|
||||
line(s, 11, 11, 11, 3, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 19, 11, 19, 3, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 11, 3, 19, 3, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 15, 28, 15, 50, 45, 35, 255);
|
||||
break;
|
||||
case UT_MUTANT:
|
||||
disc(s, 15, 16, 10, ok, og, ob, 255);
|
||||
disc(s, 15, 14, 8, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 10, 4, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 16, 24, 9, ok, og, ob, 255); /* arm/club */
|
||||
/* hunched body + spikes + claws */
|
||||
disc(s, 15, 17, 10, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 8, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 9, 4, ok, og, ob, 255);
|
||||
disc(s, 15, 9, 3, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 12, 6, 10, 1, 40, 36, 30, 255); /* back spike */
|
||||
line(s, 15, 5, 15, 0, 40, 36, 30, 255);
|
||||
line(s, 18, 6, 20, 1, 40, 36, 30, 255);
|
||||
line(s, 15, 16, 26, 8, 40, 36, 30, 255); /* claw arm */
|
||||
line(s, 24, 9, 28, 6, 55, 50, 40, 255);
|
||||
line(s, 24, 9, 28, 11, 55, 50, 40, 255);
|
||||
disc(s, 10, 22, 3, ok, og, ob, 255);
|
||||
disc(s, 20, 22, 3, ok, og, ob, 255);
|
||||
disc(s, 10, 22, 2, base.r, base.g, base.b, 255);
|
||||
disc(s, 20, 22, 2, base.r, base.g, base.b, 255);
|
||||
break;
|
||||
case UT_BEAST:
|
||||
/* chunky body + snout + 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);
|
||||
disc(s, 9, 21, 3, tr, tg, tb, 255);
|
||||
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, 23, 12, 5, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, 24, 12, 5, ok, og, ob, 255);
|
||||
disc(s, 24, 12, 4, lite.r, lite.g, lite.b, 255); /* snout */
|
||||
line(s, 26, 12, 29, 12, 40, 36, 30, 255);
|
||||
break;
|
||||
case UT_RAVAGER:
|
||||
fill_rect(s, 0, 7, 30, 16, ok, og, ob, 255);
|
||||
fill_rect(s, 2, 9, 26, 12, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 15, 8, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 15, 29, 15, ok, og, ob, 255); /* big barrel */
|
||||
/* heavy hull + side skirts + big barrel */
|
||||
fill_rect(s, 0, 7, 5, 14, ok, og, ob, 255);
|
||||
fill_rect(s, 25, 7, 5, 14, ok, og, ob, 255);
|
||||
fill_rect(s, 2, 9, 26, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 4, 10, 22, 10, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 15, 7, ok, og, ob, 255);
|
||||
disc(s, 15, 15, 6, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 14, 29, 14, 50, 45, 35, 255);
|
||||
line(s, 15, 15, 29, 15, 50, 45, 35, 255);
|
||||
line(s, 15, 16, 28, 16, 50, 45, 35, 255);
|
||||
disc(s, 7, 23, 4, tr, tg, tb, 255);
|
||||
disc(s, 23, 23, 4, tr, tg, tb, 255);
|
||||
break;
|
||||
case UT_FLAME:
|
||||
fill_rect(s, 5, 11, 20, 15, ok, og, ob, 255);
|
||||
fill_rect(s, 7, 13, 16, 11, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 10, 5, lite.r, lite.g, lite.b, 255);
|
||||
line(s, 15, 15, 28, 20, 255, 150, 50, 255); /* flame nozzle */
|
||||
/* backpack fuel tank + nozzle + body */
|
||||
fill_rect(s, 7, 12, 16, 12, ok, og, ob, 255);
|
||||
fill_rect(s, 9, 14, 12, 9, base.r, base.g, base.b, 255);
|
||||
disc(s, 15, 9, 4, ok, og, ob, 255);
|
||||
disc(s, 15, 9, 3, lite.r, lite.g, lite.b, 255);
|
||||
disc(s, 8, 14, 5, ok, og, ob, 255); /* fuel tank */
|
||||
disc(s, 8, 14, 4, 90, 70, 40, 255);
|
||||
disc(s, 8, 14, 2, 200, 120, 40, 255);
|
||||
line(s, 18, 15, 28, 20, 255, 150, 50, 255);
|
||||
line(s, 18, 16, 27, 21, 255, 180, 60, 255);
|
||||
disc(s, 28, 20, 2, 255, 200, 80, 255);
|
||||
break;
|
||||
case UT_MISSILE:
|
||||
/* launcher rails + tubes on wheeled chassis */
|
||||
fill_rect(s, 4, 11, 22, 14, ok, og, ob, 255);
|
||||
fill_rect(s, 6, 13, 18, 10, base.r, base.g, base.b, 255);
|
||||
fill_rect(s, 11, 6, 10, 4, ok, og, ob, 255);
|
||||
fill_rect(s, 12, 6, 8, 2, 255, 80, 60, 255);
|
||||
fill_rect(s, 11, 11, 10, 4, ok, og, ob, 255);
|
||||
fill_rect(s, 12, 11, 8, 2, 255, 100, 70, 255);
|
||||
disc(s, 9, 23, 4, tr, tg, tb, 255);
|
||||
disc(s, 21, 23, 4, tr, tg, tb, 255);
|
||||
line(s, 15, 15, 28, 6, 255, 80, 60, 255); /* launcher */
|
||||
line(s, 15, 15, 28, 6, 255, 80, 60, 255);
|
||||
break;
|
||||
case UT_MEDIC:
|
||||
fill_rect(s, 5, 10, 20, 15, ok, og, ob, 255);
|
||||
fill_rect(s, 7, 12, 16, 11, 245, 245, 245, 255); /* white ambulance */
|
||||
fill_rect(s, 6, 9, 6, 4, 200, 220, 240, 255); /* cab glass */
|
||||
disc(s, 10, 24, 4, tr, tg, tb, 255);
|
||||
disc(s, 20, 24, 4, tr, tg, tb, 255);
|
||||
disc(s, 15, 9, 5, 240, 50, 50, 255); /* red cross */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue