package kha;

/**
 * This represents a Video file.
 */
class Video implements Resource {
	/**
	 * The width of the video file in pixels.
	 */
	public function width(): Int {
		return 100;
	}

	/**
	 * The height of the video file in pixels.
	 */
	public function height(): Int {
		return 100;
	}

	/**
	 * Create a new media object instance.
	 */
	public function new(): Void {}

	/**
	 * Play / resume the media element.
	 *
	 * @param loop		If playing it looped, default = false.
	 */
	public function play(loop: Bool = false): Void {}

	/**
	 * Call this every frame to update the video.
	 * This is not required on all targets but where it's not required the function just does nothing - so please call it.
	 */
	public function update(dt: Float): Void {}

	/**
	 * Pause the media element.
	 */
	public function pause(): Void {}

	/**
	 * Pause the stop element.
	 */
	public function stop(): Void {}

	/**
	 * Return the media length, in milliseconds.
	 */
	public function getLength(): Int { // Milliseconds
		return 0;
	}

	/**
	 * Return the media position, in milliseconds.
	 * Deprecated.
	 */
	public function getCurrentPos(): Int { // Milliseconds
		return 0;
	}

	public var position(get, set): Int;

	function get_position(): Int {
		return 0;
	}

	function set_position(value: Int): Int {
		return 0;
	}

	/**
	 * Return the media volume, between 0 and 1.
	 */
	public function getVolume(): Float { // [0, 1]
		return 1;
	}

	/**
	 * Set the media volume, between 0 and 1.
	 *
	 * @param volume	The new volume, between 0 and 1.
	 */
	public function setVolume(volume: Float): Void { // [0, 1]
	}

	/**
	 * If the media has finished or not.
	 */
	public function isFinished(): Bool {
		return getCurrentPos() >= getLength();
	}

	/**
	 * Unload the resource from memory.
	 */
	public function unload(): Void {}
}