Removed unused image and font code.
This commit is contained in:
parent
a64e100838
commit
76403986b1
10 changed files with 0 additions and 5773 deletions
|
@ -1,699 +0,0 @@
|
|||
#include <string.h>
|
||||
|
||||
#define TRY_OLD_DIRS 0 // obsolete
|
||||
#define ALLOW_LOAD_ORIGINAL 0
|
||||
|
||||
#if TRY_OLD_DIRS // temporary until all textures go into subshps directory
|
||||
#include "ffstdio.h"
|
||||
#endif
|
||||
|
||||
#include "chnkimag.hpp"
|
||||
|
||||
#include "list_tem.hpp"
|
||||
#include "envchunk.hpp"
|
||||
#include "chunkpal.hpp"
|
||||
#include "bmpnames.hpp"
|
||||
|
||||
#include "chnkload.hpp"
|
||||
|
||||
char const * CL_RIFFImage::game_mode = 0;
|
||||
|
||||
// useful filename handling functions
|
||||
|
||||
// returns pointer into string pointing to filename without dirname
|
||||
template <class C> // C can be char or char const
|
||||
static C * strip_path(C * n)
|
||||
{
|
||||
C * rm = strrchr(n,':');
|
||||
if (rm) n = rm+1;
|
||||
rm = strrchr(n,'/');
|
||||
if (rm) n = rm+1;
|
||||
rm = strrchr(n,'\\');
|
||||
if (rm) n = rm+1;
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
// removes any .extension from filename by inserting null character
|
||||
static void strip_file_extension(char * n)
|
||||
{
|
||||
char * dotpos = strrchr(n,'.');
|
||||
if (dotpos) *dotpos = 0;
|
||||
}
|
||||
|
||||
static char * strip_file_extension(char const * n)
|
||||
{
|
||||
char * nn = new char[strlen(n)+1];
|
||||
strcpy(nn,n);
|
||||
strip_file_extension(nn);
|
||||
return nn;
|
||||
}
|
||||
|
||||
////////////////////////
|
||||
//
|
||||
// riff file interface
|
||||
//
|
||||
////////////////////////
|
||||
|
||||
|
||||
// get the directory associated with the riff - free with delete[]
|
||||
static char * riff_basename(Chunk_With_Children * envd)
|
||||
{
|
||||
RIF_Name_Chunk * rnc = 0;
|
||||
|
||||
List<Chunk *> chlst = envd->lookup_child("RIFFNAME");
|
||||
|
||||
if (chlst.size())
|
||||
{
|
||||
rnc = (RIF_Name_Chunk *)chlst.first_entry();
|
||||
const char * rif_name = strip_path(rnc->rif_name);
|
||||
|
||||
char * basename = new char[strlen(rif_name)+1];
|
||||
strcpy(basename,rif_name);
|
||||
strip_file_extension(basename);
|
||||
|
||||
return basename;
|
||||
}
|
||||
const char * deflt = "empty";
|
||||
char * basename = new char [strlen(deflt)+1];
|
||||
strcpy(basename,deflt);
|
||||
|
||||
return basename;
|
||||
}
|
||||
|
||||
#if OUTPUT_LOG
|
||||
#define _LOGID CL_LogFile.lprintf("%s:%d :: ",__FILE__,__LINE__)
|
||||
#define _LOGPUT(s) _LOGID,CL_LogFile.lputs(s)
|
||||
#define _LOGPRINT(args) _LOGID,CL_LogFile.lprintf args
|
||||
#else
|
||||
#define _LOGPUT(s) (void)0
|
||||
#define _LOGPRINT(args) (void)0
|
||||
#endif
|
||||
|
||||
void CL_RIFFImage::GetPath(ImageDescriptor const & idsc, Environment_Data_Chunk * envd, BMPN_Flags bflags)
|
||||
{
|
||||
if (fname) delete[] fname;
|
||||
fname = 0;
|
||||
|
||||
// set the name
|
||||
if (name) delete[] name;
|
||||
char * nptr = strip_path(idsc.filename);
|
||||
name = new char[strlen(nptr)+1];
|
||||
strcpy(name,nptr);
|
||||
#if 0
|
||||
char orig_ext[32];
|
||||
char const * oeP = strrchr(name,'.');
|
||||
if (!oeP) eoP = "";
|
||||
strcpy(orig_ext,oeP);
|
||||
#endif
|
||||
strip_file_extension(name);
|
||||
|
||||
// load this image
|
||||
char const * pg0ext = ".PG0";
|
||||
switch (imode)
|
||||
{
|
||||
case CLM_16BIT:
|
||||
case CLM_24BIT:
|
||||
case CLM_32BIT:
|
||||
#if ALLOW_LOAD_ORIGINAL
|
||||
{
|
||||
char const * dir2 = idsc.flags & IDSCF_SPRITE ? "Sprites\\" : "";
|
||||
char * riffname = riff_basename(envd);
|
||||
char const * dir3 = idsc.flags & IDSCF_INCLUDED ? idsc.rifname : riffname;
|
||||
fname = new char[strlen(ToolsTex_Directory)+strlen(dir2)+strlen(dir3)+1+strlen(name)+5];
|
||||
strcpy(fname,ToolsTex_Directory);
|
||||
strcat(fname,dir2);
|
||||
strcat(fname,dir3);
|
||||
strcat(fname,"\\");
|
||||
strcat(fname,name);
|
||||
strcat(fname,".PP0");
|
||||
delete[] riffname;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case CLM_ATTACHEDPALETTE:
|
||||
{
|
||||
char const * dir2 = idsc.flags & IDSCF_SPRITE ? "Sprites\\" : idsc.flags & IDSCF_SUBSHAPE ? "SubShps\\All\\" : "";
|
||||
char * riffname = riff_basename(envd);
|
||||
char const * dir3 = idsc.flags & IDSCF_INCLUDED ? idsc.rifname : riffname;
|
||||
fname = new char[strlen(GenTex_Directory)+strlen(dir2)+strlen(dir3)+1+strlen(name)+5];
|
||||
strcpy(fname,GenTex_Directory);
|
||||
strcat(fname,dir2);
|
||||
strcat(fname,dir3);
|
||||
strcat(fname,"\\");
|
||||
strcat(fname,name);
|
||||
strcat(fname,".BM0");
|
||||
delete[] riffname;
|
||||
#if TRY_OLD_DIRS // temporary until all textures go into subshps directory
|
||||
FFILE * ftest = ffopen(fname,"rb");
|
||||
if (ftest) ffclose(ftest);
|
||||
else
|
||||
{
|
||||
_LOGPUT("WARNING! Not found in SubShps directory\n");
|
||||
char const * dir2 = idsc.flags & IDSCF_SPRITE ? "Sprites\\" : "";
|
||||
char * riffname = riff_basename(envd);
|
||||
char const * dir3 = idsc.flags & IDSCF_INCLUDED ? idsc.rifname : riffname;
|
||||
delete[] fname;
|
||||
fname = new char[strlen(GenTex_Directory)+strlen(dir2)+strlen(dir3)+1+strlen(name)+5];
|
||||
strcpy(fname,GenTex_Directory);
|
||||
strcat(fname,dir2);
|
||||
strcat(fname,dir3);
|
||||
strcat(fname,"\\");
|
||||
strcat(fname,name);
|
||||
strcat(fname,".BM0");
|
||||
delete[] riffname;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case CLM_TLTPALETTE:
|
||||
if (!(bflags & ChunkBMPFlag_NotLit))
|
||||
{
|
||||
pg0ext = ".PW0";
|
||||
flags.tltpalette = 1;
|
||||
}
|
||||
case CLM_GLOBALPALETTE:
|
||||
{
|
||||
if (idsc.flags & IDSCF_FIXEDPALETTE)
|
||||
{
|
||||
char const * dir2 = idsc.fixrifname ? *idsc.fixrifname ? idsc.fixrifname : 0 : 0;
|
||||
char const * dir3 = idsc.flags & IDSCF_SPRITE ? "Sprites\\" : "";
|
||||
char * riffname = riff_basename(envd);
|
||||
char const * dir4 = idsc.flags & IDSCF_INCLUDED ? idsc.rifname : riffname;
|
||||
fname = new char[strlen(FixTex_Directory)+(dir2 ? strlen(dir2)+1 : 0)+strlen(dir3)+strlen(dir4)+1+strlen(name)+5];
|
||||
strcpy(fname,FixTex_Directory);
|
||||
if (dir2)
|
||||
{
|
||||
strcat(fname,dir2);
|
||||
strcat(fname,"\\");
|
||||
}
|
||||
strcat(fname,dir3);
|
||||
strcat(fname,dir4);
|
||||
strcat(fname,"\\");
|
||||
strcat(fname,name);
|
||||
strcat(fname,pg0ext);
|
||||
delete[] riffname;
|
||||
}
|
||||
else
|
||||
{
|
||||
char const * dir1 = game_mode ? GameTex_Directory : ToolsTex_Directory;
|
||||
char * dir2 = riff_basename(envd);
|
||||
char const * dir4 = idsc.flags & IDSCF_SPRITE ? "Sprites\\" : "";
|
||||
char const * dir5 = idsc.flags & IDSCF_INCLUDED ? idsc.rifname : 0;
|
||||
fname = new char[strlen(dir1)+strlen(dir2)+1+(game_mode ? strlen(game_mode)+1 : 0)+strlen(dir4)+(dir5 ? strlen(dir5)+1 : 0)+strlen(name)+5];
|
||||
strcpy(fname,dir1);
|
||||
strcat(fname,dir2);
|
||||
strcat(fname,"\\");
|
||||
if (game_mode)
|
||||
{
|
||||
strcat(fname,game_mode);
|
||||
strcat(fname,"\\");
|
||||
}
|
||||
strcat(fname,dir4);
|
||||
if (dir5)
|
||||
{
|
||||
strcat(fname,dir5);
|
||||
strcat(fname,"\\");
|
||||
}
|
||||
strcat(fname,name);
|
||||
strcat(fname,pg0ext);
|
||||
delete[] dir2;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!fname)
|
||||
{
|
||||
_LOGPUT("WARNING! GetPath returning NULL pointer\n");
|
||||
}
|
||||
else
|
||||
_LOGPRINT(("file expected to be %s\n",fname));
|
||||
}
|
||||
|
||||
|
||||
CL_Error CL_RIFFImage::Locate(char const * iname, int const enum_id)
|
||||
{
|
||||
_LOGPRINT(("RIF File image finder called for %s, id %d\n",iname,enum_id));
|
||||
|
||||
if (!Env_Chunk)
|
||||
_LOGPUT("WARNING! no .RIF file loaded\n");
|
||||
|
||||
if (!Env_Chunk) return CLE_RIFFERROR;
|
||||
|
||||
switch (imode)
|
||||
{
|
||||
case CLM_ATTACHEDPALETTE:
|
||||
case CLM_16BIT:
|
||||
case CLM_24BIT:
|
||||
case CLM_32BIT:
|
||||
case CLM_GLOBALPALETTE:
|
||||
case CLM_TLTPALETTE:
|
||||
break;
|
||||
default:
|
||||
_LOGPUT("WARNING! undefined video mode\n");
|
||||
return CLE_INVALIDDXMODE;
|
||||
}
|
||||
|
||||
// remove projectsubdirectory from start of image name if it is there
|
||||
unsigned int const psdirlen = strlen(projectsubdirectory);
|
||||
if (!strncmp(projectsubdirectory,iname,psdirlen))
|
||||
iname += psdirlen;
|
||||
|
||||
List<Chunk *> envdl (Env_Chunk->lookup_child("REBENVDT"));
|
||||
|
||||
if (!envdl.size())
|
||||
{
|
||||
_LOGPUT("WARNING! no environment data chunk\n");
|
||||
return CLE_RIFFERROR;
|
||||
}
|
||||
|
||||
Environment_Data_Chunk * envd = (Environment_Data_Chunk *) envdl.first_entry();
|
||||
|
||||
CL_Error retval = CLE_OK;
|
||||
Environment_Game_Mode_Chunk * egmc = 0;
|
||||
if (game_mode)
|
||||
{
|
||||
if (*game_mode)
|
||||
{
|
||||
List<Chunk *> egmcl (envd->lookup_child("GAMEMODE"));
|
||||
|
||||
for (LIF<Chunk *> egmci(&egmcl); !egmci.done(); egmci.next())
|
||||
{
|
||||
Environment_Game_Mode_Chunk * egmcm = (Environment_Game_Mode_Chunk *) egmci();
|
||||
if (egmcm->id_equals(game_mode))
|
||||
{
|
||||
egmc = egmcm;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!egmc) retval = CLE_INVALIDGAMEMODE;
|
||||
// only returns this error if the game mode cannot be found *and* the image is not listed
|
||||
}
|
||||
}
|
||||
|
||||
if (name)
|
||||
{
|
||||
delete[] name;
|
||||
name = 0;
|
||||
}
|
||||
if (iname) name = strip_file_extension(strip_path(iname));
|
||||
|
||||
char * rcname = 0;
|
||||
if (iname)
|
||||
{
|
||||
if (strchr(iname,'\\'))
|
||||
{
|
||||
rcname = new char[strlen(iname)+1];
|
||||
strcpy(rcname,iname);
|
||||
*strchr(rcname,'\\')=0;
|
||||
}
|
||||
else if (strchr(iname,'/'))
|
||||
{
|
||||
rcname = new char[strlen(iname)+1];
|
||||
strcpy(rcname,iname);
|
||||
*strchr(rcname,'/')=0;
|
||||
}
|
||||
}
|
||||
|
||||
if (egmc)
|
||||
{
|
||||
int shapefoundingm = rcname ? 0 : 1;
|
||||
// Get the matching image 'Processor' chunk
|
||||
List<Chunk *> micl = egmc->lookup_child("MATCHIMG");
|
||||
|
||||
Matching_Images_Chunk * mic = 0;
|
||||
if (micl.size()) mic = (Matching_Images_Chunk *)micl.first_entry();
|
||||
|
||||
List<Chunk *> rcl = egmc->lookup_child("RIFCHILD");
|
||||
|
||||
for (LIF<Chunk *> rci(&rcl); !rci.done(); rci.next())
|
||||
{
|
||||
RIF_Child_Chunk * rcm = (RIF_Child_Chunk *) rci();
|
||||
|
||||
if (rcname)
|
||||
{
|
||||
if (_stricmp(rcname,rcm->rifname) && (*rcname || *rcm->filename))
|
||||
continue;
|
||||
shapefoundingm = 1;
|
||||
}
|
||||
|
||||
for (LIF<BMP_Flags> bmpfi(&rcm->bmps); !bmpfi.done(); bmpfi.next())
|
||||
{
|
||||
BMP_Flags bmpft(bmpfi());
|
||||
strip_file_extension(bmpft.filename);
|
||||
|
||||
if (iname ? !_stricmp(name,strip_path(bmpft.filename)) : enum_id == bmpft.enum_id)
|
||||
{
|
||||
// select image descriptor
|
||||
ImageDescriptor const idsc
|
||||
(
|
||||
*rcm->filename ?
|
||||
(IDscFlags)((bmpft.flags & ChunkBMPFlag_FixedPalette ?
|
||||
IDSCF_FIXEDPALETTE
|
||||
:
|
||||
IDSCF_0)
|
||||
|IDSCF_INCLUDED)
|
||||
:
|
||||
IDSCF_0,
|
||||
bmpfi().filename,
|
||||
*rcm->filename ? rcm->rifname : 0
|
||||
);
|
||||
ImageDescriptor const * p_idsc = &idsc;
|
||||
|
||||
if (mic) p_idsc = &mic->GetLoadImage(idsc);
|
||||
else _LOGPRINT(("WARNING! no rule to find matching images in game mode %s\n",egmc->header->mode_identifier));
|
||||
|
||||
// load this image
|
||||
GetPath(*p_idsc,envd,bmpft.flags);
|
||||
|
||||
if (fname)
|
||||
{
|
||||
if (rcname)
|
||||
{
|
||||
delete[] rcname;
|
||||
rcname = 0;
|
||||
}
|
||||
flags.located = 1;
|
||||
return CLE_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<Chunk *> ssc = egmc->lookup_child("SHBMPNAM");
|
||||
|
||||
for (LIF<Chunk *> ssi(&ssc); !ssi.done(); ssi.next())
|
||||
{
|
||||
External_Shape_BMPs_Store_Chunk * ss = (External_Shape_BMPs_Store_Chunk *) ssi();
|
||||
|
||||
if (rcname)
|
||||
if (_stricmp(rcname,ss->shapename) && *rcname)
|
||||
continue;
|
||||
|
||||
for (LIF<BMP_Name> bmpfi(&ss->bmps); !bmpfi.done(); bmpfi.next())
|
||||
{
|
||||
BMP_Name bmpft(bmpfi());
|
||||
strip_file_extension(bmpft.filename);
|
||||
|
||||
if (iname ? !_stricmp(name,strip_path(bmpft.filename)) : enum_id == bmpft.enum_id)
|
||||
{
|
||||
|
||||
// select image descriptor
|
||||
ImageDescriptor const idsc
|
||||
(
|
||||
(IDscFlags)((bmpft.flags & ChunkBMPFlag_FixedPalette ?
|
||||
IDSCF_FIXEDPALETTE
|
||||
:
|
||||
IDSCF_0)
|
||||
|(ss->GetExtendedData()->flags & GBF_SPRITE ?
|
||||
IDSCF_SPRITE
|
||||
:
|
||||
IDSCF_SUBSHAPE)
|
||||
|IDSCF_INCLUDED),
|
||||
bmpfi().filename,
|
||||
ss->shapename,
|
||||
bmpft.flags & ChunkBMPFlag_FixedPalette ? ss->rifname : 0
|
||||
);
|
||||
ImageDescriptor const * p_idsc = &idsc;
|
||||
|
||||
if (mic) p_idsc = &mic->GetLoadImage(idsc);
|
||||
else _LOGPRINT(("WARNING! no rule to find matching images in game mode %s\n",egmc->header->mode_identifier));
|
||||
|
||||
#if TRY_OLD_DIRS // temporary until all textures move to SubShps/All directory
|
||||
if (*p_idsc == idsc)
|
||||
{
|
||||
// select image descriptor
|
||||
ImageDescriptor const idsc2
|
||||
(
|
||||
(IDscFlags)((bmpft.flags & ChunkBMPFlag_FixedPalette ?
|
||||
IDSCF_FIXEDPALETTE
|
||||
:
|
||||
IDSCF_0)
|
||||
|(ss->GetExtendedData()->flags & GBF_SPRITE ?
|
||||
IDSCF_SPRITE
|
||||
:
|
||||
IDSCF_0)
|
||||
|IDSCF_INCLUDED),
|
||||
bmpfi().filename,
|
||||
ss->shapename,
|
||||
bmpft.flags & ChunkBMPFlag_FixedPalette ? ss->rifname : 0
|
||||
);
|
||||
ImageDescriptor const * p_idsc2 = &idsc2;
|
||||
|
||||
if (mic) p_idsc2 = &mic->GetLoadImage(idsc2);
|
||||
else _LOGPRINT(("WARNING! no rule to find matching images in game mode %s\n",egmc->header->mode_identifier));
|
||||
|
||||
if (*p_idsc2 != idsc2)
|
||||
{
|
||||
_LOGPUT("WARNING! Not listed as in SubShps directory\n");
|
||||
p_idsc = p_idsc2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// load this image
|
||||
GetPath(*p_idsc,envd,bmpft.flags);
|
||||
|
||||
if (fname)
|
||||
{
|
||||
if (rcname)
|
||||
{
|
||||
delete[] rcname;
|
||||
rcname = 0;
|
||||
}
|
||||
flags.located = 1;
|
||||
return CLE_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rcname)
|
||||
{
|
||||
if (!shapefoundingm)
|
||||
_LOGPRINT(("WARNING! shape/sprite %s not found in this RIF file\n",rcname));
|
||||
else
|
||||
_LOGPRINT(("WARNING! shape/sprite %s does not appear to list %s\n",rcname,name));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
List<Chunk *> micl = envd->lookup_child("MATCHIMG");
|
||||
|
||||
Matching_Images_Chunk * mic_fix = 0;
|
||||
Matching_Images_Chunk * mic_nrm = 0;
|
||||
|
||||
for (LIF<Chunk *> mici(&micl); !mici.done(); mici.next())
|
||||
{
|
||||
Matching_Images_Chunk * mic = (Matching_Images_Chunk *)mici();
|
||||
if (mic->flags & MICF_FIXEDPALETTE)
|
||||
mic_fix = mic;
|
||||
else
|
||||
mic_nrm = mic;
|
||||
}
|
||||
|
||||
List<Chunk_With_Children *> shapesandsprites;
|
||||
|
||||
List<Chunk *> shlst = Env_Chunk->lookup_child("REBSHAPE");
|
||||
for (LIF<Chunk *> shLIF(&shlst); !shLIF.done(); shLIF.next())
|
||||
{
|
||||
List<Chunk *> shxflst = ((Shape_Chunk *)shLIF())->lookup_child("SHPEXTFL");
|
||||
if (shxflst.size())
|
||||
{
|
||||
shapesandsprites.add_entry( (Shape_External_File_Chunk *)shxflst.first_entry() );
|
||||
}
|
||||
}
|
||||
shlst = Env_Chunk->lookup_child("RSPRITES");
|
||||
if (shlst.size())
|
||||
{
|
||||
List<Chunk *> splst = ((Chunk_With_Children *)shlst.first_entry())->lookup_child("SPRIHEAD");
|
||||
|
||||
for (LIF<Chunk *> spLIF(&splst); !spLIF.done(); spLIF.next())
|
||||
{
|
||||
shapesandsprites.add_entry( (Chunk_With_Children *)spLIF() );
|
||||
}
|
||||
}
|
||||
|
||||
int shapefound = rcname ? 0 : 1;
|
||||
|
||||
for (LIF<Chunk_With_Children *> sasLIF(&shapesandsprites); !sasLIF.done(); sasLIF.next())
|
||||
{
|
||||
char * subrifname = riff_basename(sasLIF());
|
||||
|
||||
if (rcname)
|
||||
{
|
||||
if (_stricmp(subrifname,rcname)) // must match shapes name exactly
|
||||
{
|
||||
delete[] subrifname;
|
||||
continue;
|
||||
}
|
||||
shapefound = 1;
|
||||
}
|
||||
|
||||
List<Chunk *> blsclst = sasLIF()->lookup_child("BMPLSTST");
|
||||
if (blsclst.size())
|
||||
{
|
||||
Bitmap_List_Store_Chunk * gbnc = (Bitmap_List_Store_Chunk *) blsclst.first_entry();
|
||||
|
||||
for (LIF<BMP_Name> bmpni(&gbnc->bmps); !bmpni.done(); bmpni.next())
|
||||
{
|
||||
BMP_Name bmpnt(bmpni());
|
||||
strip_file_extension(bmpnt.filename);
|
||||
|
||||
if (iname ? !_stricmp(name,strip_path(bmpnt.filename)) : enum_id == bmpnt.enum_id)
|
||||
{
|
||||
|
||||
// select image descriptor
|
||||
char * riffname = riff_basename(envd);
|
||||
ImageDescriptor const idsc
|
||||
(
|
||||
(IDscFlags)((bmpnt.flags & ChunkBMPFlag_FixedPalette ?
|
||||
IDSCF_FIXEDPALETTE
|
||||
:
|
||||
IDSCF_0)
|
||||
|(gbnc->GetExtendedData()->flags & GBF_SPRITE ?
|
||||
IDSCF_SPRITE
|
||||
:
|
||||
IDSCF_SUBSHAPE)
|
||||
|IDSCF_INCLUDED),
|
||||
bmpni().filename,
|
||||
subrifname,
|
||||
bmpnt.flags & ChunkBMPFlag_FixedPalette ? riffname : 0
|
||||
);
|
||||
ImageDescriptor const * p_idsc = &idsc;
|
||||
delete[] riffname;
|
||||
|
||||
if (bmpnt.flags & ChunkBMPFlag_FixedPalette)
|
||||
{
|
||||
if (mic_fix) p_idsc = &mic_fix->GetLoadImage(idsc);
|
||||
else _LOGPUT("WARNING! no rule to find fixed palette matching images in environment data\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mic_nrm) p_idsc = &mic_nrm->GetLoadImage(idsc);
|
||||
else _LOGPUT("WARNING! no rule to find matching images in environment data (interface engine?)\n");
|
||||
}
|
||||
|
||||
#if TRY_OLD_DIRS // temporary until all textures move to SubShps/All directory
|
||||
if (*p_idsc == idsc)
|
||||
{
|
||||
// select image descriptor
|
||||
char * riffname = riff_basename(envd);
|
||||
ImageDescriptor const idsc2
|
||||
(
|
||||
(IDscFlags)((bmpnt.flags & ChunkBMPFlag_FixedPalette ?
|
||||
IDSCF_FIXEDPALETTE
|
||||
:
|
||||
IDSCF_0)
|
||||
|(gbnc->GetExtendedData()->flags & GBF_SPRITE ?
|
||||
IDSCF_SPRITE
|
||||
:
|
||||
IDSCF_0)
|
||||
|IDSCF_INCLUDED),
|
||||
bmpni().filename,
|
||||
subrifname,
|
||||
bmpnt.flags & ChunkBMPFlag_FixedPalette ? riffname : 0
|
||||
);
|
||||
ImageDescriptor const * p_idsc2 = &idsc2;
|
||||
delete[] riffname;
|
||||
|
||||
if (bmpnt.flags & ChunkBMPFlag_FixedPalette)
|
||||
{
|
||||
if (mic_fix) p_idsc2 = &mic_fix->GetLoadImage(idsc2);
|
||||
else _LOGPUT("WARNING! no rule to find fixed palette matching images in environment data\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mic_nrm) p_idsc2 = &mic_nrm->GetLoadImage(idsc2);
|
||||
else _LOGPUT("WARNING! no rule to find matching images in environment data (interface engine?)\n");
|
||||
}
|
||||
if (*p_idsc2 != idsc2)
|
||||
{
|
||||
_LOGPUT("WARNING! Not listed as in SubShps directory\n");
|
||||
p_idsc = p_idsc2;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// load this image
|
||||
GetPath(*p_idsc,envd,bmpnt.flags);
|
||||
|
||||
if (fname)
|
||||
{
|
||||
delete[] subrifname;
|
||||
if (rcname)
|
||||
{
|
||||
delete[] rcname;
|
||||
rcname = 0;
|
||||
}
|
||||
flags.located = 1;
|
||||
return CLE_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delete[] subrifname;
|
||||
}
|
||||
|
||||
if (rcname)
|
||||
{
|
||||
if (!shapefound)
|
||||
_LOGPRINT(("WARNING! shape/sprite %s not found in this RIF file\n",rcname));
|
||||
else
|
||||
_LOGPRINT(("WARNING! shape/sprite %s does not appear to list %s\n",rcname,name));
|
||||
delete[] rcname;
|
||||
rcname = 0;
|
||||
}
|
||||
|
||||
// not found in game textures, so look in default
|
||||
|
||||
else // but only if there is no virtual shape directory
|
||||
{
|
||||
List<Chunk *> gbncl = envd->lookup_child("BMPNAMES");
|
||||
if (gbncl.size())
|
||||
{
|
||||
Global_BMP_Name_Chunk * gbnc = (Global_BMP_Name_Chunk *) gbncl.first_entry();
|
||||
|
||||
for (LIF<BMP_Name> bmpni(&gbnc->bmps); !bmpni.done(); bmpni.next())
|
||||
{
|
||||
BMP_Name bmpnt(bmpni());
|
||||
strip_file_extension(bmpnt.filename);
|
||||
|
||||
if (iname ? !_stricmp(name,strip_path(bmpnt.filename)) : enum_id == bmpnt.enum_id)
|
||||
{
|
||||
// select image descriptor
|
||||
ImageDescriptor const idsc (bmpnt.flags & ChunkBMPFlag_FixedPalette ? IDSCF_FIXEDPALETTE : IDSCF_0, bmpni().filename);
|
||||
ImageDescriptor const * p_idsc = &idsc;
|
||||
|
||||
if (bmpnt.flags & ChunkBMPFlag_FixedPalette)
|
||||
{
|
||||
if (mic_fix) p_idsc = &mic_fix->GetLoadImage(idsc);
|
||||
else _LOGPUT("WARNING! no rule to find fixed palette matching images in environment data\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mic_nrm) p_idsc = &mic_nrm->GetLoadImage(idsc);
|
||||
else _LOGPUT("WARNING! no rule to find matching images in environment data (interface engine?)\n");
|
||||
}
|
||||
|
||||
// load this image
|
||||
GetPath(*p_idsc,envd,bmpnt.flags);
|
||||
|
||||
if (fname)
|
||||
{
|
||||
flags.located = 1;
|
||||
return CLE_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (retval != CLE_OK) return retval;
|
||||
return CLE_FINDERROR;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
#ifndef _included__chnkimag_hpp_
|
||||
#define _included__chnkimag_hpp_
|
||||
|
||||
#error "This file is obsolete"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "d3_image.hpp"
|
||||
#include "mishchnk.hpp"
|
||||
#include "bmpnames.hpp"
|
||||
|
||||
extern "C" extern char projectsubdirectory[];
|
||||
|
||||
extern char const * GameTex_Directory;
|
||||
extern char const * GenTex_Directory;
|
||||
extern char const * FixTex_Directory;
|
||||
extern char const * ToolsTex_Directory;
|
||||
|
||||
struct CL_RIFFImage : public CL_Image
|
||||
{
|
||||
public:
|
||||
static char const * game_mode; // game mode defines palette and set of graphics - can be null or "" for default
|
||||
|
||||
CL_RIFFImage() : CL_Image() {}
|
||||
CL_RIFFImage(CL_Image const & base) : CL_Image(base) {}
|
||||
|
||||
private:
|
||||
virtual CL_Error Locate(char const * iname, int const enum_id);
|
||||
|
||||
void GetPath(ImageDescriptor const & idsc, Environment_Data_Chunk * envd, BMPN_Flags bflags);
|
||||
};
|
||||
|
||||
#endif // !_included__chnkimag_hpp_
|
|
@ -1,34 +0,0 @@
|
|||
#include "cl_init.h"
|
||||
#include "system.h" // because the 3dc header files don't automatically include the ones they need
|
||||
#include "equates.h" // because the 3dc header files don't automatically include the ones they need
|
||||
#include "platform.h" // for VideoModeTypes
|
||||
#include "shape.h" // because the 3dc header files don't automatically include the ones they need
|
||||
#include "prototyp.h" // for SDB
|
||||
#include "d3_image.hpp" // for init functions
|
||||
|
||||
extern "C" extern SCREENDESCRIPTORBLOCK ScreenDescriptorBlock;
|
||||
|
||||
void CL_Init_All(void)
|
||||
{
|
||||
switch (VideoModeTypeScreen)
|
||||
{
|
||||
case VideoModeType_8:
|
||||
if (ScreenDescriptorBlock.SDB_Flags & SDB_Flag_TLTPalette)
|
||||
CL_Init_DirectDrawMode(CLV_8TLT);
|
||||
else
|
||||
CL_Init_DirectDrawMode(CLV_8);
|
||||
break;
|
||||
case VideoModeType_15:
|
||||
CL_Init_DirectDrawMode(CLV_15);
|
||||
break;
|
||||
case VideoModeType_24:
|
||||
CL_Init_DirectDrawMode(CLV_24);
|
||||
break;
|
||||
case VideoModeType_8T:
|
||||
CL_Init_DirectDrawMode(CLV_8T);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ScanDrawDirectDraw != ScanDrawMode)
|
||||
CL_Init_D3DMode(&(d3d.TextureFormat[d3d.CurrentTextureFormat].ddsd));
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
#ifndef _included_cl_init_h_
|
||||
#define _included_cl_init_h_
|
||||
|
||||
#error "This file is obsolete"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "d3d.h" // required by d3_func.hpp
|
||||
#include "d3_func.h" // for D3DINFO definition
|
||||
|
||||
extern int VideoModeTypeScreen;
|
||||
extern int ScanDrawMode;
|
||||
extern D3DINFO d3d;
|
||||
|
||||
void CL_Init_All(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif // !_included_cl_init_h_
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue