Changeset 209:ad1d3de210cd
- Timestamp:
- Sep 3, 2013, 9:45:56 PM (7 years ago)
- Branch:
- default
- rebase_source:
- f1360a9f17513461c73dc5956d46723e00073e5c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
data/levels/level1
r197 r209 28 28 name: light2 29 29 - args: [light_switch, door_switch] 30 classname: StateLogicalAndPuzzler30 classname: puzzle.StateLogicalAndPuzzler 31 31 name: both_switches 32 32 - args: -
data/levels/level2
r178 r209 7 7 - [600, 700] 8 8 classname: Door 9 lines: [] 9 10 polygons: 10 11 1: -
nagslang/game_object.py
r208 r209 10 10 from nagslang.events import DoorEvent 11 11 from nagslang.widgets.text import LabelWidget 12 13 14 # For levels to import, until we get module names in 'classname'15 StateProxyPuzzler = puzzle.StateProxyPuzzler16 StateLogicalAndPuzzler = puzzle.StateLogicalAndPuzzler17 CollidePuzzler = puzzle.CollidePuzzler18 12 19 13 -
nagslang/level.py
r201 r209 73 73 74 74 def _create_game_object(self, space, classname, args, name=None): 75 # We should probably build a registry of game objects or something. 76 # At least this is better than just calling `eval`, right? 77 cls = getattr(go, classname) 75 modules = { 76 'game_object': go, 77 'puzzle': puzzle, 78 } 79 if '.' in classname: 80 module, classname = classname.split('.') 81 else: 82 module = 'game_object' 83 cls = getattr(modules[module], classname) 84 78 85 if issubclass(cls, puzzle.Puzzler): 79 86 gobj = cls(*args) -
nagslang/tests/test_level.py
r202 r209 4 4 5 5 from nagslang import game_object as go 6 from nagslang import puzzle 6 7 from nagslang.level import Level 7 8 from nagslang.yamlish import load … … 77 78 sorted(puzzle_bits.keys())) 78 79 self.assertTrue( 79 isinstance(puzzle_bits['foo_proxy'], go.StateProxyPuzzler))80 isinstance(puzzle_bits['foo_proxy'], puzzle.StateProxyPuzzler)) 80 81 self.assertEqual('foo', puzzle_bits['foo_proxy']._state_source) 81 self.assertTrue(isinstance(puzzle_bits['foo'], go.CollidePuzzler)) 82 self.assertTrue(isinstance(puzzle_bits['foo'], 83 puzzle.CollidePuzzler)) 82 84 83 85 level = self.make_level('foo', { … … 97 99 { 98 100 'name': 'foo_proxy', 99 'classname': ' StateProxyPuzzler',101 'classname': 'puzzle.StateProxyPuzzler', 100 102 'args': ['foo'], 101 103 },
Note: See TracChangeset
for help on using the changeset viewer.