Files
source/Laptop/Encyclopedia.h
T
Wanne b150bd172c - Temporary disabled the Encyclopedia, because it seems it takes up a huge amount of virtual/committed memory (~ 2 GB) (by tazpn)
o A define ENABLE_ENCYCLOPEDIA defines, if the encyclopedia code should be compiled
o What is happening here is encyclopedia has a lot of really big structures (ENCYCLOPEDIA_LOCATION) and then a lot of arrays of size NUM_SECTOR, NUM_PROFILES, NUMITEMS which are fairly sizable themselves.
o What the problem with doing this is when you need to allocate memory it typically needs to go to virtual memory to get large blocks of memory (malloc and related routines all do this) but you only have 2GB worth of virtual space as a pointer is 32 bits and user mode gets half of that 00000000-7FFFFFFF for addressing. This statically allocated space is taking up 7/8ths of the virtual address space. When animations or maps need to be loaded there might not be enough virtual space left due to fragmentation.
o To see the amount of committed memory, open TaskManager and add the "Committed Memory" column to the view

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5212 3b4a5df2-a311-0410-b5c6-a8a6f20db521
2012-04-15 23:45:41 +00:00

209 lines
4.4 KiB
C

#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