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
110
3dc/win95/TXIOCTRL.CPP
Normal file
110
3dc/win95/TXIOCTRL.CPP
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue