/* ** 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/Combat/staticnetworkobject.h $* * * * $Author:: Tom_s $* * * * $Modtime:: 10/16/01 3:56p $* * * * $Revision:: 11 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #if defined(_MSC_VER) #pragma once #endif #ifndef __STATICNETWORKOBJECT_H #define __STATICNETWORKOBJECT_H #include "networkobject.h" #include "vector.h" //////////////////////////////////////////////////////////////// // Forward delcarations //////////////////////////////////////////////////////////////// class StaticAnimPhysClass; class DoorNetworkObjectClass; class ElevatorNetworkObjectClass; class DSAPONetworkObjectClass; //////////////////////////////////////////////////////////////// // // StaticNetworkObjectClass // //////////////////////////////////////////////////////////////// class StaticNetworkObjectClass : public NetworkObjectClass { public: //////////////////////////////////////////////////////////////// // Public constructors/destructors //////////////////////////////////////////////////////////////// StaticNetworkObjectClass (void); ~StaticNetworkObjectClass (void); //////////////////////////////////////////////////////////////// // Public methods //////////////////////////////////////////////////////////////// // // Initialization // virtual void Initialize (StaticAnimPhysClass *phys_obj); virtual void Delete (void) {} // // Timestep support // virtual void Network_Think (void); // // Server-to-client state importing/exporting // virtual void Import_Rare (BitStreamClass &packet); virtual void Export_Rare (BitStreamClass &packet); // // Filtering support // virtual bool Get_World_Position (Vector3 &pos) const; virtual int Get_Vis_ID (void); //virtual float Compute_Object_Priority (int client_id, const Vector3 &client_pos); // // Static methods // static void Generate_Static_Network_Objects (void); static void Free_Static_Network_Objects (void); // // Type identification // virtual DoorNetworkObjectClass * As_Door_Network_Object_Class( void ) { return NULL; } virtual ElevatorNetworkObjectClass * As_Elevator_Network_Object_Class( void ) { return NULL; } virtual DSAPONetworkObjectClass * As_DSAPO_Network_Object_Class( void ) { return NULL; } // // Diagnostics // //virtual bool Is_Tagged(void) { return true; } static int Get_Static_Network_Object_Count (void) { return StaticNetworkObjectList.Count (); } static const StaticNetworkObjectClass * Get_Static_Network_Object (int index) { return StaticNetworkObjectList[index]; } protected: //////////////////////////////////////////////////////////////// // Protected member data //////////////////////////////////////////////////////////////// StaticAnimPhysClass * PhysObj; static DynamicVectorClass StaticNetworkObjectList; private: //////////////////////////////////////////////////////////////// // Private member data //////////////////////////////////////////////////////////////// int AnimationMode; float LoopStart; float LoopEnd; float CurrFrame; float TargetFrame; }; //////////////////////////////////////////////////////////////// // // DoorNetworkObjectClass // //////////////////////////////////////////////////////////////// class DoorNetworkObjectClass : public StaticNetworkObjectClass { public: //////////////////////////////////////////////////////////////// // Public constructor //////////////////////////////////////////////////////////////// /* DoorNetworkObjectClass (void) : DoorState (0) {} */ DoorNetworkObjectClass (void); //////////////////////////////////////////////////////////////// // Public methods //////////////////////////////////////////////////////////////// // // Intialization // virtual void Initialize (StaticAnimPhysClass *phys_obj); // // Timestep support // virtual void Network_Think (void); // // Server-to-client state importing/exporting // virtual void Import_Rare (BitStreamClass &packet); virtual void Export_Rare (BitStreamClass &packet); // // Type identification // virtual DoorNetworkObjectClass * As_Door_Network_Object_Class( void ) { return this; } // // Diagnostics // //virtual bool Is_Tagged(void) { return false; } virtual void Get_Description(StringClass & description); private: //////////////////////////////////////////////////////////////// // Private member data //////////////////////////////////////////////////////////////// int DoorState; }; //////////////////////////////////////////////////////////////// // // ElevatorNetworkObjectClass // //////////////////////////////////////////////////////////////// class ElevatorNetworkObjectClass : public StaticNetworkObjectClass { public: //////////////////////////////////////////////////////////////// // Public constructor //////////////////////////////////////////////////////////////// /* ElevatorNetworkObjectClass (void) : State (0), DoorStateTop (0), DoorStateBottom (0) {} */ ElevatorNetworkObjectClass (void); // // Intialization // virtual void Initialize (StaticAnimPhysClass *phys_obj); // // Timestep support // virtual void Network_Think (void); // // Server-to-client state importing/exporting // virtual void Import_Rare (BitStreamClass &packet); virtual void Export_Rare (BitStreamClass &packet); // // Type identification // virtual ElevatorNetworkObjectClass * As_Elevator_Network_Object_Class( void ) { return this; } // // Diagnostics // //virtual bool Is_Tagged(void) { return true; } virtual void Get_Description(StringClass & description); private: //////////////////////////////////////////////////////////////// // Private member data //////////////////////////////////////////////////////////////// int State; int DoorStateTop; int DoorStateBottom; }; //////////////////////////////////////////////////////////////// // // DSAPONetworkObjectClass // //////////////////////////////////////////////////////////////// class DSAPONetworkObjectClass : public StaticNetworkObjectClass { public: //////////////////////////////////////////////////////////////// // Public constructor //////////////////////////////////////////////////////////////// /* DSAPONetworkObjectClass (void) : Health (0) { */ DSAPONetworkObjectClass (void); //////////////////////////////////////////////////////////////// // Public methods //////////////////////////////////////////////////////////////// // // Initialization // virtual void Initialize (StaticAnimPhysClass *phys_obj); // // Timestep support // virtual void Network_Think (void); // // Server-to-client state importing/exporting // virtual void Import_Rare (BitStreamClass &packet); virtual void Export_Rare (BitStreamClass &packet); // // Type identification // virtual DSAPONetworkObjectClass * As_DSAPO_Network_Object_Class( void ) { return this; } private: //////////////////////////////////////////////////////////////// // Private member data //////////////////////////////////////////////////////////////// float Health; }; #endif // __STATICNETWORKOBJECT_H