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)
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)
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)
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)
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()
def setUp(self): self.dispatcher = EventDispatcher()