import pygame
from pygame.locals import * # Color() and Rect() are defined here

class GameMain():
    """game Main entry point. handles intialization of game and graphics, as well as game loop"""
    done = False
    color_bg = Color(50,50,50)
    
    def __init__(self, width=800, height=600):
        """Initialize PyGame"""        
        pygame.init()
        self.width, self.height = width, height
        self.screen = pygame.display.set_mode(( self.width, self.height ))
        pygame.display.set_caption( WINDOW_TITLE )        

        self.clock = pygame.time.Clock()
        self.bLimitFPS = True
        self.fps_limit = 40        

    def main_loop(self):
        """Game() main loop"""
        while not self.done:
            self.handle_events()
            self.update()
            self.draw()
            
            # delay here: toggle FPS cap 
            if self.bLimitFPS: self.clock.tick( self.fps_limit )
            else: self.clock.tick()
    
    def update(self):
        self.now = pygame.time.get_ticks()        

    def handle_events(self):
        """handle regular events. Also sends copies to Note()s, etc..."""
        # handle events, and pass to renderer
        events = pygame.event.get()
        kmods = pygame.key.get_mods()
        
        for event in events:
            if event.type == pygame.QUIT: sys.exit()
            # event: keydown
            elif event.type == KEYDOWN:
                # exit on 'escape'
                if (event.key == K_ESCAPE): self.done = True
            """ elif event.type == MOUSEMOTION:
                x,y = event.pos                
            elif event.type == MOUSEBUTTONUP:                
                x,y = event.pos
                button = event.button
            elif event.type == MOUSEBUTTONDOWN:
                x,y = event.pos
                button = event.button                                

                # state based on key
                if button == 1:
                    # LMB + ctrl + shift
                    if kmods & KMOD_LCTRL and kmods & KMOD_LSHIFT:
                        # do stuff...
                        pass """

    def draw(self):
        """render screen"""
        self.screen.fill( self.color_bg )
        pygame.display.flip()

if __name__ == "__main__":        
    game = GameMain()
    game.main_loop()    
