Ejemplo n.º 1
0
    def _init_callbacks(self):
        self._log.info(u"Initializing callbacks...")

        self._main_dispatcher = EventDispatcher()
        self._texture_dispatcher = EventDispatcher()
        self._object_dispatcher = EventDispatcher()

        self._main_handler = DefaultHandler(self)
        self._texture_handler = TextureEditHandler(
            self, self._current_scene.children[0])
        self._object_handler = TexturedObjectHandler(
            self, self._current_scene.children[1])

        self._main_dispatcher.push_handlers(self._main_handler)
        self._texture_dispatcher.push_handlers(self._texture_handler)
        self._object_dispatcher.push_handlers(self._object_handler)

        glutSetWindow(self._window)
        glutKeyboardFunc(self._main_dispatcher.handle_type('keyboard'))
        glutReshapeFunc(self._main_dispatcher.handle_type('reshape'))

        self._menu_main = glutCreateMenu(
            self._main_dispatcher.handle_type('menu'))
        glutAddMenuEntry("Quit", self._main_handler.get_menu_id('menu_quit'))
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        glutSetWindow(self._subwindows[0])
        glutKeyboardFunc(self._main_dispatcher.handle_type('keyboard'))
        glutReshapeFunc(self._texture_dispatcher.handle_type('reshape'))
        glutMouseFunc(self._texture_dispatcher.handle_type('mouse_button'))
        glutMotionFunc(self._texture_dispatcher.handle_type('mouse_motion'))
        glutPassiveMotionFunc(
            self._texture_dispatcher.handle_type('mouse_motion'))

        self._menu_texture = glutCreateMenu(
            self._texture_dispatcher.handle_type('menu'))
        glutAddMenuEntry("Clear",
                         self._texture_handler.get_menu_id('menu_clear'))
        glutAddMenuEntry("Quit",
                         self._texture_handler.get_menu_id('menu_quit'))
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        glutSetWindow(self._subwindows[1])
        glutKeyboardFunc(self._main_dispatcher.handle_type('keyboard'))
        glutReshapeFunc(self._object_dispatcher.handle_type('reshape'))
        glutMouseFunc(self._object_dispatcher.handle_type('mouse_button'))
        glutMotionFunc(self._object_dispatcher.handle_type('mouse_motion'))

        self._menu_main = glutCreateMenu(
            self._object_dispatcher.handle_type('menu'))
        glutAddMenuEntry("Quit", self._object_handler.get_menu_id('menu_quit'))
        glutAttachMenu(GLUT_RIGHT_BUTTON)

        glutTimerFunc(1, self.update, 1)
Ejemplo n.º 2
0
    def __init__(self,
                 size=(DEFAULT_WIDTH, DEFAULT_HEIGHT),
                 title='MegaMinerAI Bland Title Text',
                 fullscreen=False):
        self.window = Window(width=size[0],
                             height=size[1],
                             caption=title,
                             visible=True,
                             fullscreen=fullscreen,
                             resizable=True,
                             style=Window.WINDOW_STYLE_DEFAULT,
                             vsync=False,
                             display=None,
                             context=None,
                             config=None)
        self.updates = []

        # Set up the event dispatcher
        self.ed = EventDispatcher()
        self.ed.register_class_for_events(self)

        # Build the game loader
        self.loader = gameloader.GameLoader(self.ed)

        #Build the renderer
        self.renderer = renderer.Renderer()

        # Request updates
        self.request_update_on_draw(self.renderer.init_frame, 0)
        self.request_update_on_draw(self.renderer.draw_frame, 100)
Ejemplo n.º 3
0
    def _init_callbacks(self):
        self._log.info(u"Initializing callbacks...")
        self._dispatcher = EventDispatcher()
        self._defaultHandler = DefaultHandler(self)

        self._dispatcher.push_handlers(self._defaultHandler)
        glutKeyboardFunc(self._dispatcher.handle_type('keyboard'))
        glutReshapeFunc(self._dispatcher.handle_type('reshape'))
        glutMouseFunc(self._dispatcher.handle_type('mouse_button'))
        glutMotionFunc(self._dispatcher.handle_type('mouse_motion'))

        self._menu_main = glutCreateMenu(self._dispatcher.handle_type('menu'))
        glutAddMenuEntry("Quit", self._defaultHandler.get_menu_id('menu_quit'))
        glutAttachMenu(GLUT_RIGHT_BUTTON)
        self._menu_scene = glutCreateMenu(self._dispatcher.handle_type('menu'))
        glutSetMenu(self._menu_main)
        glutAddSubMenu("Scene", self._menu_scene)

        glutTimerFunc(1, self.update, 1)
        glutDisplayFunc(self.render)
