| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- ** Command & Conquer Generals Zero Hour(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/>.
- */
- ////////////////////////////////////////////////////////////////////////////////
- // //
- // (c) 2001-2003 Electronic Arts Inc. //
- // //
- ////////////////////////////////////////////////////////////////////////////////
- // FILE: CaveSystem.h /////////////////////////////////////////////////////////////////////////////////
- // Author: Graham Smallwood July 2002
- // Desc: System responsible for keeping track of the connectedness of all cave systems on the map
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- #pragma once
- #ifndef CAVE_SYSTEM_H
- #define CAVE_SYSTEM_H
- class Object;
- class TunnelTracker; // The player owns one such object for his Tunnels, so instead of duplicating
- // so much code, this SubSystem will manage all of the Cave systems.
- #include "Common/Snapshot.h"
- #include "Common/SubsystemInterface.h"
- /**
- System responsible for Crates as code objects - ini, new/delete etc
- */
- class CaveSystem : public SubsystemInterface,
- public Snapshot
- {
- public:
- CaveSystem();
- ~CaveSystem();
- void init();
- void reset();
- void update();
- Bool canSwitchIndexToIndex( Int oldIndex, Int newIndex ); // If either Index has guys in it, no, you can't
- void registerNewCave( Int theIndex ); // All Caves are born with a default index, which could be new
- void unregisterCave( Int theIndex ); //
- TunnelTracker *getTunnelTrackerForCaveIndex( Int theIndex );
- protected:
- // snapshot methods
- virtual void crc( Xfer *xfer ) { }
- virtual void xfer( Xfer *xfer );
- virtual void loadPostProcess( void ) { }
- private:
- std::vector<TunnelTracker*> m_tunnelTrackerVector;// A vector of pointers where the indexes are known by
- // others, so it can have NULLs in it to keep position. I've been advised against a map, so don't be a jerk
- // and use spot 20 first.
- };
- extern CaveSystem *TheCaveSystem;
- #endif
|