/*
Copyright (C) 2015  E.J.M. Martens

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/


#ifndef _TYPES
#define _TYPES

#define TSK_STANDARD     0
#define TSK_CONTACT      1
#define TSK_STRIKE       2

#define MODE_MAINSCREEN      1
#define MODE_ENGINEERING     2
#define MODE_NAVIGATION      3
#define MODE_COMMUNICATION   4

#define CS_UNCLOAKED	0
#define CS_CLOAKING     1
#define CS_CLOAKED      2
#define CS_DECLOAKING   3

#define GS_EXIT     0
#define GS_MENU     1
#define GS_GAME     2
#define GS_GAMEOVER 3
#define GS_TITLE    4
#define GS_CREDITS  5
#define GS_INTRO    6
#define GS_KEYMAP   7

#define DOCK_HEIGHT 18

#define GO_PLAYING 0
#define GO_LOOSE_CRITICAL 1
#define GO_ENTERPRISE     2
#define GO_TIME           3
#define GO_WIN_REACHED   10


#define SND_PHOTON				0
#define SND_EXPLOSION_SMALL		1
#define SND_EXPLOSION_MED       2
#define SND_PHASER              3
#define SND_MAX                 4


#define RESERVED_SAMPLES   16
#define MAX_SAMPLE_DATA    10
#define CLOAK_DELAY        800
#define MAX_ENERGY       10000
#define CORE_CRITICAL       25

#define MAX_CREW_FEDERATION  500
#define MAX_CREW_ROMULAN     200
#define MAX_CREW_KLINGON_BC  400
#define MAX_CREW_KLINGON_BOP  50

#define DEGTORAD(x) ((x)*(ALLEGRO_PI/180.0))
#define RADTODEG(x) ((x)/(ALLEGRO_PI*180.0))




enum MEMBER
{
    MEM_NONE =    0,
    MEM_NEUTRAL,
    MEM_FEDERATION,
    MEM_KLINGON,
    MEM_FERENGI,
    MEM_ROMULAN,
    MEM_OTHER,
    MEM_ENEMY,
    MEM_END
};

enum NAVIGATION_MODE
{
    NAV_NONE      = 0,
    NAV_TOPO,
    NAV_TACTICAL,
    NAV_OCCUPATION,
    NAV_END
};

enum HEALTH
{
    HLT_UNDEFINED=-1,
    HLT_HULL,
    HLT_WARPCORE,
    HLT_IMPULSE,
    HLT_THRUSTER,
    HLT_COMPUTER,
    HLT_SENSOR,
    HLT_SHIELD,
    HLT_PHASER,
    HLT_PHOTON,
    HLT_CLOAK
};

enum ID
{
    ID_NONE = 0,

    ID_ANIMATION_BOTTOM,
    ID_EXPLOSION,
    ID_SMOKE,
    ID_ANIMATION_TOP,

    ID_PLANET_BOTTOM,
    ID_CLASS_A,
	ID_CLASS_B,
	ID_CLASS_L,
	ID_CLASS_N,
	ID_CLASS_M1,
    ID_CLASS_M2,
    ID_CLASS_M3,
    ID_PLANET_TOP,

    ID_STAR_BOTTOM,
    ID_STAR_BLUE,
	ID_STAR_WHITE,
	ID_STAR_YELLOW,
	ID_STAR_RED,
	ID_BLACK_HOLE,
	ID_STAR_TOP,

    ID_BULLET_BOTTOM,
    ID_PHOTON,
    ID_PROTON,
    ID_PLASMA,
    ID_BULLET_TOP,

    ID_SHIP_BOTTOM,
    ID_GALAXYCLASS,
    ID_PLAYER,
    ID_KLINGONBC,
    ID_KLINGONBOP,
    ID_ROMULANBOP,
    ID_SHIP_TOP,

    ID_BASE_BOTTOM,
    ID_FEDERATIONBASE,
    ID_KLINGON_BASE,
    ID_ROMULAN_BASE,
    ID_BASE_TOP,

    ID_SPECIAL_BOTTOM,
    ID_SPECIAL_TOP,
};


enum AI
{
    AI_NONE,
    AI_CHASE,
    AI_EVADE,
    AI_MOVE,
    AI_WANDER,
    AI_DOCK,
    AI_RELEASE,
    AI_MAX
};



const char  SIGNATURE[] = "File Version 0001A"; // for Load / Save

#endif