Ejemplo n.º 4
0
 def _init_callbacks(self):
     self._log.info(u"Initializing callbacks...")
     self._main_dispatcher = EventDispatcher()
     self._main_handler = DefaultHandler(self)
     
     self._main_dispatcher.push_handlers(self._main_handler)
     
     glutKeyboardFunc(self._main_dispatcher.handle_type('keyboard'))
     glutReshapeFunc(self._main_dispatcher.handle_type('reshape'))
     glutMouseFunc(self._main_dispatcher.handle_type('mouse_button'))
     glutMotionFunc(self._main_dispatcher.handle_type('mouse_motion'))
     glutPassiveMotionFunc(self._main_dispatcher.handle_type('mouse_motion'))
     
     self._menu_main = glutCreateMenu(self._main_dispatcher.handle_type('menu'))
     glutAddMenuEntry("Quit", self._main_handler.get_menu_id('menu_quit'))
     glutAddMenuEntry("Raytrace", self._main_handler.get_menu_id('menu_raytrace'))
     glutAddMenuEntry("Take Screenshot", self._main_handler.get_menu_id('menu_take_screenshot'))
     glutAddMenuEntry("Toggle Mesh Visibility", self._main_handler.get_menu_id('menu_visibility'))
     glutAttachMenu(GLUT_RIGHT_BUTTON)
     
     glutTimerFunc(1, self.update, 1)
     glutDisplayFunc(self.render)
Ejemplo n.º 5
0
    def __init__(self, screen_w, screen_h):

        #
        # Initialize Screenworld
        #

        # pygame = Screenworld
        pygame.init()

        # DEBUG SCREEN_INFO
        print("INFO")
        print(pygame.display.Info())
        print("MODES")
        print(pygame.display.list_modes(depth=0))
        print("FULLSCREEN_MODES")
        print(pygame.display.list_modes(depth=0, flags=pygame.FULLSCREEN))

        # set display mode and calculate _screen_size
        if screen_w == 0 and screen_h == 0:
            self._screen_size = (pygame.display.Info().current_w,
                                 pygame.display.Info().current_h)
        else:
            self._screen_size = (screen_w, screen_h)
        #self._screen = pygame.display.set_mode(self._screen_size, flags=pygame.FULLSCREEN)
        self._screen = pygame.display.set_mode(self._screen_size)

        # Frame rate
        self._fps = 60.0
        # Number of physics steps per screen frame
        self._physics_steps_per_frame = 1
        # Time steps
        self._dt = 1.0 / self._fps / self._physics_steps_per_frame
        #self._dt = 1. / self._fps

        # pygame frame clock
        self._clock = pygame.time.Clock()

        #
        # Initialize Game World
        #

        # Space = GameWorld
        self._space = pymunk.Space()
        # Gravity in m / s^2
        self._space.gravity = (0.0, -9.81)
        # Phyicsworld damoing in 1-x %
        self._space.damping = 0.8
        ## sleep time theshold
        #self.space.sleep_time_threshold = 0.3
        # zoomfactor from physicsworld to pixelworld. 1 = show 100% of space.width on screen, 2=50%
        self._zoom = 2
        # Physicsworld size in m
        self._space_size = (512, 320)
        # Camera POV in space in m from left,down
        self._space_pov = (256, 160)

        # Scale factor from space to screen. 1 m in space = <scale> pixel in screen
        #self._scale = Vec2d(self._screen_size).get_length() / Vec2d(self._space_size).get_length()
        self._scale = self._screen_size[0] / self._space_size[0]
        #print("SCALE: {0:f}".format(self._scale))

        # viewrect of current cam in space
        self._space_viewrect = (0, 0, 0, 0)
        self._calc_space_viewrect()

        #
        # Initialize Game Options
        #

        # Drawing Option. Setting _is_is_drawing to False enables headless mode
        self._is_drawing = True

        # Use pymunk debug draw. Note: I can't use it because I implement a scroller, scaler and zoom
        # So I use my own drawing routines in the Entity-Subclasses
        #self._draw_options = pymunk.pygame_util.DrawOptions(self._screen)

        # Execution control
        self._is_running = True
        self._is_paused = True
        self._show_menu = True

        #
        # Create Game Entities
        #

        # GUI
        self._font = pygame.font.SysFont("DejaVuSans", 24)
        self._text = self._font.render("Touch the screen.", True,
                                       (255, 255, 255, 255))
        self._text_w, self._text_h = self._text.get_size()
        self._add_hud()

        # Menu
        self.menu = Menu()

        # Static Scenery
        self.scenery = Scenery(self)

        # Player
        #self.player = Player(self._space, Vec2d(self._space_size)/2)
        self.player = Player(self, Vec2d(256, 160))

        # Add Event Dispatcher for user input
        self.ev = EventDispatcher()
Ejemplo n.º 6
0
 def setUp(self):
     self.dispatcher = EventDispatcher()