annotate nagslang/screens/base.py @ 698:020e73192fe2 default tip

Update debian urls
author Neil Muller <drnlmuller@gmail.com>
date Tue, 17 Mar 2020 22:38:52 +0200
parents 943d93b47c77
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
1 """A screen or area in which action happens."""
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
2
557
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
3 import sys
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
4
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
5 from pygame import event
11
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
6 import pymunk
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
9 class Screen(object):
11
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10
276
3153196517fc Move protagonist to the world
Neil Muller <drnlmuller@gmail.com>
parents: 180
diff changeset
11 def __init__(self, name, world):
37
4140780c21bc Give screens a name and a world.
Simon Cross <hodgestar@gmail.com>
parents: 34
diff changeset
12 self.name = name
4140780c21bc Give screens a name and a world.
Simon Cross <hodgestar@gmail.com>
parents: 34
diff changeset
13 self.world = world
11
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
14 self.space = pymunk.Space()
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
15
37
4140780c21bc Give screens a name and a world.
Simon Cross <hodgestar@gmail.com>
parents: 34
diff changeset
16 def setup(self):
20
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
17 """Perform setup based on the world state."""
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
18 pass
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
19
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
20 def teardown(self):
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
21 pass
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
22
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
23 def post_event(self, ev):
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
24 event.post(ev)
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
25
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
26 def handle_event(self, ev):
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
27 pass
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
28
11
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
29 def render(self, surface):
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
30 pass
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
31
34
2995723e8ccf Move and hold.
Simon Cross <hodgestar@gmail.com>
parents: 20
diff changeset
32 def tick(self, seconds):
11
1cd05cfec375 Add start of screen / level / area object.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
33 """Step the given amount of time."""
557
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
34 try:
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
35 self.space.step(seconds)
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
36 except AssertionError:
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
37 # TODO: Find the source of these
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
38 print >> sys.stderr, (
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
39 'Caught a pymunk assertion error. '
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
40 "We don't know what causes these on level change. "
943d93b47c77 Ignore the pymunk AssertionError on level change
Stefano Rivera <stefano@rivera.za.net>
parents: 276
diff changeset
41 "Hopefully we can ignore them...")