class MoviePlay(states.State):
    def __init__(self,driver,screen,movie=None):
        states.State.__init__(self,driver,screen)

        #related to pausing/stopping the movie
        self.start_time = pygame.time.get_ticks()
        self.paused = False
        self.timer = False

        self.timer_start = 0
        self.timer_duration = 0

        self.max_time = 4

        self.current_time = 0
        self.prev_time = 0

        self.screen = screen

        screen.fill((0,0,0))
        pygame.display.flip()

        #make sure we have a movie to play
        if movie is None:
            print "Need a movie to play!"
            sys._driver.quit()

        self.movie = Movie(movie)

        #invalid video file, so we quit
        if not self.movie.has_video():
            print "No video in file, or unrecognized file format!"
            self._driver.quit()
        else:
            if self.movie.has_audio():
                self.movie.set_volume(1.0)

        #set the play area to be in the middle of the screen
        sw,sh = self.screen.get_size()
        mw,mh = self.movie.get_size()
        left = sw/2 - mw/2
        top = sh/2 - mh/2
        playarea = pygame.Rect(left,top,mw,mh)

        self.movie_resolution = self.movie.get_size()
        self.regular_resolution = self.screen.get_size()
        self.movie.set_display(self.screen,playarea)

    def paint(self,screen):
        screen.fill((0,0,0))
        pygame.display.flip()

        self.movie.play()
        pygame.event.clear()

        while self.movie.get_busy() or self.paused:
            seconds = pygame.time.get_ticks()
            elapsed = seconds - self.start_time
            self.current_time = int( elapsed / 1000 )

            if self.timer:
                self.timer_duration = self.current_time - self.timer_start

            if self.timer_duration >= self.max_time:
                break

            for event in pygame.event.get():
                if event.type == QUIT:
                    self.movie.stop()

                if event.type == KEYUP or event.type == KEYDOWN:
                    if event.key == K_ESCAPE:
                        self.movie.stop()

                    
                if event.type == MOUSEBUTTONDOWN:
                    self.timer = not self.timer
                    self.timer_start = self.current_time

                elif event.type == MOUSEBUTTONUP:
                    self.timer = not self.timer
                    if self.timer_duration >= self.max_time:
                        break
                    else:
                        if self.paused:
                            lightsOff()
                            self.movie.play()
                        else:
                            lightsOn()
                            self.movie.pause()
                        self.paused = not self.paused

        pygame.event.clear()
        screen.fill((0,0,0))
        pygame.display.flip()
        self.movie.stop()

        self._driver.replace( MainScreen(self._driver, self.screen ) )

    def mouseDownEvent(self,x,y):
        return
    
    def keyEvent(self,key,unicode,pressed):
        return