⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stuff.cpp

📁 机甲指挥官2源代码
💻 CPP
字号:
//===========================================================================//
// Copyright (C) Microsoft Corporation. All rights reserved.                 //
//===========================================================================//

#include "StuffHeaders.hpp"
#include "eh.h"

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	Stuff::Flood_Memory_With_NAN(
		void *where,
		size_t how_much
	)
{
	Verify(!(reinterpret_cast<int>(where)&3));
	Check_Pointer(where);
	long *filler = Cast_Pointer(long *, where);
	for (int i = how_much >> 2; i; --i)
	{
		*filler++ = SNAN_NEGATIVE_LONG;
	}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	__cdecl Terminate_Handler()
{
	STOP(("Unhandled exception"));
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
static bool __stdcall Check_0() {return ArmorLevel == 0;}
static bool __stdcall Check_1() {return ArmorLevel == 1;}
static bool __stdcall Check_2() {return ArmorLevel == 2;}
static bool __stdcall Check_3() {return ArmorLevel == 3;}
static bool __stdcall Check_4() {return ArmorLevel == 4;}

static void __stdcall Activate_0() {ArmorLevel = 0;}
static void __stdcall Activate_1() {ArmorLevel = 1;}
static void __stdcall Activate_2() {ArmorLevel = 2;}
static void __stdcall Activate_3() {ArmorLevel = 3;}
static void __stdcall Activate_4() {ArmorLevel = 4;}

static bool
	__stdcall Greyed()
{
	#if defined(_ARMOR)
		return false;
	#else
		return true;
	#endif
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
static bool __stdcall Check_4hz() {return Environment.MaxTimeDelta == 0.25f;}
static bool __stdcall Check_40hz() {return Environment.MaxTimeDelta == 0.025f;}
static bool __stdcall Check_400hz() {return Environment.MaxTimeDelta == 0.0025f;}

static void __stdcall Activate_4hz() {Environment.MaxTimeDelta = Environment.MinimumTimeDelta = 0.25f;}
static void __stdcall Activate_40hz() {Environment.MaxTimeDelta = Environment.MinimumTimeDelta = 0.025f;}
static void __stdcall Activate_400hz() {Environment.MaxTimeDelta = Environment.MinimumTimeDelta = 0.0025f;}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	Stuff::InitializeClasses()
{
	set_terminate(Terminate_Handler);

	//
	//-------------------------------------------------
	// First, Initialize all the non registered classes
	//-------------------------------------------------
	//
	Verify(FirstFreeStuffClassID <= LastStuffClassID);
	Verify(!FileStreamManager::Instance);
	FileStreamManager::Instance = new FileStreamManager;
	RegisteredClass::InitializeClass();
	Plug::InitializeClass();
	Node::InitializeClass();

	SlotLink::InitializeClass();
	ChainLink::InitializeClass();
	SafeChainLink::InitializeClass();

	Random::InitializeClass();

	//
	//----------------------------------------------
	// Now, initialize all of the registered classes
	//----------------------------------------------
	//
	MemoryStream::InitializeClass();
	FileStream::InitializeClass();
	#if defined(TRACE_ENABLED)
		TraceManager::InitializeClass();
	#endif


	//
	//------------------------------------
	// Build the quatenion fast lerp table
	//------------------------------------
	//
	

	UnitQuaternion::InitializeClass();

	//
	//-------------------
	// Add the armor menu
	//-------------------
	//
	AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 0", Check_0, Activate_0, Greyed );
	AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 1", Check_1, Activate_1, Greyed );
	AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 2", Check_2, Activate_2, Greyed );
	AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 3", Check_3, Activate_3, Greyed );
	AddDebuggerMenuItem("Libraries\\Stuff\\Armor Level 4", Check_4, Activate_4, Greyed );

	AddDebuggerMenuItem("Libraries\\Stuff\\4hz min", Check_4hz, Activate_4hz, NULL );
	AddDebuggerMenuItem("Libraries\\Stuff\\40hz min", Check_40hz, Activate_40hz, NULL );
	AddDebuggerMenuItem("Libraries\\Stuff\\400hz min", Check_400hz, Activate_400hz, NULL );
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
	Stuff::TerminateClasses()
{
	//
	//-----------------------------------------------
	// First, terminate all of the registered classes
	//-----------------------------------------------
	//
	if ( !FileStream::DefaultData ) // yet again, nobody every checks for NULL pointers
		return;

	UnitQuaternion::TerminateClass();

	#if defined(TRACE_ENABLED)
		TraceManager::TerminateClass();
	#endif
	FileStream::TerminateClass();
	MemoryStream::TerminateClass();

	//
	//-----------------------------------------------
	// Then, terminate all the non registered classes
	//-----------------------------------------------
	//
	Random::TerminateClass();

	SafeChainLink::TerminateClass();
	ChainLink::TerminateClass();
	SlotLink::TerminateClass();

	Node::TerminateClass();
	Plug::TerminateClass();
	RegisteredClass::TerminateClass();
	Check_Pointer(FileStreamManager::Instance);
	delete FileStreamManager::Instance;
	FileStreamManager::Instance = NULL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -