forked from KolibriOS/kolibrios
Heliothryx game update
- updated explosions - added huge explosion for boss, sound and animated texture git-svn-id: svn://kolibrios.org@5316 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
59876bd86b
commit
6daed23e51
@ -74,7 +74,7 @@ void kol_wnd_resize(unsigned w, unsigned h)
|
|||||||
void wnd_draw()
|
void wnd_draw()
|
||||||
{
|
{
|
||||||
|
|
||||||
char tmp[] = "Fps:000 | Heliothryx Beta by Roman Shuvalov";
|
char tmp[] = "Fps:000 | Heliothryx ";
|
||||||
|
|
||||||
kol_paint_start();
|
kol_paint_start();
|
||||||
|
|
||||||
|
@ -501,11 +501,16 @@ void GameInit() {
|
|||||||
// rs_gen_func_radial(0, 0.5, 0.5, 0.3 + 0.5*i/EXPLOSION_FRAMES_COUNT, 0.975, 4.0);
|
// rs_gen_func_radial(0, 0.5, 0.5, 0.3 + 0.5*i/EXPLOSION_FRAMES_COUNT, 0.975, 4.0);
|
||||||
// rs_gen_func_set(0, 1.0);
|
// rs_gen_func_set(0, 1.0);
|
||||||
|
|
||||||
|
rs_gen_func_perlin(2, 10 + i, 7, 0.5, 100 + i*1000);
|
||||||
|
rs_gen_func_normalize(2, 0.0, 1.0);
|
||||||
|
|
||||||
rs_gen_func_set(1, 0.0);
|
rs_gen_func_set(1, 0.0);
|
||||||
rs_gen_func_radial(1, 0.5, 0.5, 0.1 + 0.4*i/EXPLOSIONS_COUNT, 1.0 - 1.0*i/EXPLOSIONS_COUNT, 2.5 + i%5);
|
rs_gen_func_radial(1, 0.5, 0.5, 0.1 + 0.4*i/EXPLOSIONS_COUNT, 1.0 - 1.0*i/EXPLOSIONS_COUNT, 2.5 + i%5);
|
||||||
|
|
||||||
|
rs_gen_func_add(0, 0, 2, 1.0, -0.8);
|
||||||
|
|
||||||
rs_gen_tex_out_rgba_set( 0.0, 0.0, 0.0, 0.0);
|
rs_gen_tex_out_rgba_set( 0.0, 0.0, 0.0, 0.0);
|
||||||
rs_gen_tex_out_rgba(0, 0, 0, 1, 1.0, 1.0, 1.0, 1.0);
|
rs_gen_tex_out_rgba(0, 0, 0, 1, 0.5*i/EXPLOSIONS_COUNT, 1.0 - 0.7*i/EXPLOSIONS_COUNT, 1.0, 1.0);
|
||||||
|
|
||||||
memcpy(game.tex_explosions[i].data, rs_gen_reg.tex_out, EXPLOSION_RADIUS*2*EXPLOSION_RADIUS*2*4 );
|
memcpy(game.tex_explosions[i].data, rs_gen_reg.tex_out, EXPLOSION_RADIUS*2*EXPLOSION_RADIUS*2*4 );
|
||||||
};
|
};
|
||||||
@ -513,6 +518,32 @@ void GameInit() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
rs_gen_init(3, HUGE_EXPLOSION_RADIUS*2);
|
||||||
|
for (i = 0; i < HUGE_EXPLOSIONS_COUNT; i++) {
|
||||||
|
|
||||||
|
texture_init(&(game.tex_huge_explosions[i]), HUGE_EXPLOSION_RADIUS*2, HUGE_EXPLOSION_RADIUS*2);
|
||||||
|
|
||||||
|
rs_gen_func_set(0, 1.0);
|
||||||
|
// rs_gen_func_radial(0, 0.5, 0.5, 0.3 + 0.5*i/EXPLOSION_FRAMES_COUNT, 0.975, 4.0);
|
||||||
|
// rs_gen_func_set(0, 1.0);
|
||||||
|
|
||||||
|
rs_gen_func_perlin(2, 10 + i, 7, 0.5, 500 + i*2000);
|
||||||
|
rs_gen_func_normalize(2, 0.0, 1.0);
|
||||||
|
|
||||||
|
rs_gen_func_set(1, 0.0);
|
||||||
|
rs_gen_func_radial(1, 0.5, 0.5, 0.1 + 0.4*i/HUGE_EXPLOSIONS_COUNT, 1.0 - 1.0*i/HUGE_EXPLOSIONS_COUNT, 2.5 + i%5);
|
||||||
|
|
||||||
|
rs_gen_func_add(0, 0, 2, 1.0, -0.8);
|
||||||
|
|
||||||
|
rs_gen_tex_out_rgba_set( 0.0, 0.0, 0.0, 0.0);
|
||||||
|
rs_gen_tex_out_rgba(0, 0, 0, 1, 0.88*i/HUGE_EXPLOSIONS_COUNT, 0.8 - 0.8*i/HUGE_EXPLOSIONS_COUNT, 1.0, 1.0);
|
||||||
|
|
||||||
|
memcpy(game.tex_huge_explosions[i].data, rs_gen_reg.tex_out, HUGE_EXPLOSION_RADIUS*2*HUGE_EXPLOSION_RADIUS*2*4 );
|
||||||
|
};
|
||||||
|
rs_gen_term();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef RS_KOS
|
#ifndef RS_KOS
|
||||||
rs_audio_init(RS_AUDIO_FMT_MONO16, RS_AUDIO_FREQ_16000, 2);
|
rs_audio_init(RS_AUDIO_FMT_MONO16, RS_AUDIO_FREQ_16000, 2);
|
||||||
#endif
|
#endif
|
||||||
@ -595,6 +626,37 @@ void GameInit() {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
soundlen = 95000;
|
||||||
|
|
||||||
|
soundbuf_init(&game.sound_huge_explosion, soundlen);
|
||||||
|
|
||||||
|
rs_sgen_init(3, soundlen);
|
||||||
|
|
||||||
|
rs_sgen_func_noise(2, 1000);
|
||||||
|
//rs_sgen_func_phaser(0, 2, 0.9, 15.2 + 1.0*i/SOUND_EXPLOSIONS_COUNT, 6.0, 3.0, 2000.0, 1.73);
|
||||||
|
rs_sgen_func_phaser(0, 2, 0.9, 16.2 + 0.5, 6.0, 3.0, 100.0, 0.53);
|
||||||
|
rs_sgen_func_normalize(0, 1.0);
|
||||||
|
|
||||||
|
rs_sgen_func_lowpass(2, 0, 0.8, 0.0, 10.0);
|
||||||
|
rs_sgen_func_normalize(2, 0.5);
|
||||||
|
|
||||||
|
rs_sgen_wave_out(2);
|
||||||
|
|
||||||
|
memcpy(game.sound_huge_explosion.data, (unsigned char*) rs_sgen_reg.wave_out, soundlen*2);
|
||||||
|
soundbuf_update(&game.sound_huge_explosion);
|
||||||
|
|
||||||
|
rs_sgen_term();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
soundlen = 17888;
|
soundlen = 17888;
|
||||||
|
|
||||||
soundbuf_init(&game.sound_hit, soundlen);
|
soundbuf_init(&game.sound_hit, soundlen);
|
||||||
@ -713,6 +775,7 @@ void GameTerm() {
|
|||||||
texture_free(&game.tex_rocks[i]);
|
texture_free(&game.tex_rocks[i]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
soundbuf_free(&game.sound_huge_explosion);
|
||||||
soundbuf_free(&game.sound_hit);
|
soundbuf_free(&game.sound_hit);
|
||||||
soundbuf_free(&game.sound_music);
|
soundbuf_free(&game.sound_music);
|
||||||
|
|
||||||
@ -763,7 +826,7 @@ void GameKeyDown(int key) {
|
|||||||
|
|
||||||
|
|
||||||
case RS_KEY_SPACE:
|
case RS_KEY_SPACE:
|
||||||
soundbuf_play( &game.sound_turret_shoot, 0 );
|
soundbuf_play( &game.sound_huge_explosion, 0 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef RS_LINUX
|
#ifdef RS_LINUX
|
||||||
|
@ -110,6 +110,7 @@ void soundbuf_stop(rs_soundbuf_t *snd);
|
|||||||
#define OBJ_MINIROCK 4
|
#define OBJ_MINIROCK 4
|
||||||
#define OBJ_TURRET 5
|
#define OBJ_TURRET 5
|
||||||
#define OBJ_RED_BULLET 6
|
#define OBJ_RED_BULLET 6
|
||||||
|
#define OBJ_HUGE_EXPLOSION 7
|
||||||
|
|
||||||
typedef struct game_obj_t {
|
typedef struct game_obj_t {
|
||||||
int obj_type;
|
int obj_type;
|
||||||
@ -148,6 +149,10 @@ void game_obj_remove(int index);
|
|||||||
#define EXPLOSIONS_COUNT 8
|
#define EXPLOSIONS_COUNT 8
|
||||||
#define EXPLOSION_RADIUS 16
|
#define EXPLOSION_RADIUS 16
|
||||||
|
|
||||||
|
#define HUGE_EXPLOSIONS_COUNT 24
|
||||||
|
#define HUGE_EXPLOSION_RADIUS 32
|
||||||
|
|
||||||
|
|
||||||
#define STATUS_MENU 0
|
#define STATUS_MENU 0
|
||||||
#define STATUS_PLAYING 1
|
#define STATUS_PLAYING 1
|
||||||
#define STATUS_PAUSED 2
|
#define STATUS_PAUSED 2
|
||||||
@ -182,6 +187,7 @@ typedef struct rs_game_t {
|
|||||||
rs_texture_t tex_minirocks[MINIROCKS_COUNT];
|
rs_texture_t tex_minirocks[MINIROCKS_COUNT];
|
||||||
|
|
||||||
rs_texture_t tex_explosions[EXPLOSIONS_COUNT];
|
rs_texture_t tex_explosions[EXPLOSIONS_COUNT];
|
||||||
|
rs_texture_t tex_huge_explosions[HUGE_EXPLOSIONS_COUNT];
|
||||||
|
|
||||||
rs_texture_t tex_font[64*FONTS_COUNT];
|
rs_texture_t tex_font[64*FONTS_COUNT];
|
||||||
|
|
||||||
@ -197,6 +203,7 @@ typedef struct rs_game_t {
|
|||||||
|
|
||||||
rs_soundbuf_t sound_explosions[SOUND_EXPLOSIONS_COUNT];
|
rs_soundbuf_t sound_explosions[SOUND_EXPLOSIONS_COUNT];
|
||||||
rs_soundbuf_t sound_hit;
|
rs_soundbuf_t sound_hit;
|
||||||
|
rs_soundbuf_t sound_huge_explosion;
|
||||||
|
|
||||||
rs_soundbuf_t sound_music;
|
rs_soundbuf_t sound_music;
|
||||||
// rs_soundbuf_t sound_music2;
|
// rs_soundbuf_t sound_music2;
|
||||||
|
@ -111,14 +111,10 @@ void game_draw() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
else if (obj->obj_type == OBJ_EXPLOSION) {
|
else if (obj->obj_type == OBJ_EXPLOSION) {
|
||||||
|
|
||||||
// char s[] = "00 ";
|
|
||||||
// s[0] += obj->t / 10;
|
|
||||||
// s[1] += obj->t % 10;
|
|
||||||
// game_textout( obj->x, obj->y, 0, s );
|
|
||||||
|
|
||||||
texture_draw( &game.framebuffer, &game.tex_explosions[ obj->t ], obj->x - obj->radius, obj->y - obj->radius, DRAW_MODE_ALPHA );
|
texture_draw( &game.framebuffer, &game.tex_explosions[ obj->t ], obj->x - obj->radius, obj->y - obj->radius, DRAW_MODE_ALPHA );
|
||||||
|
}
|
||||||
|
else if (obj->obj_type == OBJ_HUGE_EXPLOSION) {
|
||||||
|
texture_draw( &game.framebuffer, &game.tex_huge_explosions[ obj->t ], obj->x - obj->radius, obj->y - obj->radius, DRAW_MODE_ALPHA );
|
||||||
}
|
}
|
||||||
else if (obj->obj_type == OBJ_ROCK) {
|
else if (obj->obj_type == OBJ_ROCK) {
|
||||||
texture_draw( &game.framebuffer, &game.tex_rocks[ obj->tag ], obj->x - obj->radius, obj->y - obj->radius, DRAW_MODE_ALPHA );
|
texture_draw( &game.framebuffer, &game.tex_rocks[ obj->tag ], obj->x - obj->radius, obj->y - obj->radius, DRAW_MODE_ALPHA );
|
||||||
|
@ -406,6 +406,18 @@ void GameProcess() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (obj->obj_type == OBJ_HUGE_EXPLOSION) {
|
||||||
|
|
||||||
|
obj->t++;
|
||||||
|
if (obj->t >= HUGE_EXPLOSIONS_COUNT) {
|
||||||
|
game_obj_remove(i);
|
||||||
|
i--;
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
else if ( (obj->obj_type == OBJ_ROCK) || (obj->obj_type == OBJ_MINIROCK) ) {
|
else if ( (obj->obj_type == OBJ_ROCK) || (obj->obj_type == OBJ_MINIROCK) ) {
|
||||||
|
|
||||||
obj->x -= rock_speed;
|
obj->x -= rock_speed;
|
||||||
@ -443,7 +455,7 @@ void GameProcess() {
|
|||||||
obj->t--;
|
obj->t--;
|
||||||
if (obj->t < 1) {
|
if (obj->t < 1) {
|
||||||
soundbuf_play(&game.sound_turret_shoot, 0);
|
soundbuf_play(&game.sound_turret_shoot, 0);
|
||||||
game_obj_add( game_obj( OBJ_RED_BULLET, 0, 0, 3, obj->x - 30, obj->y, 0, 0) );
|
game_obj_add( game_obj( OBJ_RED_BULLET, 0, 0, 3, obj->x - 5, obj->y, 0, 0) );
|
||||||
|
|
||||||
int c_const = (game.stage_level < 4) ? (10 - 2*game.stage_level) : 3;
|
int c_const = (game.stage_level < 4) ? (10 - 2*game.stage_level) : 3;
|
||||||
int c_var = (game.stage_level < 6) ? (20 - 3*game.stage_level) : 3;
|
int c_var = (game.stage_level < 6) ? (20 - 3*game.stage_level) : 3;
|
||||||
@ -465,8 +477,15 @@ void GameProcess() {
|
|||||||
|
|
||||||
for (i = 0; i < game.objs_count; i++) {
|
for (i = 0; i < game.objs_count; i++) {
|
||||||
if ( IS_BIT_SET( game.objs[i].flags, OBJ_FLAG_DESTROYED ) ) {
|
if ( IS_BIT_SET( game.objs[i].flags, OBJ_FLAG_DESTROYED ) ) {
|
||||||
soundbuf_play( &game.sound_explosions[ rs_rand() % SOUND_EXPLOSIONS_COUNT ], 0 );
|
|
||||||
game_obj_add( game_obj( OBJ_EXPLOSION, 0, 0, EXPLOSION_RADIUS, game.objs[i].x, game.objs[i].y, 0, 0.0 ) );
|
if (game.objs[i].obj_type == OBJ_TURRET) {
|
||||||
|
soundbuf_play( &game.sound_huge_explosion, 0 );
|
||||||
|
game_obj_add( game_obj( OBJ_HUGE_EXPLOSION, 0, 0, HUGE_EXPLOSION_RADIUS, game.objs[i].x, game.objs[i].y, 0, 0.0 ) );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
soundbuf_play( &game.sound_explosions[ rs_rand() % SOUND_EXPLOSIONS_COUNT ], 0 );
|
||||||
|
game_obj_add( game_obj( OBJ_EXPLOSION, 0, 0, EXPLOSION_RADIUS, game.objs[i].x, game.objs[i].y, 0, 0.0 ) );
|
||||||
|
};
|
||||||
game_obj_remove(i);
|
game_obj_remove(i);
|
||||||
i--;
|
i--;
|
||||||
|
|
||||||
|
@ -28,9 +28,8 @@
|
|||||||
//#define L_TECHDEMO_LINE1 "THI5 I5 TECHDEM0` "
|
//#define L_TECHDEMO_LINE1 "THI5 I5 TECHDEM0` "
|
||||||
#define L_TECHDEMO_LINE1 "U5E ARR0W5 T0 M0VE_ <A> T0 5H00T_ <E5C> T0 PAU5E "
|
#define L_TECHDEMO_LINE1 "U5E ARR0W5 T0 M0VE_ <A> T0 5H00T_ <E5C> T0 PAU5E "
|
||||||
|
|
||||||
#define L_GAME_OVER "GAME 0VER"
|
|
||||||
//#define L_LEVEL_PASSED "DEM0=LEVEL PA55ED"
|
|
||||||
#define L_YOUR_SCORE "Y0UR 5C0RE:"
|
#define L_YOUR_SCORE "Y0UR 5C0RE:"
|
||||||
|
#define L_GAME_OVER "GAME 0VER"
|
||||||
|
|
||||||
#define L_PAUSE "PAU5E"
|
#define L_PAUSE "PAU5E"
|
||||||
#define L_RESUME "RE5UME PLAYING"
|
#define L_RESUME "RE5UME PLAYING"
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
//#define L_TECHDEMO_LINE1 "eT0 TEXH0dEMKA` "
|
//#define L_TECHDEMO_LINE1 "eT0 TEXH0dEMKA` "
|
||||||
#define L_TECHDEMO_LINE1 "CTPElKi = dBijEHiE_ <A> = B\\CTPEl_ <E5C> = nAY3A "
|
#define L_TECHDEMO_LINE1 "CTPElKi = dBijEHiE_ <A> = B\\CTPEl_ <E5C> = nAY3A "
|
||||||
|
|
||||||
//#define L_LEVEL_PASSED "dEM0=YP0BEH] nP0^dEH"
|
|
||||||
#define L_YOUR_SCORE "04K0B HAbPAH0:"
|
#define L_YOUR_SCORE "04K0B HAbPAH0:"
|
||||||
#define L_GAME_OVER "igPA 0K0H4EHA"
|
#define L_GAME_OVER "igPA 0K0H4EHA"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user