Changeset 21


Ignore:
Timestamp:
Dec 15, 2002, 6:03:55 AM (20 years ago)
Author:
Sam Hocevar
Message:
  • 'beam' weapon.
Location:
libcaca/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/doc/shapes.txt

    r19 r21  
    6363
    6464
     65                                                                :%%:
     66                                                    :%%:       :%##%:
     67  __     __       __        ____        :%%:       :%##%:     :%####%:
     68 '  `  -'  `-  ,-'  `-.  ,-'    `-.  ,-'    `-.  ,-'    `-.  ,-'    `-.
     69
    6570Explosions
    6671----------
     
    106111
    107112
    108    
     113Bosses
     114------
    109115
     116                 _,--._
     117               ,'      `.
     118       |\     / ,-.  ,-. \     /|
     119       )o),/ ( ( o )( o ) ) \.(o(
     120      /o/// /|  `-'  `-'  |\ \\\o\
     121     / / |\ \(   .    ,   )/ /| \ \
     122     | | \o`-/    `\/'    \-'o/ | |
     123     \ \  `,'              `.'  / /
     124  \.  \ `-'  ,'|   /\   |`.  `-' /  ,/
     125   \`. `.__,' /   /  \   \ `.__,' ,'/
     126    \o\     ,'  ,'    `.  `.     /o/
     127     \o`---'  ,'        `.  `---'o/
     128      `.____,'            `.____,'
    110129
    111 
    112 
    113 
    114 
    115 
    116 
    117 
    118 
    119 
    120 
    121 
    122 
    123 
    124 
    125 
    126 
    127 
    128 
    129 
    130 
    131 
    132 
    133 
    134 
    135 
    136 
    137 
    138 
    139 
    140 
    141 
    142 
    143 
    144 
    145 
    146 
    147 
    148 
    149 
    150 
    151 
    152 
    153 
    154 
    155 
    156 
    157 
    158 
    159 
    160 
    161 
    162 
    163 
    164 
    165 
    166 
    167 
    168 
  • libcaca/trunk/src/common.h

    r19 r21  
    5353typedef struct
    5454{
    55     enum { WEAPON_NONE, WEAPON_LASER, WEAPON_SEEKER, WEAPON_NUKE } type[WEAPONS];
     55    enum { WEAPON_NONE, WEAPON_LASER, WEAPON_SEEKER, WEAPON_NUKE, WEAPON_BEAM } type[WEAPONS];
    5656    int x[WEAPONS];
    5757    int y[WEAPONS];
  • libcaca/trunk/src/main.c

    r19 r21  
    110110                    g->p->dir = 3;
    111111                    break;
     112                case 'n':
     113                    if( g->p->nuke == 0 )
     114                    {
     115                        g->p->nuke = 40;
     116                        add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_NUKE );
     117                    }
     118                    break;
    112119                case '\r':
    113120                    if( g->p->nuke == 0 )
    114121                    {
    115122                        g->p->nuke = 40;
    116                         add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_NUKE );
     123                        add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM );
    117124                    }
    118125                    break;
  • libcaca/trunk/src/weapons.c

    r19 r21  
    66
    77static void draw_nuke( int x, int y, int frame );
     8static void draw_beam( int x, int y, int frame );
    89static void draw_circle( int x, int y, int r, char c );
    910
     
    4344                gfx_goto( wp->x[i] >> 4, wp->y[i] >> 4 );
    4445                gfx_putchar( '@' );
     46                break;
     47            case WEAPON_BEAM:
     48                draw_beam( wp->x[i] >> 4, wp->y[i] >> 4, wp->n[i] );
    4549                break;
    4650            case WEAPON_NUKE:
     
    132136
    133137                break;
     138            case WEAPON_BEAM:
     139                wp->x[i] = (g->p->x + 2) << 4;
     140                wp->y[i] = g->p->y << 4;
     141                wp->n[i]--;
     142                if( wp->n[i] < 0 )
     143                {
     144                    wp->type[i] = WEAPON_NONE;
     145                }
     146                break;
    134147            case WEAPON_NUKE:
    135148                wp->n[i]--;
     
    169182                    wp->n[i] = 10;
    170183                    break;
     184                case WEAPON_BEAM:
     185                    wp->n[i] = 25;
     186                    break;
    171187                case WEAPON_NUKE:
    172188                    wp->n[i] = 25;
     
    177193            break;
    178194        }
     195    }
     196}
     197
     198static void draw_beam( int x, int y, int frame )
     199{
     200    int r = (29 - frame) * (29 - frame) / 8;
     201    int i;
     202
     203    switch( frame )
     204    {
     205        case 24:
     206            gfx_color( WHITE );
     207            gfx_goto( x, y-3 );
     208            gfx_putstr( "__" );
     209            gfx_goto( x-1, y-2 );
     210            gfx_putchar( '\'' );
     211            gfx_goto( x+2, y-2 );
     212            gfx_putchar( '`' );
     213            break;
     214        case 23:
     215            gfx_color( CYAN );
     216            gfx_goto( x, y-3 );
     217            gfx_putstr( "__" );
     218            gfx_color( WHITE );
     219            gfx_goto( x-2, y-2 );
     220            gfx_putstr( "-'" );
     221            gfx_goto( x+2, y-2 );
     222            gfx_putstr( "`-" );
     223            break;
     224        case 22:
     225            gfx_color( CYAN );
     226            gfx_goto( x, y-3 );
     227            gfx_putstr( "__" );
     228            gfx_goto( x-1, y-2 );
     229            gfx_putchar( '\'' );
     230            gfx_goto( x+2, y-2 );
     231            gfx_putchar( '`' );
     232            gfx_color( WHITE );
     233            gfx_goto( x-3, y-2 );
     234            gfx_putstr( ",-" );
     235            gfx_goto( x+3, y-2 );
     236            gfx_putstr( "-." );
     237            break;
     238        case 21:
     239            gfx_color( CYAN );
     240            gfx_goto( x-1, y-3 );
     241            gfx_putstr( "____" );
     242            gfx_goto( x-2, y-2 );
     243            gfx_putchar( '\'' );
     244            gfx_goto( x+3, y-2 );
     245            gfx_putchar( '`' );
     246            gfx_color( WHITE );
     247            gfx_goto( x-4, y-2 );
     248            gfx_putstr( ",-" );
     249            gfx_goto( x+4, y-2 );
     250            gfx_putstr( "-." );
     251            break;
     252        case 20:
     253            gfx_color( WHITE );
     254            gfx_goto( x, y-3 );
     255            gfx_putstr( "%%" );
     256            gfx_goto( x-4, y-2 );
     257            gfx_putchar( ',' );
     258            gfx_goto( x+5, y-2 );
     259            gfx_putchar( '.' );
     260            gfx_color( CYAN );
     261            gfx_goto( x-1, y-3 );
     262            gfx_putchar( ':' );
     263            gfx_goto( x+2, y-3 );
     264            gfx_putchar( ':' );
     265            gfx_goto( x-3, y-2 );
     266            gfx_putstr( "-'" );
     267            gfx_goto( x+3, y-2 );
     268            gfx_putstr( "`-" );
     269            break;
     270        case 19:
     271            gfx_color( WHITE );
     272            gfx_goto( x, y-4 );
     273            gfx_putstr( "%%" );
     274            gfx_goto( x, y-3 );
     275            gfx_putstr( "##" );
     276            gfx_color( CYAN );
     277            gfx_goto( x-1, y-4 );
     278            gfx_putchar( ':' );
     279            gfx_goto( x+2, y-4 );
     280            gfx_putchar( ':' );
     281            gfx_goto( x-1, y-3 );
     282            gfx_putchar( '%' );
     283            gfx_goto( x+2, y-3 );
     284            gfx_putchar( '%' );
     285            gfx_goto( x-4, y-2 );
     286            gfx_putstr( ",-'" );
     287            gfx_goto( x+3, y-2 );
     288            gfx_putstr( "`-." );
     289            gfx_color( BLUE );
     290            gfx_goto( x-2, y-3 );
     291            gfx_putchar( ':' );
     292            gfx_goto( x+3, y-3 );
     293            gfx_putchar( ':' );
     294            break;
     295        case 18:
     296        default:
     297            r = (18 - frame) * (18 - frame);
     298            gfx_color( WHITE );
     299            gfx_goto( x-1, y-5-r );
     300            gfx_putstr( ":%%:" );
     301            gfx_goto( x-1, y-4-r );
     302            gfx_putstr( "%##%" );
     303            gfx_color( CYAN );
     304            gfx_goto( x-2, y-4-r );
     305            gfx_putchar( ':' );
     306            gfx_goto( x+3, y-4-r );
     307            gfx_putchar( ':' );
     308            gfx_goto( x-2, y-2 );
     309            gfx_putchar( '\'' );
     310            gfx_goto( x+3, y-2 );
     311            gfx_putchar( '`' );
     312            gfx_color( BLUE );
     313            gfx_goto( x-3, y-2 );
     314            gfx_putchar( ':' );
     315            gfx_goto( x+4, y-2 );
     316            gfx_putchar( ':' );
     317            for( i = 0; i <= r; i++ )
     318            {
     319                gfx_color( WHITE );
     320                gfx_goto( x-1, y-3-i );
     321                gfx_putstr( "####" );
     322                gfx_color( CYAN );
     323                gfx_goto( x-2, y-3-i );
     324                gfx_putchar( '%' );
     325                gfx_goto( x+3, y-3-i );
     326                gfx_putchar( '%' );
     327                gfx_color( BLUE );
     328                gfx_goto( x-3, y-3-i );
     329                gfx_putchar( ':' );
     330                gfx_goto( x+4, y-3-i );
     331                gfx_putchar( ':' );
     332            }
     333            break;
    179334    }
    180335}
Note: See TracChangeset for help on using the changeset viewer.