/**
 * 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/camera.h"
#include "../../display/shader.h"
#include "../../display/font.h"
#include "../../display/primitive.h"
#include "../../display/primitives/quad.h"
#include "../../display/primitives/cube.h"
#include "../../display/renderlist.h"
#include "../../display/texture.h"
#include "../../file/asset.h"

#include "../../file/xml.h"
#include "../../file/asset.h"
#include "../../ui/grid.h"
#include "../../ui/menu.h"
#include "../../ui/textmenu.h"
#include "../../ui/image.h"
#include "../../ui/framedtextmenu.h"

#include "../../script/scripter.h"
#include "../../script/api/io.h"
#include "../../script/api/display.h"
#include "../../script/api/asset.h"
#include "../../script/api/epoch.h"

typedef struct {
  engine_t engine;
  scripter_t scripter;
} sandboxscene_t;

/**
 * Initialize the sandbox scene test game.
 * 
 * @param game Game to initialize.
 * @param engine Engine to use during init.
 * @return True if successful, otherwise false.
 */
bool sandboxSceneInit(sandboxscene_t *game);

/**
 * Update a sandbox scene.
 * 
 * @param game Game to update.
 * @param engine Engine to use when updating.
 */
void sandboxSceneUpdate(sandboxscene_t *game);

/**
 * Dispose a previously created scene game.
 * 
 * @param game Game to dispose.
 */
void sandboxSceneDispose(sandboxscene_t *game);