Changeset 139


Ignore:
Timestamp:
Nov 10, 2003, 10:17:47 PM (20 years ago)
Author:
Sam Hocevar
Message:
  • libee/sprite.c: + Made sprite loading more robust.
  • src/explosions.c: + No longer use ee_putchar etc. to draw our sprites, but use

ee_draw_sprite().

  • data/: + Drew explosion_medium and explosion_small sprites.
Location:
libcaca/trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/data/Makefile.am

    r121 r139  
    1 EXTRA_DIST = foo_fighter bar_fighter bar_boss baz_fighter item_gem item_heart
     1EXTRA_DIST = \
     2        foo_fighter \
     3        bar_fighter \
     4        bar_boss \
     5        baz_fighter \
     6        explosion_medium \
     7        explosion_small \
     8        item_gem \
     9        item_heart \
     10        $(NULL)
  • libcaca/trunk/libee/sprite.c

    r135 r139  
    8989        for(y = 0; y < h; y++)
    9090        {
    91             memset(buf, ' ', w);
    92             buf[w] = '\0';
    9391            if(!fgets(buf, BUFSIZ, fd))
    9492                goto failed;
    9593
    96             for(x = 0; x < w; x++)
     94            for(x = 0; x < w && buf[x] && buf[x] != '\r' && buf[x] != '\n'; x++)
    9795                frame->chars[w * y + x] = buf[x];
     96
     97            for(; x < w; x++)
     98                frame->chars[w * y + x] = ' ';
    9899        }
    99100
    100101        for(y = 0; y < h; y++)
    101102        {
    102             memset(buf, ' ', w);
    103             buf[w] = '\0';
    104103            if(!fgets(buf, BUFSIZ, fd))
    105104                goto failed;
    106105
    107             for(x = 0; x < w; x++)
     106            for(x = 0; x < w && buf[x] && buf[x] != '\r' && buf[x] != '\n'; x++)
    108107                frame->color[w * y + x] = buf[x] - 'a';
     108
     109            for(; x < w; x++)
     110                frame->color[w * y + x] = ' ' - 'a';
    109111        }
    110112
  • libcaca/trunk/src/explosions.c

    r109 r139  
    3030static void draw_medium_explosion(int x, int y, int frame);
    3131
     32struct ee_sprite *medium_sprite;
     33struct ee_sprite *small_sprite;
     34
    3235void init_explosions(game *g, explosions *ex)
    3336{
     
    3841        ex->type[i] = EXPLOSION_NONE;
    3942    }
     43
     44    medium_sprite = ee_load_sprite("data/explosion_medium");
     45    small_sprite = ee_load_sprite("data/explosion_small");
    4046}
    4147
     
    138144static void draw_small_explosion(int x, int y, int frame)
    139145{
    140     switch(frame)
    141     {
    142     case 6:
    143         ee_color(EE_YELLOW);
    144         ee_goto(x, y);
    145         ee_putchar('+');
    146         break;
    147     case 5:
    148         ee_color(EE_YELLOW);
    149         ee_goto(x, y);
    150         ee_putchar('o');
    151         break;
    152     case 4:
    153         ee_color(EE_YELLOW);
    154         ee_goto(x, y-1);
    155         ee_putchar('_');
    156         ee_goto(x-1, y);
    157         ee_putstr(")_(");
    158         break;
    159     case 3:
    160         ee_color(EE_YELLOW);
    161         ee_goto(x-1, y-1);
    162         ee_putstr("._,");
    163         ee_goto(x-1, y);
    164         ee_putstr(")_(");
    165         ee_goto(x-1, y+1);
    166         ee_putstr("\' `");
    167         break;
    168     case 2:
    169         ee_color(EE_YELLOW);
    170         ee_goto(x-1, y-1);
    171         ee_putstr(".v,");
    172         ee_goto(x-1, y);
    173         ee_putstr("> <");
    174         ee_goto(x-1, y+1);
    175         ee_putstr("\'^`");
    176         break;
    177     case 1:
    178         ee_color(EE_WHITE);
    179         ee_goto(x-1, y-1);
    180         ee_putstr(". ,");
    181         ee_goto(x-1, y);
    182         ee_putstr("   ");
    183         ee_goto(x-1, y+1);
    184         ee_putstr("\' `");
    185         break;
    186     }
     146    ee_set_sprite_frame(small_sprite, 6 - frame);
     147    ee_draw_sprite(x, y, small_sprite);
    187148}
    188149
    189150static void draw_medium_explosion(int x, int y, int frame)
    190151{
    191     ee_color(EE_YELLOW);
    192 
    193     switch(frame)
    194     {
    195     case 10:
    196         ee_goto(x, y);
    197         ee_putchar('+');
    198         break;
    199     case 9:
    200         ee_goto(x, y);
    201         ee_putchar('o');
    202         break;
    203     case 8:
    204         ee_goto(x, y-1);
    205         ee_putchar('_');
    206         ee_goto(x-1, y);
    207         ee_putstr(")_(");
    208         break;
    209     case 7:
    210         ee_goto(x-1, y-1);
    211         ee_putstr("._,");
    212         ee_goto(x-1, y);
    213         ee_putstr(")_(");
    214         ee_goto(x-1, y+1);
    215         ee_putstr("\' `");
    216         break;
    217     case 6:
    218         ee_goto(x-1, y-1);
    219         ee_putstr(".v,");
    220         ee_goto(x-1, y);
    221         ee_putstr("> <");
    222         ee_goto(x-1, y+1);
    223         ee_putstr("\'^`");
    224         break;
    225     case 5:
    226         ee_color(EE_RED);
    227     case 4:
    228         ee_goto(x-2, y-1);
    229         ee_putstr("_\\~/_");
    230         ee_goto(x-2, y);
    231         ee_putstr(">   <");
    232         ee_goto(x-2, y+1);
    233         ee_putstr("~/_\\~");
    234         break;
    235     case 3:
    236         ee_color(EE_RED);
    237     case 2:
    238         ee_goto(x-2, y-1);
    239         ee_putstr("_\\ /_");
    240         ee_goto(x-2, y);
    241         ee_putstr("_   _");
    242         ee_goto(x-2, y+1);
    243         ee_putstr(" / \\ ");
    244         break;
    245     case 1:
    246         ee_color(EE_WHITE);
    247         ee_goto(x-2, y-1);
    248         ee_putstr(". \' ,");
    249         ee_goto(x-2, y);
    250         ee_putstr("     ");
    251         ee_goto(x-2, y+1);
    252         ee_putstr("\' . `");
    253         break;
    254     }
     152    ee_set_sprite_frame(medium_sprite, 10 - frame);
     153    ee_draw_sprite(x, y, medium_sprite);
    255154}
    256155
Note: See TracChangeset for help on using the changeset viewer.