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.
187 lines
5.2 KiB
C++
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;
|
|
}
|