Heliothryx game update

- added pause menu (Esc)
- lowest frame rate limit decreased downto 5 fps



git-svn-id: svn://kolibrios.org@5310 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
alpine 2014-12-31 00:32:03 +00:00
parent 225d44665e
commit cd3b533c6b
8 changed files with 78 additions and 23 deletions

View File

@ -250,7 +250,7 @@ void kol_main()
}; };
kol_sleep(wait_time); kol_sleep(wait_time);
if (draw_dt > 10) { if (draw_dt > 19) {
low_performance_counter++; low_performance_counter++;
} }
else { else {

View File

@ -204,7 +204,7 @@ void soundbuf_fill(rs_soundbuf_t *snd, int amp, int freq_div) {
void soundbuf_sin(rs_soundbuf_t *snd, float freq) { void soundbuf_sin(rs_soundbuf_t *snd, float freq) {
int i; int i;
int amp = 29000; int amp = 19000;
for (i = 0; i < snd->length_samples; i++) { for (i = 0; i < snd->length_samples; i++) {
snd->data[i] = ( 1.0 - 1.0*i/snd->length_samples ) * sin(freq*i) * amp; snd->data[i] = ( 1.0 - 1.0*i/snd->length_samples ) * sin(freq*i) * amp;
}; };
@ -213,7 +213,7 @@ void soundbuf_sin(rs_soundbuf_t *snd, float freq) {
void soundbuf_sin_fade(rs_soundbuf_t *snd, float freq) { void soundbuf_sin_fade(rs_soundbuf_t *snd, float freq) {
int i; int i;
int amp = 29000; int amp = 19000;
for (i = 0; i < snd->length_samples; i++) { for (i = 0; i < snd->length_samples; i++) {
snd->data[i] = ( 1.0 - 1.0*i/snd->length_samples ) * sin( ( (1.0 - 0.48*i/snd->length_samples) * freq ) *i) * amp; snd->data[i] = ( 1.0 - 1.0*i/snd->length_samples ) * sin( ( (1.0 - 0.48*i/snd->length_samples) * freq ) *i) * amp;
}; };
@ -517,9 +517,32 @@ void GameInit() {
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
soundbuf_init(&game.sound_test1, 2048); soundbuf_init(&game.sound_test1, 1536);
// soundbuf_fill(&game.sound_test1, 2, 50); // soundbuf_fill(&game.sound_test1, 2, 50);
soundbuf_sin_fade(&game.sound_test1, 0.7); // soundbuf_sin_fade(&game.sound_test1, 0.7);
rs_sgen_init(2, game.sound_test1.length_samples);
rs_sgen_func_pm(1, 2900.0, 1.70, 65.0, 17.0, 1.0);
rs_sgen_func_normalize(1, 0.6);
// rs_sgen_func_lowpass(0, 1, 1.0, 0.0, 4.0);
rs_sgen_func_highpass(0, 1, 1.0, 0.0, 3.0);
rs_sgen_wave_out(0);
memcpy(game.sound_test1.data, (unsigned char*) rs_sgen_reg.wave_out, game.sound_test1.length_samples*2 );
rs_sgen_term();
soundbuf_update(&game.sound_test1);
soundbuf_init(&game.sound_test2, 1024); soundbuf_init(&game.sound_test2, 1024);
//soundbuf_fill(&game.sound_test2, 8, 40); //soundbuf_fill(&game.sound_test2, 8, 40);
@ -549,7 +572,7 @@ void GameInit() {
rs_sgen_func_normalize(0, 1.0); rs_sgen_func_normalize(0, 1.0);
rs_sgen_func_lowpass(2, 0, 0.6, 0.0, 20.0); rs_sgen_func_lowpass(2, 0, 0.6, 0.0, 20.0);
rs_sgen_func_normalize(2, 0.7); rs_sgen_func_normalize(2, 0.5);
rs_sgen_wave_out(2); rs_sgen_wave_out(2);
@ -571,7 +594,7 @@ void GameInit() {
rs_sgen_func_normalize(0, 1.0); rs_sgen_func_normalize(0, 1.0);
rs_sgen_func_highpass(2, 0, 1.0, 0.3, 20.0); rs_sgen_func_highpass(2, 0, 1.0, 0.3, 20.0);
rs_sgen_func_normalize(2, 0.6); rs_sgen_func_normalize(2, 0.5);
rs_sgen_wave_out(2); rs_sgen_wave_out(2);
@ -722,13 +745,14 @@ void GameKeyDown(int key) {
// soundbuf_play( &game.sound_music, SND_MODE_LOOP ); // soundbuf_play( &game.sound_music, SND_MODE_LOOP );
// break; // break;
// #ifdef RS_LINUX #ifdef RS_LINUX
//
// case RS_KEY_Z: case RS_KEY_Z:
// soundbuf_play( &game.sound_music2, 0 ); soundbuf_stop( &game.sound_music );
// break; soundbuf_play( &game.sound_music2, 0 );
// break;
// #endif
#endif
@ -771,7 +795,13 @@ void GameKeyDown(int key) {
menu_cursor_click(); menu_cursor_click();
break; break;
case RS_KEY_ESCAPE: case RS_KEY_ESCAPE:
menu_open(0); if (game.menu_index != MENU_PAUSE) {
menu_open(0);
}
else {
game.status = STATUS_PLAYING;
return;
};
break; break;
}; };
@ -782,7 +812,7 @@ void GameKeyDown(int key) {
case RS_KEY_ESCAPE: case RS_KEY_ESCAPE:
game.status = STATUS_MENU; game.status = STATUS_MENU;
menu_open(0); menu_open(MENU_PAUSE);
break; break;
case RS_KEY_SPACE: case RS_KEY_SPACE:

View File

@ -95,7 +95,6 @@ void player_hit() {
if (game.health < 1) { if (game.health < 1) {
game.status = STATUS_MENU; game.status = STATUS_MENU;
soundbuf_play( &game.sound_music, SND_MODE_LOOP );
menu_open( MENU_GAME_OVER ); menu_open( MENU_GAME_OVER );
}; };
@ -276,7 +275,6 @@ void GameProcess() {
else if (game.stage == 10) { else if (game.stage == 10) {
game.status = STATUS_MENU; game.status = STATUS_MENU;
soundbuf_play( &game.sound_music, SND_MODE_LOOP );
menu_open( MENU_LEVEL_PASSED ); menu_open( MENU_LEVEL_PASSED );
level_passed_score_str[1] = '0' + (game.score / 100) % 10; level_passed_score_str[1] = '0' + (game.score / 100) % 10;
@ -419,7 +417,7 @@ void GameProcess() {
game_draw(); game_draw();
if (game.status == STATUS_MENU) { if ( (game.status == STATUS_MENU) && (game.menu_index != MENU_PAUSE) ) {
soundbuf_loop_check( &game.sound_music ); soundbuf_loop_check( &game.sound_music );
}; };

View File

@ -10,7 +10,7 @@ PRSFUNC0 menu_actions[] = {
/* a */ &menu_action_start, /* a */ &menu_action_start,
/* b */ &menu_action_exit, /* b */ &menu_action_exit,
/* c */ &menu_action_change_window_scale, /* c */ &menu_action_change_window_scale,
// /* d */ &menu_action_ /* d */ &menu_action_resume
}; };
char window_scale_str[] = "c< 2X >"; char window_scale_str[] = "c< 2X >";
@ -67,6 +67,13 @@ char* menu_game_over_titles[] = {
0 0
}; };
char* menu_pause_titles[] = {
" "L_PAUSE,
" ",
"d"L_RESUME,
"0"L_EXIT_TO_MAIN_MENU,
0
};
char **menu_titles[] = { char **menu_titles[] = {
@ -75,6 +82,7 @@ char **menu_titles[] = {
/* 2 */ menu_about_titles, /* 2 */ menu_about_titles,
/* 3 */ menu_level_passed_titles, /* 3 */ menu_level_passed_titles,
/* 4 */ menu_game_over_titles, /* 4 */ menu_game_over_titles,
/* 5 */ menu_pause_titles,
0 0
}; };
@ -104,6 +112,10 @@ void menu_cursor_up() {
}; };
void menu_open(int i) { void menu_open(int i) {
if ( (game.menu_index == MENU_PAUSE) && (i != MENU_PAUSE) ){
soundbuf_play( &game.sound_music, SND_MODE_LOOP );
};
game.menu_index = i; game.menu_index = i;
@ -176,3 +188,9 @@ void menu_action_exit() {
void menu_action_change_window_scale() { void menu_action_change_window_scale() {
game_change_window_scale(1); game_change_window_scale(1);
}; };
void menu_action_resume() {
game.status = STATUS_PLAYING;
};

View File

@ -5,13 +5,14 @@
#include "rs/rsplatform.h" #include "rs/rsplatform.h"
#define MENUS_COUNT 5 #define MENUS_COUNT 6
#define MENU_MAIN 0 #define MENU_MAIN 0
#define MENU_SETTINGS 1 #define MENU_SETTINGS 1
#define MENU_ABOUT 2 #define MENU_ABOUT 2
#define MENU_LEVEL_PASSED 3 #define MENU_LEVEL_PASSED 3
#define MENU_GAME_OVER 4 #define MENU_GAME_OVER 4
#define MENU_PAUSE 5
#define MENU_ITEM_WINDOW_SCALE 1 #define MENU_ITEM_WINDOW_SCALE 1
@ -32,5 +33,6 @@ void menu_cursor_click();
void menu_action_start(); void menu_action_start();
void menu_action_exit(); void menu_action_exit();
void menu_action_change_window_scale(); void menu_action_change_window_scale();
void menu_action_resume();
#endif #endif

View File

@ -2,7 +2,7 @@
#define RS_STRINGS_H #define RS_STRINGS_H
#ifndef RS_KOS #ifndef RS_KOS
#include "strings_en.h" #include "strings_ru.h"
#else #else
//#include "../lang.h" //#include "../lang.h"

View File

@ -28,9 +28,12 @@
//#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 EXIT` " #define L_TECHDEMO_LINE1 "U5E ARR0W5 T0 M0VE_ <A> T0 5H00T_ <E5C> T0 EXIT` "
#define L_GAME_OVER "GAME 0VER"
#define L_LEVEL_PASSED "DEM0=LEVEL PA55ED" #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_RESUME "RE5UME PLAYING"
#define L_EXIT_TO_MAIN_MENU "EXIT T0 MAIN MENU"
#endif #endif

View File

@ -32,4 +32,8 @@
#define L_YOUR_SCORE "04K0B HAbPAH0:" #define L_YOUR_SCORE "04K0B HAbPAH0:"
#define L_GAME_OVER "igPA 0K0H4EHA" #define L_GAME_OVER "igPA 0K0H4EHA"
#define L_PAUSE "nAY3A"
#define L_RESUME "nP0d0ljiT]"
#define L_EXIT_TO_MAIN_MENU "B\\^Ti B glABH0E MEHk"
#endif #endif