diff --git a/Core/GameEngine/CMakeLists.txt b/Core/GameEngine/CMakeLists.txt index fe0f700648c..ae5a431004f 100644 --- a/Core/GameEngine/CMakeLists.txt +++ b/Core/GameEngine/CMakeLists.txt @@ -584,33 +584,33 @@ set(GAMEENGINE_SRC Source/Common/GameUtility.cpp # Source/Common/GlobalData.cpp Source/Common/INI/INI.cpp -# Source/Common/INI/INIAiData.cpp -# Source/Common/INI/INIAnimation.cpp + Source/Common/INI/INIAiData.cpp + Source/Common/INI/INIAnimation.cpp Source/Common/INI/INIAudioEventInfo.cpp -# Source/Common/INI/INICommandButton.cpp -# Source/Common/INI/INICommandSet.cpp -# Source/Common/INI/INIControlBarScheme.cpp -# Source/Common/INI/INICrate.cpp -# Source/Common/INI/INIDamageFX.cpp -# Source/Common/INI/INIDrawGroupInfo.cpp -# Source/Common/INI/INIGameData.cpp -# Source/Common/INI/INIMapCache.cpp -# Source/Common/INI/INIMapData.cpp -# Source/Common/INI/INIMappedImage.cpp + Source/Common/INI/INICommandButton.cpp + Source/Common/INI/INICommandSet.cpp + Source/Common/INI/INIControlBarScheme.cpp + Source/Common/INI/INICrate.cpp + Source/Common/INI/INIDamageFX.cpp + Source/Common/INI/INIDrawGroupInfo.cpp + Source/Common/INI/INIGameData.cpp + Source/Common/INI/INIMapCache.cpp + Source/Common/INI/INIMapData.cpp + Source/Common/INI/INIMappedImage.cpp Source/Common/INI/INIMiscAudio.cpp -# Source/Common/INI/INIModel.cpp -# Source/Common/INI/INIMultiplayer.cpp -# Source/Common/INI/INIObject.cpp -# Source/Common/INI/INIParticleSys.cpp -# Source/Common/INI/INISpecialPower.cpp -# Source/Common/INI/INITerrain.cpp -# Source/Common/INI/INITerrainBridge.cpp -# Source/Common/INI/INITerrainRoad.cpp -# Source/Common/INI/INIUpgrade.cpp + Source/Common/INI/INIModel.cpp + Source/Common/INI/INIMultiplayer.cpp + Source/Common/INI/INIObject.cpp + Source/Common/INI/INIParticleSys.cpp + Source/Common/INI/INISpecialPower.cpp + Source/Common/INI/INITerrain.cpp + Source/Common/INI/INITerrainBridge.cpp + Source/Common/INI/INITerrainRoad.cpp + Source/Common/INI/INIUpgrade.cpp Source/Common/INI/INIVideo.cpp -# Source/Common/INI/INIWater.cpp -# Source/Common/INI/INIWeapon.cpp -# Source/Common/INI/INIWebpageURL.cpp + Source/Common/INI/INIWater.cpp + Source/Common/INI/INIWeapon.cpp + Source/Common/INI/INIWebpageURL.cpp # Source/Common/Language.cpp # Source/Common/MessageStream.cpp # Source/Common/MiniLog.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIAiData.cpp b/Core/GameEngine/Source/Common/INI/INIAiData.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIAiData.cpp rename to Core/GameEngine/Source/Common/INI/INIAiData.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIAnimation.cpp b/Core/GameEngine/Source/Common/INI/INIAnimation.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIAnimation.cpp rename to Core/GameEngine/Source/Common/INI/INIAnimation.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INICommandButton.cpp b/Core/GameEngine/Source/Common/INI/INICommandButton.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INICommandButton.cpp rename to Core/GameEngine/Source/Common/INI/INICommandButton.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INICommandSet.cpp b/Core/GameEngine/Source/Common/INI/INICommandSet.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INICommandSet.cpp rename to Core/GameEngine/Source/Common/INI/INICommandSet.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIControlBarScheme.cpp b/Core/GameEngine/Source/Common/INI/INIControlBarScheme.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIControlBarScheme.cpp rename to Core/GameEngine/Source/Common/INI/INIControlBarScheme.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INICrate.cpp b/Core/GameEngine/Source/Common/INI/INICrate.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INICrate.cpp rename to Core/GameEngine/Source/Common/INI/INICrate.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIDamageFX.cpp b/Core/GameEngine/Source/Common/INI/INIDamageFX.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIDamageFX.cpp rename to Core/GameEngine/Source/Common/INI/INIDamageFX.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp b/Core/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp rename to Core/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIGameData.cpp b/Core/GameEngine/Source/Common/INI/INIGameData.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIGameData.cpp rename to Core/GameEngine/Source/Common/INI/INIGameData.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIMapCache.cpp b/Core/GameEngine/Source/Common/INI/INIMapCache.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIMapCache.cpp rename to Core/GameEngine/Source/Common/INI/INIMapCache.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIMapData.cpp b/Core/GameEngine/Source/Common/INI/INIMapData.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIMapData.cpp rename to Core/GameEngine/Source/Common/INI/INIMapData.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIMappedImage.cpp b/Core/GameEngine/Source/Common/INI/INIMappedImage.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIMappedImage.cpp rename to Core/GameEngine/Source/Common/INI/INIMappedImage.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIModel.cpp b/Core/GameEngine/Source/Common/INI/INIModel.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIModel.cpp rename to Core/GameEngine/Source/Common/INI/INIModel.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIMultiplayer.cpp b/Core/GameEngine/Source/Common/INI/INIMultiplayer.cpp similarity index 79% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIMultiplayer.cpp rename to Core/GameEngine/Source/Common/INI/INIMultiplayer.cpp index 94f9b93a75b..c93c9658478 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIMultiplayer.cpp +++ b/Core/GameEngine/Source/Common/INI/INIMultiplayer.cpp @@ -80,30 +80,30 @@ void INI::parseMultiplayerColorDefinition( INI* ini ) namespace { - struct MultiplayerStartingMoneySettings - { - Money money; - Bool isDefault; - }; - - const FieldParse startingMoneyFieldParseTable[] = - { - { "Value", Money::parseMoneyAmount, nullptr, offsetof( MultiplayerStartingMoneySettings, money ) }, - { "Default", INI::parseBool, nullptr, offsetof( MultiplayerStartingMoneySettings, isDefault ) }, - { nullptr, nullptr, nullptr, 0 } - }; + struct MultiplayerStartingMoneySettings + { + Money money; + Bool isDefault; + }; + + const FieldParse startingMoneyFieldParseTable[] = + { + { "Value", Money::parseMoneyAmount, nullptr, offsetof( MultiplayerStartingMoneySettings, money ) }, + { "Default", INI::parseBool, nullptr, offsetof( MultiplayerStartingMoneySettings, isDefault ) }, + { nullptr, nullptr, nullptr, 0 } + }; } void INI::parseMultiplayerStartingMoneyChoiceDefinition( INI* ini ) { - DEBUG_ASSERTCRASH( ini->getLoadType() != INI_LOAD_CREATE_OVERRIDES, ("Overrides not supported for MultiplayerStartingMoneyChoice") ); + DEBUG_ASSERTCRASH( ini->getLoadType() != INI_LOAD_CREATE_OVERRIDES, ("Overrides not supported for MultiplayerStartingMoneyChoice") ); - // Temporary data store - MultiplayerStartingMoneySettings settings; - settings.isDefault = false; + // Temporary data store. + MultiplayerStartingMoneySettings settings; + settings.isDefault = false; - ini->initFromINI( &settings, startingMoneyFieldParseTable ); + ini->initFromINI( &settings, startingMoneyFieldParseTable ); - TheMultiplayerSettings->addStartingMoneyChoice( settings.money, settings.isDefault ); + TheMultiplayerSettings->addStartingMoneyChoice( settings.money, settings.isDefault ); } diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIObject.cpp b/Core/GameEngine/Source/Common/INI/INIObject.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIObject.cpp rename to Core/GameEngine/Source/Common/INI/INIObject.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIParticleSys.cpp b/Core/GameEngine/Source/Common/INI/INIParticleSys.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIParticleSys.cpp rename to Core/GameEngine/Source/Common/INI/INIParticleSys.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INISpecialPower.cpp b/Core/GameEngine/Source/Common/INI/INISpecialPower.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INISpecialPower.cpp rename to Core/GameEngine/Source/Common/INI/INISpecialPower.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INITerrain.cpp b/Core/GameEngine/Source/Common/INI/INITerrain.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INITerrain.cpp rename to Core/GameEngine/Source/Common/INI/INITerrain.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INITerrainBridge.cpp b/Core/GameEngine/Source/Common/INI/INITerrainBridge.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INITerrainBridge.cpp rename to Core/GameEngine/Source/Common/INI/INITerrainBridge.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INITerrainRoad.cpp b/Core/GameEngine/Source/Common/INI/INITerrainRoad.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INITerrainRoad.cpp rename to Core/GameEngine/Source/Common/INI/INITerrainRoad.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIUpgrade.cpp b/Core/GameEngine/Source/Common/INI/INIUpgrade.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIUpgrade.cpp rename to Core/GameEngine/Source/Common/INI/INIUpgrade.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIWater.cpp b/Core/GameEngine/Source/Common/INI/INIWater.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIWater.cpp rename to Core/GameEngine/Source/Common/INI/INIWater.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIWeapon.cpp b/Core/GameEngine/Source/Common/INI/INIWeapon.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIWeapon.cpp rename to Core/GameEngine/Source/Common/INI/INIWeapon.cpp diff --git a/GeneralsMD/Code/GameEngine/Source/Common/INI/INIWebpageURL.cpp b/Core/GameEngine/Source/Common/INI/INIWebpageURL.cpp similarity index 100% rename from GeneralsMD/Code/GameEngine/Source/Common/INI/INIWebpageURL.cpp rename to Core/GameEngine/Source/Common/INI/INIWebpageURL.cpp diff --git a/Generals/Code/GameEngine/CMakeLists.txt b/Generals/Code/GameEngine/CMakeLists.txt index 124246f68f4..5a99ba76da7 100644 --- a/Generals/Code/GameEngine/CMakeLists.txt +++ b/Generals/Code/GameEngine/CMakeLists.txt @@ -532,33 +532,33 @@ set(GAMEENGINE_SRC Source/Common/GameMain.cpp Source/Common/GlobalData.cpp # Source/Common/INI/INI.cpp - Source/Common/INI/INIAiData.cpp - Source/Common/INI/INIAnimation.cpp +# Source/Common/INI/INIAiData.cpp +# Source/Common/INI/INIAnimation.cpp # Source/Common/INI/INIAudioEventInfo.cpp - Source/Common/INI/INICommandButton.cpp - Source/Common/INI/INICommandSet.cpp - Source/Common/INI/INIControlBarScheme.cpp - Source/Common/INI/INICrate.cpp - Source/Common/INI/INIDamageFX.cpp - Source/Common/INI/INIDrawGroupInfo.cpp - Source/Common/INI/INIGameData.cpp - Source/Common/INI/INIMapCache.cpp - Source/Common/INI/INIMapData.cpp - Source/Common/INI/INIMappedImage.cpp +# Source/Common/INI/INICommandButton.cpp +# Source/Common/INI/INICommandSet.cpp +# Source/Common/INI/INIControlBarScheme.cpp +# Source/Common/INI/INICrate.cpp +# Source/Common/INI/INIDamageFX.cpp +# Source/Common/INI/INIDrawGroupInfo.cpp +# Source/Common/INI/INIGameData.cpp +# Source/Common/INI/INIMapCache.cpp +# Source/Common/INI/INIMapData.cpp +# Source/Common/INI/INIMappedImage.cpp # Source/Common/INI/INIMiscAudio.cpp - Source/Common/INI/INIModel.cpp - Source/Common/INI/INIMultiplayer.cpp - Source/Common/INI/INIObject.cpp - Source/Common/INI/INIParticleSys.cpp - Source/Common/INI/INISpecialPower.cpp - Source/Common/INI/INITerrain.cpp - Source/Common/INI/INITerrainBridge.cpp - Source/Common/INI/INITerrainRoad.cpp - Source/Common/INI/INIUpgrade.cpp +# Source/Common/INI/INIModel.cpp +# Source/Common/INI/INIMultiplayer.cpp +# Source/Common/INI/INIObject.cpp +# Source/Common/INI/INIParticleSys.cpp +# Source/Common/INI/INISpecialPower.cpp +# Source/Common/INI/INITerrain.cpp +# Source/Common/INI/INITerrainBridge.cpp +# Source/Common/INI/INITerrainRoad.cpp +# Source/Common/INI/INIUpgrade.cpp # Source/Common/INI/INIVideo.cpp - Source/Common/INI/INIWater.cpp - Source/Common/INI/INIWeapon.cpp - Source/Common/INI/INIWebpageURL.cpp +# Source/Common/INI/INIWater.cpp +# Source/Common/INI/INIWeapon.cpp +# Source/Common/INI/INIWebpageURL.cpp Source/Common/Language.cpp Source/Common/MessageStream.cpp Source/Common/MiniLog.cpp diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIAiData.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIAiData.cpp deleted file mode 100644 index 98b2d4eb43e..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIAiData.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIAiData.cpp ////////////////////////////////////////////////////////////////////////// -// Author: John Ahlquist, March 2002 -// Desc: Parsing AIData INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameLogic/AI.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PRIVATE DATA /////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse GameData entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseAIDataDefinition( INI* ini ) -{ - AI::parseAiDataDefinition(ini); -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIAnimation.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIAnimation.cpp deleted file mode 100644 index ad333937b18..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIAnimation.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIAnimation.cpp ///////////////////////////////////////////////////////////////////////// -// Author: Colin Day, July 2002 -// Desc: Parsing animation INI entries for 2D image animations -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/Anim2D.h" - -//------------------------------------------------------------------------------------------------- -/** Parse animation entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseAnim2DDefinition( INI* ini ) -{ - AsciiString name; - Anim2DTemplate *animTemplate; - - // read the name - const char* c = ini->getNextToken(); - name.set( c ); - - // - // find existing item if present, note that we do not support overrides - // in the animations like we do in systems that are more "design" oriented, images - // are assets as they are - // - if( !TheAnim2DCollection ) - { - - //We don't need it if we're in the builder... which doesn't have this. - return; - - } - - // find existing animation template if present - animTemplate = TheAnim2DCollection->findTemplate( name ); - if( animTemplate == nullptr ) - { - - // item not found, create a new one - animTemplate = TheAnim2DCollection->newTemplate( name ); - DEBUG_ASSERTCRASH( animTemplate, ("INI::parseAnim2DDefinition - unable to allocate animation template for '%s'", - name.str()) ); - - } - else - { - - // we're loading over an existing animation template ... something is probably wrong - DEBUG_CRASH(( "INI::parseAnim2DDefinition - Animation template '%s' already exists", - animTemplate->getName().str() )); - return; - - } - - // parse the ini definition - ini->initFromINI( animTemplate, animTemplate->getFieldParse() ); - -} - - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INICommandButton.cpp b/Generals/Code/GameEngine/Source/Common/INI/INICommandButton.cpp deleted file mode 100644 index 2f4eb32c5bc..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INICommandButton.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INICommandButton.cpp ///////////////////////////////////////////////////////////////////// -// Author: Colin Day, March 2002 -// Desc: Command buttons are the atomic units we can configure into command sets to then -// display in the context sensitive user interface -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// USER INCLUDES ////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/SpecialPower.h" -#include "GameClient/ControlBar.h" - -//------------------------------------------------------------------------------------------------- -/** Parse a command button */ -//------------------------------------------------------------------------------------------------- -void INI::parseCommandButtonDefinition( INI *ini ) -{ - ControlBar::parseCommandButtonDefinition(ini); -} - -//------------------------------------------------------------------------------------------------- -/** Parse a command button */ -//------------------------------------------------------------------------------------------------- -void ControlBar::parseCommandButtonDefinition( INI *ini ) -{ - // read the name - AsciiString name = ini->getNextToken(); - - // find existing item if present - CommandButton *button = TheControlBar->findNonConstCommandButton( name ); - if( button == nullptr ) - { - // allocate a new item - button = TheControlBar->newCommandButton( name ); - if (ini->getLoadType() == INI_LOAD_CREATE_OVERRIDES) - { - button->markAsOverride(); - } - } - else if( ini->getLoadType() != INI_LOAD_CREATE_OVERRIDES ) - { - DEBUG_CRASH(( "[LINE: %d in '%s'] Duplicate commandbutton %s found!", ini->getLineNum(), ini->getFilename().str(), name.str() )); - } - else - { - button = TheControlBar->newCommandButtonOverride( button ); - } - - // parse the ini definition - ini->initFromINI( button, button->getFieldParse() ); - - - //Make sure buttons with special power templates also have the appropriate option set. - const SpecialPowerTemplate *spTemplate = button->getSpecialPowerTemplate(); - Bool needsTemplate = BitIsSet( button->getOptions(), NEED_SPECIAL_POWER_SCIENCE ); - if( spTemplate && !needsTemplate ) - { - DEBUG_CRASH( ("[LINE: %d in '%s'] CommandButton %s has SpecialPower = %s but the button also requires Options = NEED_SPECIAL_POWER_SCIENCE. Failure to do so will cause bugs such as invisible side shortcut buttons", - ini->getLineNum(), ini->getFilename().str(), name.str(), spTemplate->getName().str() ) ); - } - else if( !spTemplate && needsTemplate ) - { - DEBUG_CRASH( ("[LINE: %d in '%s'] CommandButton %s has Options = NEED_SPECIAL_POWER_SCIENCE but doesn't specify a SpecialPower = xxxx. Please evaluate INI.", - ini->getLineNum(), ini->getFilename().str(), name.str() ) ); - } - -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INICommandSet.cpp b/Generals/Code/GameEngine/Source/Common/INI/INICommandSet.cpp deleted file mode 100644 index efe52f8123b..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INICommandSet.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INICommandSet.cpp //////////////////////////////////////////////////////////////////////// -// Author: Colin Day, March 2002 -// Desc: Command sets are a configurable set of CommandButtons, we will use the sets as -// part of the context sensitive user interface -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// USER INCLUDES ////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/ControlBar.h" - -//------------------------------------------------------------------------------------------------- -/** Parse a command set */ -//------------------------------------------------------------------------------------------------- -void INI::parseCommandSetDefinition( INI *ini ) -{ - ControlBar::parseCommandSetDefinition(ini); -} diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIControlBarScheme.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIControlBarScheme.cpp deleted file mode 100644 index dbe467b7ba3..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIControlBarScheme.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIControlBarScheme.cpp ///////////////////////////////////////////////// -//----------------------------------------------------------------------------- -// -// Electronic Arts Pacific. -// -// Confidential Information -// Copyright (C) 2002 - All Rights Reserved -// -//----------------------------------------------------------------------------- -// -// created: Apr 2002 -// -// Filename: INIControlBarScheme.cpp -// -// author: Chris Huybregts -// -// purpose: Parse a control Bar Scheme -// -//----------------------------------------------------------------------------- -/////////////////////////////////////////////////////////////////////////////// - -//----------------------------------------------------------------------------- -// SYSTEM INCLUDES //////////////////////////////////////////////////////////// -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// USER INCLUDES ////////////////////////////////////////////////////////////// -//----------------------------------------------------------------------------- -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/ControlBar.h" -#include "GameClient/ControlBarScheme.h" -//----------------------------------------------------------------------------- -// DEFINES //////////////////////////////////////////////////////////////////// -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////// -//----------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// PRIVATE FUNCTIONS ////////////////////////////////////////////////////////// -//----------------------------------------------------------------------------- - -//------------------------------------------------------------------------------------------------- -/** Parse a ControlBarScheme button */ -//------------------------------------------------------------------------------------------------- -void INI::parseControlBarSchemeDefinition( INI *ini ) -{ - AsciiString name; - ControlBarSchemeManager *CBSchemeManager; - ControlBarScheme *CBScheme; - - // read the name - const char* c = ini->getNextToken(); - name.set( c ); - - // find existing item if present - CBSchemeManager = TheControlBar->getControlBarSchemeManager(); - DEBUG_ASSERTCRASH( CBSchemeManager, ("parseControlBarSchemeDefinition: Unable to Get CBSchemeManager") ); - if( !CBSchemeManager ) - return; - - // If we have a previously allocated control bar, this will return a cleared out pointer to it so we - // can overwrite it - CBScheme = CBSchemeManager->newControlBarScheme( name ); - - // sanity - DEBUG_ASSERTCRASH( CBScheme, ("parseControlBarSchemeDefinition: Unable to allocate Scheme '%s'", name.str()) ); - - // parse the ini definition - ini->initFromINI( CBScheme, CBSchemeManager->getFieldParse() ); - -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INICrate.cpp b/Generals/Code/GameEngine/Source/Common/INI/INICrate.cpp deleted file mode 100644 index c4e7b75fe75..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INICrate.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INICrate.cpp ///////////////////////////////////////////////////////////////////////////////// -// Author: Graham Smallwood Feb 2002 -// Desc: Just passes the parse to the CrateSystem -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameLogic/CrateSystem.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse Weapon entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseCrateTemplateDefinition( INI* ini ) -{ - CrateSystem::parseCrateTemplateDefinition(ini); -} diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIDamageFX.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIDamageFX.cpp deleted file mode 100644 index 3033aaca763..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIDamageFX.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIDamageFX.cpp //////////////////////////////////////////////////////////////////////////// -// Author: Steven Johnson, November 2001 -// Desc: Parsing DamageFX INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/DamageFX.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/*static */ void INI::parseDamageFXDefinition(INI* ini) -{ - DamageFXStore::parseDamageFXDefinition(ini); -} - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp deleted file mode 100644 index 5ca92f078fb..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIDrawGroupInfo.cpp ///////////////////////////////////////////////////////////////////// -// Author: John McDonald, October 2002 -// Desc: Parsing DrawGroupInfo INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/DrawGroupInfo.h" - -void parseInt( INI* ini, void * /*instance*/, void *store, const void* userData ) -{ - DrawGroupInfo *dgi = (DrawGroupInfo*) store; - if (userData == nullptr) { - store = &dgi->m_pixelOffsetX; - dgi->m_usingPixelOffsetX = TRUE; - } else { - store = &dgi->m_pixelOffsetY; - dgi->m_usingPixelOffsetY = TRUE; - } - - INI::parseInt(ini, nullptr, store, nullptr); -} - -void parsePercentToReal( INI* ini, void * /*instance*/, void *store, const void* userData ) -{ - DrawGroupInfo *dgi = (DrawGroupInfo*) store; - if (userData == nullptr) { - store = &dgi->m_pixelOffsetX; - dgi->m_usingPixelOffsetX = FALSE; - } else { - store = &dgi->m_pixelOffsetY; - dgi->m_usingPixelOffsetY = FALSE; - } - - INI::parsePercentToReal(ini, nullptr, store, nullptr); -} - -const FieldParse DrawGroupInfo::s_fieldParseTable[] = -{ - { "UsePlayerColor", INI::parseBool, nullptr, offsetof( DrawGroupInfo, m_usePlayerColor) }, - { "ColorForText", INI::parseColorInt, nullptr, offsetof( DrawGroupInfo, m_colorForText ) }, - { "ColorForTextDropShadow", INI::parseColorInt, nullptr, offsetof( DrawGroupInfo, m_colorForTextDropShadow ) }, - - { "FontName", INI::parseQuotedAsciiString, nullptr, offsetof( DrawGroupInfo, m_fontName ) }, - { "FontSize", INI::parseInt, nullptr, offsetof( DrawGroupInfo, m_fontSize ) }, - { "FontIsBold", INI::parseBool, nullptr, offsetof( DrawGroupInfo, m_fontIsBold ) }, - { "DropShadowOffsetX", INI::parseInt, nullptr, offsetof( DrawGroupInfo, m_dropShadowOffsetX) }, - { "DropShadowOffsetY", INI::parseInt, nullptr, offsetof( DrawGroupInfo, m_dropShadowOffsetY) }, - { "DrawPositionXPixel", parseInt, (void*)nullptr, 0 }, - { "DrawPositionXPercent", parsePercentToReal, (void*)nullptr, 0 }, - { "DrawPositionYPixel", parseInt, (void*)1, 0 }, - { "DrawPositionYPercent", parsePercentToReal, (void*)1, 0 }, - - { nullptr, nullptr, nullptr, 0 } -}; - -/*static */ void INI::parseDrawGroupNumberDefinition(INI* ini) -{ - if (!TheDrawGroupInfo) { - throw INI_UNKNOWN_ERROR; - } - - ini->initFromINI(TheDrawGroupInfo, TheDrawGroupInfo->getFieldParse()); -} - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIGameData.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIGameData.cpp deleted file mode 100644 index ddb1f7b6702..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIGameData.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIGameData.cpp ////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, November 2001 -// Desc: Parsing GameData INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/GlobalData.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PRIVATE DATA /////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse GameData entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseGameDataDefinition( INI* ini ) -{ - GlobalData::parseGameDataDefinition(ini); -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIMapCache.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIMapCache.cpp deleted file mode 100644 index 513a755c242..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIMapCache.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIMapCache.cpp /////////////////////////////////////////////////////////////////////////// -// Author: Matthew D. Campbell, February 2002 -// Desc: Parsing MapCache INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Lib/BaseType.h" -#include "Common/INI.h" -#include "GameClient/MapUtil.h" -#include "GameClient/GameText.h" -#include "GameNetwork/NetworkDefs.h" -#include "Common/NameKeyGenerator.h" -#include "Common/WellKnownKeys.h" -#include "Common/QuotedPrintable.h" - - -class MapMetaDataReader -{ -public: - Region3D m_extent; - Int m_numPlayers; - Bool m_isMultiplayer; - AsciiString m_asciiDisplayName; - AsciiString m_asciiNameLookupTag; - - Bool m_isOfficial; - WinTimeStamp m_timestamp; - UnsignedInt m_filesize; - UnsignedInt m_CRC; - - Coord3D m_waypoints[MAX_SLOTS]; - Coord3D m_initialCameraPosition; - Coord3DList m_supplyPositions; - Coord3DList m_techPositions; - static const FieldParse m_mapFieldParseTable[]; ///< the parse table for INI definition - const FieldParse *getFieldParse() const { return m_mapFieldParseTable; } -}; - - -void parseSupplyPositionCoord3D( INI* ini, void * instance, void * /*store*/, const void* /*userData*/ ) -{ - MapMetaDataReader *mmdr = (MapMetaDataReader *)instance; - Coord3D coord3d; - INI::parseCoord3D(ini, nullptr, &coord3d,nullptr ); - mmdr->m_supplyPositions.push_front(coord3d); - -} - -void parseTechPositionsCoord3D( INI* ini, void * instance, void * /*store*/, const void* /*userData*/ ) -{ - MapMetaDataReader *mmdr = (MapMetaDataReader *)instance; - Coord3D coord3d; - INI::parseCoord3D(ini, nullptr, &coord3d,nullptr ); - mmdr->m_techPositions.push_front(coord3d); - -} - -const FieldParse MapMetaDataReader::m_mapFieldParseTable[] = -{ - - { "isOfficial", INI::parseBool, nullptr, offsetof( MapMetaDataReader, m_isOfficial ) }, - { "isMultiplayer", INI::parseBool, nullptr, offsetof( MapMetaDataReader, m_isMultiplayer ) }, - { "extentMin", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_extent.lo ) }, - { "extentMax", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_extent.hi ) }, - { "numPlayers", INI::parseInt, nullptr, offsetof( MapMetaDataReader, m_numPlayers ) }, - { "fileSize", INI::parseUnsignedInt, nullptr, offsetof( MapMetaDataReader, m_filesize ) }, - { "fileCRC", INI::parseUnsignedInt, nullptr, offsetof( MapMetaDataReader, m_CRC ) }, - { "timestampLo", INI::parseInt, nullptr, offsetof( MapMetaDataReader, m_timestamp.m_lowTimeStamp ) }, - { "timestampHi", INI::parseInt, nullptr, offsetof( MapMetaDataReader, m_timestamp.m_highTimeStamp ) }, - { "displayName", INI::parseAsciiString, nullptr, offsetof( MapMetaDataReader, m_asciiDisplayName ) }, - { "nameLookupTag", INI::parseAsciiString, nullptr, offsetof( MapMetaDataReader, m_asciiNameLookupTag ) }, - - { "supplyPosition", parseSupplyPositionCoord3D, nullptr, 0 }, - { "techPosition", parseTechPositionsCoord3D, nullptr, 0 }, - - { "Player_1_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) }, - { "Player_2_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 1 }, - { "Player_3_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 2 }, - { "Player_4_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 3 }, - { "Player_5_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 4 }, - { "Player_6_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 5 }, - { "Player_7_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 6 }, - { "Player_8_Start", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_waypoints ) + sizeof(Coord3D) * 7 }, - - { "InitialCameraPosition", INI::parseCoord3D, nullptr, offsetof( MapMetaDataReader, m_initialCameraPosition ) }, - - { nullptr, nullptr, nullptr, 0 } - -}; - -void INI::parseMapCacheDefinition( INI* ini ) -{ - const char *c; - AsciiString name; - MapMetaDataReader mdr; - MapMetaData md; - - // read the name - c = ini->getNextToken(" \n\r\t"); - name.set( c ); - name = QuotedPrintableToAsciiString(name); - md.m_waypoints.clear(); - - ini->initFromINI( &mdr, mdr.getFieldParse() ); - - md.m_extent = mdr.m_extent; - md.m_isOfficial = mdr.m_isOfficial != 0; - md.m_doesExist = TRUE; - md.m_isMultiplayer = mdr.m_isMultiplayer != 0; - md.m_numPlayers = mdr.m_numPlayers; - md.m_filesize = mdr.m_filesize; - md.m_CRC = mdr.m_CRC; - md.m_timestamp = mdr.m_timestamp; - - md.m_waypoints[TheNameKeyGenerator->keyToName(TheKey_InitialCameraPosition)] = mdr.m_initialCameraPosition; - -#if RTS_GENERALS - md.m_displayName = QuotedPrintableToUnicodeString(mdr.m_asciiDisplayName); -#else - md.m_nameLookupTag = QuotedPrintableToAsciiString(mdr.m_asciiNameLookupTag); - - if (md.m_nameLookupTag.isEmpty()) - { - // maps without localized name tags - AsciiString tempdisplayname; - tempdisplayname = name.reverseFind('\\') + 1; - md.m_displayName.translate(tempdisplayname); - if (md.m_numPlayers >= 2) - { - UnicodeString extension; - extension.format(L" (%d)", md.m_numPlayers); - md.m_displayName.concat(extension); - } - } - else - { - // official maps with name tags - md.m_displayName = TheGameText->fetch(md.m_nameLookupTag); - if (md.m_numPlayers >= 2) - { - UnicodeString extension; - extension.format(L" (%d)", md.m_numPlayers); - md.m_displayName.concat(extension); - } - } -#endif - - AsciiString startingCamName; - for (Int i=0; i. -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIMapData.cpp /////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, November 2001 -// Desc: Parsing MapData INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PRIVATE DATA /////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse MapData entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseMapDataDefinition( INI* ini ) -{ -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIMappedImage.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIMappedImage.cpp deleted file mode 100644 index 21d5bbda299..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIMappedImage.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIMappedImage.cpp /////////////////////////////////////////////////////////////////////// -// Author: Colin Day, December 2001 -// Desc: Mapped image INI parsing -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/Image.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse mapped image entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseMappedImageDefinition( INI* ini ) -{ - // read the name - const char* name = ini->getNextToken(); - - // - // find existing item if present, note that we do not support overrides - // in the images like we do in systems that are more "design" oriented, images - // are assets as they are - // - if( !TheMappedImageCollection ) - { - //We don't need it if we're in the builder... which doesn't have this. - return; - } - Image *image = const_cast(TheMappedImageCollection->findImageByName( name )); - if(image) - DEBUG_ASSERTCRASH(!image->getRawTextureData(), ("We are trying to parse over an existing image that contains a non-null rawTextureData, you should fix that")); - - if( image == nullptr ) - { - - // image not found, create a new one - image = newInstance(Image); - image->setName( name ); - TheMappedImageCollection->addImage(image); - DEBUG_ASSERTCRASH( image, ("parseMappedImage: unable to allocate image for '%s'", name) ); - - } - - // parse the ini definition - ini->initFromINI( image, image->getFieldParse()); - -} diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIModel.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIModel.cpp deleted file mode 100644 index 3e7fc739f55..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIModel.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIModel.cpp ///////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, November 2001 -// Desc: Parsing Model INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PRIVATE DATA /////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIMultiplayer.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIMultiplayer.cpp deleted file mode 100644 index c5082372270..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIMultiplayer.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIMultiplayer.cpp /////////////////////////////////////////////////////////////////////////// -// Author: Matthew D. Campbell, January 2002 -// Desc: Parsing MultiplayerSettings and MultiplayerColor INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/MultiplayerSettings.h" - -void INI::parseMultiplayerSettingsDefinition( INI* ini ) -{ - if( TheMultiplayerSettings ) - { - // - // if the type of loading we're doing creates override data, we need to - // be loading into a new override item - // - if( ini->getLoadType() == INI_LOAD_CREATE_OVERRIDES ) - { - DEBUG_CRASH(("Creating an override of MultiplayerSettings!")); - } - } - else - { - // we don't have any multiplayer settings instance at all yet, create one - TheMultiplayerSettings = NEW MultiplayerSettings; - } - - // parse the ini definition - ini->initFromINI( TheMultiplayerSettings, TheMultiplayerSettings->getFieldParse() ); -} - -void INI::parseMultiplayerColorDefinition( INI* ini ) -{ - const char *c; - AsciiString name; - MultiplayerColorDefinition *multiplayerColorDefinition; - - // read the name - c = ini->getNextToken(); - name.set( c ); - - // find existing item if present, but this type does not allow overrides, - //so if it exists just overwrite it. - multiplayerColorDefinition = TheMultiplayerSettings->findMultiplayerColorDefinitionByName( name ); - if( multiplayerColorDefinition == nullptr ) - multiplayerColorDefinition = TheMultiplayerSettings->newMultiplayerColorDefinition( name ); - - ini->initFromINI( multiplayerColorDefinition, multiplayerColorDefinition->getFieldParse() ); - - multiplayerColorDefinition->setColor(multiplayerColorDefinition->getRGBValue()); - multiplayerColorDefinition->setNightColor(multiplayerColorDefinition->getRGBNightValue()); -} - -void INI::parseMultiplayerStartingMoneyChoiceDefinition( INI* ini ) -{ -} diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIObject.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIObject.cpp deleted file mode 100644 index b847407e695..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIObject.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIObject.cpp //////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, November 2001 -// Desc: Parsing Object INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/ThingTemplate.h" -#include "Common/ThingFactory.h" -#include "GameLogic/Module/OpenContain.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse Object entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseObjectDefinition( INI* ini ) -{ - AsciiString name = ini->getNextToken(); - ThingFactory::parseObjectDefinition(ini, name, AsciiString::TheEmptyString); -} - -//------------------------------------------------------------------------------------------------- -/** Parse Object entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseObjectReskinDefinition( INI* ini ) -{ - AsciiString name = ini->getNextToken(); - AsciiString reskinFrom = ini->getNextToken(); - ThingFactory::parseObjectDefinition(ini, name, reskinFrom); -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIParticleSys.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIParticleSys.cpp deleted file mode 100644 index 8e75daee046..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIParticleSys.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIParticleSys.cpp /////////////////////////////////////////////////////////////////////////// -// Author: Michael S. Booth, November 2001 -// Desc: Parsing Particle System INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/ParticleSys.h" - - -/** - * Parse entry - */ -void INI::parseParticleSystemDefinition( INI* ini ) -{ - AsciiString name; - - // read the name - const char* c = ini->getNextToken(); - name.set( c ); - - // find existing item if present - ParticleSystemTemplate *sysTemplate = const_cast(TheParticleSystemManager->findTemplate( name )); - if (sysTemplate == nullptr) - { - // no item is present, create a new one - sysTemplate = TheParticleSystemManager->newTemplate( name ); - } - - // parse the ini definition - ini->initFromINI( sysTemplate, sysTemplate->getFieldParse() ); -} diff --git a/Generals/Code/GameEngine/Source/Common/INI/INISpecialPower.cpp b/Generals/Code/GameEngine/Source/Common/INI/INISpecialPower.cpp deleted file mode 100644 index f4f36ce6397..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INISpecialPower.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INISpecialPower.cpp ////////////////////////////////////////////////////////////////////// -// Author: Colin Day, April 2002 -// Desc: Special Power INI database -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// USER INCLUDES ////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/SpecialPower.h" - -//------------------------------------------------------------------------------------------------- -//------------------------------------------------------------------------------------------------- -void INI::parseSpecialPowerDefinition( INI *ini ) -{ - SpecialPowerStore::parseSpecialPowerDefinition(ini); -} - - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INITerrain.cpp b/Generals/Code/GameEngine/Source/Common/INI/INITerrain.cpp deleted file mode 100644 index 1e4b0c1c945..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INITerrain.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INITerrain.cpp /////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, December 2001 -// Desc: Terrain type INI loading -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/TerrainTypes.h" - -//------------------------------------------------------------------------------------------------- -/** Parse Terrain type entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseTerrainDefinition( INI* ini ) -{ - AsciiString name; - TerrainType *terrainType; - - // read the name - const char* c = ini->getNextToken(); - name.set( c ); - - // find existing item if present - terrainType = TheTerrainTypes->findTerrain( name ); - if( terrainType == nullptr ) - terrainType = TheTerrainTypes->newTerrain( name ); - - // sanity - DEBUG_ASSERTCRASH( terrainType, ("Unable to allocate terrain type '%s'", name.str()) ); - - // parse the ini definition - ini->initFromINI( terrainType, terrainType->getFieldParse() ); - -} - - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INITerrainBridge.cpp b/Generals/Code/GameEngine/Source/Common/INI/INITerrainBridge.cpp deleted file mode 100644 index 65c614e5c55..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INITerrainBridge.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INITerrainBridge.cpp ///////////////////////////////////////////////////////////////////// -// Author: Colin Day, December 2001 -// Desc: Terrain bridge INI loading -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/TerrainRoads.h" - -//------------------------------------------------------------------------------------------------- -/** Parse Terrain Bridge entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseTerrainBridgeDefinition( INI* ini ) -{ - AsciiString name; - TerrainRoadType *bridge; - - // read the name - const char* c = ini->getNextToken(); - name.set( c ); - - // find existing item if present or allocate new one - bridge = TheTerrainRoads->findBridge( name ); - - // if item is found it better already be a bridge - if( bridge ) - { - - // sanity - DEBUG_ASSERTCRASH( bridge->isBridge(), ("Redefining road '%s' as a bridge!", - bridge->getName().str()) ); - throw INI_INVALID_DATA; - - } - - if( bridge == nullptr ) - bridge = TheTerrainRoads->newBridge( name ); - - DEBUG_ASSERTCRASH( bridge, ("Unable to allocate bridge '%s'", name.str()) ); - - // parse the ini definition - ini->initFromINI( bridge, bridge->getBridgeFieldParse() ); - -} - - - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INITerrainRoad.cpp b/Generals/Code/GameEngine/Source/Common/INI/INITerrainRoad.cpp deleted file mode 100644 index 94cbd4779fc..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INITerrainRoad.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INITerrainRoad.cpp /////////////////////////////////////////////////////////////////////// -// Author: Colin Day, December 2001 -// Desc: Terrain road INI loading -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameClient/TerrainRoads.h" - -//------------------------------------------------------------------------------------------------- -/** Parse Terrain Road entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseTerrainRoadDefinition( INI* ini ) -{ - AsciiString name; - TerrainRoadType *road; - - // read the name - const char* c = ini->getNextToken(); - name.set( c ); - - // find existing item if present or allocate new one - road = TheTerrainRoads->findRoad( name ); - - // if item is found it better not already be a bridge - if( road ) - { - - // sanity - DEBUG_ASSERTCRASH( road->isBridge() == FALSE, ("Redefining bridge '%s' as a road!", - road->getName().str()) ); - throw INI_INVALID_DATA; - - } - - if( road == nullptr ) - road = TheTerrainRoads->newRoad( name ); - - DEBUG_ASSERTCRASH( road, ("Unable to allocate road '%s'", name.str()) ); - - // parse the ini definition - ini->initFromINI( road, road->getRoadFieldParse() ); - -} - - - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIUpgrade.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIUpgrade.cpp deleted file mode 100644 index be2956f743d..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIUpgrade.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIUpgrade.cpp /////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, March 2002 -// Desc: Upgrade database -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// USER INCLUDES ////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/Upgrade.h" - -//------------------------------------------------------------------------------------------------- -/** Parse an upgrade definition */ -//------------------------------------------------------------------------------------------------- -void INI::parseUpgradeDefinition( INI *ini ) -{ - UpgradeCenter::parseUpgradeDefinition(ini); -} - - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIWater.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIWater.cpp deleted file mode 100644 index d6bdec167f1..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIWater.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIWater.cpp ///////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, December 2001 -// Desc: Water settings -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#define DEFINE_TIME_OF_DAY_NAMES - -#include "Common/INI.h" -#include "Common/GameType.h" - -#include "GameClient/TerrainVisual.h" -#include "GameClient/Water.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Water setting, note that this does not support override situations. As the water - * system becomes more complex we may want to change this */ -//------------------------------------------------------------------------------------------------- -void INI::parseWaterSettingDefinition( INI* ini ) -{ - AsciiString name; - WaterSetting *waterSetting = nullptr; - - // read the name - const char* token = ini->getNextToken(); - - name.set( token ); - - // get the water setting we want to load based on name - const char *const *timeOfDayName = TimeOfDayNames; - Int timeOfDayIndex = 0; // TIME_OF_DAY_INVALID - while( timeOfDayName && *timeOfDayName ) - { - - if( stricmp( *timeOfDayName, name.str() ) == 0 ) - { - - waterSetting = &WaterSettings[ timeOfDayIndex ]; - break; - - } - - // next name - timeOfDayName++; - timeOfDayIndex++; - - } - - // check for no time of day match - if( waterSetting == nullptr ) - throw INI_INVALID_DATA; - - // parse the data - ini->initFromINI( waterSetting, waterSetting->getFieldParse() ); - -} - -//------------------------------------------------------------------------------------------------- -void INI::parseWaterTransparencyDefinition( INI *ini ) -{ - if (TheWaterTransparency == nullptr) { - TheWaterTransparency = newInstance(WaterTransparencySetting); - } else if (ini->getLoadType() == INI_LOAD_CREATE_OVERRIDES) { - WaterTransparencySetting* wt = (WaterTransparencySetting*) (TheWaterTransparency.getNonOverloadedPointer()); - WaterTransparencySetting* wtOverride = newInstance(WaterTransparencySetting); - *wtOverride = *wt; - - // Mark that it is an override. - wtOverride->markAsOverride(); - - wt->friend_getFinalOverride()->setNextOverride(wtOverride); - } else { - throw INI_INVALID_DATA; - } - - WaterTransparencySetting* waterTrans = (WaterTransparencySetting*) (TheWaterTransparency.getNonOverloadedPointer()); - waterTrans = (WaterTransparencySetting*) (waterTrans->friend_getFinalOverride()); - // parse the data - ini->initFromINI( waterTrans, TheWaterTransparency->getFieldParse() ); - - // If we overrode any skybox textures, then call the W3D Water stuff. - if (ini->getLoadType() == INI_LOAD_CREATE_OVERRIDES) { - // Check to see if we overrode any skybox textures. - // If we did, then we need to replace them in the model. - // Copy/Paste monkeys PLEASE TAKE NOTE. This technique only works for the skybox because we - // know that there will never be more than one sky box. If you were to use this technique for - // technicals, for instance, it would make all technicals in the level have the same new - // texture. - - const WaterTransparencySetting* wtOriginal = TheWaterTransparency.getNonOverloadedPointer(); - OVERRIDE wtOverride = TheWaterTransparency; - - if (wtOriginal == wtOverride) - return; - - const AsciiString *oldTextures[5],*newTextures[5]; - - //Copy current texture names into arrays - oldTextures[0]=&wtOriginal->m_skyboxTextureN; - newTextures[0]=&wtOverride->m_skyboxTextureN; - oldTextures[1]=&wtOriginal->m_skyboxTextureE; - newTextures[1]=&wtOverride->m_skyboxTextureE; - oldTextures[2]=&wtOriginal->m_skyboxTextureS; - newTextures[2]=&wtOverride->m_skyboxTextureS; - oldTextures[3]=&wtOriginal->m_skyboxTextureW; - newTextures[3]=&wtOverride->m_skyboxTextureW; - oldTextures[4]=&wtOriginal->m_skyboxTextureT; - newTextures[4]=&wtOverride->m_skyboxTextureT; - - TheTerrainVisual->replaceSkyboxTextures(oldTextures, newTextures); - } -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIWeapon.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIWeapon.cpp deleted file mode 100644 index 52006534e41..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIWeapon.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIWeapon.cpp //////////////////////////////////////////////////////////////////////////// -// Author: Colin Day, November 2001 -// Desc: Parsing Weapon INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "GameLogic/Weapon.h" - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -//------------------------------------------------------------------------------------------------- -/** Parse Weapon entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseWeaponTemplateDefinition( INI* ini ) -{ - WeaponStore::parseWeaponTemplateDefinition(ini); -} - - diff --git a/Generals/Code/GameEngine/Source/Common/INI/INIWebpageURL.cpp b/Generals/Code/GameEngine/Source/Common/INI/INIWebpageURL.cpp deleted file mode 100644 index 59388d9f854..00000000000 --- a/Generals/Code/GameEngine/Source/Common/INI/INIWebpageURL.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* -** Command & Conquer Generals(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 . -*/ - -//////////////////////////////////////////////////////////////////////////////// -// // -// (c) 2001-2003 Electronic Arts Inc. // -// // -//////////////////////////////////////////////////////////////////////////////// - -// FILE: INIWebpageURL.cpp ///////////////////////////////////////////////////////////////////////////// -// Author: Bryan Cleveland, November 2001 -// Desc: Parsing Webpage URL INI entries -/////////////////////////////////////////////////////////////////////////////////////////////////// - -// INCLUDES /////////////////////////////////////////////////////////////////////////////////////// -#include "PreRTS.h" // This must go first in EVERY cpp file in the GameEngine - -#include "Common/INI.h" -#include "Common/Registry.h" -#include "GameNetwork/WOLBrowser/WebBrowser.h" - - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PRIVATE DATA /////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////////////////////////// -// PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////// - -AsciiString encodeURL(AsciiString source) -{ - if (source.isEmpty()) - { - return AsciiString::TheEmptyString; - } - - AsciiString target; - AsciiString allowedChars = "$-_.+!*'(),\\"; - const char *ptr = source.str(); - while (*ptr) - { - if (isalnum(*ptr) || allowedChars.find(*ptr)) - { - target.concat(*ptr); - } - else - { - AsciiString tmp; - target.concat('%'); - tmp.format("%2.2x", ((int)*ptr)); - target.concat(tmp); - } - ++ptr; - } - - return target; -} - -//------------------------------------------------------------------------------------------------- -/** Parse Music entry */ -//------------------------------------------------------------------------------------------------- -void INI::parseWebpageURLDefinition( INI* ini ) -{ - AsciiString tag; - WebBrowserURL *url; - - // read the name - const char* c = ini->getNextToken(); - tag.set( c ); - - if (TheWebBrowser != nullptr) - { - url = TheWebBrowser->findURL(tag); - - if (url == nullptr) - { - url = TheWebBrowser->makeNewURL(tag); - } - } - - // find existing item if present -// track = TheAudio->Music->getTrack( name ); -// if( track == nullptr ) -// { - - // allocate a new track -// track = TheAudio->Music->newMusicTrack( name ); - -// } // end if - -// DEBUG_ASSERTCRASH( track, ("parseMusicTrackDefinition: Unable to allocate track '%s'", -// name.str()) ); - - // parse the ini definition - ini->initFromINI( url, url->getFieldParse() ); - - if (url->m_url.startsWith("file://")) - { - char cwd[_MAX_PATH] = "\\"; - getcwd(cwd, _MAX_PATH); - - url->m_url.format("file://%s\\Data\\%s\\%s", encodeURL(cwd).str(), GetRegistryLanguage().str(), url->m_url.str()+7); - DEBUG_LOG(("INI::parseWebpageURLDefinition() - converted URL to [%s]", url->m_url.str())); - } -} - - diff --git a/Generals/Code/GameEngine/Source/Common/MultiplayerSettings.cpp b/Generals/Code/GameEngine/Source/Common/MultiplayerSettings.cpp index 41586135a21..34fda71f360 100644 --- a/Generals/Code/GameEngine/Source/Common/MultiplayerSettings.cpp +++ b/Generals/Code/GameEngine/Source/Common/MultiplayerSettings.cpp @@ -84,6 +84,8 @@ MultiplayerSettings::MultiplayerSettings() m_showRandomColor = TRUE; m_observerColor; m_randomColor; + + m_gotDefaultStartingMoney = false; } MultiplayerColorDefinition::MultiplayerColorDefinition() @@ -139,6 +141,17 @@ MultiplayerColorDefinition * MultiplayerSettings::newMultiplayerColorDefinition( return &m_colorList[numColors]; } +void MultiplayerSettings::addStartingMoneyChoice( const Money & money, Bool isDefault ) +{ + m_startingMoneyList.push_back( money ); + if ( isDefault ) + { + DEBUG_ASSERTCRASH( !m_gotDefaultStartingMoney, ("Cannot have more than one default MultiplayerStartingMoneyChoice") ); + m_defaultStartingMoney = money; + m_gotDefaultStartingMoney = true; + } +} + MultiplayerColorDefinition * MultiplayerColorDefinition::operator =(const MultiplayerColorDefinition& other) { m_tooltipName = other.getTooltipName(); diff --git a/GeneralsMD/Code/GameEngine/CMakeLists.txt b/GeneralsMD/Code/GameEngine/CMakeLists.txt index e594d69ac80..aba5f3210ca 100644 --- a/GeneralsMD/Code/GameEngine/CMakeLists.txt +++ b/GeneralsMD/Code/GameEngine/CMakeLists.txt @@ -571,33 +571,33 @@ set(GAMEENGINE_SRC Source/Common/GameMain.cpp Source/Common/GlobalData.cpp # Source/Common/INI/INI.cpp - Source/Common/INI/INIAiData.cpp - Source/Common/INI/INIAnimation.cpp +# Source/Common/INI/INIAiData.cpp +# Source/Common/INI/INIAnimation.cpp # Source/Common/INI/INIAudioEventInfo.cpp - Source/Common/INI/INICommandButton.cpp - Source/Common/INI/INICommandSet.cpp - Source/Common/INI/INIControlBarScheme.cpp - Source/Common/INI/INICrate.cpp - Source/Common/INI/INIDamageFX.cpp - Source/Common/INI/INIDrawGroupInfo.cpp - Source/Common/INI/INIGameData.cpp - Source/Common/INI/INIMapCache.cpp - Source/Common/INI/INIMapData.cpp - Source/Common/INI/INIMappedImage.cpp +# Source/Common/INI/INICommandButton.cpp +# Source/Common/INI/INICommandSet.cpp +# Source/Common/INI/INIControlBarScheme.cpp +# Source/Common/INI/INICrate.cpp +# Source/Common/INI/INIDamageFX.cpp +# Source/Common/INI/INIDrawGroupInfo.cpp +# Source/Common/INI/INIGameData.cpp +# Source/Common/INI/INIMapCache.cpp +# Source/Common/INI/INIMapData.cpp +# Source/Common/INI/INIMappedImage.cpp # Source/Common/INI/INIMiscAudio.cpp - Source/Common/INI/INIModel.cpp - Source/Common/INI/INIMultiplayer.cpp - Source/Common/INI/INIObject.cpp - Source/Common/INI/INIParticleSys.cpp - Source/Common/INI/INISpecialPower.cpp - Source/Common/INI/INITerrain.cpp - Source/Common/INI/INITerrainBridge.cpp - Source/Common/INI/INITerrainRoad.cpp - Source/Common/INI/INIUpgrade.cpp +# Source/Common/INI/INIModel.cpp +# Source/Common/INI/INIMultiplayer.cpp +# Source/Common/INI/INIObject.cpp +# Source/Common/INI/INIParticleSys.cpp +# Source/Common/INI/INISpecialPower.cpp +# Source/Common/INI/INITerrain.cpp +# Source/Common/INI/INITerrainBridge.cpp +# Source/Common/INI/INITerrainRoad.cpp +# Source/Common/INI/INIUpgrade.cpp # Source/Common/INI/INIVideo.cpp - Source/Common/INI/INIWater.cpp - Source/Common/INI/INIWeapon.cpp - Source/Common/INI/INIWebpageURL.cpp +# Source/Common/INI/INIWater.cpp +# Source/Common/INI/INIWeapon.cpp +# Source/Common/INI/INIWebpageURL.cpp Source/Common/Language.cpp Source/Common/MessageStream.cpp Source/Common/MiniLog.cpp diff --git a/scripts/cpp/unify_move_files.py b/scripts/cpp/unify_move_files.py index f76cde1c410..58ef0f26375 100644 --- a/scripts/cpp/unify_move_files.py +++ b/scripts/cpp/unify_move_files.py @@ -409,6 +409,30 @@ def main(): #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameClient/SelectionInfo.cpp", Game.CORE, "GameEngine/Source/GameClient/SelectionInfo.cpp") #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameClient/Statistics.cpp", Game.CORE, "GameEngine/Source/GameClient/Statistics.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIAiData.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIAiData.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIAnimation.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIAnimation.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INICommandButton.cpp", Game.CORE, "GameEngine/Source/Common/INI/INICommandButton.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INICommandSet.cpp", Game.CORE, "GameEngine/Source/Common/INI/INICommandSet.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIControlBarScheme.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIControlBarScheme.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INICrate.cpp", Game.CORE, "GameEngine/Source/Common/INI/INICrate.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIDamageFX.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIDamageFX.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIDrawGroupInfo.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIGameData.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIGameData.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIMapCache.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIMapCache.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIMapData.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIMapData.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIMappedImage.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIMappedImage.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIModel.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIModel.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIMultiplayer.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIMultiplayer.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIObject.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIObject.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIParticleSys.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIParticleSys.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INISpecialPower.cpp", Game.CORE, "GameEngine/Source/Common/INI/INISpecialPower.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INITerrain.cpp", Game.CORE, "GameEngine/Source/Common/INI/INITerrain.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INITerrainBridge.cpp", Game.CORE, "GameEngine/Source/Common/INI/INITerrainBridge.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INITerrainRoad.cpp", Game.CORE, "GameEngine/Source/Common/INI/INITerrainRoad.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIUpgrade.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIUpgrade.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIWater.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIWater.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIWeapon.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIWeapon.cpp") + #unify_file(Game.ZEROHOUR, "GameEngine/Source/Common/INI/INIWebpageURL.cpp", Game.CORE, "GameEngine/Source/Common/INI/INIWebpageURL.cpp") #unify_file(Game.ZEROHOUR, "GameEngine/Source/GameLogic/AI/AIPathfind.cpp", Game.CORE, "GameEngine/Source/GameLogic/AI/AIPathfind.cpp") #unify_file(Game.ZEROHOUR, "GameEngine/Include/GameLogic/AIPathfind.h", Game.CORE, "GameEngine/Include/GameLogic/AIPathfind.h")