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
255
3dc/win95/fragchnk.cpp
Normal file
255
3dc/win95/fragchnk.cpp
Normal file
|
@ -0,0 +1,255 @@
|
|||
#include "fragchnk.hpp"
|
||||
|
||||
//macro for helping to force inclusion of chunks when using libraries
|
||||
FORCE_CHUNK_INCLUDE_IMPLEMENT(fragchnk)
|
||||
|
||||
RIF_IMPLEMENT_DYNCREATE("FRAGTYPE",Fragment_Type_Chunk)
|
||||
|
||||
CHUNK_WITH_CHILDREN_LOADER("FRAGTYPE",Fragment_Type_Chunk)
|
||||
|
||||
/*
|
||||
Children for Fragment_Type_Chunk :
|
||||
|
||||
Fragment_Type_Data_Chunk "FRGTYPDC"
|
||||
Fragment_Type_Shape_Chunk "FRGTYPSC"
|
||||
Fragment_Type_Sound_Chunk "FRGSOUND"
|
||||
*/
|
||||
|
||||
|
||||
const char* Fragment_Type_Chunk::get_name()
|
||||
{
|
||||
Fragment_Type_Data_Chunk* ftdc=(Fragment_Type_Data_Chunk*)lookup_single_child("FRGTYPDC");
|
||||
|
||||
if(ftdc)
|
||||
return ftdc->frag_type_name;
|
||||
else
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RIF_IMPLEMENT_DYNCREATE("FRGTYPDC",Fragment_Type_Data_Chunk)
|
||||
|
||||
Fragment_Type_Data_Chunk::Fragment_Type_Data_Chunk(Chunk_With_Children* parent,const char* name)
|
||||
:Chunk(parent,"FRGTYPDC")
|
||||
{
|
||||
frag_type_name=new char[strlen(name)+1];
|
||||
strcpy(frag_type_name,name);
|
||||
pad1=pad2=pad3=0;
|
||||
}
|
||||
|
||||
Fragment_Type_Data_Chunk::Fragment_Type_Data_Chunk(Chunk_With_Children* const parent,const char* data,size_t const )
|
||||
:Chunk(parent,"FRGTYPDC")
|
||||
{
|
||||
int length=strlen(data)+1;
|
||||
frag_type_name=new char[length];
|
||||
strcpy(frag_type_name,data);
|
||||
data+=(length+3)&~3;
|
||||
|
||||
pad1=*(int*)data;
|
||||
data+=4;
|
||||
pad2=*(int*)data;
|
||||
data+=4;
|
||||
pad3=*(int*)data;
|
||||
data+=4;
|
||||
}
|
||||
|
||||
Fragment_Type_Data_Chunk::~Fragment_Type_Data_Chunk()
|
||||
{
|
||||
if(frag_type_name) delete frag_type_name;
|
||||
}
|
||||
|
||||
void Fragment_Type_Data_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,frag_type_name);
|
||||
data_start+=(strlen(frag_type_name)+4)&~3;
|
||||
|
||||
*(int*)data_start=pad1;
|
||||
data_start+=4;
|
||||
*(int*)data_start=pad2;
|
||||
data_start+=4;
|
||||
*(int*)data_start=pad3;
|
||||
data_start+=4;
|
||||
|
||||
}
|
||||
|
||||
size_t Fragment_Type_Data_Chunk::size_chunk()
|
||||
{
|
||||
chunk_size=12+12;
|
||||
chunk_size+=(strlen(frag_type_name)+4)&~3;
|
||||
return chunk_size;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RIF_IMPLEMENT_DYNCREATE("FRGTYPSC",Fragment_Type_Shape_Chunk)
|
||||
|
||||
Fragment_Type_Shape_Chunk::Fragment_Type_Shape_Chunk(Chunk_With_Children* parent,const char* _name,int number,ChunkVectorInt _location)
|
||||
:Chunk(parent,"FRGTYPSC")
|
||||
{
|
||||
name=new char[strlen(_name)+1];
|
||||
strcpy(name,_name);
|
||||
num_fragments=number;
|
||||
location=_location;
|
||||
pad1=pad2=pad3=0;
|
||||
}
|
||||
|
||||
#if UseOldChunkLoader
|
||||
Fragment_Type_Shape_Chunk::Fragment_Type_Shape_Chunk(Chunk_With_Children* const parent,const char* data,size_t const )
|
||||
:Chunk(parent,"FRGTYPSC")
|
||||
{
|
||||
int length=strlen(data)+1;
|
||||
name=new char[length];
|
||||
strcpy(name,data);
|
||||
data+=(length+3)&~3;
|
||||
|
||||
num_fragments=*(int*)data;
|
||||
data+=4;
|
||||
|
||||
location=*(ChunkVector*)data;
|
||||
data+=sizeof(ChunkVector);
|
||||
|
||||
|
||||
pad1=*(int*)data;
|
||||
data+=4;
|
||||
pad2=*(int*)data;
|
||||
data+=4;
|
||||
pad3=*(int*)data;
|
||||
data+=4;
|
||||
};
|
||||
#else
|
||||
Fragment_Type_Shape_Chunk::Fragment_Type_Shape_Chunk(Chunk_With_Children* const parent,const char* data,size_t const )
|
||||
:Chunk(parent,"FRGTYPSC")
|
||||
{
|
||||
int length=strlen(data)+1;
|
||||
name=new char[length];
|
||||
strcpy(name,data);
|
||||
data+=(length+3)&~3;
|
||||
|
||||
num_fragments=*(int*)data;
|
||||
data+=4;
|
||||
|
||||
location=*(ChunkVectorInt*)data;
|
||||
data+=sizeof(ChunkVectorInt);
|
||||
|
||||
|
||||
pad1=*(int*)data;
|
||||
data+=4;
|
||||
pad2=*(int*)data;
|
||||
data+=4;
|
||||
pad3=*(int*)data;
|
||||
data+=4;
|
||||
}
|
||||
#endif
|
||||
|
||||
Fragment_Type_Shape_Chunk::~Fragment_Type_Shape_Chunk()
|
||||
{
|
||||
if(name) delete name;
|
||||
}
|
||||
|
||||
void Fragment_Type_Shape_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,name);
|
||||
data_start+=(strlen(name)+4)&~3;
|
||||
|
||||
*(int*)data_start=num_fragments;
|
||||
data_start+=4;
|
||||
|
||||
*(ChunkVectorInt*)data_start=location;
|
||||
data_start+=sizeof(ChunkVectorInt);
|
||||
|
||||
*(int*)data_start=pad1;
|
||||
data_start+=4;
|
||||
*(int*)data_start=pad2;
|
||||
data_start+=4;
|
||||
*(int*)data_start=pad3;
|
||||
data_start+=4;
|
||||
|
||||
}
|
||||
|
||||
size_t Fragment_Type_Shape_Chunk::size_chunk()
|
||||
{
|
||||
chunk_size=12+16+sizeof(ChunkVectorInt);
|
||||
chunk_size+=(strlen(name)+4)&~3;
|
||||
return chunk_size;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
RIF_IMPLEMENT_DYNCREATE("FRGSOUND",Fragment_Type_Sound_Chunk)
|
||||
|
||||
Fragment_Type_Sound_Chunk::Fragment_Type_Sound_Chunk(Chunk_With_Children* parent)
|
||||
:Chunk(parent,"FRGSOUND")
|
||||
{
|
||||
wav_name=0;
|
||||
inner_range=5000;
|
||||
outer_range=40000;
|
||||
max_volume=127;
|
||||
pitch=0;
|
||||
pad=0;
|
||||
}
|
||||
|
||||
Fragment_Type_Sound_Chunk::Fragment_Type_Sound_Chunk(Chunk_With_Children* const parent,const char* data,size_t const )
|
||||
:Chunk(parent,"FRGSOUND")
|
||||
{
|
||||
inner_range=*(unsigned long*)data;
|
||||
data+=4;
|
||||
outer_range=*(unsigned long*)data;
|
||||
data+=4;
|
||||
|
||||
max_volume=*(int*)data;
|
||||
data+=4;
|
||||
pitch=*(int*)data;
|
||||
data+=4;
|
||||
pad=*(int*)data;
|
||||
data+=4;
|
||||
|
||||
wav_name=new char[strlen(data)+1];
|
||||
strcpy(wav_name,data);
|
||||
|
||||
}
|
||||
|
||||
Fragment_Type_Sound_Chunk::~Fragment_Type_Sound_Chunk()
|
||||
{
|
||||
if(wav_name) delete wav_name;
|
||||
}
|
||||
|
||||
void Fragment_Type_Sound_Chunk::fill_data_block(char* data_start)
|
||||
{
|
||||
strncpy (data_start, identifier, 8);
|
||||
data_start += 8;
|
||||
*((int *) data_start) = chunk_size;
|
||||
data_start += 4;
|
||||
|
||||
*(unsigned long*)data_start=inner_range;
|
||||
data_start+=4;
|
||||
*(unsigned long*)data_start=outer_range;
|
||||
data_start+=4;
|
||||
|
||||
*(int*)data_start=max_volume;
|
||||
data_start+=4;
|
||||
*(int*)data_start=pitch;
|
||||
data_start+=4;
|
||||
*(int*)data_start=pad;
|
||||
data_start+=4;
|
||||
|
||||
strcpy(data_start,wav_name);
|
||||
|
||||
}
|
||||
|
||||
size_t Fragment_Type_Sound_Chunk::size_chunk()
|
||||
{
|
||||
chunk_size=12+20;
|
||||
chunk_size+=(strlen(wav_name)+4)&~3;
|
||||
return chunk_size;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue