Exemplo n.º 1
0
 def on_enter(self):
     # Sprites
     sprite_instance = Sprite()
     sprite_instance.image = 'art/pug.png'
     sprite_instance.layer = 'Background'
     sprite_instance.position.x = 400.0
     sprite_instance.position.y = 300.0
Exemplo n.º 2
0
 def on_enter(self):
     # Sprites
     sprite_instance = Sprite()
     sprite_instance.image = 'art/pug.png'
     sprite_instance.layer = 'Background'
     sprite_instance.position.x = 400.0
     sprite_instance.position.y = 300.0  
Exemplo n.º 3
0
 def on_start(self):
     "Create a blackout sprite and start it fading out"
     PigDirector.scene.add_layer("overlay")
     sprite = Sprite()
     sprite.set_layer("overlay")
     sprite.image_file = "art/block.png"
     size = Opioid2D.Display.get_view_size()
     sprite.scale = (size[0] / 2, size[1] / 2)
     sprite.tint = (0, 0, 0)
     sprite.position = sprite.scale
     sprite.do( AlphaFade(0,self.blackout_secs) + \
                CallFunc(PigDirector.scene.delete_layer, "overlay")
                )
Exemplo n.º 4
0
 def on_switch_scene(self, scene):
     "Create a blackout sprite and start it fading in"
     PigDirector.scene.add_layer("overlay")
     sprite = Sprite()
     sprite.set_layer("overlay")
     sprite.image_file = "art/block.png"
     size = Opioid2D.Display.get_view_size()
     sprite.scale = (size[0]/2,size[1]/2)
     sprite.tint = (0,0,0)
     sprite.alpha = 0
     sprite.position = sprite.scale
     PigDirector.scene.block_switch_scene( sprite)
     sprite.do( AlphaFade(1,self.blackout_secs) + \
                CallFunc(PigDirector.scene.block_switch_scene, sprite, False)
                )
Exemplo n.º 5
0
 def on_start(self):
     "Create a blackout sprite and start it fading out"
     PigDirector.scene.add_layer("overlay")
     sprite = Sprite()
     sprite.set_layer("overlay")
     sprite.image_file = "art/block.png"
     size = Opioid2D.Display.get_view_size()
     sprite.scale = (size[0]/2,size[1]/2)
     sprite.tint = (0,0,0)
     sprite.position = sprite.scale
     sprite.do( AlphaFade(0,self.blackout_secs) + \
                CallFunc(PigDirector.scene.delete_layer, "overlay")
                )
Exemplo n.º 6
0
 def on_switch_scene(self, scene):
     "Create a blackout sprite and start it fading in"
     PigDirector.scene.add_layer("overlay")
     sprite = Sprite()
     sprite.set_layer("overlay")
     sprite.image_file = "art/block.png"
     size = Opioid2D.Display.get_view_size()
     sprite.scale = (size[0] / 2, size[1] / 2)
     sprite.tint = (0, 0, 0)
     sprite.alpha = 0
     sprite.position = sprite.scale
     PigDirector.scene.block_switch_scene(sprite)
     sprite.do( AlphaFade(1,self.blackout_secs) + \
                CallFunc(PigDirector.scene.block_switch_scene, sprite, False)
                )
