mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2026-04-28 20:06:57 +02:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FILE
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* PROGRAMMER
|
||||
* Denzil E. Long, Jr.
|
||||
*
|
||||
* VERSION INFO
|
||||
* $Author: Patrick $
|
||||
* $Revision: 10 $
|
||||
* $Modtime: 8/29/01 4:04p $
|
||||
* $Archive: /Commando/Code/Scripts/DLLmain.cpp $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "Windows.H"
|
||||
#include "scripts.h"
|
||||
#include "scriptregistrar.h"
|
||||
//#include "missioncontrol.h"
|
||||
#include "dprint.h"
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* DllMain
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Main DLL entry point
|
||||
*
|
||||
* INPUTS
|
||||
* HINSTANCE hinst
|
||||
* DWORD reason
|
||||
* LPVOID
|
||||
*
|
||||
* RESULTS
|
||||
* BOOL APIENTRY
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
__declspec(dllexport)
|
||||
BOOL APIENTRY DllMain(HINSTANCE hinst, DWORD reason, LPVOID)
|
||||
{
|
||||
if (reason == DLL_PROCESS_ATTACH) {
|
||||
// DebugPrint("\n========== Script.dll loaded ==========\n");
|
||||
DebugPrint("Total registered scripts: %d\n", ScriptRegistrar::Count());
|
||||
|
||||
} else if (reason == DLL_PROCESS_DETACH) {
|
||||
// DebugPrint("\n========== Script.dll Unloaded ==========\n");
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Create_Script
|
||||
*
|
||||
* DESCRIPTION
|
||||
* DLL entry to create a script instance.
|
||||
*
|
||||
* INPUTS
|
||||
* const char* name
|
||||
*
|
||||
* RESULTS
|
||||
* ScriptClass*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
ScriptClass* Create_Script(const char* name)
|
||||
{
|
||||
return ScriptRegistrar::CreateScript(name);
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Destroy_Script
|
||||
*
|
||||
* DESCRIPTION
|
||||
* DLL entry to destroy a script instance
|
||||
*
|
||||
* INPUTS
|
||||
* ScriptClass* script
|
||||
*
|
||||
* RESULTS
|
||||
* NONE
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void Destroy_Script(ScriptClass* script)
|
||||
{
|
||||
assert(script != NULL);
|
||||
delete script;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Get_Script_Count
|
||||
*
|
||||
* DESCRIPTION
|
||||
* DLL entry to count the number of registered scripts
|
||||
*
|
||||
* INPUTS
|
||||
* NONE
|
||||
*
|
||||
* RESULTS
|
||||
* Count
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
int Get_Script_Count(void)
|
||||
{
|
||||
return ScriptRegistrar::Count();
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Get_Script_Name
|
||||
*
|
||||
* DESCRIPTION
|
||||
* DLL entry to retrieve script name.
|
||||
*
|
||||
* INPUTS
|
||||
* int index
|
||||
*
|
||||
* RESULTS
|
||||
* const char*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
const char* Get_Script_Name(int index)
|
||||
{
|
||||
ScriptFactory* factory = ScriptRegistrar::GetScriptFactory(index);
|
||||
|
||||
if (factory != NULL) {
|
||||
return factory->GetName();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Get_Script_Param_Description
|
||||
*
|
||||
* DESCRIPTION
|
||||
* DLL entry to retrieve Script parameter description.
|
||||
*
|
||||
* INPUTS
|
||||
* int index
|
||||
*
|
||||
* RESULTS
|
||||
* const char*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
const char* Get_Script_Param_Description(int index)
|
||||
{
|
||||
ScriptFactory* factory = ScriptRegistrar::GetScriptFactory(index);
|
||||
|
||||
if (factory != NULL) {
|
||||
return factory->GetParamDescription();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Set_Script_Commands
|
||||
*
|
||||
* DESCRIPTION
|
||||
* DLL entry to initialize script commands hooks.
|
||||
*
|
||||
* INPUTS
|
||||
* ScriptCommandsClass* commands
|
||||
*
|
||||
* RESULTS
|
||||
* Success - True if successful; otherwise false.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
bool Set_Script_Commands(ScriptCommandsClass* commands)
|
||||
{
|
||||
assert(commands != NULL);
|
||||
|
||||
// Save the commands list
|
||||
Commands = commands->Commands;
|
||||
|
||||
DebugPrint("Setting script commands (Version %d, Size %d)\n",
|
||||
Commands->Version, Commands->Size);
|
||||
|
||||
// Check the commands version number
|
||||
if ((Commands->Size != sizeof(ScriptCommands))
|
||||
|| (Commands->Version != SCRIPT_COMMANDS_VERSION)) {
|
||||
|
||||
DebugPrint("***** Invalid script commands (Expected Version %d, Size %d)\n",
|
||||
SCRIPT_COMMANDS_VERSION, sizeof(ScriptCommands));
|
||||
Commands->Debug_Message("******** Incorrect Script Commands Version\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* NAME
|
||||
* Set_Request_Destroy_Func
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* INPUTS
|
||||
* Function
|
||||
*
|
||||
* RESULTS
|
||||
* NONE
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void Set_Request_Destroy_Func(void (*function)(ScriptClass*))
|
||||
{
|
||||
assert(function != NULL);
|
||||
ScriptImpClass::Set_Request_Destroy_Func(function);
|
||||
}
|
||||
Reference in New Issue
Block a user