idle
This commit is contained in:
parent
c84db0d152
commit
6510026050
93
NS.py
93
NS.py
|
@ -56,6 +56,7 @@ class NS(Game, Animation):
|
||||||
LENGTH = 150
|
LENGTH = 150
|
||||||
FRONT = 300
|
FRONT = 300
|
||||||
STEP = .4
|
STEP = .4
|
||||||
|
IDLE_TIMEOUT = 60000 * 5
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Game.__init__(self)
|
Game.__init__(self)
|
||||||
|
@ -84,6 +85,7 @@ class NS(Game, Animation):
|
||||||
sfx[basename(path.split(".")[0])] = SoundEffect(self, path)
|
sfx[basename(path.split(".")[0])] = SoundEffect(self, path)
|
||||||
|
|
||||||
def reset(self, leave_wipe_running=False):
|
def reset(self, leave_wipe_running=False):
|
||||||
|
self.idle_elapsed = 0
|
||||||
self.suppressing_input = False
|
self.suppressing_input = False
|
||||||
self.title.reset()
|
self.title.reset()
|
||||||
if not leave_wipe_running:
|
if not leave_wipe_running:
|
||||||
|
@ -106,6 +108,7 @@ class NS(Game, Animation):
|
||||||
# if self.last_press <= get_ticks() - int(self.get_configuration("input", "buffer")):
|
# if self.last_press <= get_ticks() - int(self.get_configuration("input", "buffer")):
|
||||||
pressed = True if event.type == KEYDOWN else False
|
pressed = True if event.type == KEYDOWN else False
|
||||||
lights = self.platform.lights
|
lights = self.platform.lights
|
||||||
|
self.idle_elapsed = 0
|
||||||
if event.key in (K_UP, K_o):
|
if event.key in (K_UP, K_o):
|
||||||
lights[NS.LNW].pressed = pressed
|
lights[NS.LNW].pressed = pressed
|
||||||
elif event.key in (K_RIGHT, K_p):
|
elif event.key in (K_RIGHT, K_p):
|
||||||
|
@ -131,6 +134,9 @@ class NS(Game, Animation):
|
||||||
self.chemtrails.update()
|
self.chemtrails.update()
|
||||||
self.boss.update_dialogue()
|
self.boss.update_dialogue()
|
||||||
self.wipe.update()
|
self.wipe.update()
|
||||||
|
self.idle_elapsed += self.time_filter.get_last_frame_duration()
|
||||||
|
if self.idle_elapsed >= self.IDLE_TIMEOUT:
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
|
||||||
class Title(GameChild):
|
class Title(GameChild):
|
||||||
|
@ -245,14 +251,22 @@ class Dialogue(Animation):
|
||||||
self.name_box = Sprite(self)
|
self.name_box = Sprite(self)
|
||||||
self.name_box.add_frame(frame)
|
self.name_box.add_frame(frame)
|
||||||
self.name_box.location.bottomleft = self.avatar_box.location.bottomright
|
self.name_box.location.bottomleft = self.avatar_box.location.bottomright
|
||||||
|
self.speech_channel = None
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
|
self.stop_speech()
|
||||||
self.halt()
|
self.halt()
|
||||||
self.deactivate()
|
self.deactivate()
|
||||||
self.first_pressed = False
|
self.first_pressed = False
|
||||||
self.first_press_elapsed = 0
|
self.first_press_elapsed = 0
|
||||||
|
|
||||||
|
def stop_speech(self):
|
||||||
|
if self.speech_channel is not None:
|
||||||
|
self.speech_channel.stop()
|
||||||
|
self.speech_channel = None
|
||||||
|
|
||||||
def deactivate(self):
|
def deactivate(self):
|
||||||
|
self.stop_speech()
|
||||||
self.active = False
|
self.active = False
|
||||||
|
|
||||||
def activate(self):
|
def activate(self):
|
||||||
|
@ -281,7 +295,7 @@ class Dialogue(Animation):
|
||||||
self.show_all()
|
self.show_all()
|
||||||
|
|
||||||
def show_all(self):
|
def show_all(self):
|
||||||
self.speech_channel.stop()
|
self.stop_speech()
|
||||||
self.text_index = len(self.full_text)
|
self.text_index = len(self.full_text)
|
||||||
self.halt()
|
self.halt()
|
||||||
|
|
||||||
|
@ -843,6 +857,7 @@ class Chemtrails(Sprite):
|
||||||
boss.health.decrease(4)
|
boss.health.decrease(4)
|
||||||
self.queue_index += 1
|
self.queue_index += 1
|
||||||
boss.last_attack = self.orientation
|
boss.last_attack = self.orientation
|
||||||
|
boss.sword.block()
|
||||||
if self.queue_index == len(queue):
|
if self.queue_index == len(queue):
|
||||||
self.timer.reset()
|
self.timer.reset()
|
||||||
if not boss.is_playing(boss.show_end_dialogue):
|
if not boss.is_playing(boss.show_end_dialogue):
|
||||||
|
@ -1221,6 +1236,7 @@ class Boss(Animation):
|
||||||
break
|
break
|
||||||
self.unbrandished = copy(self.queue)
|
self.unbrandished = copy(self.queue)
|
||||||
self.brandish_complete = False
|
self.brandish_complete = False
|
||||||
|
self.sword.reset()
|
||||||
self.sword.play(self.sword.brandish, play_once=True)
|
self.sword.play(self.sword.brandish, play_once=True)
|
||||||
self.get_game().chemtrails.challenge()
|
self.get_game().chemtrails.challenge()
|
||||||
|
|
||||||
|
@ -1245,9 +1261,7 @@ class Boss(Animation):
|
||||||
elif self.level_index == 2:
|
elif self.level_index == 2:
|
||||||
self.spoopy.set_frameset(0)
|
self.spoopy.set_frameset(0)
|
||||||
self.player_defeated = not win
|
self.player_defeated = not win
|
||||||
self.kills += 1
|
self.kills += not win
|
||||||
if self.kills >= 3:
|
|
||||||
self.get_game().wipe.start(self.transition_to_title)
|
|
||||||
self.play(self.show_end_dialogue, delay=3000, play_once=True)
|
self.play(self.show_end_dialogue, delay=3000, play_once=True)
|
||||||
|
|
||||||
def show_end_dialogue(self):
|
def show_end_dialogue(self):
|
||||||
|
@ -1272,7 +1286,7 @@ class Boss(Animation):
|
||||||
|
|
||||||
def transition_to_battle(self):
|
def transition_to_battle(self):
|
||||||
index = self.level_index + (not self.player_defeated)
|
index = self.level_index + (not self.player_defeated)
|
||||||
if index < 3:
|
if self.kills < 3 and index < 3:
|
||||||
self.start_level(index)
|
self.start_level(index)
|
||||||
else:
|
else:
|
||||||
self.get_game().reset(True)
|
self.get_game().reset(True)
|
||||||
|
@ -1321,63 +1335,80 @@ class Boss(Animation):
|
||||||
self.advance_prompt.update()
|
self.advance_prompt.update()
|
||||||
|
|
||||||
|
|
||||||
class Sword(Sprite):
|
class Sword(Animation):
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
Sprite.__init__(self, parent)
|
Animation.__init__(self, parent)
|
||||||
image = load(self.get_resource("Sword.png")).convert_alpha()
|
image = load(self.get_resource("Sword.png")).convert_alpha()
|
||||||
self.add_frame(image)
|
sprites = self.sprites = []
|
||||||
for angle in 270, 315, 45:
|
for _ in xrange(6):
|
||||||
self.add_frame(rotate(image, angle))
|
sprite = Sprite(self)
|
||||||
self.add_frameset([0], name="vertical")
|
sprite.add_frame(image)
|
||||||
self.add_frameset([1], name="horizontal")
|
for angle in 270, 315, 45:
|
||||||
self.add_frameset([2], name="rdiagonal")
|
sprite.add_frame(rotate(image, angle))
|
||||||
self.add_frameset([3], name="ldiagonal")
|
sprite.add_frameset([0], name="vertical")
|
||||||
self.set_frameset("vertical")
|
sprite.add_frameset([1], name="horizontal")
|
||||||
self.location.center = self.get_display_surface().get_rect().center
|
sprite.add_frameset([2], name="rdiagonal")
|
||||||
|
sprite.add_frameset([3], name="ldiagonal")
|
||||||
|
sprite.set_frameset("vertical")
|
||||||
|
sprite.location.center = self.get_display_surface().get_rect().center
|
||||||
|
sprites.append(sprite)
|
||||||
self.register(self.brandish, self.lower)
|
self.register(self.brandish, self.lower)
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.halt(self.brandish)
|
self.halt(self.brandish)
|
||||||
self.halt(self.lower)
|
self.halt(self.lower)
|
||||||
self.hide()
|
self.next_index = 0
|
||||||
|
for sprite in self.sprites:
|
||||||
|
sprite.hide()
|
||||||
|
|
||||||
def brandish(self):
|
def brandish(self):
|
||||||
self.unhide()
|
|
||||||
position = self.parent.unbrandished.pop(0)
|
position = self.parent.unbrandished.pop(0)
|
||||||
|
sprite = self.sprites[self.next_index]
|
||||||
|
self.next_index += 1
|
||||||
|
sprite.unhide()
|
||||||
dsr = self.get_display_surface().get_rect()
|
dsr = self.get_display_surface().get_rect()
|
||||||
if position in (NS.W, NS.E):
|
if position in (NS.W, NS.E):
|
||||||
self.set_frameset("vertical")
|
sprite.set_frameset("vertical")
|
||||||
self.location.centery = dsr.centery - 100
|
sprite.location.centery = dsr.centery - 100
|
||||||
if position == NS.W:
|
if position == NS.W:
|
||||||
self.location.centerx = dsr.centerx - 100
|
sprite.location.centerx = dsr.centerx - 100
|
||||||
else:
|
else:
|
||||||
self.location.centerx = dsr.centerx + 100
|
sprite.location.centerx = dsr.centerx + 100
|
||||||
elif position in (NS.N, NS.S):
|
elif position in (NS.N, NS.S):
|
||||||
self.set_frameset("horizontal")
|
sprite.set_frameset("horizontal")
|
||||||
self.location.centerx = dsr.centerx
|
sprite.location.centerx = dsr.centerx
|
||||||
if position == NS.N:
|
if position == NS.N:
|
||||||
self.location.centery = dsr.centery - 200
|
sprite.location.centery = dsr.centery - 200
|
||||||
else:
|
else:
|
||||||
self.location.centery = dsr.centery
|
sprite.location.centery = dsr.centery
|
||||||
else:
|
else:
|
||||||
if position == NS.NW:
|
if position == NS.NW:
|
||||||
self.set_frameset("ldiagonal")
|
sprite.set_frameset("ldiagonal")
|
||||||
else:
|
else:
|
||||||
self.set_frameset("rdiagonal")
|
sprite.set_frameset("rdiagonal")
|
||||||
self.location.center = dsr.centerx, dsr.centery - 100
|
sprite.location.center = dsr.centerx, dsr.centery - 100
|
||||||
self.get_game().sfx["brandish"].play()
|
self.get_game().sfx["brandish"].play()
|
||||||
self.play(self.lower, delay=400, play_once=True)
|
self.play(self.lower, delay=400, play_once=True)
|
||||||
if len(self.parent.unbrandished) > 0:
|
if len(self.parent.unbrandished) > 0:
|
||||||
self.play(self.brandish, delay=600, play_once=True)
|
self.play(self.brandish, delay=600, play_once=True)
|
||||||
|
|
||||||
def lower(self):
|
def lower(self):
|
||||||
self.hide()
|
# self.hide()
|
||||||
if len(self.parent.unbrandished) == 0:
|
if len(self.parent.unbrandished) == 0:
|
||||||
|
self.next_index = 0
|
||||||
self.parent.brandish_complete = True
|
self.parent.brandish_complete = True
|
||||||
|
|
||||||
|
def block(self):
|
||||||
|
for sprite in self.sprites:
|
||||||
|
if not sprite.is_hidden():
|
||||||
|
sprite.hide()
|
||||||
|
break
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
Sprite.update(self)
|
Animation.update(self)
|
||||||
|
for sprite in reversed(self.sprites):
|
||||||
|
sprite.update()
|
||||||
|
|
||||||
|
|
||||||
class Health(GameChild):
|
class Health(GameChild):
|
||||||
|
|
Loading…
Reference in New Issue