#ifndef __ENCYCLOPEDIA_H
#define __ENCYCLOPEDIA_H

#include "Cursors.h"
#include "soldier profile type.h"
#include "Quests.h"
enum
{
	ENCYCLOPEDIA_SLOGAN,
	ENCYCLOPEDIA_WARNING_1,
	ENCYCLOPEDIA_WARNING_2,
	ENCYCLOPEDIA_COPYRIGHT_1,
	ENCYCLOPEDIA_COPYRIGHT_2,
	ENCYCLOPEDIA_COPYRIGHT_3
};

void GameInitEncyclopedia();
BOOLEAN EnterEncyclopedia();
void ExitEncyclopedia();
void HandleEncyclopedia();
void RenderEncyclopedia();

BOOLEAN RemoveEncyclopediaDefaults();
BOOLEAN InitEncyclopediaDefaults();
BOOLEAN DrawEncyclopediaDefaults();

BOOLEAN DisplayEncyclopediaSlogan();
BOOLEAN DisplayEncyclopediaCopyright();

#define		ENCYCLOPEDIA_DECRIPTION_SIZE				1120
#define		ENCYCLOPEDIA_NAME_SIZE						160
#define		NUM_SECTOR									4*255
#define 	MAX_ENCYCLOPEDIA_CHARS		500

#define NUM_MAX_TEMP	10000

#define TEXT_NUM_ENC TEXT_NUM_ENCYCLOPEDIA_HELP_TEXT

enum
{
	//Locations
	NONE_NONE = 0,
	LOCATION_CITIES,
	LOCATION_SAM,
	LOCATION_OTHER,
	LOCATION_MINES,
	LOCATION_MILITARY,
	LOCATION_LABORATORY,
	LOCATION_FACTORY,
	LOCATION_HOSPITAL,
	LOCATION_PRISON,
	LOCATION_AIRPORT,

	TEXT_NUM_ENCYCLOPEDIA_HELP_TEXT
};

//Profiles
enum
{
	
	PROFIL = 0,
	PROFIL_AIM,
	PROFIL_MERC,
	PROFIL_RPC,
	PROFIL_NPC,
	PROFIL_VEHICLES,
	PROFIL_IMP,
};

//SubGroup
enum
{
	PROFIL_NONE = 0,
	PROFIL_EPC = 1,
//	PROFIL_TERRORIS,
//	PROFIL_DEIDRANNA_SOLDIER,
//	PROFIL_HICK,
//	PROFIL_KINGPIN,
//	PROFIL_KINGPIN,
};


typedef struct
{
	//Profiles/Locations
	UINT32   	uiIndex;
	CHAR8		szFile[MAX_ENCYCLOPEDIA_CHARS];
	CHAR8		szFile2[MAX_ENCYCLOPEDIA_CHARS];
	CHAR8		szFile3[MAX_ENCYCLOPEDIA_CHARS];
	CHAR8		szFile4[MAX_ENCYCLOPEDIA_CHARS];
	
	CHAR16		Name[ENCYCLOPEDIA_NAME_SIZE];
	
	CHAR16		sDesc1[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc2[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc3[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc4[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc5[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc6[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc7[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc8[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc9[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc10[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc11[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc12[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc13[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc14[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc15[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc16[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc17[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc18[ENCYCLOPEDIA_DECRIPTION_SIZE];
	CHAR16		sDesc19[ENCYCLOPEDIA_DECRIPTION_SIZE];	
	CHAR16		sDesc20[ENCYCLOPEDIA_DECRIPTION_SIZE];
	
	BOOLEAN   	Hidden;
	
	CHAR16		sImageDesc1[150];
	CHAR16		sImageDesc2[150];
	CHAR16		sImageDesc3[150];
	CHAR16		sImageDesc4[150];
	
	
	UINT32 sImagePositionX[4];
	UINT32 sImagePositionY[4];
	/*
	UINT32 sImagePosition1X;
	UINT32 sImagePosition1Y;
	UINT32 sImagePosition2X;
	UINT32 sImagePosition2Y;
	UINT32 sImagePosition3X;
	UINT32 sImagePosition3Y;
	UINT32 sImagePosition4X;
	UINT32 sImagePosition4Y;
	*/
	
	UINT32 MaxPages;
	INT32 MaxImages;
	
	//Only locations
	INT32 LocType;
	INT16 SectorX;
	INT16 SectorY;
	INT16 SectorZ;	
	
	//Only profiles
	INT32 IDProfile;
	INT32 subGroup1;
	INT32 subCivGroup;
	
	INT32 InventoryClass;
	
	BOOLEAN Filtr;
	
	BOOLEAN enableDesc;
	
	BOOLEAN bvisible;
	
	CHAR16		sCode[150];
	
	CHAR8		sSounds[MAX_ENCYCLOPEDIA_CHARS];
	
	//Quests
	INT32 QuestID;
	INT32 pQuests;
	BOOLEAN SpecialQuestImage;
	CHAR8	BeforeImage[MAX_ENCYCLOPEDIA_CHARS];
	CHAR8	AfterImage[MAX_ENCYCLOPEDIA_CHARS];
	UINT32 ImagePositionQX[10];
	UINT32 ImagePositionQY[10];
	CHAR16 ImageDescBefore[150];
	CHAR16 ImageDescAfter[150];
	
	INT32 NextMission;
	UINT32 MissionID;
	INT32 CheckMission;
	
	//Inventory
	
}	ENCYCLOPEDIA_LOCATION;

#define MAX_IMAGES 4
#define MAX_PAGES 4

#define MISSIONNOSTARTED 0
#define MISSIONSTART 1
#define MISSIONEND  2

typedef struct
{
	UINT32   	uiIndex;
	BOOLEAN   	Hidden;
	BOOLEAN 	bvisible;
}	ENCYCLOPEDIA_PROF_SAVE;

typedef struct
{
	UINT32   	uiIndex;
	BOOLEAN   	Hidden;
	INT32   	CheckMission;
}	MISSION_SAVE;

extern void InitEncyklopediaBool();

extern void ShowNPCEncyclopediaEntry(UINT8 ubNPC, BOOLEAN hidden);

extern ENCYCLOPEDIA_LOCATION gEncyclopediaProfilesData[];
extern ENCYCLOPEDIA_LOCATION gBriefingRoomData[];

#endif