summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/sfcave-sdl/game.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/noncore/games/sfcave-sdl/game.cpp b/noncore/games/sfcave-sdl/game.cpp
index e41e510..1ee0230 100644
--- a/noncore/games/sfcave-sdl/game.cpp
+++ b/noncore/games/sfcave-sdl/game.cpp
@@ -1,168 +1,172 @@
1#include <stdio.h> 1#include <stdio.h>
2#include <time.h> 2#include <time.h>
3 3
4#include <SDL.h> 4#include <SDL.h>
5#include <SDL_image.h> 5#include <SDL_image.h>
6 6
7#include "font.h" 7#include "font.h"
8 8
9#include "constants.h" 9#include "constants.h"
10#include "game.h" 10#include "game.h"
11#include "player.h" 11#include "player.h"
12#include "random.h" 12#include "random.h"
13#include "sound.h" 13#include "sound.h"
14#include "stringtokenizer.h" 14#include "stringtokenizer.h"
15 15
16#include "sfcave_game.h" 16#include "sfcave_game.h"
17#include "gates_game.h" 17#include "gates_game.h"
18#include "fly_game.h" 18#include "fly_game.h"
19#include "starfield.h" 19#include "starfield.h"
20 20
21Game :: Game( SFCave *p, int w, int h, int diff ) 21Game :: Game( SFCave *p, int w, int h, int diff )
22{ 22{
23 parent = p; 23 parent = p;
24 sHeight = h; 24 sHeight = h;
25 sWidth = w; 25 sWidth = w;
26 difficulty = diff; 26 difficulty = diff;
27 replayIt = 0; 27 replayIt = 0;
28 replay = false; 28 replay = false;
29 terrain = 0; 29 terrain = 0;
30 player = 0; 30 player = 0;
31 thrustChannel = -1; 31 thrustChannel = -1;
32} 32}
33 33
34Game :: ~Game() 34Game :: ~Game()
35{ 35{
36 if ( terrain ) 36 if ( terrain )
37 delete terrain; 37 delete terrain;
38 38
39 if ( player ) 39 if ( player )
40 delete player; 40 delete player;
41 41
42 replayList.clear(); 42 replayList.clear();
43} 43}
44 44
45void Game :: init() 45void Game :: init()
46{ 46{
47 if ( replay ) 47 if ( replay )
48 { 48 {
49 setSeed( currentSeed ); 49 setSeed( currentSeed );
50 replayIt = replayList.begin(); 50 replayIt = replayList.begin();
51 } 51 }
52 else 52 else
53 { 53 {
54 setSeed( -1 ); 54 setSeed( -1 );
55 replayList.clear(); 55 replayList.clear();
56 } 56 }
57 57
58 score = 0; 58 score = 0;
59 nrFrames = 0; 59 nrFrames = 0;
60 press = false; 60 press = false;
61 61
62 // Load highscore 62 // Load highscore
63 string key = getGameName() + "_" + getGameDifficultyText() + "_highscore"; 63 string key = getGameName() + "_" + getGameDifficultyText() + "_highscore";
64 highScore = atoi( parent->loadSetting( key, "0" ).c_str() ); 64 highScore = atoi( parent->loadSetting( key, "0" ).c_str() );
65 65
66 terrain->initTerrain(); 66 terrain->initTerrain();
67 player->init(); 67 player->init();
68} 68}
69 69
70void Game :: handleKeys( SDL_KeyboardEvent &key ) 70void Game :: handleKeys( SDL_KeyboardEvent &key )
71{ 71{
72 if ( !replay && key.keysym.sym == SDLK_SPACE ) 72 if ( !replay &&
73 (key.keysym.sym == SDLK_SPACE ||
74 key.keysym.sym == SDLK_KP_ENTER ||
75 key.keysym.sym == SDLK_RETURN ||
76 key.keysym.sym == SDLK_UP) )
73 { 77 {
74 if ( key.type == SDL_KEYDOWN ) 78 if ( key.type == SDL_KEYDOWN )
75 { 79 {
76 if ( !press ) 80 if ( !press )
77 replayList.push_back( nrFrames ); 81 replayList.push_back( nrFrames );
78 press = true; 82 press = true;
79 } 83 }
80 else 84 else
81 { 85 {
82 if ( press ) 86 if ( press )
83 replayList.push_back( nrFrames ); 87 replayList.push_back( nrFrames );
84 press = false; 88 press = false;
85 89
86 } 90 }
87 } 91 }
88} 92}
89 93
90 94
91 95
92string Game :: getGameDifficultyText() 96string Game :: getGameDifficultyText()
93{ 97{
94 string ret; 98 string ret;
95 99
96 if ( difficulty == MENU_DIFFICULTY_EASY ) 100 if ( difficulty == MENU_DIFFICULTY_EASY )
97 ret = "Easy"; 101 ret = "Easy";
98 else if ( difficulty == MENU_DIFFICULTY_NORMAL ) 102 else if ( difficulty == MENU_DIFFICULTY_NORMAL )
99 ret = "Medium"; 103 ret = "Medium";
100 else if ( difficulty == MENU_DIFFICULTY_HARD ) 104 else if ( difficulty == MENU_DIFFICULTY_HARD )
101 ret = "Hard"; 105 ret = "Hard";
102 else if ( difficulty == MENU_DIFFICULTY_CUSTOM ) 106 else if ( difficulty == MENU_DIFFICULTY_CUSTOM )
103 ret = "Custom"; 107 ret = "Custom";
104 108
105 return ret; 109 return ret;
106} 110}
107 111
108void Game :: setDifficulty( string diff ) 112void Game :: setDifficulty( string diff )
109{ 113{
110 if ( diff == "Easy" ) 114 if ( diff == "Easy" )
111 difficulty = MENU_DIFFICULTY_EASY; 115 difficulty = MENU_DIFFICULTY_EASY;
112 else if ( diff == "Medium" ) 116 else if ( diff == "Medium" )
113 difficulty = MENU_DIFFICULTY_NORMAL; 117 difficulty = MENU_DIFFICULTY_NORMAL;
114 else if ( diff == "Hard" ) 118 else if ( diff == "Hard" )
115 difficulty = MENU_DIFFICULTY_HARD; 119 difficulty = MENU_DIFFICULTY_HARD;
116 else if ( diff == "Custom" ) 120 else if ( diff == "Custom" )
117 difficulty = MENU_DIFFICULTY_CUSTOM; 121 difficulty = MENU_DIFFICULTY_CUSTOM;
118 122
119 init(); 123 init();
120} 124}
121 125
122void Game :: setDifficulty( int diff ) 126void Game :: setDifficulty( int diff )
123{ 127{
124 difficulty = diff; 128 difficulty = diff;
125 init(); 129 init();
126} 130}
127 131
128void Game :: update( int state ) 132void Game :: update( int state )
129{ 133{
130 nrFrames ++; 134 nrFrames ++;
131 135
132 if ( score > highScore ) 136 if ( score > highScore )
133 highScore = score; 137 highScore = score;
134 138
135 139
136 if ( state == STATE_PLAYING ) 140 if ( state == STATE_PLAYING )
137 { 141 {
138 if ( replay ) 142 if ( replay )
139 { 143 {
140 while( replayIt != replayList.end() && (*replayIt) == nrFrames-1 ) 144 while( replayIt != replayList.end() && (*replayIt) == nrFrames-1 )
141 { 145 {
142 press = !press; 146 press = !press;
143 replayIt ++; 147 replayIt ++;
144 } 148 }
145 } 149 }
146 150
147 if ( press && thrustChannel == -1 ) 151 if ( press && thrustChannel == -1 )
148 thrustChannel = SoundHandler :: playSound( SND_THRUST, -1, -1, false ); 152 thrustChannel = SoundHandler :: playSound( SND_THRUST, -1, -1, false );
149 153
150 if ( !press &&thrustChannel != -1 ) 154 if ( !press &&thrustChannel != -1 )
151 { 155 {
152 SoundHandler :: stopSound( thrustChannel, true, 300 ); 156 SoundHandler :: stopSound( thrustChannel, true, 300 );
153 thrustChannel = -1; 157 thrustChannel = -1;
154 } 158 }
155 } 159 }
156 160
157 if ( state == STATE_CRASHING || state == STATE_CRASHED ) 161 if ( state == STATE_CRASHING || state == STATE_CRASHED )
158 { 162 {
159 // fade out any trail marks remainin 163 // fade out any trail marks remainin
160 if ( player->updateCrashing() ) 164 if ( player->updateCrashing() )
161 parent->changeState( STATE_CRASHED ); 165 parent->changeState( STATE_CRASHED );
162 166
163 } 167 }
164} 168}
165 169
166void Game :: preDraw( SDL_Surface *screen ) 170void Game :: preDraw( SDL_Surface *screen )
167{ 171{
168} 172}