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:
Rebellion Developments 2000-03-16 11:25:00 +01:00 committed by Patryk Obara
commit 218ca90543
572 changed files with 434587 additions and 0 deletions

110
3dc/win95/TXIOCTRL.CPP Normal file
View file

@ -0,0 +1,110 @@
#include "txioctrl.h"
#ifdef MaxImageGroups
#include "list_tem.hpp"
struct ImageNumber
{
int group;
int offset;
ImageNumber(){}
ImageNumber(int g,int o) : group(g), offset(o) {}
inline int operator == (ImageNumber const & in2) const
{ return group==in2.group && offset==in2.offset; }
inline int operator != (ImageNumber const & in2) const
{ return ! operator == (in2); }
};
static List<ImageNumber> imgs_used_by_group[MaxImageGroups];
static List<int> * grps_used_by_image[MaxImageGroups][MaxImages];
void MarkImageInUseByGroup(int img_group, int img_num_offset, int group_using)
{
if (imgs_used_by_group[group_using].contains(ImageNumber(img_group,img_num_offset))) return;
imgs_used_by_group[group_using].add_entry(ImageNumber(img_group,img_num_offset));
List<int> * & grps_used_by_imageR = grps_used_by_image[img_group][img_num_offset];
if (!grps_used_by_imageR)
grps_used_by_imageR = new List<int>(img_group); // includes itself
if (!grps_used_by_imageR->contains(group_using))
grps_used_by_imageR->add_entry(group_using);
}
int IsImageInUse(int img_group, int img_num_offset)
{
if (grps_used_by_image[img_group][img_num_offset])
return 1;
else
return 0;
}
int CanDeleteImage(int img_group, int img_num_offset)
{
if (grps_used_by_image[img_group][img_num_offset])
{
if (grps_used_by_image[img_group][img_num_offset]->contains(img_group))
{
grps_used_by_image[img_group][img_num_offset]->delete_entry(img_group); // remove itself
if (!grps_used_by_image[img_group][img_num_offset]->size())
{
delete grps_used_by_image[img_group][img_num_offset];
grps_used_by_image[img_group][img_num_offset] = 0;
return 1;
}
else
return 0;
}
else
return 0;
}
else
return 1;
}
void ImageGroupFreed(int img_group)
{
while (imgs_used_by_group[img_group].size())
{
ImageNumber used = imgs_used_by_group[img_group].first_entry();
List<int> * & grps_used_by_imageR = grps_used_by_image[used.group][used.offset];
grps_used_by_imageR->delete_entry(img_group);
if (!grps_used_by_imageR->size())
{
NowDeleteImage(used.group,used.offset);
delete grps_used_by_imageR;
grps_used_by_imageR = 0;
}
imgs_used_by_group[img_group].delete_first_entry();
}
}
void EnumSharedImages(int group_num, int numimages, ImageNumberCallbackFunction callback_fn, void * user)
{
for (int i=0; i<numimages; ++i)
{
if (grps_used_by_image[group_num][i])
callback_fn(i,user);
}
}
void EnumLeftoverImages(int group_num, int numimages, ImageNumberCallbackFunction callback_fn, void * user)
{
for (int i=numimages; i<MaxImages; ++i)
{
if (grps_used_by_image[group_num][i])
callback_fn(i,user);
}
}
#endif // MaxImageGroups