#if !defined(LD_GAME_WORLD_H_)
#define LD_GAME_WORLD_H_

#include "player.h"
#include "npc.h"
#include "bandit.h"
#include "../core/math.h"

// Areas are which
typedef U32 World_Area;
enum World_Area {
  WORLD_AREA_OUTSIDE = (1 << 0),
  WORLD_AREA_SALOON  = (1 << 1),
};

typedef struct World World;
struct World {
  //// Static stuff
  NavMesh *navMesh;
  Random random;

  //// Player
	Player player;

  //// NPCs
  U32 npcCount;
  NPC npcs[128];

  ////Bandit
  // The bandit the player is after.
  Bandit bandit;

  // NPC points of interest, places to walk to.
  U32 npcPOI[256];
};

function void UpdateWorld(F32 delta, World *world);
function void RenderWorld(World *world, D_Context *drawContext );
function void ProcessEvents(SDL_Event *event, World *world);
function void UpdateNPCs(F32 delta, World *world);
function void UpdateNPC(F32 delta, NPC *npc, World *world);
function void UpdateBandit(F32 delta, Bandit *bandit, World *world);

#endif  // LD_GAME_WORLD_H_
