コード例 #1
0
ファイル: w_wad.cpp プロジェクト: emileb/gzdoom
FWadLump::FWadLump(int lumpnum, FResourceLump *lump)
: FileReader()
{
	FileReader *f = lump->GetReader();

	if (f != NULL && f->GetFile() != NULL)
	{
		// Uncompressed lump in a file. For this we will have to open a new FILE, since we need it for streaming
		int fileno = Wads.GetLumpFile(lumpnum);
		const char *filename = Wads.GetWadFullName(fileno);
		File = openfd(filename);
		if (File != NULL)
		{
			Length = lump->LumpSize;
			StartPos = FilePos = lump->GetFileOffset();
			Lump = NULL;
			CloseOnDestruct = true;
			Seek(0, SEEK_SET);
			return;
		}
	}
	File = NULL;
	Length = lump->LumpSize;
	StartPos = FilePos = 0;
	Lump = lump;
	Lump->CacheLump();
}
コード例 #2
0
ファイル: w_wad.cpp プロジェクト: emileb/gzdoom
FWadLump::FWadLump(FResourceLump *lump, bool alwayscache)
: FileReader()
{
	FileReader *f = lump->GetReader();

	if (f != NULL && f->GetFile() != NULL && !alwayscache)
	{
		// Uncompressed lump in a file
		File = f->GetFile();
		Length = lump->LumpSize;
		StartPos = FilePos = lump->GetFileOffset();
		Lump = NULL;
	}
	else
	{
		File = NULL;
		Length = lump->LumpSize;
		StartPos = FilePos = 0;
		Lump = lump;
		Lump->CacheLump();
	}
}
コード例 #3
0
ファイル: w_wad.cpp プロジェクト: emileb/gzdoom
bool FWadCollection::IsUncompressedFile(int lump) const
{
	if ((unsigned)lump >= (unsigned)NumLumps)
	{
		I_Error ("IsUncompressedFile: %u >= NumLumps",lump);
	}

	FResourceLump *l = LumpInfo[lump].lump;
	FileReader *f = l->GetReader();
	
	// We can access the file only if we get the FILE pointer from the FileReader here.
	// Any other case means it won't work.
	return (f != NULL && f->GetFile() != NULL);
}