Changeset 19 for libcaca/trunk/src/explosions.c
- Timestamp:
- Dec 15, 2002, 4:41:32 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/src/explosions.c
r17 r19 5 5 6 6 static void draw_small_explosion( int x, int y, int frame ); 7 static void draw_ big_explosion( int x, int y, int frame );7 static void draw_medium_explosion( int x, int y, int frame ); 8 8 9 9 void init_explosions( game *g, explosions *ex ) … … 13 13 for( i = 0; i < EXPLOSIONS; i++ ) 14 14 { 15 ex->n[i] = 0; 16 ex->x[i] = -1; 17 ex->y[i] = -1; 18 ex->vx[i] = -1; 19 ex->vy[i] = -1; 20 ex->type[i] = 0; 15 ex->type[i] = EXPLOSION_NONE; 21 16 } 22 17 } … … 28 23 for( i = 0; i < EXPLOSIONS; i++ ) 29 24 { 30 if( ex->n[i] <= 0 ) 31 { 25 if( ex->type[i] == EXPLOSION_NONE ) 26 { 27 ex->type[i] = type; 32 28 ex->x[i] = x; 33 29 ex->y[i] = y; … … 36 32 switch( type ) 37 33 { 38 case 1: ex->n[i] = 13; break; 39 case 2: ex->n[i] = 30; break; 40 case 0: default: ex->n[i] = 7; break; 34 case EXPLOSION_MEDIUM: 35 ex->n[i] = 11; 36 break; 37 case EXPLOSION_SMALL: 38 ex->n[i] = 7; 39 break; 41 40 } 42 ex->type[i] = type;43 41 break; 44 42 } … … 52 50 for( i = 0; i < EXPLOSIONS; i++ ) 53 51 { 54 if( ex->n[i] <= 0 )55 {56 continue;57 }58 59 52 #if 0 60 GFX_COLOR( GREEN );61 GFX_GOTO( ex->x[i] + 3, ex->y[i] );53 gfx_color( GREEN ); 54 gfx_goto( ex->x[i] + 3, ex->y[i] ); 62 55 switch( GET_RAND(0,3) ) 63 56 { 64 57 case 0: 65 GFX_WRITE( 'p' );66 GFX_WRITE( 'i' );67 GFX_WRITE( 'f' );58 gfx_putchar( 'p' ); 59 gfx_putchar( 'i' ); 60 gfx_putchar( 'f' ); 68 61 break; 69 62 case 1: 70 GFX_WRITE( 'p' );71 GFX_WRITE( 'a' );72 GFX_WRITE( 'f' );63 gfx_putchar( 'p' ); 64 gfx_putchar( 'a' ); 65 gfx_putchar( 'f' ); 73 66 break; 74 67 case 2: 75 GFX_WRITE( 'p' );76 GFX_WRITE( 'o' );77 GFX_WRITE( 'u' );78 GFX_WRITE( 'f' );79 break; 80 } 81 GFX_WRITE( '!' );68 gfx_putchar( 'p' ); 69 gfx_putchar( 'o' ); 70 gfx_putchar( 'u' ); 71 gfx_putchar( 'f' ); 72 break; 73 } 74 gfx_putchar( '!' ); 82 75 #endif 83 76 84 77 switch( ex->type[i] ) 85 78 { 86 case 1: 87 draw_big_explosion( ex->x[i], ex->y[i], ex->n[i] ); 88 break; 89 case 0: 90 default: 79 case EXPLOSION_MEDIUM: 80 draw_medium_explosion( ex->x[i], ex->y[i], ex->n[i] ); 81 break; 82 case EXPLOSION_SMALL: 91 83 draw_small_explosion( ex->x[i], ex->y[i], ex->n[i] ); 92 84 break; 93 } 94 85 case EXPLOSION_NONE: 86 break; 87 } 95 88 } 96 89 } … … 102 95 for( i = 0; i < EXPLOSIONS; i++ ) 103 96 { 104 if( ex->n[i] > 0 ) 105 { 106 ex->x[i] += ex->vx[i]; 107 ex->y[i] += ex->vy[i]; 108 ex->n[i]--; 97 switch( ex->type[i] ) 98 { 99 case EXPLOSION_MEDIUM: 100 case EXPLOSION_SMALL: 101 ex->x[i] += ex->vx[i]; 102 ex->y[i] += ex->vy[i]; 103 ex->n[i]--; 104 if( ex->n[i] < 0 ) 105 { 106 ex->type[i] = EXPLOSION_NONE; 107 } 108 break; 109 case EXPLOSION_NONE: 110 break; 109 111 } 110 112 } … … 115 117 switch( frame ) 116 118 { 117 default:118 119 case 6: 119 GFX_COLOR( YELLOW );120 GFX_GOTO( x, y );121 GFX_WRITE( '+' );120 gfx_color( YELLOW ); 121 gfx_goto( x, y ); 122 gfx_putchar( '+' ); 122 123 break; 123 124 case 5: 124 GFX_COLOR( YELLOW );125 GFX_GOTO( x, y );126 GFX_WRITE( 'o' );125 gfx_color( YELLOW ); 126 gfx_goto( x, y ); 127 gfx_putchar( 'o' ); 127 128 break; 128 129 case 4: 129 GFX_COLOR( YELLOW ); 130 GFX_GOTO( x, y-1 ); 131 GFX_WRITE( '_' ); 132 GFX_GOTO( x-1, y ); 133 GFX_WRITE( ')' ); 134 GFX_WRITE( '_' ); 135 GFX_WRITE( '(' ); 130 gfx_color( YELLOW ); 131 gfx_goto( x, y-1 ); 132 gfx_putchar( '_' ); 133 gfx_goto( x-1, y ); 134 gfx_putstr( ")_(" ); 136 135 break; 137 136 case 3: 138 GFX_COLOR( YELLOW ); 139 GFX_GOTO( x-1, y-1 ); 140 GFX_WRITE( '.' ); 141 GFX_WRITE( '_' ); 142 GFX_WRITE( ',' ); 143 GFX_GOTO( x-1, y ); 144 GFX_WRITE( ')' ); 145 GFX_WRITE( '_' ); 146 GFX_WRITE( '(' ); 147 GFX_GOTO( x-1, y+1 ); 148 GFX_WRITE( '\'' ); 149 GFX_WRITE( ' ' ); 150 GFX_WRITE( '`' ); 137 gfx_color( YELLOW ); 138 gfx_goto( x-1, y-1 ); 139 gfx_putstr( "._," ); 140 gfx_goto( x-1, y ); 141 gfx_putstr( ")_(" ); 142 gfx_goto( x-1, y+1 ); 143 gfx_putstr( "\' `" ); 151 144 break; 152 145 case 2: 153 GFX_COLOR( YELLOW ); 154 GFX_GOTO( x-1, y-1 ); 155 GFX_WRITE( '.' ); 156 GFX_WRITE( 'v' ); 157 GFX_WRITE( ',' ); 158 GFX_GOTO( x-1, y ); 159 GFX_WRITE( '>' ); 160 GFX_WRITE( ' ' ); 161 GFX_WRITE( '<' ); 162 GFX_GOTO( x-1, y+1 ); 163 GFX_WRITE( '\'' ); 164 GFX_WRITE( '^' ); 165 GFX_WRITE( '`' ); 146 gfx_color( YELLOW ); 147 gfx_goto( x-1, y-1 ); 148 gfx_putstr( ".v," ); 149 gfx_goto( x-1, y ); 150 gfx_putstr( "> <" ); 151 gfx_goto( x-1, y+1 ); 152 gfx_putstr( "\'^`" ); 166 153 break; 167 154 case 1: 168 GFX_COLOR( WHITE ); 169 GFX_GOTO( x-1, y-1 ); 170 GFX_WRITE( '.' ); 171 GFX_WRITE( ' ' ); 172 GFX_WRITE( ',' ); 173 GFX_GOTO( x-1, y ); 174 GFX_WRITE( ' ' ); 175 GFX_WRITE( ' ' ); 176 GFX_WRITE( ' ' ); 177 GFX_GOTO( x-1, y+1 ); 178 GFX_WRITE( '\'' ); 179 GFX_WRITE( ' ' ); 180 GFX_WRITE( '`' ); 181 break; 182 } 183 } 184 185 static void draw_big_explosion( int x, int y, int frame ) 186 { 187 GFX_COLOR( YELLOW ); 155 gfx_color( WHITE ); 156 gfx_goto( x-1, y-1 ); 157 gfx_putstr( ". ," ); 158 gfx_goto( x-1, y ); 159 gfx_putstr( " " ); 160 gfx_goto( x-1, y+1 ); 161 gfx_putstr( "\' `" ); 162 break; 163 } 164 } 165 166 static void draw_medium_explosion( int x, int y, int frame ) 167 { 168 gfx_color( YELLOW ); 188 169 189 170 switch( frame ) 190 171 { 191 default:192 case 12:193 GFX_GOTO( x, y );194 GFX_WRITE( '+' );195 break;196 case 11:197 GFX_GOTO( x, y );198 GFX_WRITE( 'o' );199 break;200 172 case 10: 201 GFX_GOTO( x, y-1 ); 202 GFX_WRITE( '_' ); 203 GFX_GOTO( x-1, y ); 204 GFX_WRITE( ')' ); 205 GFX_WRITE( '_' ); 206 GFX_WRITE( '(' ); 173 gfx_goto( x, y ); 174 gfx_putchar( '+' ); 207 175 break; 208 176 case 9: 209 GFX_GOTO( x-1, y-1 ); 210 GFX_WRITE( '.' ); 211 GFX_WRITE( '_' ); 212 GFX_WRITE( ',' ); 213 GFX_GOTO( x-1, y ); 214 GFX_WRITE( ')' ); 215 GFX_WRITE( '_' ); 216 GFX_WRITE( '(' ); 217 GFX_GOTO( x-1, y+1 ); 218 GFX_WRITE( '\'' ); 219 GFX_WRITE( ' ' ); 220 GFX_WRITE( '`' ); 177 gfx_goto( x, y ); 178 gfx_putchar( 'o' ); 221 179 break; 222 180 case 8: 223 GFX_GOTO( x-1, y-1 );224 GFX_WRITE( '.' );225 GFX_WRITE( 'v');226 GFX_WRITE( ',');227 GFX_GOTO( x-1, y );228 GFX_WRITE( '>' );229 GFX_WRITE( ' ');230 GFX_WRITE( '<');231 GFX_GOTO( x-1, y+1);232 GFX_WRITE( '\'');233 GFX_WRITE( '^');234 GFX_WRITE( '`');181 gfx_goto( x, y-1 ); 182 gfx_putchar( '_' ); 183 gfx_goto( x-1, y ); 184 gfx_putstr( ")_(" ); 185 break; 186 case 7: 187 gfx_goto( x-1, y-1 ); 188 gfx_putstr( "._," ); 189 gfx_goto( x-1, y ); 190 gfx_putstr( ")_(" ); 191 gfx_goto( x-1, y+1 ); 192 gfx_putstr( "\' `" ); 235 193 break; 236 194 case 6: 237 GFX_COLOR( RED ); 238 case 7: 195 gfx_goto( x-1, y-1 ); 196 gfx_putstr( ".v," ); 197 gfx_goto( x-1, y ); 198 gfx_putstr( "> <" ); 199 gfx_goto( x-1, y+1 ); 200 gfx_putstr( "\'^`" ); 201 break; 239 202 case 5: 240 GFX_GOTO( x-2, y-1 ); 241 GFX_WRITE( '_' ); 242 GFX_WRITE( '\\' ); 243 GFX_WRITE( '~' ); 244 GFX_WRITE( '/' ); 245 GFX_WRITE( '_' ); 246 GFX_GOTO( x-2, y ); 247 GFX_WRITE( '>' ); 248 GFX_WRITE( ' ' ); 249 GFX_WRITE( ' ' ); 250 GFX_WRITE( ' ' ); 251 GFX_WRITE( '<' ); 252 GFX_GOTO( x-2, y+1 ); 253 GFX_WRITE( '~' ); 254 GFX_WRITE( '/' ); 255 GFX_WRITE( '_' ); 256 GFX_WRITE( '\\' ); 257 GFX_WRITE( '~' ); 203 gfx_color( RED ); 204 case 4: 205 gfx_goto( x-2, y-1 ); 206 gfx_putstr( "_\\~/_" ); 207 gfx_goto( x-2, y ); 208 gfx_putstr( "> <" ); 209 gfx_goto( x-2, y+1 ); 210 gfx_putstr( "~/_\\~" ); 258 211 break; 259 212 case 3: 260 GFX_COLOR( RED ); 261 case 4: 213 gfx_color( RED ); 262 214 case 2: 263 GFX_GOTO( x-2, y-1 ); 264 GFX_WRITE( '_' ); 265 GFX_WRITE( '\\' ); 266 GFX_WRITE( ' ' ); 267 GFX_WRITE( '/' ); 268 GFX_WRITE( '_' ); 269 GFX_GOTO( x-2, y ); 270 GFX_WRITE( '_' ); 271 GFX_WRITE( ' ' ); 272 GFX_WRITE( ' ' ); 273 GFX_WRITE( ' ' ); 274 GFX_WRITE( '_' ); 275 GFX_GOTO( x-2, y+1 ); 276 GFX_WRITE( ' ' ); 277 GFX_WRITE( '/' ); 278 GFX_WRITE( ' ' ); 279 GFX_WRITE( '\\' ); 280 GFX_WRITE( ' ' ); 215 gfx_goto( x-2, y-1 ); 216 gfx_putstr( "_\\ /_" ); 217 gfx_goto( x-2, y ); 218 gfx_putstr( "_ _" ); 219 gfx_goto( x-2, y+1 ); 220 gfx_putstr( " / \\ " ); 281 221 break; 282 222 case 1: 283 GFX_COLOR( WHITE ); 284 GFX_GOTO( x-2, y-1 ); 285 GFX_WRITE( '.' ); 286 GFX_WRITE( ' ' ); 287 GFX_WRITE( '\'' ); 288 GFX_WRITE( ' ' ); 289 GFX_WRITE( ',' ); 290 GFX_GOTO( x-2, y ); 291 GFX_WRITE( ' ' ); 292 GFX_WRITE( ' ' ); 293 GFX_WRITE( ' ' ); 294 GFX_WRITE( ' ' ); 295 GFX_WRITE( ' ' ); 296 GFX_GOTO( x-2, y+1 ); 297 GFX_WRITE( '\'' ); 298 GFX_WRITE( ' ' ); 299 GFX_WRITE( '.' ); 300 GFX_WRITE( ' ' ); 301 GFX_WRITE( '`' ); 302 break; 303 } 304 } 305 223 gfx_color( WHITE ); 224 gfx_goto( x-2, y-1 ); 225 gfx_putstr( ". \' ," ); 226 gfx_goto( x-2, y ); 227 gfx_putstr( " " ); 228 gfx_goto( x-2, y+1 ); 229 gfx_putstr( "\' . `" ); 230 break; 231 } 232 } 233
Note: See TracChangeset
for help on using the changeset viewer.