Skip to content

Commit af09620

Browse files
author
Michael Fiano
committed
New party characters now drawn to the correct screen layer; Minor fixes and cleanup.
1 parent 2a9bb46 commit af09620

File tree

4 files changed

+39
-39
lines changed

4 files changed

+39
-39
lines changed

lib/battle.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class Battle(object):
99
def __init__(self, screen):
1010
self.screen = screen
1111
self.map = screen.map
12-
self.region = screen.party.hero.current_region
12+
self.region = screen.party.chars['hero'].current_region
1313
self.map_monsters = self.map.region_monsters[self.region]
1414
self.battle_monsters = []
1515
self.create_monsters()

lib/manager.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import pygame
12
from characters import *
23

34
class PartyManager(object):
@@ -8,22 +9,21 @@ def __init__(self, screen):
89
self.all_chars = {
910
'hero': CharHero(screen),
1011
'test': CharTest(screen) }
11-
self.chars = {
12-
'hero': self.all_chars['hero'] }
13-
self.hero = self.chars['hero']
12+
self.chars = {}
13+
self.sprites = pygame.sprite.Group()
1414

1515
def add(self, char):
1616
"""Add a new party character to the party."""
1717

18-
if not self.all_chars[char] in self.screen.party_sprites:
18+
if not self.all_chars[char] in self.sprites:
1919
self.chars[char] = self.all_chars[char]
2020
self.chars[char].__init__(self.screen)
21-
self.screen.party_sprites.add(self.chars[char])
22-
self.screen.add_all_sprites()
21+
self.sprites.add(self.chars[char])
22+
self.screen.add_sprites()
2323

2424
def remove(self, char):
2525
"""Remove a character from the party."""
2626

27-
if self.all_chars[char] in self.screen.party_sprites:
27+
if self.all_chars[char] in self.sprites:
2828
self.chars[char].kill()
2929
del self.chars[char]

lib/screens.py

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,29 +77,22 @@ def __init__(self, map_name):
7777
self.load_screen.draw()
7878
self.camera = pygame.Rect((0,0), CAMERA_SIZE)
7979
self.map = Map(map_name)
80-
self.dialog_text = "Sample dialog text."
8180
self.party = PartyManager(self)
82-
self.create_sprites()
83-
self.add_all_sprites()
84-
self.map.scroll(self.camera, self.party.hero)
85-
86-
def create_sprites(self):
87-
"""Create all sprites and sprite groups."""
88-
89-
self.party_sprites = pygame.sprite.Group([
90-
self.party.hero ])
91-
self.gui_stats = StatsWindow(self.party_sprites)
92-
93-
def add_all_sprites(self):
94-
"""Add all sprite groups to the drawing order queue."""
81+
self.gui = StatsWindow(self.party.sprites)
82+
self.party.add("hero")
83+
self.dialog_text = "Sample dialog text."
84+
self.map.scroll(self.camera, self.party.chars['hero'])
9585

96-
self.char_sprites = pygame.sprite.Group([
97-
self.party_sprites ])
86+
def add_sprites(self):
87+
self.chars = pygame.sprite.Group([
88+
self.party.sprites ])
9889
self.all_sprites = pygame.sprite.OrderedUpdates([
9990
self.map.layers['terrain'],
100-
self.char_sprites,
91+
self.chars,
10192
self.map.layers['foreground'],
102-
self.gui_stats ])
93+
self.gui ])
94+
95+
self.layers = pygame.sprite.LayeredDirty()
10396
for sprite in self.all_sprites:
10497
self.layers.add(sprite)
10598

lib/states.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,12 @@ def __init__(self, map_name):
7474
BaseState.__init__(self)
7575
self.map_name = map_name
7676
self.screen = WorldScreen(self.map_name)
77+
self.player = self.screen.party.chars['hero']
7778

7879
def check_events(self):
7980
"""Check for user input on the world screen."""
8081

81-
self.move_keys = self.screen.party.hero.move_keys
82+
self.move_keys = self.player.move_keys
8283
for event in pygame.event.get():
8384
if event.type == QUIT: self.exit()
8485
elif event.type == KEYDOWN:
@@ -112,45 +113,51 @@ def check_events(self):
112113
HERO_MOVE_RIGHT):
113114
self.player_input(False, pygame.key.name, event.key)
114115
elif event.type == BATTLE_EVENT:
115-
self.screen.party.hero.move_keys = []
116-
self.screen.party.hero.stop = True
116+
self.player.move_keys = []
117+
self.player.stop = True
117118
self.switch(BattleState(self))
118119
elif event.type == DIALOG_EVENT:
119-
self.screen.party.hero.move_keys = []
120-
self.screen.party.hero.stop = True
120+
self.player.move_keys = []
121+
self.player.stop = True
121122
self.switch(DialogState(self))
122123

123124
def player_input(self, moving, name, key):
124125
"""Controls key input to the player character."""
125126

126127
if moving:
127128
self.move_keys.append(name(key))
128-
self.screen.party.hero.direction = self.move_keys[-1]
129-
self.screen.party.hero.stop = False
129+
self.player.direction = self.move_keys[-1]
130+
self.player.stop = False
130131
else:
131132
if len(self.move_keys) > 0:
132133
keyid = self.move_keys.index(name(key))
133134
del self.move_keys[keyid]
134135
if len(self.move_keys) != 0:
135-
self.screen.party.hero.direction = (self.move_keys[-1])
136-
else: self.screen.party.hero.stop = True
136+
self.player.direction = (self.move_keys[-1])
137+
else: self.player.stop = True
137138

138139
def show_debug(self, fps):
139140
BaseState.show_debug(self, fps)
140141
if SHOW_RECTS:
141142
terrain = self.screen.map.layers['terrain']
142-
terrain.image.fill((0,0,0), self.screen.party.hero.collide_rect)
143+
terrain.image.fill((0,0,0), self.player.collide_rect)
143144
for rect in (self.screen.map.nowalk):
144145
terrain.image.fill((255,255,255), rect)
145146
if SHOW_TERRAIN:
146-
print "Current terrain: " + self.screen.party.hero.current_terrain
147+
print "Current terrain: " + self.player.current_terrain
147148
if SHOW_REGION:
148-
print "Current region: " + self.screen.party.hero.current_region
149+
print "Current region: " + self.player.current_region
150+
151+
def destroy(self):
152+
"""Cleanup before exiting this state."""
153+
154+
self.player = None
155+
self.screen.destroy()
149156

150157
def _exit(self):
151158
"""Quit the main game screen returning to the title screen."""
152159

153-
self.screen.destroy()
160+
self.destroy()
154161
self.switch(TitleState())
155162

156163

0 commit comments

Comments
 (0)