Import Aliens vs Predator - Gold (Build 116)
Source code release, imported from: https://www.gamefront.com/games/aliens-vs-predator-3/file/avp-gold-complete-source-code All text files were converted to Unix format.
This commit is contained in:
commit
218ca90543
572 changed files with 434587 additions and 0 deletions
325
3dc/win95/ENVCHUNK.CPP
Normal file
325
3dc/win95/ENVCHUNK.CPP
Normal file
|
@ -0,0 +1,325 @@
|
|||
#include "chunk.hpp"
|
||||
#include "envchunk.hpp"
|
||||
|
||||
//macro for helping to force inclusion of chunks when using libraries
|
||||
FORCE_CHUNK_INCLUDE_IMPLEMENT(envchunk)
|
||||
|
||||
// Class Environment_Data_Chunk functions
|
||||
RIF_IMPLEMENT_DYNCREATE("REBENVDT",Environment_Data_Chunk)
|
||||
|
||||
// constructor from buffer
|
||||
LOCKABLE_CHUNK_WITH_CHILDREN_LOADER("REBENVDT",Environment_Data_Chunk)
|
||||
/*
|
||||
Children for Enviornment_Data_Chunk :
|
||||
|
||||
"ENVSDSCL" Environment_Scale_Chunk
|
||||
"GAMEMODE" Environment_Game_Mode_Chunk
|
||||
"ENVPALET" Environment_Palette_Chunk
|
||||
"ENVTXLIT" Environment_TLT_Chunk
|
||||
"TLTCONFG" TLT_Config_Chunk
|
||||
"CLRLOOKP" Coloured_Polygons_Lookup_Chunk
|
||||
"MATCHIMG" Matching_Images_Chunk
|
||||
"BMPNAMES" Global_BMP_Name_Chunk
|
||||
"BMNAMVER" BMP_Names_Version_Chunk
|
||||
"BMNAMEXT" BMP_Names_ExtraData_Chunk
|
||||
"RIFFNAME" RIF_Name_Chunk
|
||||
"ENDTHEAD" Environment_Data_Header_Chunk
|
||||
"LIGHTSET" Light_Set_Chunk
|
||||
"PRSETPAL" Preset_Palette_Chunk
|
||||
"SPECLOBJ" Special_Objects_Chunk
|
||||
"AVPEXSTR" AVP_External_Strategy_Chunk
|
||||
"BMPMD5ID" Bitmap_MD5_Chunk
|
||||
"GLOGENDC" Global_Generator_Data_Chunk
|
||||
"FRAGTYPE" Fragment_Type_Chunk
|
||||
"ENVACOUS" Environment_Acoustics_Chunk
|
||||
"AVPENVIR" AVP_Environment_Settings_Chunk
|
||||
"SOUNDDIR" Sound_Directory_Chunk
|
||||
"RANTEXID" Random_Texture_ID_Chunk
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
// empty constructor
|
||||
Environment_Data_Chunk::Environment_Data_Chunk (Chunk_With_Children * parent)
|
||||
:Lockable_Chunk_With_Children (parent, "REBENVDT")
|
||||
{
|
||||
// as necessary, generated automatically
|
||||
new Environment_Data_Header_Chunk (this);
|
||||
}
|
||||
|
||||
|
||||
BOOL Environment_Data_Chunk::file_equals (HANDLE & /*rif_file*/)
|
||||
{
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
Environment_Data_Header_Chunk * Environment_Data_Chunk::get_header()
|
||||
{
|
||||
return (Environment_Data_Header_Chunk *) this->lookup_single_child ("ENDTHEAD");
|
||||
}
|
||||
|
||||
const char * Environment_Data_Chunk::get_head_id()
|
||||
{
|
||||
Environment_Data_Header_Chunk * hdptr = get_header();
|
||||
|
||||
if (!hdptr) return (0);
|
||||
|
||||
return(hdptr->identifier);
|
||||
|
||||
}
|
||||
|
||||
void Environment_Data_Chunk::set_lock_user (char * user)
|
||||
{
|
||||
Environment_Data_Header_Chunk * hdptr = get_header();
|
||||
|
||||
if (!hdptr) return;
|
||||
|
||||
strncpy (hdptr->lock_user, user,16);
|
||||
|
||||
hdptr->lock_user[16] = 0;
|
||||
}
|
||||
|
||||
void Environment_Data_Chunk::post_input_processing()
|
||||
{
|
||||
if (get_header())
|
||||
if (get_header()->flags & GENERAL_FLAG_LOCKED)
|
||||
external_lock = TRUE;
|
||||
|
||||
Chunk_With_Children::post_input_processing();
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
// Class Environment_Data_Header_Chunk functions
|
||||
RIF_IMPLEMENT_DYNCREATE("ENDTHEAD",Environment_Data_Header_Chunk)
|
||||
|
||||
// from buffer
|
||||
Environment_Data_Header_Chunk::Environment_Data_Header_Chunk (Chunk_With_Children * parent, const char * hdata, size_t /*hsize*/)
|
||||
: Chunk (parent, "ENDTHEAD"),
|
||||
flags (0), version_no (0)
|
||||
{
|
||||
flags = *((int *) hdata);
|
||||
|
||||
strncpy (lock_user, (hdata + 4), 16);
|
||||
lock_user[16] = '\0';
|
||||
|
||||
version_no = *((int *) (hdata + 20));
|
||||
}
|
||||
|
||||
BOOL Environment_Data_Header_Chunk::output_chunk (HANDLE & hand)
|
||||
{
|
||||
unsigned long junk;
|
||||
BOOL ok;
|
||||
char * data_block;
|
||||
|
||||
data_block = make_data_block_from_chunk();
|
||||
|
||||
ok = WriteFile (hand, (long *) data_block, (unsigned long) chunk_size, &junk, 0);
|
||||
|
||||
delete [] data_block;
|
||||
|
||||
if (!ok) return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Environment_Data_Header_Chunk::fill_data_block ( char * data_start)
|
||||
{
|
||||
strncpy (data_start, identifier, 8);
|
||||
|
||||
data_start += 8;
|
||||
|
||||
*((int *) data_start) = chunk_size;
|
||||
|
||||
data_start += 4;
|
||||
|
||||
*((int *) data_start) = flags;
|
||||
strncpy ((data_start + 4), lock_user, 16);
|
||||
|
||||
*((int *) (data_start+20)) = version_no;
|
||||
}
|
||||
|
||||
void Environment_Data_Header_Chunk::prepare_for_output()
|
||||
{
|
||||
version_no ++;
|
||||
}
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
// Class Environment_Scale_Chunk functions
|
||||
RIF_IMPLEMENT_DYNCREATE("ENVSDSCL",Environment_Scale_Chunk)
|
||||
|
||||
void Environment_Scale_Chunk::fill_data_block ( char * data_start)
|
||||
{
|
||||
strncpy (data_start, identifier, 8);
|
||||
|
||||
data_start += 8;
|
||||
|
||||
*((int *) data_start) = chunk_size;
|
||||
|
||||
data_start += 4;
|
||||
|
||||
*((double *) data_start) = scale;
|
||||
}
|
||||
|
||||
///////////////////////////////////////
|
||||
|
||||
RIF_IMPLEMENT_DYNCREATE("ENVACOUS",Environment_Acoustics_Chunk)
|
||||
|
||||
Environment_Acoustics_Chunk::Environment_Acoustics_Chunk(Environment_Data_Chunk* parent)
|
||||
:Chunk(parent,"ENVACOUS")
|
||||
{
|
||||
env_index=0;
|
||||
reverb=2;
|
||||
spare=0;
|
||||
}
|
||||
|
||||
Environment_Acoustics_Chunk::Environment_Acoustics_Chunk(Chunk_With_Children* parent,const char* data,size_t)
|
||||
:Chunk(parent,"ENVACOUS")
|
||||
{
|
||||
env_index=*(int*)data;
|
||||
data+=4;
|
||||
reverb=*(float*)data;
|
||||
data+=4;
|
||||
spare=*(int*)data;
|
||||
}
|
||||
|
||||
void Environment_Acoustics_Chunk::fill_data_block(char* data_start)
|
||||
{
|
||||
strncpy (data_start, identifier, 8);
|
||||
|
||||
data_start += 8;
|
||||
|
||||
*((int *) data_start) = chunk_size;
|
||||
|
||||
data_start += 4;
|
||||
|
||||
*(int*)data_start=env_index;
|
||||
data_start+=4;
|
||||
*(float*)data_start=reverb;
|
||||
data_start+=4;
|
||||
*(int*)data_start=spare;
|
||||
|
||||
}
|
||||
///////////////////////////////////////
|
||||
|
||||
RIF_IMPLEMENT_DYNCREATE("SOUNDDIR",Sound_Directory_Chunk)
|
||||
|
||||
Sound_Directory_Chunk::Sound_Directory_Chunk(Environment_Data_Chunk* parent,const char* dir)
|
||||
:Chunk(parent,"SOUNDDIR")
|
||||
{
|
||||
directory=new char[strlen(dir)+1];
|
||||
strcpy(directory,dir);
|
||||
}
|
||||
|
||||
Sound_Directory_Chunk::Sound_Directory_Chunk(Chunk_With_Children * const parent, const char* data, size_t const )
|
||||
:Chunk(parent,"SOUNDDIR")
|
||||
{
|
||||
directory=new char[strlen(data)+1];
|
||||
strcpy(directory,data);
|
||||
}
|
||||
|
||||
Sound_Directory_Chunk::~Sound_Directory_Chunk()
|
||||
{
|
||||
delete [] directory;
|
||||
}
|
||||
|
||||
void Sound_Directory_Chunk::fill_data_block(char* data_start)
|
||||
{
|
||||
strncpy (data_start, identifier, 8);
|
||||
data_start += 8;
|
||||
*((int *) data_start) = chunk_size;
|
||||
data_start += 4;
|
||||
|
||||
strcpy(data_start,directory);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////
|
||||
/////////////////////Available shape set collections////////////////////////////////////////
|
||||
RIF_IMPLEMENT_DYNCREATE("RANTEXID",Random_Texture_ID_Chunk)
|
||||
|
||||
Random_Texture_ID_Chunk::Random_Texture_ID_Chunk(Chunk_With_Children* parent,const char* _name)
|
||||
:Chunk(parent,"RANTEXID")
|
||||
{
|
||||
name=new char[strlen(_name)+1];
|
||||
strcpy(name,_name);
|
||||
spare1=spare2=0;
|
||||
}
|
||||
|
||||
|
||||
Random_Texture_ID_Chunk::Random_Texture_ID_Chunk(Chunk_With_Children* parent,const char* data,size_t)
|
||||
:Chunk(parent,"RANTEXID")
|
||||
{
|
||||
CHUNK_EXTRACT_STRING(name);
|
||||
|
||||
int num_types,type;
|
||||
CHUNK_EXTRACT(num_types,int);
|
||||
for(int i=0;i<num_types;i++)
|
||||
{
|
||||
CHUNK_EXTRACT(type,int);
|
||||
random_types.add_entry(type);
|
||||
}
|
||||
CHUNK_EXTRACT(spare1,int);
|
||||
CHUNK_EXTRACT(spare2,int);
|
||||
|
||||
}
|
||||
|
||||
Random_Texture_ID_Chunk::~Random_Texture_ID_Chunk()
|
||||
{
|
||||
delete [] name;
|
||||
}
|
||||
|
||||
void Random_Texture_ID_Chunk::fill_data_block(char* data)
|
||||
{
|
||||
CHUNK_FILL_START
|
||||
|
||||
CHUNK_FILL_STRING(name)
|
||||
|
||||
CHUNK_FILL(random_types.size(),int);
|
||||
for(LIF<int> rlif(&random_types);!rlif.done();rlif.next())
|
||||
{
|
||||
CHUNK_FILL(rlif(),int)
|
||||
}
|
||||
|
||||
CHUNK_FILL(spare1,int)
|
||||
CHUNK_FILL(spare2,int)
|
||||
|
||||
}
|
||||
|
||||
size_t Random_Texture_ID_Chunk::size_chunk()
|
||||
{
|
||||
chunk_size=12+12+random_types.size()*4;
|
||||
chunk_size+=(strlen(name)+4)&~3;
|
||||
return chunk_size;
|
||||
}
|
||||
///////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
//Class Special_Objects_Chunk :
|
||||
RIF_IMPLEMENT_DYNCREATE("SPECLOBJ",Special_Objects_Chunk)
|
||||
|
||||
CHUNK_WITH_CHILDREN_LOADER("SPECLOBJ",Special_Objects_Chunk)
|
||||
/*
|
||||
Children for Special_Objects_Chunk :
|
||||
"AVPGENER" AVP_Generator_Chunk
|
||||
"SOUNDOB2" Sound_Object_Chunk
|
||||
"VIOBJECT" Virtual_Object_Chunk
|
||||
"AVPCABLE" AVP_Power_Cable_Chunk
|
||||
"AVPSTART" AVP_Player_Start_Chunk
|
||||
"AVPPATH2" AVP_Path_Chunk
|
||||
"AVPGENEX" AVP_Generator_Extra_Data_Chunk
|
||||
"SOUNDEXD" Sound_Object_Extra_Data_Chunk
|
||||
"PARGENER" AVP_Particle_Generator_Chunk
|
||||
"PLACHIER" Placed_Hierarchy_Chunk
|
||||
"CAMORIGN" Camera_Origin_Chunk
|
||||
"AVPDECAL" AVP_Decal_Chunk
|
||||
"R6WAYPNT" R6_Waypoint_Chunk
|
||||
|
||||
*/
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue