Files
firestorm/Gameleap/code/mw4/Libraries/Compost/Compost.cpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

187 lines
5.2 KiB
C++

#include "CompostHeaders.hpp"
DWORD Compost::Number_Of_Worked_On_Textures;
DEFINE_TIMER(Compost, Composting_Time);
DWORD Compost::Number_Of_Used_128_Textures = 0;
DWORD Compost::Number_Of_Used_256_Textures = 0;
HGOSHEAP
Compost::Heap = NULL;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
static bool __stdcall Check_0() {return TerrainTextureLogistic::GetResolution() == 0;}
static bool __stdcall Check_1() {return TerrainTextureLogistic::GetResolution() == 1;}
static bool __stdcall Check_2() {return TerrainTextureLogistic::GetResolution() == 2;}
static bool __stdcall Check_3() {return TerrainTextureLogistic::GetResolution() == 3;}
static void __stdcall Activate_0() {TerrainTextureLogistic::SetResolution(0);}
static void __stdcall Activate_1() {TerrainTextureLogistic::SetResolution(1);}
static void __stdcall Activate_2() {TerrainTextureLogistic::SetResolution(2);}
static void __stdcall Activate_3() {TerrainTextureLogistic::SetResolution(3);}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
MaterialEntry Compost::MaterialEntries[128];
int Compost::MaterialEntriesCount = 0;
int Compost::DarkFactor = 128;
int
Feature_Texture::RecalculateSize()
{
int dsize = 0;
switch(flags & Compost::Feature_Texture::TextureTypeMask)
{
case Compost::Feature_Texture::TextureMode::FTT_555:
case Compost::Feature_Texture::TextureMode::FTT_4444:
case Compost::Feature_Texture::TextureMode::FTT_1_M:
{
dsize = depth*(width+2)*(height+2);
dsize += depth*((width>>1)+2)*((height>>1)+2);
dsize += depth*((width>>2)+2)*((height>>2)+2);
dataSize = dsize;
}
break;
case Compost::Feature_Texture::TextureMode::FTT_1:
{
dsize = depth*(width+2)*(height+2);
dataSize = dsize;
}
break;
case Compost::Feature_Texture::TextureMode::FTT_1_1:
{
dsize = depth*(2+ (width>>3))*(2+height);
dataSize = dsize;
}
break;
default:
STOP(("Unknown Compost Texture Format !!"));
break;
}
return dsize;
}
const char*
Feature::GetBlendModeName(Blend_Mode bm)
{
static char name[1024];
switch(bm)
{
case Blend_Mode::Paste:
strcpy(name, "Paste");
break;
case Blend_Mode::Added:
strcpy(name, "Added");
break;
case Blend_Mode::Multiply:
strcpy(name, "Multiply");
break;
case Blend_Mode::Blend555_1:
strcpy(name, "Blend555_1");
break;
case Blend_Mode::Blend555_2:
strcpy(name, "Blend555_2");
break;
case Blend_Mode::Blend4444:
strcpy(name, "Blend4444");
break;
case Blend_Mode::StretchMultiply:
strcpy(name, "StretchMultiply");
break;
case Blend_Mode::Blend555_1_1:
strcpy(name, "Blend555_1_1");
break;
case Blend_Mode::StretchPaste:
strcpy(name, "StretchPaste");
break;
case Blend_Mode::Blend555_1_S:
strcpy(name, "Blend555_1_S");
break;
default:
strcpy(name, "Unknown");
};
return name;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
Compost::InitializeClasses(NotationFile *startup_ini)
{
AddDebuggerMenuItem("Libraries\\Graphics Options\\Terrain Texture Level 0", Check_0, Activate_0, NULL );
AddDebuggerMenuItem("Libraries\\Graphics Options\\Terrain Texture Level 1", Check_1, Activate_1, NULL );
AddDebuggerMenuItem("Libraries\\Graphics Options\\Terrain Texture Level 2", Check_2, Activate_2, NULL );
AddDebuggerMenuItem("Libraries\\Graphics Options\\Terrain Texture Level 3", Check_3, Activate_3, NULL );
Verify(!Heap);
Heap = gos_CreateMemoryHeap("Compositing");
Check_Pointer(Heap);
gos_PushCurrentHeap(Heap);
//
//---------------------
// Setup the statistics
//---------------------
//
#if !(defined(NO_STATS) && defined(NO_TIMERS))
StatisticFormat( "" );
StatisticFormat( "Compositing" );
StatisticFormat( "===========" );
StatisticFormat( "" );
#endif
#ifdef LAB_ONLY
Number_Of_Used_128_Textures = Number_Of_Reserved_Textures;
Number_Of_Used_256_Textures = Number_Of_Reserved_Textures/2;
#endif
#if !defined(NO_STATS)
AddStatistic( "Textures in work", "#", gos_DWORD, &Number_Of_Worked_On_Textures, Stat_AutoReset );
AddStatistic( "128 Textures used", "#", gos_DWORD, &Number_Of_Used_128_Textures, Stat_AutoReset + Stat_GraphMax);
AddStatistic( "256 Textures used", "#", gos_DWORD, &Number_Of_Used_256_Textures, Stat_AutoReset + Stat_GraphMax);
#endif
Initialize_Timer(Composting_Time, "Compost time");
if (startup_ini)
{
Check_Object(startup_ini);
Page *page = startup_ini->FindPage("Graphics Options");
if (page)
{
Check_Object(page);
int compositing;
if (page->GetEntry("Compositing", &compositing))
TerrainTextureLogistic::SetResolution(compositing);
}
}
gos_PopCurrentHeap();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
Compost::TerminateClasses(NotationFile *startup_ini)
{
if (startup_ini)
{
Check_Object(startup_ini);
Page *page = startup_ini->SetPage("Graphics Options");
Check_Object(page);
int compositing = TerrainTextureLogistic::GetResolution();
page->SetEntry("Compositing", compositing);
}
Check_Pointer(Heap);
gos_DestroyMemoryHeap(Heap);
Heap = NULL;
}