def addedToWorld(self, world):
     """The start screen was added to the world"""
     super(NameScreen, self).addedToWorld(world)
     #
     self.manager = world.findActorByName('behaviours')
     #
     # Logo
     the_theme = theme.getTheme('name-screen')
     L = the_theme.getProperty
     logo = serge.blocks.utils.addSpriteActorToWorld(world, 'logo', 'logo', 'icon', 'ui', 
         center_position=L('logo-position'))
     #
     # Background
     bh = serge.blocks.utils.addSpriteActorToWorld(world, 'bg', 'bg', L('screen-background-sprite'), 'background', 
         center_position=L('screen-background-position'))
     #
     serge.blocks.utils.addTextItemsToWorld(world, [
                 ('Quick play - random cave', 'random', self.chooseRandomName),
                 ('Click to select a random cave', 'random-small'),
                 ('Enter a name for your cave', 'named', self.chooseName),
                 ('You will be able to return to your cave later', 'named-small'),
                 ('Previous caves', 'previous'),
                 ('Click below to return to a previously visited cave', 'previous-small'),
                 ('Back', 'back', serge.blocks.utils.backToPreviousWorld('click')),
     ], the_theme, 'ui')
     #
     # Name entry
     self.name_entry = serge.blocks.utils.addActorToWorld(world,     
         serge.blocks.actors.TextEntryWidget('entry', 'entry', L('entry-width'), L('entry-height'),
             colour=L('entry-font-colour'), font_size=L('entry-font-size'), font_name=L('entry-font-name'), 
                     justify='center', 
                     background_visual=serge.blocks.visualblocks.Rectangle((L('entry-width'), L('entry-height')),
                         L('entry-bg-colour'), L('entry-stroke-width'), L('entry-stroke-colour')),
                     background_layer='ui-back', show_cursor=True),
         center_position=L('entry-position'),
         layer_name='ui')
     self.name_entry.linkEvent(serge.events.E_ACCEPT_ENTRY, self.chooseName)
     #
     # The history table
     self.history = serge.blocks.utils.addActorToWorld(world, 
         self.globals.history,
         layer_name='ui', center_position=G('history-position', 'name-screen'))
     self.history.linkEvent(common.E_CAVE_SELECTED, self.chooseName)
     #
     # Overlay
     self.overlays = common.getOverlays(world, 'Building cave ...')
     #
     self.world.linkEvent(serge.events.E_ACTIVATE_WORLD, self.resetCamera)
 def addedToWorld(self, world):
     """The start screen was added to the world"""
     super(StartScreen, self).addedToWorld(world)
     #
     self.camera_timer = 0
     self.manager = world.findActorByName('behaviours')
     #
     # Logo
     the_theme = theme.getTheme('start-screen')
     L = the_theme.getProperty
     logo = serge.blocks.utils.addSpriteActorToWorld(world, 'logo', 'logo', 'logo', 'ui', 
         center_position=L('logo-position'))
     #
     serge.blocks.utils.addTextItemsToWorld(world, [
                 (L('title'), 'title'),
                 (L('title2'), 'title2'),
                 ('v' + common.version, 'version'),
                 ('Resume', 'resume',  self.resumePlay),
                 ('Start', 'start',  serge.blocks.utils.worldCallback('name-screen', 'click')),
                 ('Crystal collection', 'collection',  serge.blocks.utils.worldCallback('collection-screen', 'click')),
                 ('Help', 'help',  serge.blocks.utils.worldCallback('help-screen', 'click')),
                 ('Credits', 'credits',  serge.blocks.utils.worldCallback('credits-screen', 'click')),
                 ('Achievements', 'achievements', self.showAchievements),
             ],
             the_theme, 'ui')
     #
     self.start = world.findActorByName('start')
     self.resume = world.findActorByName('resume')
     self.resume.visible = False
     #
     self.music = serge.sound.Music.getItem('title-music')
     self.music.play(loops=-1)
     #
     self.world.linkEvent(serge.events.E_ACTIVATE_WORLD, self.worldActivated)
     #
     # Overlay
     self.overlays = common.getOverlays(world, 'Starting game ...', visible=True)
     #
     # Asynchronously build the graphical elements - this takes a while
     self.manager.assignBehaviour(self, serge.blocks.behaviours.TimedOneshotCallback(100, self.buildGraphics), 'build')
     #
     # FPS counter
     if self.options.cheat:
         fps = serge.blocks.utils.addActorToWorld(world,
             serge.blocks.actors.FPSDisplay(G('fps-x'), G('fps-y'), G('fps-colour'), G('fps-size')))
 def addedToWorld(self, world):
     """Added to the world"""
     super(MainScreen, self).addedToWorld(world)
     self.manager = world.findActorByName('behaviours')
     self.achievements = serge.blocks.achievements.getManager()
     serge.blocks.achievements.addAchievementsBannerToWorld(world, 'ui', 'ui-back', theme, self.manager)
     #
     world.setPhysicsStepsize(G('physics-step-size'))
     #
     self.status = serge.blocks.utils.addActorToWorld(world, status.Status('status', 'status'))
     #
     self.random_seed = G('level-seed')
     self.generateMap()
     #
     # Count the number of crystals that are in the cave
     self.status.total_crystals = len(world.findActorsByTag('crystal'))
     #
     # Player
     self.player = player.Player('player', 'player', maximum_reach=G('player-max-reach'), surface_tags=['rock'], 
         jump_impulse=G('player-jump-impulse'), walk_impulse=G('player-walk-impulse'), can_scramble=False)
     self.player.setSpriteName('walking')
     self.player.setPhysical(serge.physical.PhysicalConditions(
         mass=20.0, force=climbing.G*20, visual_size=False, group=climbing.G_ROPES, elasticity=0.1, 
         friction=G('player-friction'), width=G('player-effective-radius'), height=G('player-effective-radius')))
     self.player.setLayerName('actors')
     self.player.moveTo(*G('player-initial-position'))
     self.player.linkEvent(common.E_PLAYER_DIED, self.playerDied)
     self.player.linkEvent(common.E_CAVE_SOLVED, self.caveSolved)
     self.player.linkEvent(serge.events.E_COLLISION, self.playerCollided)
     world.addActor(self.player)
     #
     # Text
     self.main_text = serge.blocks.utils.addTextToWorld(
         world, 'You died!', 'main-text', theme.getTheme('main-screen'), 'ui')
     self.sub_text = serge.blocks.utils.addTextToWorld(
         world, 'Press ENTER to restart', 'sub-text', theme.getTheme('main-screen'), 'ui')
     self.main_text.active = False
     self.sub_text.active = False
     #
     # Bugs
     self.bugs = [serge.blocks.utils.addActorToWorld(world,
         bug.Bug('bug', 'bug', 'base-bug', self),
         center_position=self.cave.getStartPosition())
             for idx in range(G('number-bugs'))]
     #
     # The HUD
     self.hud = serge.blocks.utils.addActorToWorld(world, hud.HUD('hud', 'hud', self.status))
     self.hud.linkEvent(common.E_ADD_LIGHT, self.addLight)
     #
     # Adding ropes
     self.cave.linkEvent(common.E_ROCK_CLICKED, self.addRope)
     self.cave.linkEvent(common.E_ROCK_RIGHT_CLICKED, self.switchRope)
     #
     self.world.linkEvent(serge.events.E_ACTIVATE_WORLD, self.worldActivated)
     self.world.linkEvent(serge.events.E_DEACTIVATE_WORLD, self.worldDeactivated)
     #
     # Sounds 
     self.addSoundTexture(world)
     #
     # Overlay
     self.overlays = common.getOverlays(world, 'Building cave ...', visible=True)
     #
     # Cheating
     if self.options.cheat:
         fps = serge.blocks.utils.addActorToWorld(world,
             serge.blocks.actors.FPSDisplay(G('fps-x'), G('fps-y'), G('fps-colour'), G('fps-size')))