module TAC
  class PracticeGameClock
    module EventHandlers
      ### Clock ###
      def start_clock
        @clock_running = true
      end

      def stop_clock
        @clock_running = false
      end

      def change_clock(value)
        @clock_time = time_from_string(value)
      end

      ### Countdown ###
      def start_countdown
        @countdown_running = true
      end

      def stop_countdown
        @countdown_running = false
      end


      def change_countdown(value)
        @countdown_time = time_from_string(value)
      end

      def change_display(display)
      end

      def change_color(color)
        out = case color
        when :white
          Gosu::Color::WHITE
        when :orange
          Gosu::Color.rgb(150, 75, 0)
        when :red
          Gosu::Color.rgb(150, 0, 0)
        end

        @display_color = out
      end

      private def time_from_string(string)
        split = string.split(":")
        minutes = (split.first.to_i) * 60
        seconds = (split.last.to_i)

        return minutes + seconds
      end

    def play_sound(sound)
        path = nil
        case sound
        when :autonomous_countdown
          path = "media/sounds/3-2-1.wav"
        when :autonomous_start
          path = "media/sounds/charge.wav"
        when :autonomous_ended
          path = "media/sounds/endauto.wav"
        when :teleop_pickup_controllers
          path = "media/sounds/Pick_Up_Controllers.wav"
        when :abort_match
          path = "media/sounds/fogblast.wav"
        when :teleop_countdown
          path = "media/sounds/3-2-1.wav"
        when :teleop_started
          path = "media/sounds/firebell.wav"
        when :end_game
          path = "media/sounds/factwhistle.wav"
        when :end_match
          path = "media/sounds/endmatch.wav"
        end

        path = "#{ROOT_PATH}/#{path}"

        if path && File.exist?(path) && !File.directory?(path)
          Jukebox::SAMPLES[path] = Gosu::Sample.new(path) unless Jukebox::SAMPLES[path].is_a?(Gosu::Sample)
          Jukebox::SAMPLES[path].play
        else
          warn "WARNING: Sample for #{sound.inspect} could not be found at '#{path}'"
        end
      end
    end
  end
end
