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

#pragma once
#include "../../libs.h"
#include "../../engine/engine.h"
#include "../../display/renderlist.h"
#include "../../display/shader.h"
#include "../../display/texture.h"
#include "../../display/primitives/cube.h"
#include "../../display/primitive.h"
#include "../../file/asset.h"
#include "../../util/dynarray.h"

typedef struct {
  engine_t engine;
  renderlist_t renderList;
} dawngame_t;

/**
 * Initializes the Dawn Game instance.
 * 
 * @param game Game to instanciate.
 * @return True if successful otherwise false.
 */
bool dawnGameInit(dawngame_t *game);

/**
 * Update the Dawn Game Instance.
 * 
 * @param game Game to update.
 */
void dawnGameUpdate(dawngame_t *game);

/**
 * Cleanup the dawn game instance.
 * 
 * @param game Game to dispose.
 */
void dawnGameDispose(dawngame_t *game);