package funkin.ui.haxeui;

import flixel.FlxBasic;
import flixel.input.gamepad.FlxGamepad;
import haxe.ui.actions.IActionInputSource;

/**
 * Receives button presses from the Flixel gamepad and emits HaxeUI events.
 */
class FlxGamepadActionInputSource extends FlxBasic
{
  public static var instance(get, null):FlxGamepadActionInputSource;

  static function get_instance():FlxGamepadActionInputSource
  {
    if (instance == null) instance = new FlxGamepadActionInputSource();
    return instance;
  }

  public function new()
  {
    super();
  }

  public function start():Void
  {
    FlxG.plugins.addPlugin(this);
  }

  public override function update(elapsed:Float):Void
  {
    super.update(elapsed);

    if (FlxG.gamepads.firstActive != null)
    {
      updateGamepad(elapsed, FlxG.gamepads.firstActive);
    }
  }

  function updateGamepad(elapsed:Float, gamepad:FlxGamepad):Void
  {
    if (gamepad.justPressed.BACK)
    {
      //
    }
  }

  public override function destroy():Void
  {
    super.destroy();
    FlxG.plugins.remove(this);
  }
}