mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-28 15:02:24 +00:00
136 lines
4 KiB
C++
136 lines
4 KiB
C++
//-------------------------------------------------------------------------
|
|
/*
|
|
Copyright (C) 2010-2019 EDuke32 developers and contributors
|
|
Copyright (C) 2019 Nuke.YKT
|
|
|
|
This file is part of NBlood.
|
|
|
|
NBlood is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License version 2
|
|
as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
//-------------------------------------------------------------------------
|
|
#include "ns.h" // Must come before everything else!
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "build.h"
|
|
|
|
#include "blood.h"
|
|
#include "hw_voxels.h"
|
|
#include "tilesetbuilder.h"
|
|
|
|
BEGIN_BLD_NS
|
|
|
|
|
|
int nTileFiles = 0;
|
|
|
|
|
|
#define x(a, b) registerName(#a, b);
|
|
static void SetTileNames(TilesetBuildInfo& info)
|
|
{
|
|
auto registerName = [&](const char* name, int index)
|
|
{
|
|
info.addName(name, index);
|
|
};
|
|
#include "namelist.h"
|
|
// Oh Joy! Plasma Pak changes the tile number of the title screen, but we preferably want mods that use the original one to display it, e.g. Cryptic Passage
|
|
// So let's make this remapping depend on the CRC.
|
|
const int OTITLE = 2046, PTITLE = 2518;
|
|
auto& orgtitle = info.tile[OTITLE];
|
|
auto& pptile = info.tile[PTITLE];
|
|
|
|
if (tileGetCRC32(pptile.tileimage) == 1170870757 && (tileGetCRC32(orgtitle.tileimage) != 290208654 || pptile.tileimage->GetWidth() == 0)) registerName("titlescreen", 2046);
|
|
else registerName("titlescreen", 2518);
|
|
}
|
|
#undef x
|
|
|
|
//---------------------------------------------------------------------------
|
|
//
|
|
//
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
void GameInterface::LoadTextureInfo(TilesetBuildInfo& info)
|
|
{
|
|
auto hFile = fileSystem.OpenFileReader("SURFACE.DAT");
|
|
if (hFile.isOpen())
|
|
{
|
|
int count = (int)hFile.GetLength();
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
info.tile[i].extinfo.surftype = hFile.ReadInt8();
|
|
}
|
|
}
|
|
|
|
hFile = fileSystem.OpenFileReader("VOXEL.DAT");
|
|
if (hFile.isOpen())
|
|
{
|
|
int count = (int)hFile.GetLength() / 2;
|
|
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
int voxindex = hFile.ReadInt16();
|
|
|
|
// only insert into the table if they are flagged to be processed in viewProcessSprites, i.e. the type value is 6 or 7,
|
|
if (voxindex > -1 && (info.tile[i].extinfo.picanm.extra & 7) >= 6)
|
|
{
|
|
info.tile[i].extinfo.tiletovox = voxindex;
|
|
info.tile[i].extinfo.voxoffs = (uint8_t)info.tile[i].orgimage->GetOffsets().second;
|
|
}
|
|
}
|
|
}
|
|
|
|
hFile = fileSystem.OpenFileReader("SHADE.DAT");
|
|
if (hFile.isOpen())
|
|
{
|
|
int count = (int)hFile.GetLength();
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
info.tile[i].extinfo.tileshade = hFile.ReadInt8();
|
|
}
|
|
}
|
|
}
|
|
|
|
void GameInterface::SetupSpecialTextures(TilesetBuildInfo& info)
|
|
{
|
|
SetTileNames(info);
|
|
// set up all special tiles here, before we fully hook up with the texture manager.
|
|
info.Delete(504);
|
|
info.MakeWritable(2342);
|
|
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
//
|
|
//
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
int tileGetSurfType(CollisionBase& hit)
|
|
{
|
|
switch (hit.type)
|
|
{
|
|
default:
|
|
return 0;
|
|
case kHitSector:
|
|
return GetExtInfo(hit.hitSector->floortexture).surftype;
|
|
case kHitWall:
|
|
return GetExtInfo(hit.hitWall->walltexture).surftype;
|
|
case kHitSprite:
|
|
return GetExtInfo(hit.hitActor->spr.spritetexture()).surftype;
|
|
}
|
|
}
|
|
|
|
END_BLD_NS
|