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

#pragma once
#include <dawn/dawn.h>
#include "entitytypes.h"
#include "../../file/asset.h"
#include "../../display/spritebatch.h"
#include "../../display/shader.h"
#include "../../display/texture.h"
#include "../../display/tileset.h"

/**
 * Initializes the entity state system.
 */
void entityStateInit();

/**
 * Render the entity state system.
 */
void entityStateRender();

/**
 * Dispose and clean up the entity state system.
 */
void entityStateDispose();

/**
 * Initializes an entity into the entity state.
 * 
 * @param id The Entity ID  within the entity state system.
 * @param type The Entity type to initialize.
 */
void entityInit(entityid_t id, entitytypeid_t type);

/**
 * Disposes the entity from the entity state.
 * 
 * @param id The entity id to dispose.
 */
void entityDispose(entityid_t id);