Exemplo n.º 7
0
    def _post_init(self):
        app = wx.GetApp()
        app.set_pug_settings( self.pug_settings)
        code_exceptions = {}
        initial_scene = getattr(self.pug_settings, 'initial_scene', 'Scene')
        self.reload_components( doReload=True)
        self.reload_scene_list( doReload=True)
        # initial scene
        if initial_scene != 'Scene' and initial_scene in self.sceneDict:
            # test initial scene                
            try:
                test_scene_code( initial_scene)
            except:
                key = '*Error loading initial scene ('+initial_scene+')'                
                code_exceptions[key] = sys.exc_info()
                self.set_scene( Scene)
            else:
                self.set_scene( initial_scene)
        else:
            self.set_scene( Scene)
        
        # default menus
        if not self.__cached[2]:
            app.add_global_menu("&File",
                [["New Project", self.new_project, 
                        "Create a new Pig project"],
                 ["Open Project", self.open_project,
                        "Open a Pig project"],
                 ["*DIVIDER*"],
                 ["&New Scene\tCtrl+N", [self.set_scene, ("Scene", True), {}],
                        "Create a new Scene"],
                 ["&Save...\tCtrl+S", save_scene,
                        "Save scene"],
                 ["Save &As...\tCtrl+A", save_scene_as,
                        "Save scene as"],
                 ["New &Object\tShift+Ctrl+N", self.add_object,
                        "Add the currently selected add object to the scene"],
                 ["*DIVIDER*"],
#                 ["Selection Tab", self.open_selection_frame, 
#                        "Open a new tab to view selected objects"],
                 ["Open Code &Editor\tCtrl+E", open_code_editor,
                        "Open python code editor."],
                 ["Browse Project &Folder\tCtrl+F", self.open_project_folder,
                        "Open the project's folder in a browser"],
                 ["Show All &Windows\tCtrl+W", app.raise_all_frames,
                        "Show all open Pug Windows"],
                 ["&Quit\tCtrl+Q", self.quit]])
            app.add_global_menu("&Edit",
                [["Undo\tCtrl+Z", app.history.undo, "Undo last change group"],
                 ["Redo\tCtrl+Y", app.history.redo, "Redo last undo group"],
                 ["Small Undo\tShift+Ctrl+Z", app.history.small_undo,
                        "Undo last individual change"],
                 ["Small Redo\tShift+Ctrl+Y", app.history.small_redo,
                        "Redo last individual undo"],
                 ["*DIVIDER*"],
                 ["Cut\tCtrl+X", self.cut_selected, "Cut selection"],
                 ["Copy\tCtrl+C", self.copy_selected, "Copy selection"],
                 ["Paste\tCtrl+V", self.paste_clipboard, "Paste selection"]])
            self.__cached[2]=True
        # open MDI frame
        if not app.get_project_frame():
            frame = PugMDI(
                        [[self, {'objectpath':"Project",'name':"ProjectFrame"}],
                        [self.scene, {'title':"Scene",'name':"SceneFrame"}],
                        ['selection', {'name':"Selection"}],
                        ],
                    title=''.join(["P.I.G. Editor - ", self.project_name]),
                    name="Pig Editor", show=False)
            app.set_project_frame(frame)
        else:
            frame = app.get_project_frame()
        target = FileDropTarget(self)
        frame.SetDropTarget( target)
        frame.GetNotebook().Split(2, wx.LEFT)
        size = frame.GetSize()
        frame.GetNotebook().GetPage(1).SetSize([size[0]/2,size[1]])
        wx.FindWindowByName("ProjectFrame").Activate()
        frame._on_raise_all_frames = self.raise_canvas
        # attach window manager to opioid window
        opioid_rect = self.pug_settings.rect_opioid_window # x, y, w, h        
        options = dict(pos=tuple(opioid_rect[0:2]), 
                       size=tuple(opioid_rect[2:4]),
                       opengl=True, doublebuff=True, hardware=True)
        canvas_options = canvas_manager.getDefaultOptions()
        canvas_options.update(options)
        self.canvas = canvas_manager( canvas_options)
        self.frame = frame
        # cache a sprite view for speed on first selection
        if not self.__cached[0]:
            dummy = Sprite( register=False)
            cache_default_view( dummy)
            dummy.delete()
            while dummy in self.Director.scene.nodes:
                time.sleep(0.1)
            self.__cached[0] = True       
        self._initialized = True     
        # Import Psyco if available
        try:
            import psyco
            psyco.full()
        except ImportError:
            pass
        
        # create a project file error report at startup
        self.reload_project_files( errors=code_exceptions, save_reload=False)
        # for some reason, canvas needs to be activated before sound plays
        wx.CallLater(111,self.canvas.Activate) 
        wx.CallLater(222,frame.Raise) 
        wx.CallLater(222,frame.Show) 
