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

#pragma once
#include "../../libs.h"
#include "../../display/animation/queue.h"
#include "pokergameassets.h"
#include "pokerworld.h"
#include "pokerui.h"
#include "pokergameaction.h"
#include "../../poker/poker.h"
#include "../../poker/player.h"
#include "../../vn/vnconversation.h"
#include "../../vn/vnscene.h"

#define POKER_GAME_SEAT_COUNT 8
#define POKER_GAME_SEAT_FOR_PLAYER(p) (p < POKER_PLAYER_HUMAN_INDEX ? \
  p + 1 : POKER_GAME_SEAT_COUNT - (p - POKER_PLAYER_HUMAN_INDEX) \
)
#define POKER_GAME_SEAT_DEALER POKER_PLAYER_COUNT

#define POKER_GAME_PENNY_BASE_WIDTH 1000
#define POKER_GAME_PENNY_BASE_HEIGHT 1920
#define POKER_GAME_PENNY_FACE_X 367
#define POKER_GAME_PENNY_FACE_Y 256
#define POKER_GAME_PENNY_FACE_WIDTH 280
#define POKER_GAME_PENNY_FACE_HEIGHT 280

typedef struct {
  /** Poker Game State */
  poker_t poker;

  /** Visual Novel Engine */
  vnscene_t scene;

  /** Assets (Files) for the game. */
  pokergameassets_t assets;

  /** Poker Game World. */
  pokerworld_t world;

  /** UI For the Game */
  pokerui_t ui;

  /** Data for the actions */
  pokergameactiondata_t actionData[ANIMATION_QUEUE_ITEM_MAX];
} pokergame_t;