+ Use ee_draw_ellipse() instead of ee_draw_circle() to draw the nuke.
* src/player.c:
+ Use ee_draw_sprite() to draw our ship.
git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/ttyvaders/trunk@150 92316355-f0b4-4df1-b90c-862c8a59935f
master
| @@ -8,6 +8,7 @@ EXTRA_DIST = \ | |||
| explosion_small \ | |||
| item_gem \ | |||
| item_heart \ | |||
| ship_green \ | |||
| weapon_bomb \ | |||
| weapon_fragbomb \ | |||
| $(NULL) | |||
| @@ -0,0 +1,7 @@ | |||
| 6 3 2 1 | |||
| /\ | |||
| (()) | |||
| I<__>I | |||
| cc | |||
| cddc | |||
| cccccc | |||
| @@ -278,18 +278,18 @@ void collide_player_tunnel(game *g, player *p, tunnel *t, explosions *ex) | |||
| return; | |||
| } | |||
| if(p->x <= t->left[p->y]) | |||
| if(p->x - 2 <= t->left[p->y]) | |||
| { | |||
| p->x += 3; | |||
| p->vx = 2; | |||
| add_explosion(g, ex, p->x+1, p->y-1, 0, 0, EXPLOSION_SMALL); | |||
| add_explosion(g, ex, p->x-1, p->y, 0, 0, EXPLOSION_SMALL); | |||
| p->life -= 180; | |||
| } | |||
| else if(p->x + 5 >= t->right[p->y]) | |||
| else if(p->x + 3 >= t->right[p->y]) | |||
| { | |||
| p->x -= 3; | |||
| p->vx = -2; | |||
| add_explosion(g, ex, p->x+4, p->y-1, 0, 0, EXPLOSION_SMALL); | |||
| add_explosion(g, ex, p->x+2, p->y, 0, 0, EXPLOSION_SMALL); | |||
| p->life -= 180; | |||
| } | |||
| } | |||
| @@ -124,10 +124,10 @@ static void start_game (game *g) | |||
| g->p->vx = -2; | |||
| break; | |||
| case 'j': | |||
| if(g->p->y < g->h - 2) g->p->y += 1; | |||
| if(g->p->y < g->h - 3) g->p->y += 1; | |||
| break; | |||
| case 'k': | |||
| if(g->p->y > 1) g->p->y -= 1; | |||
| if(g->p->y > 2) g->p->y -= 1; | |||
| break; | |||
| case 'l': | |||
| g->p->vx = 2; | |||
| @@ -136,43 +136,43 @@ static void start_game (game *g) | |||
| if(g->p->special >= COST_NUKE) | |||
| { | |||
| g->p->special -= COST_NUKE; | |||
| add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_NUKE); | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, 0, 0, WEAPON_NUKE); | |||
| } | |||
| break; | |||
| case 'f': | |||
| if(g->p->special >= COST_FRAGBOMB) | |||
| { | |||
| g->p->special -= COST_FRAGBOMB; | |||
| add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_FRAGBOMB); | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, 0, -16, WEAPON_FRAGBOMB); | |||
| } | |||
| break; | |||
| case 'b': | |||
| if(g->p->special >= COST_BEAM) | |||
| { | |||
| g->p->special -= COST_BEAM; | |||
| add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM); | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, 0, 0, WEAPON_BEAM); | |||
| } | |||
| break; | |||
| case ' ': | |||
| if(g->p->weapon == 0) | |||
| { | |||
| g->p->weapon = 4; | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x - 2) << 4, g->p->y << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x + 3) << 4, g->p->y << 4, 0, -32, WEAPON_LASER); | |||
| /* Extra schtuph */ | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, -24, -16, WEAPON_SEEKER); | |||
| add_weapon(g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 24, -16, WEAPON_SEEKER); | |||
| add_weapon(g, g->wp, (g->p->x - 2) << 4, g->p->y << 4, -24, -16, WEAPON_SEEKER); | |||
| add_weapon(g, g->wp, (g->p->x + 3) << 4, g->p->y << 4, 24, -16, WEAPON_SEEKER); | |||
| /* More schtuph */ | |||
| add_weapon(g, g->wp, (g->p->x + 1) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x + 4) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| /* Even more schtuph */ | |||
| add_weapon(g, g->wp, (g->p->x - 1) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x + 2) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x + 3) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| /* Even more schtuph */ | |||
| add_weapon(g, g->wp, g->p->x << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| add_weapon(g, g->wp, (g->p->x + 1) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
| /* Extra schtuph */ | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, -32, 0, WEAPON_SEEKER); | |||
| add_weapon(g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 32, 0, WEAPON_SEEKER); | |||
| add_weapon(g, g->wp, (g->p->x - 2) << 4, g->p->y << 4, -32, 0, WEAPON_SEEKER); | |||
| add_weapon(g, g->wp, (g->p->x + 3) << 4, g->p->y << 4, 32, 0, WEAPON_SEEKER); | |||
| /* MORE SCHTUPH! */ | |||
| add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_BOMB); | |||
| add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, 0, -16, WEAPON_BOMB); | |||
| } | |||
| break; | |||
| } | |||
| @@ -26,13 +26,15 @@ | |||
| #include "common.h" | |||
| struct ee_sprite *ship_sprite; | |||
| /* Init tunnel */ | |||
| player * create_player(game *g) | |||
| { | |||
| player *p = malloc(sizeof(player)); | |||
| p->x = g->w / 2; | |||
| p->y = g->h - 2; | |||
| p->y = g->h - 3; | |||
| p->vx = 0; | |||
| p->vy = 0; | |||
| p->weapon = 0; | |||
| @@ -40,6 +42,8 @@ player * create_player(game *g) | |||
| p->life = MAX_LIFE; | |||
| p->dead = 0; | |||
| ship_sprite = ee_load_sprite("data/ship_green"); | |||
| return p; | |||
| } | |||
| @@ -51,25 +55,15 @@ void free_player(player *p) | |||
| void draw_player(game *g, player *p) | |||
| { | |||
| if(p->dead) | |||
| { | |||
| return; | |||
| } | |||
| ee_color(EE_GREEN); | |||
| ee_putstr(p->x + 2, p->y - 2, "/\\"); | |||
| ee_putchar(p->x + 1, p->y - 1, '('); | |||
| ee_putchar(p->x + 4, p->y - 1, ')'); | |||
| ee_putstr(p->x, p->y, "I<__>I"); | |||
| ee_color(EE_YELLOW); | |||
| ee_putstr(p->x + 2, p->y - 1, "()"); | |||
| ee_draw_sprite(p->x, p->y, ship_sprite); | |||
| } | |||
| void update_player(game *g, player *p) | |||
| { | |||
| if(p->dead) | |||
| { | |||
| return; | |||
| } | |||
| if(p->life <= 0) | |||
| { | |||
| @@ -80,40 +74,26 @@ void update_player(game *g, player *p) | |||
| /* Update weapon stats */ | |||
| if(p->weapon) | |||
| { | |||
| p->weapon--; | |||
| } | |||
| if(p->special < MAX_SPECIAL) | |||
| { | |||
| p->special++; | |||
| } | |||
| /* Update life */ | |||
| if(p->life < MAX_LIFE) | |||
| { | |||
| p->life++; | |||
| } | |||
| /* Update coords */ | |||
| p->x += p->vx; | |||
| if(p->vx < 0) | |||
| { | |||
| p->vx++; | |||
| } | |||
| else if(p->vx > 0) | |||
| { | |||
| p->vx--; | |||
| } | |||
| if(p->x < 1) | |||
| { | |||
| p->x = 1; | |||
| } | |||
| else if(p->x > g->w - 7) | |||
| { | |||
| p->x = g->w - 7; | |||
| } | |||
| } | |||
| @@ -219,7 +219,7 @@ void update_weapons(game *g, weapons *wp) | |||
| break; | |||
| case WEAPON_BEAM: | |||
| wp->x[i] = (g->p->x + 2) << 4; | |||
| wp->x[i] = g->p->x << 4; | |||
| wp->y[i] = g->p->y << 4; | |||
| wp->n[i]--; | |||
| if(wp->n[i] < 0) | |||
| @@ -447,11 +447,15 @@ static void draw_nuke(int x, int y, int frame) | |||
| /* Lots of duplicate pixels, but we don't care */ | |||
| ee_color(EE_BLUE); | |||
| ee_draw_circle(x, y, r++, ':'); | |||
| ee_draw_ellipse(x, y, r, r / 2, ':'); | |||
| ee_draw_ellipse(x, y, r + 1, r / 2, ':'); | |||
| ee_draw_ellipse(x, y, r + 2, r / 2, ':'); | |||
| ee_color(EE_CYAN); | |||
| ee_draw_circle(x, y, r++, '%'); | |||
| ee_draw_ellipse(x, y, r + 2, r / 2 + 1, '%'); | |||
| ee_draw_ellipse(x, y, r + 3, r / 2 + 1, '%'); | |||
| ee_color(EE_WHITE); | |||
| ee_draw_circle(x, y, r++, '#'); | |||
| ee_draw_circle(x, y, r++, '#'); | |||
| ee_draw_ellipse(x, y, r + 3, r / 2 + 2, '#'); | |||
| ee_draw_ellipse(x, y, r + 4, r / 2 + 2, '#'); | |||
| ee_draw_ellipse(x, y, r + 4, r / 2 + 3, '#'); | |||
| } | |||