/* ** 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 . */ /*********************************************************************************************** *** Confidential - Westwood Studios *** *********************************************************************************************** * * * Project Name : Commando * * * * $Archive:: /Commando/Code/wwnet/networkobjectmgr.h $* * * * $Author:: Tom_s $* * * * $Modtime:: 11/24/01 10:47a $* * * * $Revision:: 14 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #if defined(_MSC_VER) #pragma once #endif #ifndef __NETWORKOBJECTMGR_H #define __NETWORKOBJECTMGR_H #include "vector.h" //////////////////////////////////////////////////////////////// // Forward declarations //////////////////////////////////////////////////////////////// class NetworkObjectClass; //////////////////////////////////////////////////////////////// // ID Ranges //////////////////////////////////////////////////////////////// enum { NETID_DYNAMIC_OBJECT_MIN = 1500000000, // 600M dynamic NETID_DYNAMIC_OBJECT_MAX = 2100000000, NETID_STATIC_OBJECT_MIN = 2100000001, // 10M static NETID_STATIC_OBJECT_MAX = 2110000000, NETID_CLIENT_OBJECT_MIN = 2110000001, // 100K per client, 128 clients //NETID_CLIENT_OBJECT_MAX = 2113100000, NETID_CLIENT_OBJECT_MAX = 2122800001, // // Note: INT_MAX = 2147483647 // }; //////////////////////////////////////////////////////////////// // // NetworkObjectMgrClass // // Container for network objects. Used for sending and receiving // object state updates. // //////////////////////////////////////////////////////////////// class NetworkObjectMgrClass { public: //////////////////////////////////////////////////////////////// // Public methods //////////////////////////////////////////////////////////////// // // Object registration // static void Register_Object (NetworkObjectClass *object); static void Unregister_Object (NetworkObjectClass *object); // // Delete registration support // static void Register_Object_For_Deletion (NetworkObjectClass *object); static void Set_Is_Level_Loading (bool onoff) { _IsLevelLoading = onoff; } // // Timestep // static void Think (void); // // Deletion support // static void Set_All_Delete_Pending (void);//TSS092301 static void Delete_Pending (void); static void Delete_Client_Objects (int client_id); static void Restore_Dirty_Bits (int client_id); // // Object enumeration // static int Get_Object_Count (void) { return _ObjectList.Count (); } static NetworkObjectClass * Get_Object (int index) { return _ObjectList[index]; } static int Get_Pending_Object_Count (void) { return _DeletePendingList.Count (); } // // Object lookup // static NetworkObjectClass * Find_Object (int object_id); // // ID access // static int Get_New_Dynamic_ID (void); static int Get_Current_Dynamic_ID (void); static void Set_New_Dynamic_ID (int id); static void Init_New_Client_ID (int client_id); static int Get_New_Client_ID (void); static void Reset_Import_State_Counts(void); private: //////////////////////////////////////////////////////////////// // Private methods //////////////////////////////////////////////////////////////// static bool Find_Object (int id_to_find, int *index); //////////////////////////////////////////////////////////////// // Private tyepdefs //////////////////////////////////////////////////////////////// typedef DynamicVectorClass OBJECT_LIST; //////////////////////////////////////////////////////////////// // Private member data //////////////////////////////////////////////////////////////// static OBJECT_LIST _ObjectList; static OBJECT_LIST _DeletePendingList; static int _NewDynamicID; static int _NewClientID; static bool _IsLevelLoading; }; #endif // __NETWORKOBJECTMGR_H