def addedToWorld(self, world):
     """The actor is ready to be populated"""
     super(CreditsScreen, self).addedToWorld(world)
     #
     # Block for titles
     self.title_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.VerticalBar('title-block', height=G('title-height')), 
             layer_name='ui', center_position=G('title-position'))
     #
     # Titles
     self.title_block.addActor(serge.blocks.actors.StringText('t', 't',
         'TACMAN', colour=G('title-colour'), font_size=G('title-font-size')))
     self.title_block.addActor(serge.blocks.actors.StringText('st', 'st',
         ' Turn-based, tactical PACMAN', colour=G('subtitle-colour'), font_size=G('subtitle-font-size')))
     #
     # Version
     self.version = serge.blocks.utils.addVisualActorToWorld(world, 'v', 'v', 
         serge.visual.Text(('v%s' % common.version), colour=G('version-colour'), font_size=G('version-font-size')),
         layer_name='ui', center_position=G('version-position'))
     #
     # Block for menu
     self.menu_block =  serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('menu-block', height=G('menu-height'), width=G('menu-width')), 
             layer_name='ui', center_position=G('credits-menu-position'))
     #
     self.back = self.menu_block.addActor(serge.blocks.actors.StringText('back', 'back',
         'Back', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.back.linkEvent(serge.events.E_LEFT_CLICK, self.doBack)
     #
     self.bg = serge.blocks.utils.addSpriteActorToWorld(world, 'bg', 'bg', 'credits', 'main', 
         center_position=G('credits-bg-position'))
     #
     musictoggle.addToggle(world)
 def _initLevel(self, world, level):
     """Put the pills on the screen"""
     self.level = level
     #
     # The behaviour manager
     self.manager = serge.blocks.behaviours.BehaviourManager('behaviours', 'behaviours')
     world.addActor(self.manager)
     #
     self.initGrid(world, level)
     self.initUIElements(world, level)
     self.initPlayers(world, level)
     self.initMoveOrder()
     #
     self.manager.assignBehaviour(self, 
         serge.blocks.behaviours.TimedCallback(G('ghost-decision-time'), self.chooseMove), 'ghost-moving')
     #
     self.setupDevMode(world)
     #
     self.manager.pauseBehaviours('moving')
     #
     # The level over display
     self._level_over = serge.blocks.utils.addVisualActorToWorld(world, 'level-over', 'level-over', 
         serge.visual.Text('Complete', G('level-over-colour'), font_size=G('level-over-size')),
         'messages', G('level-over-position'))
     self._level_over.active = False
     self._restart = serge.blocks.utils.addVisualActorToWorld(world, 'level-restart', 'level-restart',
         serge.blocks.visualblocks.RectangleText('Restart', G('restart-font-colour'), G('restart-size'), 
             G('restart-back-colour'), font_size=G('restart-font-size')),
             'messages', G('restart-position'))
     self._restart.active = False
     self._restart.linkEvent(serge.events.E_LEFT_CLICK, self.restartClick)
     #
     self._next = serge.blocks.utils.addVisualActorToWorld(world, 'level-restart', 'level-restart',
         serge.blocks.visualblocks.RectangleText('New Level', G('restart-font-colour'), G('restart-size'), 
             G('restart-back-colour'), font_size=G('restart-font-size')),
             'messages', G('restart-position'))
     self._next.active = False
     self._next.linkEvent(serge.events.E_LEFT_CLICK, self.nextClick)
     #
     musictoggle.addToggle(world)
 def addedToWorld(self, world):
     """The actor is ready to be populated"""
     super(StartScreen, self).addedToWorld(world)
     #
     # Block for titles
     self.title_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.VerticalBar('title-block', height=G('title-height')), 
             layer_name='ui', center_position=G('title-position'))
     #
     # Titles
     self.title_block.addActor(serge.blocks.actors.StringText('t', 't',
         'TACMAN', colour=G('title-colour'), font_size=G('title-font-size')))
     self.title_block.addActor(serge.blocks.actors.StringText('st', 'st',
         ' Turn-based, tactical PACMAN', colour=G('subtitle-colour'), font_size=G('subtitle-font-size')))
     #
     # Version
     self.version = serge.blocks.utils.addVisualActorToWorld(world, 'v', 'v', 
         serge.visual.Text(('v%s' % common.version), colour=G('version-colour'), font_size=G('version-font-size')),
         layer_name='ui', center_position=G('version-position'))
     #
     # URL
     self.url = serge.blocks.utils.addVisualActorToWorld(world, 'u', 'u', 
         serge.visual.Text('http://perpetualpyramid.com', colour=G('url-colour'), font_size=G('url-font-size')),
         layer_name='ui', center_position=G('url-position'))
     self.url.linkEvent(serge.events.E_LEFT_CLICK, self.launchURL)
     #
     # Block for menu
     self.menu_block =  serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('menu-block', height=G('menu-height'), width=G('menu-width')), 
             layer_name='ui', center_position=G('menu-position'))
     #
     self.tutorial = self.menu_block.addActor(serge.blocks.actors.StringText('tut', 'tut',
         'Tutorial', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.play = self.menu_block.addActor(serge.blocks.actors.StringText('play', 'play',
         'Play', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.credits = self.menu_block.addActor(serge.blocks.actors.StringText('credits', 'credits',
         'Credits', colour=G('menu-colour'), font_size=G('menu-font-size')))
     #
     self.tutorial.linkEvent(serge.events.E_LEFT_CLICK, self.doTutorial)
     self.play.linkEvent(serge.events.E_LEFT_CLICK, self.doPlay)
     self.credits.linkEvent(serge.events.E_LEFT_CLICK, self.doCredits)
     #
     self.music_toggle = musictoggle.addToggle(world)
     #
     self.start_playlist = ['start-music']
     serge.sound.Music.setPlaylist(self.start_playlist)
     #
     world.linkEvent(serge.events.E_ACTIVATE_WORLD, self.worldActivated)
     #
     # Create interesting display
     self.initGrid(world, 'start')
     self.initPlayers(world, 'start', interactive=False)
 def addedToWorld(self, world):
     """The actor is ready to be populated"""
     super(ResumeScreen, self).addedToWorld(world)
     #
     # Block for titles
     self.title_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.VerticalBar('title-block', height=G('title-height')), 
             layer_name='ui', center_position=G('title-position'))
     #
     # Titles
     self.title_block.addActor(serge.blocks.actors.StringText('t', 't',
         'TACMAN', colour=G('title-colour'), font_size=G('title-font-size')))
     self.title_block.addActor(serge.blocks.actors.StringText('st', 'st',
         ' Turn-based, tactical PACMAN', colour=G('subtitle-colour'), font_size=G('subtitle-font-size')))
     #
     # Version
     self.version = serge.blocks.utils.addVisualActorToWorld(world, 'v', 'v', 
         serge.visual.Text(('v%s' % common.version), colour=G('version-colour'), font_size=G('version-font-size')),
         layer_name='ui', center_position=G('version-position'))
     #
     # Block for menu
     self.menu_block =  serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('menu-block', height=G('menu-height'), width=G('menu-width')), 
             layer_name='ui', center_position=G('menu-position'))
     #
     self.restart = self.menu_block.addActor(serge.blocks.actors.StringText('restart', 'restart',
         'Restart', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.play = self.menu_block.addActor(serge.blocks.actors.StringText('play', 'play',
         'Resume', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.quit = self.menu_block.addActor(serge.blocks.actors.StringText('quit', 'quit',
         'Quit', colour=G('menu-colour'), font_size=G('menu-font-size')))
     #
     self.restart.linkEvent(serge.events.E_LEFT_CLICK, self.doStart)
     self.play.linkEvent(serge.events.E_LEFT_CLICK, self.doPlay)
     self.quit.linkEvent(serge.events.E_LEFT_CLICK, self.doQuit)
     #
     self.music_toggle = musictoggle.addToggle(world)
     #
     # Create interesting display
     self.initGrid(world, 'start')
     self.initPlayers(world, 'start', interactive=False)
 def addedToWorld(self, world):
     """The actor is ready to be populated"""
     super(TutorialScreen, self).addedToWorld(world)
     #
     # Block for titles
     self.title_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.VerticalBar('title-block', height=G('title-height')), 
             layer_name='ui', center_position=G('title-position'))
     #
     # Titles
     self.title_block.addActor(serge.blocks.actors.StringText('t', 't',
         'TACMAN', colour=G('title-colour'), font_size=G('title-font-size')))
     self.title_block.addActor(serge.blocks.actors.StringText('st', 'st',
         ' Tutorial Mode ', colour=G('subtitle-colour'), font_size=G('subtitle-font-size')))
     #
     # Block for menu
     self.menu_block =  serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('menu-block', height=G('tutorial-menu-height'), width=G('tutorial-menu-width')), 
             layer_name='ui', center_position=G('tutorial-menu-position'))
     #
     self.back = self.menu_block.addActor(serge.blocks.actors.StringText('back', 'back',
         'Back', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.credits = self.menu_block.addActor(serge.blocks.actors.StringText('credits', 'credits',
         'Credits', colour=G('menu-colour'), font_size=G('menu-font-size')))
     #
     self.back.linkEvent(serge.events.E_LEFT_CLICK, self.doPlay)
     self.credits.linkEvent(serge.events.E_LEFT_CLICK, self.doCredits)
     #
     self.music_toggle = musictoggle.addToggle(world)
     #
     self.music = serge.sound.Music.getItem('start-music')
     self.music.play()
     self.level_music = serge.sound.Music.getItem('level-music')
     #
     # Create game play area
     level = 'tutorial'
     self.initGrid(world, level)
     self.initPlayers(world, level, interactive=True)
     self.initUIElements(world, level)
     self.initMoveOrder()
     self.setupDevMode(world)
     #
     # Create the help bubble
     self.help = serge.blocks.utils.addVisualActorToWorld(world, 'help', 'help',
         serge.blocks.visualblocks.SpriteText('Click on the Tacman to begin\nmaking your move.', 
             G('help-font-colour'), 'help-bubble', font_size=G('help-font-size')),
             'messages', G('help-position'))
     #
     self.manager.assignBehaviour(self, 
         serge.blocks.behaviours.TimedCallback(G('ghost-decision-time'), self.chooseMove), 'ghost-moving')
     self.manager.assignBehaviour(self, 
         serge.blocks.behaviours.TimedCallback(G('tutorial-step-time'), self.nextStep), 'tutorial-steps')
     #
     self.linkEvent('eat-yellow-pill', self.eatYellow)
     self.linkEvent('eat-ghost', self.eatGhost)
     self.linkEvent('hit-ghost', self.hitGhost)
     self._mode_toggle.linkEvent('fright-mode-over', self.frightOver)
     #
     self.manager.pauseBehaviours('moving')
     self.step = 'wait-first-click'
     self._told_icicle = False
     self._told_boost = False
     self._level_over = serge.actor.Actor('level-over')
     self._level_over.active = False
 def addedToWorld(self, world):
     """The actor is ready to be populated"""
     super(LevelScreen, self).addedToWorld(world)
     #
     # Block for titles
     self.title_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.VerticalBar('title-block', height=G('title-height')), 
             layer_name='ui', center_position=G('title-position'))
     #
     # Titles
     self.title_block.addActor(serge.blocks.actors.StringText('t', 't',
         'TACMAN', colour=G('title-colour'), font_size=G('title-font-size')))
     self.title_block.addActor(serge.blocks.actors.StringText('st', 'st',
         ' Turn-based, tactical PACMAN', colour=G('subtitle-colour'), font_size=G('subtitle-font-size')))
     #
     # Version
     self.version = serge.blocks.utils.addVisualActorToWorld(world, 'v', 'v', 
         serge.visual.Text(('v%s' % common.version), colour=G('version-colour'), font_size=G('version-font-size')),
         layer_name='ui', center_position=G('version-position'))
     #
     # Block for menu
     self.menu_block =  serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('menu-block', height=G('menu-height'), width=G('menu-width')), 
             layer_name='ui', center_position=G('credits-menu-position'))
     #
     self.back = self.menu_block.addActor(serge.blocks.actors.StringText('back', 'back',
         'Back', colour=G('menu-colour'), font_size=G('menu-font-size')))
     self.back.linkEvent(serge.events.E_LEFT_CLICK, self.doBack)
     #
     musictoggle.addToggle(world)
     #
     # A menu to select which level to play
     self.level_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('level-block', width=G('level-block-width'), height=G('level-block-height')),
         layer_name='ui', center_position=G('level-block-position'))
     #
     # Show the levels we can choose
     for idx, level_name in enumerate(G('active-levels')):
         sprite_name = '%s-small' % G('background', level_name)
         button = serge.actor.MountableActor('level-button', ('level-button-%d' % idx))
         label = serge.blocks.actors.StringText('level-label', ('level-label-%d' % idx), G('level-title', level_name),
                     colour=G('level-title-colour'), font_size=G('level-title-font-size'))
         label.setLayerName('ui')
         button.mountActor(label, G('level-title-offset'))
         button.setSpriteName(sprite_name)
         self.level_block.addActor(button)
         button.linkEvent(serge.events.E_LEFT_CLICK, self.levelSelect, level_name)
     #
     # Show the difficulty select
     self.difficulty_block = serge.blocks.utils.addActorToWorld(world,
         serge.blocks.layout.HorizontalBar('difficulty-block', width=G('difficulty-block-width'), 
         height=G('difficulty-block-height')), layer_name='ui', center_position=G('difficulty-block-position'))
     #
     # Add all difficulties
     self.buttons = serge.actor.ActorCollection()
     for difficulty in ('easy', 'normal', 'hard'):
         button = serge.actor.Actor('difficulty-button', ('difficulty-%s' % difficulty))
         button.visual = serge.blocks.visualblocks.TextToggle(
             difficulty.capitalize(), G('difficulty-colour'), 'toggle-button', font_size=G('difficulty-font-size'))
         button.linkEvent(serge.events.E_LEFT_CLICK, self.difficultySelect, (button, difficulty))
         self.difficulty_block.addActor(button)
         self.log.debug('For diff %s, current is %s' % (difficulty, self.difficulty_levels[self.options.number]))
         if self.difficulty_levels[self.options.number] == difficulty:
             button.visual.setOn()
         else:
             button.visual.setOff()
         self.buttons.append(button)
     #
     self.level_playlist = ['level-music', 'level-music-2']