  /**
 * 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 "../../display/tileset.h"
#include "../../file/asset.h"
#include "chunk.h"

/**
 * Initializes the world map.
 */
void mapInit();

/**
 * Renders the map object to the graphics device.
 */
void mapRender();

/**
 * Cleans the previously loaded world map.
 */
void mapDispose();

/**
 * Shift the map chunk list along a set of axis (in absolute space).
 * 
 * @param x X movement to shift chunks along.
 * @param y Y movement to shift chunks along.
 * @param z Z movement to shift chunks along.
 */
void mapShift(int32_t x, int32_t y, int32_t z);

/**
 * Align the map chunk list (in absolute space).
 * 
 * @param x X movement to shift chunks along.
 * @param y Y movement to shift chunks along.
 * @param z Z movement to shift chunks along.
 */
void mapAlign(int32_t x, int32_t y, int32_t z);