X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=3f95c2b01bae1a95797b78d3773e667595ed9bb6;hb=621b6a2c4781c9c3e2f5849f9c184a906e0ce5b6;hp=7c6cf1599ad4df135e9f140fce33aecc87a025d8;hpb=36357e8399d0a42ac45a1cd096aee24a9008b5f5;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 7c6cf159..3f95c2b0 100644 --- a/src/game.c +++ b/src/game.c @@ -11,13 +11,12 @@ * game.c * ***********************************************************/ +#include "libgame/libgame.h" + #include "game.h" -#include "misc.h" #include "tools.h" #include "screens.h" -#include "sound.h" #include "init.h" -#include "buttons.h" #include "files.h" #include "tape.h" #include "joystick.h" @@ -167,15 +166,18 @@ static unsigned int getStateCheckSum(int counter) void GetPlayerConfig() { - if (sound_status == SOUND_OFF) + if (!audio.sound_available) setup.sound = FALSE; - if (!sound_loops_allowed) + if (!audio.loops_available) { setup.sound_loops = FALSE; setup.sound_music = FALSE; } + if (!video.fullscreen_available) + setup.fullscreen = FALSE; + setup.sound_simple = setup.sound; InitJoysticks(); @@ -502,7 +504,7 @@ void InitGame() network_player_action_received = FALSE; -#ifndef MSDOS +#if defined(PLATFORM_UNIX) /* initial null action */ if (network_playing) SendToServer_MovePlayer(MV_NO_MOVING); @@ -510,7 +512,6 @@ void InitGame() ZX = ZY = -1; - game.yam_content_nr = 0; FrameCounter = 0; TimeFrames = 0; TimePlayed = 0; @@ -523,6 +524,8 @@ void InitGame() ScrollStepSize = 0; /* will be correctly initialized by ScrollScreen() */ AllPlayersGone = FALSE; + + game.yam_content_nr = 0; game.magic_wall_active = FALSE; game.magic_wall_time_left = 0; game.light_time_left = 0; @@ -709,8 +712,7 @@ void InitGame() DrawAllPlayers(); FadeToFront(); - /* after drawing the level, corect some elements */ - + /* after drawing the level, correct some elements */ if (game.timegate_time_left == 0) CloseAllOpenTimegates(); @@ -728,7 +730,7 @@ void InitGame() int2str(level_nr, 2), FS_SMALL, FC_YELLOW); else { - DrawTextExt(drawto, gc, DX + XX_EMERALDS, DY + YY_EMERALDS, + DrawTextExt(drawto, DX + XX_EMERALDS, DY + YY_EMERALDS, int2str(level_nr, 3), FS_SMALL, FC_SPECIAL3); BlitBitmap(drawto, drawto, DX + XX_EMERALDS, DY + YY_EMERALDS + 1, @@ -4240,7 +4242,7 @@ void GameActions() #endif */ -#ifndef MSDOS +#if defined(PLATFORM_UNIX) /* last chance to get network player actions without main loop delay */ HandleNetworking(); #endif @@ -4277,7 +4279,7 @@ void GameActions() stored_player[i].effective_action = stored_player[i].action; } -#ifndef MSDOS +#if defined(PLATFORM_UNIX) if (network_playing) SendToServer_MovePlayer(summarized_player_action); #endif @@ -4560,6 +4562,25 @@ void GameActions() } DrawAllPlayers(); + + if (options.debug) /* calculate frames per second */ + { + static unsigned long fps_counter = 0; + static int fps_frames = 0; + unsigned long fps_delay_ms = Counter() - fps_counter; + + fps_frames++; + + if (fps_delay_ms >= 500) /* calculate fps every 0.5 seconds */ + { + global.frames_per_second = 1000 * (float)fps_frames / fps_delay_ms; + + fps_frames = 0; + fps_counter = Counter(); + } + + redraw_mask |= REDRAW_FPS; + } } static boolean AllPlayersInSight(struct PlayerInfo *player, int x, int y) @@ -5381,12 +5402,10 @@ int DigField(struct PlayerInfo *player, RemoveField(x, y); player->key[key_nr] = TRUE; RaiseScoreElement(EL_SCHLUESSEL); - DrawMiniGraphicExt(drawto, gc, - DX_KEYS+key_nr*MINI_TILEX, DY_KEYS, - GFX_SCHLUESSEL1+key_nr); - DrawMiniGraphicExt(window, gc, - DX_KEYS+key_nr*MINI_TILEX, DY_KEYS, - GFX_SCHLUESSEL1+key_nr); + DrawMiniGraphicExt(drawto, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS, + GFX_SCHLUESSEL1 + key_nr); + DrawMiniGraphicExt(window, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS, + GFX_SCHLUESSEL1 + key_nr); PlaySoundLevel(x, y, SND_PONG); break; } @@ -5401,12 +5420,10 @@ int DigField(struct PlayerInfo *player, RemoveField(x, y); player->key[key_nr] = TRUE; RaiseScoreElement(EL_SCHLUESSEL); - DrawMiniGraphicExt(drawto, gc, - DX_KEYS+key_nr*MINI_TILEX, DY_KEYS, - GFX_SCHLUESSEL1+key_nr); - DrawMiniGraphicExt(window, gc, - DX_KEYS+key_nr*MINI_TILEX, DY_KEYS, - GFX_SCHLUESSEL1+key_nr); + DrawMiniGraphicExt(drawto, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS, + GFX_SCHLUESSEL1 + key_nr); + DrawMiniGraphicExt(window, DX_KEYS + key_nr * MINI_TILEX, DY_KEYS, + GFX_SCHLUESSEL1 + key_nr); PlaySoundLevel(x, y, SND_PONG); break; } @@ -5928,7 +5945,7 @@ void PlaySoundLevel(int x, int y, int sound_nr) volume = PSND_MAX_VOLUME; -#ifndef MSDOS +#if !defined(PLATFORM_MSDOS) stereo = (sx - SCR_FIELDX/2) * 12; #else stereo = PSND_MIDDLE + (2 * sx - (SCR_FIELDX - 1)) * 5; @@ -6162,7 +6179,7 @@ static void HandleGameButtons(struct GadgetInfo *gi) Request("Do you really want to quit the game ?", REQ_ASK | REQ_STAY_CLOSED)) { -#ifndef MSDOS +#if defined(PLATFORM_UNIX) if (options.network) SendToServer_StopPlaying(); else @@ -6179,7 +6196,7 @@ static void HandleGameButtons(struct GadgetInfo *gi) case GAME_CTRL_ID_PAUSE: if (options.network) { -#ifndef MSDOS +#if defined(PLATFORM_UNIX) if (tape.pausing) SendToServer_ContinuePlaying(); else @@ -6193,7 +6210,7 @@ static void HandleGameButtons(struct GadgetInfo *gi) case GAME_CTRL_ID_PLAY: if (tape.pausing) { -#ifndef MSDOS +#if defined(PLATFORM_UNIX) if (options.network) SendToServer_ContinuePlaying(); else @@ -6211,7 +6228,7 @@ static void HandleGameButtons(struct GadgetInfo *gi) setup.sound_music = FALSE; FadeSound(background_loop[level_nr % num_bg_loops]); } - else if (sound_loops_allowed) + else if (audio.loops_available) { setup.sound = setup.sound_music = TRUE; PlaySoundLoop(background_loop[level_nr % num_bg_loops]); @@ -6221,14 +6238,14 @@ static void HandleGameButtons(struct GadgetInfo *gi) case SOUND_CTRL_ID_LOOPS: if (setup.sound_loops) setup.sound_loops = FALSE; - else if (sound_loops_allowed) + else if (audio.loops_available) setup.sound = setup.sound_loops = TRUE; break; case SOUND_CTRL_ID_SIMPLE: if (setup.sound_simple) setup.sound_simple = FALSE; - else if (sound_status==SOUND_AVAILABLE) + else if (audio.sound_available) setup.sound = setup.sound_simple = TRUE; break;