Exemplo n.º 8
0
 def enter(self, font_file=None, font_size=None, unpause_keys=[]):
     from pug.all_components import Textbox
     from pig import Sprite
     from pig.util import get_display_center
     PauseState.enter( self, unpause_keys=unpause_keys)
     backSprite = Sprite()
     backSprite.set_image('art/block.png')
     backSprite.color = (0, 0, 0, 0.8)
     backSprite.set_layer('__pause__')
     gameOverSprite = Sprite()
     pressKeySprite = Sprite()
     textarg = {'text':'GAME OVER', 'hotspot':(0.5, 0.5)}
     if font_file:
         textarg['font_file']=font_file
     if font_size:
         textarg['font_size']=font_size
     text = gameOverSprite.components.add( Textbox( **textarg))
     text.do_set_text() # have to do it manually because we're paused
     textarg['text'] = 'Press Any Key'
     text = pressKeySprite.components.add( Textbox( **textarg))
     text.do_set_text()
     gameOverSprite.position = get_display_center()
     pressKeySprite.position = (gameOverSprite.position[0],
                                gameOverSprite.position[1] + \
                                gameOverSprite.image.get_height())
     backSprite.scale = (max(gameOverSprite.image.get_width(),
                             pressKeySprite.image.get_width()) / 2.0, 
                         (gameOverSprite.image.get_height() + \
                         pressKeySprite.image.get_height()) / 2.0)
     backSprite.position = (gameOverSprite.position[0],
                            (gameOverSprite.position[1] + \
                             pressKeySprite.position[1]) / 2.0 )
     gameOverSprite.set_layer('__text__')
     pressKeySprite.set_layer('__text__')
     self.gameOverSprite = gameOverSprite
     self.starttime = time.time()
     self.restart = False
Exemplo n.º 9
0
    def _post_init(self):
        app = wx.GetApp()
        app.set_pug_settings(self.pug_settings)
        code_exceptions = {}
        initial_scene = getattr(self.pug_settings, 'initial_scene', 'Scene')
        self.reload_components(doReload=True)
        self.reload_scene_list(doReload=True)
        # initial scene
        if initial_scene != 'Scene' and initial_scene in self.sceneDict:
            # test initial scene
            try:
                test_scene_code(initial_scene)
            except:
                key = '*Error loading initial scene (' + initial_scene + ')'
                code_exceptions[key] = sys.exc_info()
                self.set_scene(Scene)
            else:
                self.set_scene(initial_scene)
        else:
            self.set_scene(Scene)

        # default menus
        if not self.__cached[2]:
            app.add_global_menu(
                "&File",
                [
                    [
                        "New Project", self.new_project,
                        "Create a new Pig project"
                    ],
                    ["Open Project", self.open_project, "Open a Pig project"],
                    ["*DIVIDER*"],
                    [
                        "&New Scene\tCtrl+N",
                        [self.set_scene,
                         ("Scene", True), {}], "Create a new Scene"
                    ],
                    ["&Save...\tCtrl+S", save_scene, "Save scene"],
                    ["Save &As...\tCtrl+A", save_scene_as, "Save scene as"],
                    [
                        "New &Object\tShift+Ctrl+N", self.add_object,
                        "Add the currently selected add object to the scene"
                    ],
                    ["*DIVIDER*"],
                    #                 ["Selection Tab", self.open_selection_frame,
                    #                        "Open a new tab to view selected objects"],
                    [
                        "Open Code &Editor\tCtrl+E", open_code_editor,
                        "Open python code editor."
                    ],
                    [
                        "Browse Project &Folder\tCtrl+F",
                        self.open_project_folder,
                        "Open the project's folder in a browser"
                    ],
                    [
                        "Show All &Windows\tCtrl+W", app.raise_all_frames,
                        "Show all open Pug Windows"
                    ],
                    ["&Quit\tCtrl+Q", self.quit]
                ])
            app.add_global_menu(
                "&Edit",
                [["Undo\tCtrl+Z", app.history.undo, "Undo last change group"],
                 ["Redo\tCtrl+Y", app.history.redo, "Redo last undo group"],
                 [
                     "Small Undo\tShift+Ctrl+Z", app.history.small_undo,
                     "Undo last individual change"
                 ],
                 [
                     "Small Redo\tShift+Ctrl+Y", app.history.small_redo,
                     "Redo last individual undo"
                 ], ["*DIVIDER*"],
                 ["Cut\tCtrl+X", self.cut_selected, "Cut selection"],
                 ["Copy\tCtrl+C", self.copy_selected, "Copy selection"],
                 ["Paste\tCtrl+V", self.paste_clipboard, "Paste selection"]])
            self.__cached[2] = True
        # open MDI frame
        if not app.get_project_frame():
            frame = PugMDI([
                [self, {
                    'objectpath': "Project",
                    'name': "ProjectFrame"
                }],
                [self.scene, {
                    'title': "Scene",
                    'name': "SceneFrame"
                }],
                ['selection', {
                    'name': "Selection"
                }],
            ],
                           title=''.join(
                               ["P.I.G. Editor - ", self.project_name]),
                           name="Pig Editor",
                           show=False)
            app.set_project_frame(frame)
        else:
            frame = app.get_project_frame()
        target = FileDropTarget(self)
        frame.SetDropTarget(target)
        frame.GetNotebook().Split(2, wx.LEFT)
        size = frame.GetSize()
        frame.GetNotebook().GetPage(1).SetSize([size[0] / 2, size[1]])
        wx.FindWindowByName("ProjectFrame").Activate()
        frame._on_raise_all_frames = self.raise_canvas
        # attach window manager to opioid window
        opioid_rect = self.pug_settings.rect_opioid_window  # x, y, w, h
        options = dict(pos=tuple(opioid_rect[0:2]),
                       size=tuple(opioid_rect[2:4]),
                       opengl=True,
                       doublebuff=True,
                       hardware=True)
        canvas_options = canvas_manager.getDefaultOptions()
        canvas_options.update(options)
        self.canvas = canvas_manager(canvas_options)
        self.frame = frame
        # cache a sprite view for speed on first selection
        if not self.__cached[0]:
            dummy = Sprite(register=False)
            cache_default_view(dummy)
            dummy.delete()
            while dummy in self.Director.scene.nodes:
                time.sleep(0.1)
            self.__cached[0] = True
        self._initialized = True
        # Import Psyco if available
        try:
            import psyco
            psyco.full()
        except ImportError:
            pass

        # create a project file error report at startup
        self.reload_project_files(errors=code_exceptions, save_reload=False)
        # for some reason, canvas needs to be activated before sound plays
        wx.CallLater(111, self.canvas.Activate)
        wx.CallLater(222, frame.Raise)
        wx.CallLater(222, frame.Show)
