Mercurial > rinkhals
comparison gamelib/engine.py @ 233:d3d5352f5853
Twek speed loop. Document animation assumptions
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 05 Sep 2009 09:00:12 +0000 |
parents | 96d440bebdaa |
children | 4a87bfa5cc63 |
comparison
equal
deleted
inserted
replaced
232:0bd214cf9018 | 233:d3d5352f5853 |
---|---|
150 self.game.gameboard.start_night() | 150 self.game.gameboard.start_night() |
151 | 151 |
152 sound.play_sound("nightfall.ogg") | 152 sound.play_sound("nightfall.ogg") |
153 # Add a timer to the event queue | 153 # Add a timer to the event queue |
154 self.cycle_count = 0 | 154 self.cycle_count = 0 |
155 self.cycle_time = 200 | 155 self.cycle_time = SLOW_ANIM_SPEED |
156 pygame.time.set_timer(MOVE_FOX_ID, self.cycle_time) | 156 pygame.time.set_timer(MOVE_FOX_ID, 4*self.cycle_time) |
157 pygame.time.set_timer(ANIM_ID, 50) | 157 pygame.time.set_timer(ANIM_ID, self.cycle_time) |
158 self.game.gameboard.spawn_foxes() | 158 self.game.gameboard.spawn_foxes() |
159 sound.background_music("nighttime.ogg") | 159 sound.background_music("nighttime.ogg") |
160 | 160 |
161 self.game.gameboard.lay_eggs() | 161 self.game.gameboard.lay_eggs() |
162 | 162 |
164 if events_equal(e, START_DAY): | 164 if events_equal(e, START_DAY): |
165 if self.game.gameboard.is_game_over(): | 165 if self.game.gameboard.is_game_over(): |
166 return GameOver(self.game) | 166 return GameOver(self.game) |
167 return DayState(self.game) | 167 return DayState(self.game) |
168 elif e.type is KEYDOWN and e.key == K_d: | 168 elif e.type is KEYDOWN and e.key == K_d: |
169 if self.cycle_time > 100: | 169 if self.cycle_time > FAST_ANIM_SPEED: |
170 self.cycle_time = 50 | 170 self.cycle_time = FAST_ANIM_SPEED |
171 pygame.time.set_timer(ANIM_ID, 25) | |
172 else: | 171 else: |
173 self.cycle_time = 200 | 172 self.cycle_time = SLOW_ANIM_SPEED |
174 pygame.time.set_timer(ANIM_ID, 50) | 173 pygame.time.set_timer(ANIM_ID, self.cycle_time) |
175 pygame.time.set_timer(MOVE_FOX_ID, self.cycle_time) | 174 pygame.time.set_timer(MOVE_FOX_ID, 4*self.cycle_time) |
176 elif e.type is KEYDOWN and e.key == K_ESCAPE: | 175 elif e.type is KEYDOWN and e.key == K_ESCAPE: |
177 self.game.gameboard.set_cursor() | 176 self.game.gameboard.set_cursor() |
178 return GameOver(self.game) | 177 return GameOver(self.game) |
179 elif e.type is ANIM_ID: | 178 elif e.type is ANIM_ID: |
180 self.game.gameboard.run_animations() | 179 self.game.gameboard.run_animations() |
181 elif e.type is MOVE_FOX_ID: | 180 elif e.type is MOVE_FOX_ID: |
181 # Timer aren't nessecairly ordered, so we make sure | |
182 # we don't get a ANIM event until at least cycle after this | |
183 pygame.time.set_timer(ANIM_ID, self.cycle_time) | |
182 self.cycle_count += 1 | 184 self.cycle_count += 1 |
183 if self.cycle_count > constants.NIGHT_LENGTH: | 185 if self.cycle_count > constants.NIGHT_LENGTH: |
184 return pygame.event.post(START_DAY) | 186 return pygame.event.post(START_DAY) |
185 if self.game.gameboard.move_foxes(): | 187 if self.game.gameboard.move_foxes(): |
186 # All foxes are gone/safe, so dawn happens | 188 # All foxes are gone/safe, so dawn happens |
238 GO_HELP_SCREEN = pygame.event.Event(USEREVENT, name="GO_HELP_SCREEN") | 240 GO_HELP_SCREEN = pygame.event.Event(USEREVENT, name="GO_HELP_SCREEN") |
239 MOVE_FOX_ID = USEREVENT + 1 | 241 MOVE_FOX_ID = USEREVENT + 1 |
240 ANIM_ID = USEREVENT + 6 | 242 ANIM_ID = USEREVENT + 6 |
241 MOVE_FOXES = pygame.event.Event(MOVE_FOX_ID, name="MOVE_FOXES") | 243 MOVE_FOXES = pygame.event.Event(MOVE_FOX_ID, name="MOVE_FOXES") |
242 QUIT = pygame.event.Event(QUIT) | 244 QUIT = pygame.event.Event(QUIT) |
245 | |
246 # Due to the way pgu's loop timing works, these will only get proceesed | |
247 # at intervals of 10ms, so there's no point in them not being multiples of 10 | |
248 FAST_ANIM_SPEED=20 | |
249 SLOW_ANIM_SPEED=50 |