// Copyright (c) 2022 Dominic Masters
// 
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT

#pragma once
#include "visualnovel/scene/SimpleVNScene.hpp"
#include "poker/PokerGame.hpp"
#include "visualnovel/events/PokerBetLoopEvent.hpp"
#include "visualnovel/events/PokerInitialEvent.hpp"
#include "ui/PokerPlayerDisplay.hpp"

namespace Dawn {
  class PokerVNScene : public SimpleVNScene {
    protected:
      void vnStage() override;
      std::vector<Asset*> getRequiredAssets() override;

      /**
       * Returns the Poker Players that are in this poker scene.
       * 
       * @return List of Poker Players.
       */
      virtual std::vector<PokerPlayer*> getPokerPlayers() = 0;

    public:
      PokerGame *pokerGame;
      std::vector<PokerPlayer*> pokerPlayers;
      std::map<PokerPlayer*, PokerPlayerDisplay*> pokerPlayerDisplays;

      /**
       * Create a simple Poker Visual Novel Scene. Simplifies some of the less
       * interesting parts of a poker VN game.
       * 
       * @param game Game that this poker scene belongs to.
       */
      PokerVNScene(DawnGame *game);
  };
}