Exemplo n.º 10
0
 def enter(self, font_file=None, font_size=None, unpause_keys=[]):
     from pug.all_components import Textbox
     from pig import Sprite
     from pig.util import get_display_center
     PauseState.enter(self, unpause_keys=unpause_keys)
     backSprite = Sprite()
     backSprite.set_image('art/block.png')
     backSprite.color = (0, 0, 0, 0.8)
     backSprite.set_layer('__pause__')
     gameOverSprite = Sprite()
     pressKeySprite = Sprite()
     textarg = {'text': 'GAME OVER', 'hotspot': (0.5, 0.5)}
     if font_file:
         textarg['font_file'] = font_file
     if font_size:
         textarg['font_size'] = font_size
     text = gameOverSprite.components.add(Textbox(**textarg))
     text.do_set_text()  # have to do it manually because we're paused
     textarg['text'] = 'Press Any Key'
     text = pressKeySprite.components.add(Textbox(**textarg))
     text.do_set_text()
     gameOverSprite.position = get_display_center()
     pressKeySprite.position = (gameOverSprite.position[0],
                                gameOverSprite.position[1] + \
                                gameOverSprite.image.get_height())
     backSprite.scale = (max(gameOverSprite.image.get_width(),
                             pressKeySprite.image.get_width()) / 2.0,
                         (gameOverSprite.image.get_height() + \
                         pressKeySprite.image.get_height()) / 2.0)
     backSprite.position = (gameOverSprite.position[0],
                            (gameOverSprite.position[1] + \
                             pressKeySprite.position[1]) / 2.0 )
     gameOverSprite.set_layer('__text__')
     pressKeySprite.set_layer('__text__')
     self.gameOverSprite = gameOverSprite
     self.starttime = time.time()
     self.restart = False