mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-15 15:11:39 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
159
Code/Combat/gameobjmanager.h
Normal file
159
Code/Combat/gameobjmanager.h
Normal file
@@ -0,0 +1,159 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** This program is free software: you can redistribute it and/or modify
|
||||
** it under the terms of the GNU General Public License as published by
|
||||
** the Free Software Foundation, either version 3 of the License, or
|
||||
** (at your option) any later version.
|
||||
**
|
||||
** This program is distributed in the hope that it will be useful,
|
||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
** GNU General Public License for more details.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/***********************************************************************************************
|
||||
*** Confidential - Westwood Studios ***
|
||||
***********************************************************************************************
|
||||
* *
|
||||
* Project Name : Commando *
|
||||
* *
|
||||
* $Archive:: /Commando/Code/Combat/gameobjmanager.h $*
|
||||
* *
|
||||
* $Author:: Ian_l $*
|
||||
* *
|
||||
* $Modtime:: 12/09/01 2:02p $*
|
||||
* *
|
||||
* $Revision:: 38 $*
|
||||
* *
|
||||
*---------------------------------------------------------------------------------------------*
|
||||
* Functions: *
|
||||
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
|
||||
|
||||
#ifndef GAMEOBJMANAGER_H
|
||||
#define GAMEOBJMANAGER_H
|
||||
|
||||
#ifndef ALWAYS_H
|
||||
#include "always.h"
|
||||
#endif
|
||||
|
||||
#ifndef SLIST_H
|
||||
#include "slist.h"
|
||||
#endif
|
||||
|
||||
#include "networkobjectmgr.h"
|
||||
|
||||
/*
|
||||
**
|
||||
*/
|
||||
class BaseGameObj;
|
||||
class SmartGameObj;
|
||||
class SoldierGameObj;
|
||||
class ScriptableGameObj;
|
||||
class VehicleGameObj;
|
||||
class BuildingGameObj;
|
||||
class PhysicalGameObj;
|
||||
class ChunkSaveClass;
|
||||
class ChunkLoadClass;
|
||||
class StaticPhysClass;
|
||||
class BuildingAggregateClass;
|
||||
class LightPhysClass;
|
||||
class Vector3;
|
||||
|
||||
/*
|
||||
** Static IDs
|
||||
*/
|
||||
enum
|
||||
{
|
||||
NETID_GDI_BASE_CONTROLLER = NETID_STATIC_OBJECT_MIN + 1,
|
||||
NETID_NOD_BASE_CONTROLLER,
|
||||
NETID_NOD_TEAM,
|
||||
NETID_GDI_TEAM,
|
||||
NETID_SERVER_FPS,
|
||||
NETID_SERVER_WEATHER,
|
||||
NETID_SERVER_BACKGROUND
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
** GameObjManager
|
||||
**
|
||||
** A collection of routines to maintain lists of game objects
|
||||
**
|
||||
** In the editor, building objects will be created and added to this manager. In the game, they will
|
||||
** be loaded. After a level has been loaded, the 'Init_Level_Buildings' function should be called.
|
||||
** This manager will be the entry point for any operations that need to happen on all existing buildings
|
||||
** such as save/load, per-frame processing, etc.
|
||||
*/
|
||||
|
||||
class GameObjManager {
|
||||
|
||||
public:
|
||||
static void Init(void);
|
||||
static void Shutdown(void);
|
||||
|
||||
static bool Save( ChunkSaveClass &csave );
|
||||
static bool Load( ChunkLoadClass &cload );
|
||||
|
||||
static int Generate_Control();
|
||||
static int Think();
|
||||
static int Post_Think();
|
||||
|
||||
static void Init_All(void);
|
||||
static void Destroy_All( void );
|
||||
//static void Destroy_Pending( void );
|
||||
|
||||
// BaseGameObjs
|
||||
static void Add( BaseGameObj *obj );
|
||||
static void Remove( BaseGameObj *obj ) { GameObjList.Remove( obj ); }
|
||||
static SList<BaseGameObj> *Get_Game_Obj_List( void ) { return &GameObjList; }
|
||||
|
||||
// SmartGameObjs
|
||||
static void Add_Smart( SmartGameObj *obj ) { SmartGameObjList.Add_Tail( obj ); }
|
||||
static void Remove_Smart( SmartGameObj *obj ) { SmartGameObjList.Remove( obj ); }
|
||||
static SList<SmartGameObj> *Get_Smart_Game_Obj_List( void ) { return &SmartGameObjList; }
|
||||
|
||||
// Star GameObjs
|
||||
static void Add_Star( SoldierGameObj *obj ) { StarGameObjList.Add_Tail( obj ); }
|
||||
static void Remove_Star( SoldierGameObj *obj ) { StarGameObjList.Remove( obj ); }
|
||||
static SList<SoldierGameObj> *Get_Star_Game_Obj_List( void ) { return &StarGameObjList; }
|
||||
|
||||
// BuildingGameObjs
|
||||
static void Init_Buildings(void);
|
||||
static void Update_Building_Collection_Spheres (void);
|
||||
static void Debug_Set_All_Building_States(float health_percentage,bool power_on);
|
||||
static void Add_Building( BuildingGameObj *obj ) { BuildingGameObjList.Add_Tail( obj ); }
|
||||
static void Remove_Building( BuildingGameObj *obj ) { BuildingGameObjList.Remove( obj ); }
|
||||
static SList<BuildingGameObj> *Get_Building_Game_Obj_List( void ) { return &BuildingGameObjList; }
|
||||
|
||||
// Environment Zone
|
||||
static bool Is_In_Environment_Zone( Vector3 & pos );
|
||||
|
||||
// Find Game Objs
|
||||
static SoldierGameObj *Find_Soldier_Of_Client_ID(int client_id);
|
||||
static SoldierGameObj *Find_Different_Player_Soldier(int my_id);
|
||||
static SoldierGameObj *Find_Soldier_Of_Player_Type(int player_type);
|
||||
static PhysicalGameObj *Find_PhysicalGameObj( int id );
|
||||
static SmartGameObj *Find_SmartGameObj( int id );
|
||||
static ScriptableGameObj *Find_ScriptableGameObj( int id );
|
||||
static VehicleGameObj *Find_Vehicle_Occupied_By( SoldierGameObj * p_soldier );
|
||||
|
||||
// Cinematic Freeze
|
||||
static bool Is_Cinematic_Freeze_Active( void ) { return CinematicFreezeActive; }
|
||||
static void Activate_Cinematic_Freeze( bool activate ) { CinematicFreezeActive = activate; }
|
||||
static void Toggle_Cinematic_Freeze( void ) { CinematicFreezeActive = !CinematicFreezeActive; }
|
||||
|
||||
private:
|
||||
static SList<BaseGameObj> GameObjList; // list of all game objs
|
||||
static SList<SmartGameObj> SmartGameObjList; // list of all smart game objs
|
||||
static SList<SoldierGameObj> StarGameObjList; // list of all star game objs
|
||||
static SList<BuildingGameObj> BuildingGameObjList; // list of all builiding game objs
|
||||
|
||||
static bool CinematicFreezeActive;
|
||||
};
|
||||
|
||||
#endif // GAMEOBJMANAGER_H
|
||||
Reference in New Issue
Block a user