#ifndef LD_TYPES_H
#define LD_TYPES_H

#include "vector2t.h"


typedef math::vector2t<int>                             tPoint;



namespace LD
{
  enum TextureTypes
  {
    TEX_STAR_1,
    TEX_STAR_2,
    TEX_STAR_3,
    TEX_STAR_4,

    TEX_GROUND_ROCK,
    TEX_GROUND_DIRT,
    TEX_GROUND_LAVA,
    TEX_GROUND_FIRE,
    TEX_GROUND_ICE,
    TEX_GROUND_WATER,
    TEX_GROUND_SAND,

    TEX_GROUND_ROCK_2,
    TEX_GROUND_DIRT_2,
    TEX_GROUND_LAVA_2,
    TEX_GROUND_FIRE_2,
    TEX_GROUND_ICE_2,
    TEX_GROUND_WATER_2,
    TEX_GROUND_SAND_2,

    TEX_BUTTON_1,
    TEX_BUTTON_2,
    TEX_BUTTON_3,

    TEX_UP_1,
    TEX_UP_2,
    TEX_UP_3,
    TEX_DOWN_1,
    TEX_DOWN_2,
    TEX_DOWN_3,

    TEX_SUN,
    TEX_PLANET_1,
    TEX_PLANET_2,
    TEX_PLANET_3,

    TEX_UNIT_ROVER,
    TEX_UNIT_SHIP,
    TEX_UNIT_JET,

    TEX_PARTICLE_DIRT,
    TEX_PARTICLE_ROCK,
    TEX_PARTICLE_SAND,
    TEX_PARTICLE_WATER,
    TEX_PARTICLE_FIRE,
    TEX_PARTICLE_ICE,
    TEX_PARTICLE_LAVA,

    TEX_ARROW,

    TEX_PLAYER_MIN_SHOT,
    TEX_PLAYER_MED_SHOT,
    TEX_PLAYER_MAX_SHOT,

    TEX_ENEMY_SHOT,
    TEX_TURRET,

    TEX_ALIEN_BASE,

    TEX_LAST_ENTRY
  };

  enum TileType
  {
    TT_ROCK,
    TT_DIRT,
    TT_LAVA,
    TT_FIRE,
    TT_ICE,
    TT_WATER,
    TT_SAND,
    TT_ROCK_2,
    TT_DIRT_2,
    TT_LAVA_2,
    TT_FIRE_2,
    TT_ICE_2,
    TT_WATER_2,
    TT_SAND_2,

    TT_LAST_ENTRY
  };

  enum GameObjectType
  {
    GO_INVALID = 0,
    GO_LAST_ENTRY,
  };

  enum SoundTypes
  {
    SOUND_FOUND,
    SOUND_ROVER,
    SOUND_BOAT,
    SOUND_JET,
    SOUND_MIN_GUN,
    SOUND_MED_GUN,
    SOUND_MAX_GUN,
    SOUND_ENEMY_DEAD,
    SOUND_PLAYER_DEAD,
    SOUND_ENEMY_SHOT,
    SOUND_SHOT_HIT,
    SOUND_BUY,
    SOUND_BUTTON,
    SOUND_LAST_ENTRY
  };

  enum UnitType
  {
    UT_INVALID,
    UT_PLAYER,
    UT_PARTICLE,
    UT_PLAYER_SHOT,
    UT_ENEMY_SHOT,
    UT_ENEMY_TURRET,
    UT_ALIEN_BASE
  };

  enum ResourceType
  {
    RT_ZINC,
    RT_ALIEN_TECHNOLOGY,
    RT_GOLD,
    RT_SPICE,
    RT_UNOBTAINIUM,
    RT_CRYSTITE,

    RT_LAST_ENTRY
  };

  struct Resource
  {
    ResourceType      Type;
    tPoint            Location;
    int               Quantity;

    Resource() :
      Type( RT_ZINC ),
      Quantity( 0 )
    {
    }
  };

  enum ShopItem
  {
    SI_NONE = 0,
    SI_EDISON_WARP_DRIVE,
    SI_SMALL_GROUND_ROVER,
    SI_OXYGEN_RECYCLING_FILTER,
    SI_BASIC_BOAT,
    SI_EDISON_WARP_DRIVE_20,
    SI_EXTERNAL_OXYGEN_STORAGE,
    SI_HAPPYCO_JET,
    SI_GOLD_RADAR,
    SI_SPICE_RADAR,
    SI_CRYSTITE_RADAR,
    SI_ZINC_RADAR,
    SI_ALIEN_RADAR,
    SI_UNOBTANIUM_RADAR,
    SI_LONG_RANGE_RADAR,
    SI_HYPERSPACE_DRIVE,
    SI_ROVER_SPIKES,
    SI_HEAT_SHIELD,
    SI_CLOSE_RESOURCE_RADAR,
    SI_MEDIUM_RESOURCE_RADAR,
    SI_LONG_RESOURCE_RADAR,
    SI_HYPERSPACE_DRIVE_HRON,
    SI_SMALL_GUN,
    SI_MEDIUM_GUN,
    SI_MAX_GUN,
    SI_MIN_SHIELD,
    SI_MAX_SHIELD,
    SI_STAR_SCANNER
  };

  enum VehicleType
  {
    VT_NONE,
    VT_ROVER,
    VT_BOAT,
    VT_JET
  };

};




#endif // LD_TYPES_H