It's going to be a big list, though.
Code: Select all
AccomplishmentsSystem.cpp
AccomplishmentsSystem.h
Action.cpp
Action.h
ActionData.cpp
ActionData.h
ActionDirectory.cpp
ActionDirectory.h
ActionMap.cpp
ActionMap.h
ActionSystem.cpp
ActionSystem.h
ActionType.h
Activity.cpp
Activity.h
ActivityData.cpp
ActivityData.h
ActivityDirectory.cpp
ActivityDirectory.h
ActivitySystem.cpp
ActivitySystem.h
ActivityType.h
ActorUserData.cpp
ActorUserData.h
AIDistanceType.h
AirSupportBuildingCustomScript.cpp
AirSupportBuildingCustomScript.h
AlaydroSceneScript.cpp
AlaydroSceneScript.h
AlienFleet.cpp
AlienFleet.h
AlienMotherShipArmCustomScript.cpp
AlienMotherShipArmCustomScript.h
AlienMotherShipCustomScript.cpp
AlienMotherShipCustomScript.h
AlienPortalCustomScript.cpp
AlienPortalCustomScript.h
AlienSpacePortalCustomScript.cpp
AlienSpacePortalCustomScript.h
AltarOfSunAndVoidCustomScript.cpp
AltarOfSunAndVoidCustomScript.h
AnimationData.cpp
AnimationData.h
AnimationSystem.cpp
AnimationSystem.h
AnimFunctionType.h
AnimHook.cpp
AnimHook.h
Armor.cpp
Armor.h
ArmorEffect.cpp
ArmorEffect.h
ArtifactRuneCustomScript.cpp
ArtifactRuneCustomScript.h
AssaultGearType.h
Asteroid.cpp
Asteroid.h
AsteroidFactory.cpp
AsteroidFactory.h
AsteroidField.cpp
AsteroidField.h
BasicCam.cpp
BasicCam.h
BattleSimSystem.cpp
BattleSimSystem.h
BeaconCustomScript.cpp
BeaconCustomScript.h
Beam.cpp
Beam.h
BehaviorType.h
BerserkEffect.cpp
BerserkEffect.h
BountyProgress.cpp
BountyProgress.h
Building.cpp
Building.h
BuildingFactory.cpp
BuildingFactory.h
BuildingType.h
Bullet.cpp
Bullet.h
BulletSystem.cpp
BulletSystem.h
CameraOperator.h
CameraOperatorType.h
CameraSystem.cpp
CameraSystem.h
CamType.h
CelestialOblivionEffect.cpp
CelestialOblivionEffect.h
CharacterOption.cpp
CharacterOption.h
ChaseResultType.h
ChildEntityDesc.cpp
ChildEntityDesc.h
CloseTargetReactionType.h
CollisionGroup.h
CollisionHandler.cpp
CollisionHandler.h
Colony.cpp
Colony.h
ColonyID.h
ColonySystem.cpp
ColonySystem.h
ColourChannelType.h
CombatData.cpp
CombatData.h
CombatSystem.cpp
CombatSystem.h
CommandDesc.cpp
CommandDesc.h
CommandDirectory.cpp
CommandDirectory.h
CommandSystem.cpp
CommandSystem.h
CommandType.h
ComponentFactory.cpp
ComponentFactory.h
CompositorLogics.cpp
CompositorLogics.h
ConsoleSystem.cpp
ConsoleSystem.h
constants.cpp
constants.h
ConstructedTurretCustomScript.cpp
ConstructedTurretCustomScript.h
ContinuumEffect.cpp
ContinuumEffect.h
ControlMapEntry.cpp
ControlMapEntry.h
ControlScheme.cpp
ControlScheme.h
ControlSchemeType.h
ControlType.h
Conversation.cpp
Conversation.h
ConversationData.cpp
ConversationData.h
ConversationDialog.cpp
ConversationDialog.h
ConversationDialogDirectory.cpp
ConversationDialogDirectory.h
ConversationID.h
ConversationScript.cpp
ConversationScript.h
ConversationScriptDirectory.cpp
ConversationScriptDirectory.h
ConversationSystem.cpp
ConversationSystem.h
CustomScript.cpp
CustomScript.h
CustomScriptDirectory.cpp
CustomScriptDirectory.h
CustomScriptType.h
DamageRecord.cpp
DamageRecord.h
DamageSystem.cpp
DamageSystem.h
DamageType.h
Debris.cpp
Debris.h
Decor.cpp
Decor.h
DecorID.h
DecorLightFlareDesc.cpp
DecorLightFlareDesc.h
DemoSystem.cpp
DemoSystem.h
DestroyedUnitType.h
DetectSystem.cpp
DetectSystem.h
Device.cpp
Device.h
DeviceFactory.cpp
DeviceFactory.h
DiagnosticsSystem.cpp
DiagnosticsSystem.h
DialogOptionType.h
DifficultyType.h
DirectionType.h
Dock.cpp
Dock.h
DockSpot.cpp
DockSpot.h
DockSystem.cpp
DockSystem.h
Door.cpp
Door.h
DreamSequenceDesc.cpp
DreamSequenceDesc.h
DropShip.cpp
DropShip.h
DropShipCustomScript.cpp
DropShipCustomScript.h
DropShipFactory.cpp
DropShipFactory.h
DropShipSystem.cpp
DropShipSystem.h
DropSpot.cpp
DropSpot.h
DynamicHoloScreenType.h
Effect.cpp
Effect.h
EffectData.cpp
EffectData.h
EffectSystem.cpp
EffectSystem.h
EffectType.h
EMP.cpp
EMP.h
EnergyBank.cpp
EnergyBank.h
EnergyDrainEffect.cpp
EnergyDrainEffect.h
Engine.cpp
Engine.h
EnumMap.h
Equipment.cpp
Equipment.h
EquipmentData.cpp
EquipmentData.h
EquipmentSystem.cpp
EquipmentSystem.h
EquipmentType.h
EventDesc.cpp
EventDesc.h
EventSystem.cpp
EventSystem.h
EventTriggerType.h
EventType.h
ExperimentalShipTech.cpp
ExperimentalShipTech.h
ExperimentalShipTechType.h
ExplosionDesc.cpp
ExplosionDesc.h
ExplosionSystem.cpp
ExplosionSystem.h
Faction.cpp
Faction.h
FactionGoalList.cpp
FactionGoalList.h
FactionRelationType.h
FactionResources.cpp
FactionResources.h
FactionSystem.cpp
FactionSystem.h
FactionType.h
FadeScreenInfo.cpp
FadeScreenInfo.h
FlameEffect.cpp
FlameEffect.h
Fleet.cpp
Fleet.h
FleetID.h
FleetSystem.cpp
FleetSystem.h
FleetType.h
Flier.cpp
Flier.h
FlierFactory.cpp
FlierFactory.h
FlightSystem.cpp
FlightSystem.h
FloatyLight.cpp
FloatyLight.h
FocusEffect.cpp
FocusEffect.h
GalacticNewsUnitInfo.cpp
GalacticNewsUnitInfo.h
GalaxyView3D.cpp
GalaxyView3D.h
GalaxyViewCameraType.h
GalaxyViewController.cpp
GalaxyViewController.h
GalaxyViewObjectType.h
GameSystem.cpp
GameSystem.h
GhostEffect.cpp
GhostEffect.h
Goal.cpp
Goal.h
GoalDesc.cpp
GoalDesc.h
GoalDirectory.cpp
GoalDirectory.h
GoalScopeType.h
GoalType.h
GolgrumSceneScript.cpp
GolgrumSceneScript.h
GraphicsSystem.cpp
GraphicsSystem.h
Gun.cpp
Gun.h
Hangar.cpp
Hangar.h
HealthData.cpp
HealthData.h
HealthEffect.cpp
HealthEffect.h
HeightmapTerrainPageSourceExt.h
HoloChallenge.cpp
HoloChallenge.h
HoloChallengeMelee.cpp
HoloChallengeMelee.h
HoloChallengeRace.cpp
HoloChallengeRace.h
HoloChallengeShoot.cpp
HoloChallengeShoot.h
HoloChallengeType.h
HoloGridLines.cpp
HoloGridLines.h
HoloScreen.cpp
HoloScreen.h
HoloScreenDirectory.cpp
HoloScreenDirectory.h
HoloScreenTransitionType.h
HoloStageType.h
Hull.cpp
Hull.h
IndoorPathMap.cpp
IndoorPathMap.h
IndoorPathSystem.cpp
IndoorPathSystem.h
InputController.h
InputControllerType.h
InputDeviceType.h
InputSystem.cpp
InputSystem.h
IntroSystem.cpp
IntroSystem.h
InvasionProgress.cpp
InvasionProgress.h
Item.cpp
Item.h
ItemFactory.cpp
ItemFactory.h
ItemSlotType.h
ItemType.h
JumpSystem.cpp
JumpSystem.h
Kit.cpp
Kit.h
KnowledgeData.cpp
KnowledgeData.h
KnowledgeDataType.h
KnowledgeDesc.cpp
KnowledgeDesc.h
KnowledgeSubjectType.h
KnowledgeSystem.cpp
KnowledgeSystem.h
KnowledgeTrait.h
Landscape.cpp
Landscape.h
LastStandEffect.cpp
LastStandEffect.h
LightDesc.cpp
LightDesc.h
LightningSceneScript.cpp
LightningSceneScript.h
ListboxNumberItem.cpp
ListboxNumberItem.h
LoadSaveSystem.cpp
LoadSaveSystem.h
LogSystem.cpp
LogSystem.h
LOSResultType.h
main.cpp
MathUtil.cpp
MathUtil.h
MedicalEye.cpp
MedicalEye.h
MessageOption.cpp
MessageOption.h
MID.h
MirrorPuzzle.cpp
MirrorPuzzle.h
MissileBay.cpp
MissileBay.h
Mission.cpp
Mission.h
MissionBadge.cpp
MissionBadge.h
MissionBadgeDirectory.cpp
MissionBadgeDirectory.h
MissionBadgeMetalType.h
MissionBadgeType.h
MissionBrief.cpp
MissionBrief.h
MissionBriefDirectory.cpp
MissionBriefDirectory.h
MissionData.cpp
MissionData.h
MissionID.h
MissionInfo.cpp
MissionInfo.h
MissionItem.cpp
MissionItem.h
MissionProgress.cpp
MissionProgress.h
MissionStageType.h
MissionSystem.cpp
MissionSystem.h
MissionType.h
Mobile.cpp
Mobile.h
MobileData.cpp
MobileData.h
MobileDataType.h
MobileType.h
MonolithMirrorCustomScript.cpp
MonolithMirrorCustomScript.h
MonolithRoomCustomScript.cpp
MonolithRoomCustomScript.h
MountedGunArray.cpp
MountedGunArray.h
NavigationType.h
NewsItem.cpp
NewsItem.h
NewsSystem.cpp
NewsSystem.h
NewsType.h
OccupationType.h
OgreGpuCommandBufferFlush.cpp
OgreGpuCommandBufferFlush.h
OptionSystem.cpp
OptionSystem.h
PagedGeometryDesc.cpp
PagedGeometryDesc.h
ParticleSoundEmitter.cpp
ParticleSoundEmitter.h
ParticleSoundEmitterFactory.h
PathData.cpp
PathData.h
PathMap.cpp
PathMap.h
PathResultType.h
PathSystem.cpp
PathSystem.h
pch.cpp
pch.h
Person.cpp
Person.h
PersonalityType.h
PersonCam.cpp
PersonCam.h
PersonController.cpp
PersonController.h
PersonFactory.cpp
PersonFactory.h
PersonMovementData.cpp
PersonMovementData.h
PhysicsFactory.cpp
PhysicsFactory.h
PhysicsSystem.cpp
PhysicsSystem.h
PhysXRaycastCallbackHandler.cpp
PhysXRaycastCallbackHandler.h
PilotData.cpp
PilotData.h
PilotTraitType.h
PirateDesc.cpp
PirateDesc.h
PirateSystem.cpp
PirateSystem.h
Planet.cpp
Planet.h
PlanetResourceType.h
PlanetSizeType.h
PlanetType.h
PossessionData.cpp
PossessionData.h
Projector.cpp
Projector.h
RaceType.h
RankData.cpp
RankData.h
RankEntry.cpp
RankEntry.h
RankSystem.cpp
RankSystem.h
Reactor.cpp
Reactor.h
ReplicateEffect.cpp
ReplicateEffect.h
ReputationType.h
ReserveData.cpp
ReserveData.h
RoomID.h
RoomPiece.cpp
RoomPiece.h
RoomSet.cpp
RoomSet.h
RoomSystem.cpp
RoomSystem.h
Rune.cpp
Rune.h
RuneOfTheSunEffect.cpp
RuneOfTheSunEffect.h
RuneOfTheVoidEffect.cpp
RuneOfTheVoidEffect.h
Scene.cpp
Scene.h
SceneImage.cpp
SceneImage.h
SceneScript.cpp
SceneScript.h
SceneScriptDirectory.cpp
SceneScriptDirectory.h
SceneScriptType.h
SceneSystem.cpp
SceneSystem.h
SceneType.h
ScrollTextEntry.cpp
ScrollTextEntry.h
SeekAndDestroyProgress.cpp
SeekAndDestroyProgress.h
ShadowQualityType.h
Shield.cpp
Shield.h
ShieldGen.cpp
ShieldGen.h
Ship.cpp
Ship.h
ShipCam.cpp
ShipCam.h
ShipComponent.cpp
ShipComponent.h
ShipComponentType.h
ShipConfig.cpp
ShipConfig.h
ShipController.cpp
ShipController.h
ShipFactory.cpp
ShipFactory.h
ShopData.cpp
ShopData.h
ShopItemDesc.cpp
ShopItemDesc.h
ShopSystem.cpp
ShopSystem.h
Skill.cpp
Skill.h
SkillData.cpp
SkillData.h
SkillDirectory.cpp
SkillDirectory.h
SkillItem.cpp
SkillItem.h
SkillSystem.cpp
SkillSystem.h
SoundID.h
SoundLibrary.cpp
SoundLibrary.h
SoundSystem.cpp
SoundSystem.h
SoundType.h
SpaceBattleProgress.cpp
SpaceBattleProgress.h
SpaceTurret.cpp
SpaceTurret.h
SpaceTurretAutoControl.cpp
SpaceTurretAutoControl.h
SpaceTurretFactory.cpp
SpaceTurretFactory.h
SpawnPoint.cpp
SpawnPoint.h
SpeedEffect.cpp
SpeedEffect.h
SPZipArchive.cpp
SPZipArchive.h
Station.cpp
Station.h
StationFactory.cpp
StationFactory.h
StationPathDestinationType.h
StationRoomType.h
StatueCustomScript.cpp
StatueCustomScript.h
StatueCustomScript2.cpp
StatueCustomScript2.h
SteerType.h
Stellar.cpp
Stellar.h
StellarCombatBounds.cpp
StellarCombatBounds.h
Stim.cpp
Stim.h
StoryCamSequenceType.h
StoryFlag.h
StorySystem.cpp
StorySystem.h
StrategySystem.cpp
StrategySystem.h
SummoningEffect.cpp
SummoningEffect.h
SurfaceTraitType.h
SurfaceType.h
SurveyPlanetProgress.cpp
SurveyPlanetProgress.h
SwampLizardCustomScript.cpp
SwampLizardCustomScript.h
SwampLizardEssenceCustomScript.cpp
SwampLizardEssenceCustomScript.h
TacticBattleShipPilot.cpp
TacticBattleShipPilot.h
TacticChargeTarget.cpp
TacticChargeTarget.h
TacticConditionType.h
TacticConstructTurret.cpp
TacticConstructTurret.h
TacticData.cpp
TacticData.h
TacticDirectory.cpp
TacticDirectory.h
TacticFighterPilot.cpp
TacticFighterPilot.h
TacticFlee.cpp
TacticFlee.h
TacticMechLaunchRocket.cpp
TacticMechLaunchRocket.h
TacticMeleeMonster.cpp
TacticMeleeMonster.h
TacticPursueAndAttack.cpp
TacticPursueAndAttack.h
TacticSequence.cpp
TacticSequence.h
TacticSequenceType.h
TacticShootRocket.cpp
TacticShootRocket.h
TacticStandAndFire.cpp
TacticStandAndFire.h
TacticStandAndMelee.cpp
TacticStandAndMelee.h
TacticStrafeAndFire.cpp
TacticStrafeAndFire.h
TacticSystem.cpp
TacticSystem.h
TacticTakeCoverAndAttack.cpp
TacticTakeCoverAndAttack.h
TacticThrowBomb.cpp
TacticThrowBomb.h
TacticUseShieldGun.cpp
TacticUseShieldGun.h
TacticUseStim.cpp
TacticUseStim.h
TargetQuery.cpp
TargetQuery.h
Task.cpp
Task.h
TaskAlienFighterInvadeStation.cpp
TaskAlienFighterInvadeStation.h
TaskAssessOdds.cpp
TaskAssessOdds.h
TaskBattleShipGuardStation.cpp
TaskBattleShipGuardStation.h
TaskChaseTarget.cpp
TaskChaseTarget.h
TaskCheckForVeryCloseTarget.cpp
TaskCheckForVeryCloseTarget.h
TaskChooseStationDestination.cpp
TaskChooseStationDestination.h
TaskChooseTarget.cpp
TaskChooseTarget.h
TaskChooseWeapon.cpp
TaskChooseWeapon.h
TaskConstructTurret.cpp
TaskConstructTurret.h
TaskDefendStation.cpp
TaskDefendStation.h
TaskDirectory.cpp
TaskDirectory.h
TaskDropShipDepart.cpp
TaskDropShipDepart.h
TaskDropShipDisembark.cpp
TaskDropShipDisembark.h
TaskDropShipEnterDock.cpp
TaskDropShipEnterDock.h
TaskDropShipExitDock.cpp
TaskDropShipExitDock.h
TaskDropShipLand.cpp
TaskDropShipLand.h
TaskDropShipLoadTroops.cpp
TaskDropShipLoadTroops.h
TaskDropShipPathToPlanet.cpp
TaskDropShipPathToPlanet.h
TaskDropShipPathToStation.cpp
TaskDropShipPathToStation.h
TaskDropShipPickUp.cpp
TaskDropShipPickUp.h
TaskDropShipSelectDropSpot.cpp
TaskDropShipSelectDropSpot.h
TaskEnterShip.cpp
TaskEnterShip.h
TaskEnterStation.cpp
TaskEnterStation.h
TaskExitJump.cpp
TaskExitJump.h
TaskExitShip.cpp
TaskExitShip.h
TaskExitStation.cpp
TaskExitStation.h
TaskFaceWork.cpp
TaskFaceWork.h
TaskFindClearConstructionSpot.cpp
TaskFindClearConstructionSpot.h
TaskFire.cpp
TaskFire.h
TaskFireChargedWeapon.cpp
TaskFireChargedWeapon.h
TaskFlightInstructor.cpp
TaskFlightInstructor.h
TaskFollowLeader.cpp
TaskFollowLeader.h
TaskHomeBaseDestroyed.cpp
TaskHomeBaseDestroyed.h
TaskIdleShip.cpp
TaskIdleShip.h
TaskInitiateJump.cpp
TaskInitiateJump.h
TaskLobeFlayerGhostFollow.cpp
TaskLobeFlayerGhostFollow.h
TaskLobeFlayerGhostStare.cpp
TaskLobeFlayerGhostStare.h
TaskMeleeAttack.cpp
TaskMeleeAttack.h
TaskPathToHomeStation.cpp
TaskPathToHomeStation.h
TaskPathToTarget.cpp
TaskPathToTarget.h
TaskPauseAtStationDestination.cpp
TaskPauseAtStationDestination.h
TaskPilotAimAndFireAtTarget.cpp
TaskPilotAimAndFireAtTarget.h
TaskPilotAvoidCollisionWithTarget.cpp
TaskPilotAvoidCollisionWithTarget.h
TaskPilotAvoidDamage.cpp
TaskPilotAvoidDamage.h
TaskPilotAvoidObstacles.cpp
TaskPilotAvoidObstacles.h
TaskPilotChooseTarget.cpp
TaskPilotChooseTarget.h
TaskPilotDetectObstacles.cpp
TaskPilotDetectObstacles.h
TaskPilotSteerBattleShip.cpp
TaskPilotSteerBattleShip.h
TaskPilotSwoop.cpp
TaskPilotSwoop.h
TaskPilotUseShieldGen.cpp
TaskPilotUseShieldGen.h
TaskQueryEnemyPositions.cpp
TaskQueryEnemyPositions.h
TaskReloadWeapon.cpp
TaskReloadWeapon.h
TaskRetreat.cpp
TaskRetreat.h
TaskStatus.h
TaskStrafeInOpenDirection.cpp
TaskStrafeInOpenDirection.h
TaskTakeCoverAndAttack.cpp
TaskTakeCoverAndAttack.h
TaskThrowBomb.cpp
TaskThrowBomb.h
TaskTurnTowardsTarget.cpp
TaskTurnTowardsTarget.h
TaskType.h
TaskUnleashStoredEffect.cpp
TaskUnleashStoredEffect.h
TaskUseShieldGun.cpp
TaskUseShieldGun.h
TaskUseStim.cpp
TaskUseStim.h
TaskWaitForFleetToLaunch.cpp
TaskWaitForFleetToLaunch.h
TaskWalkToStationDestination.cpp
TaskWalkToStationDestination.h
TaskWander.cpp
TaskWander.h
TeleportationDrive.cpp
TeleportationDrive.h
TerrainDecal.cpp
TerrainDecal.h
TerrainMaterialGeneratorCustom.cpp
TerrainMaterialGeneratorCustom.h
TerrainQualityType.h
TextDirectory.cpp
TextDirectory.h
TextureArchive.cpp
TextureArchive.h
TextureQualityType.h
TimeLineEvent.cpp
TimeLineEvent.h
TimeSystem.cpp
TimeSystem.h
Transceiver.cpp
Transceiver.h
TreeLoader2DWithPhysics.cpp
TreeLoader2DWithPhysics.h
TreeLoader3DWithPhysics.cpp
TreeLoader3DWithPhysics.h
Trigger.cpp
Trigger.h
TriggerDesc.cpp
TriggerDesc.h
TriggerFunctionHandler.cpp
TriggerFunctionHandler.h
TriggerFunctionType.h
TriggerID.h
TroopConfig.cpp
TroopConfig.h
TroopInvasionForce.cpp
TroopInvasionForce.h
TroopInvasionForceID.h
Turret.cpp
Turret.h
TurretAutoControl.cpp
TurretAutoControl.h
TurretFactory.cpp
TurretFactory.h
TutorialFunctionType.h
TutorialSystem.cpp
TutorialSystem.h
UIBio.cpp
UIBio.h
UIBountyList.cpp
UIBountyList.h
UICentralMenu.cpp
UICentralMenu.h
UICharGen.cpp
UICharGen.h
UIChargeUp.cpp
UIChargeUp.h
UICommandColony.cpp
UICommandColony.h
UICommandHeader.cpp
UICommandHeader.h
UICommandPlanet.cpp
UICommandPlanet.h
UICommandResources.cpp
UICommandResources.h
UICommandStation.cpp
UICommandStation.h
UICommunicate.cpp
UICommunicate.h
UICommunicateResponse.cpp
UICommunicateResponse.h
UIControlController.cpp
UIControlController.h
UIControlEdit.cpp
UIControlEdit.h
UIControlSelect.cpp
UIControlSelect.h
UICredits.cpp
UICredits.h
UICrosshairs.cpp
UICrosshairs.h
UIDemo.cpp
UIDemo.h
UIDialog.cpp
UIDialog.h
UIDifficulty.cpp
UIDifficulty.h
UIDistortion.cpp
UIDistortion.h
UIEnergyMeter.cpp
UIEnergyMeter.h
UIEquipment.cpp
UIEquipment.h
UIFleet.cpp
UIFleet.h
UIGalacticNews.cpp
UIGalacticNews.h
UIGalaxyView.cpp
UIGalaxyView.h
UIGalaxyViewControls.cpp
UIGalaxyViewControls.h
UIGraphics.cpp
UIGraphics.h
UIHint.cpp
UIHint.h
UIHoloChallenge.cpp
UIHoloChallenge.h
UIIncomingMissile.cpp
UIIncomingMissile.h
UILanding.cpp
UILanding.h
UILensFlare.cpp
UILensFlare.h
UILoad.cpp
UILoad.h
UIMainMenu.cpp
UIMainMenu.h
UIMessage.cpp
UIMessage.h
UIMission.cpp
UIMission.h
UIMissionBrief.cpp
UIMissionBrief.h
UIMissionSummary.cpp
UIMissionSummary.h
UINameTag.cpp
UINameTag.h
UINewsHistory.cpp
UINewsHistory.h
UIRadar.cpp
UIRadar.h
UISave.cpp
UISave.h
UIScanDetails.cpp
UIScanDetails.h
UIScanner.cpp
UIScanner.h
UISceneIntro.cpp
UISceneIntro.h
UIScreen.cpp
UIScreen.h
UIScreenType.h
UIScrollText.cpp
UIScrollText.h
UISelection.cpp
UISelection.h
UIShieldMeter.cpp
UIShieldMeter.h
UIShip.cpp
UIShip.h
UIShipRepair.cpp
UIShipRepair.h
UIShipSlots.cpp
UIShipSlots.h
UIShop.cpp
UIShop.h
UISkillTree.cpp
UISkillTree.h
UISound.cpp
UISound.h
UISpeedMeter.cpp
UISpeedMeter.h
UIStimBelt.cpp
UIStimBelt.h
UIStoryText.cpp
UIStoryText.h
UISystem.cpp
UISystem.h
UITextMessage.cpp
UITextMessage.h
UITimeLine.cpp
UITimeLine.h
UIUsage.cpp
UIUsage.h
UIVideo.cpp
UIVideo.h
UIWeapon.cpp
UIWeapon.h
UniverseSystem.cpp
UniverseSystem.h
UnstableWormholeDesc.cpp
UnstableWormholeDesc.h
UnstableWormholeProgress.cpp
UnstableWormholeProgress.h
UsageData.cpp
UsageData.h
UsageDirectory.cpp
UsageDirectory.h
UsageSequence.cpp
UsageSequence.h
UsageSequenceType.h
UsageSystem.cpp
UsageSystem.h
version.cpp
version.h
VoiceTextSync.cpp
VoiceTextSync.h
vs_debug.h
vs_debug.txt
WatchCam.cpp
WatchCam.h
WatchCamController.cpp
WatchCamController.h
WatchCamSequence.cpp
WatchCamSequence.h
Weapon.cpp
Weapon.h
WeaponFireType.h
WeaponStats.cpp
WeaponStats.h
Wormhole.cpp
Wormhole.h
WormholeFactory.cpp
WormholeFactory.h
WormholeStabilityType.h
WormholeSystem.cpp
WormholeSystem.h
XML.cpp
XML.h
So InputSystem.h/cpp define the single class, InputSystem
The high level breakdown of my game is that there are:
- Scenes: For example, a Landscape or a Space Station Interior
- Mobiles: Base class for things that move around in the world, like Ship, Turret, Asteroid, Person, Building
- Items: Base class for things like Armor, Weapons, Stims, and other things that can be picked up or equipped.
- Factories: Classes responsible for creating Mobiles and Items
- UIs: All the files that begin with "UI" handle a single user interface screen
- AI: All the files that begin with "Tactic" or "Task" are AI stuff.
- Systems: When I have a chunk of game play work to do, I generally put it into a System. Each System is a Singleton.
- Data: Most of the data classes are part of a Mobile (Ship, Person, etc). A lot of Systems have a corresponding Data class, e.g. AnimationSystem (manipulates all animations in the game) and AnimationData (the animation data for a single Person).
- SoundSystem: Contains all the complex FMOD logic, and exposes a nice simple API for playing 2D or 3D sounds.
- GraphicsSystem: All the Ogre3D initialization and update stuff.
- CameraSystem: All the logic for attaching cameras to a character or a ship, and updating the camera position.
- DetectSystem: Provides some simple functions like "what Mobiles are in this area" or "Can Mobile A see Mobile B?". Under the hood, there is complex PhysX stuff going on, but this System wraps much of that complexity.
- InputSystem: contains all the OIS input library logic. Handles grabbing input from the player (keyboard, mouse, joystick), and then calling into other systems that will move the player or player ship, or manipulate the UI (moving the mouse, pressing buttons, etc).
- UISystem: initializes and updates CEGUI, initializes and updates all the individual UIs in my game.
- ColonySystem: Purely a game logic class, associated with building colonies on planets.
The highest level System in my game is called the GameSystem.cpp
(Probably a better name would have been "MasterSystem")
This is the System that initializes, runs, and shuts down all other Systems.
It looks something like this:
Code: Select all
#ifndef __GAME_SYSTEM_H__
#define __GAME_SYSTEM_H__
// ogre
#include "OgrePrerequisites.h"
using namespace Ogre;
// game
#include "MID.h"
// This is the "main high-levle system" which drives the primary architecture of the game,
// including system initialization, shutdown, and the game loop.
class GameSystem
{
//
// System Singleton
//
public:
GameSystem();
~GameSystem();
// Create the singleton instance
static void Create();
static GameSystem* GetSingleton() { return s_pSingleton; }
private:
// There can only be one instance of a singleton
static GameSystem* s_pSingleton;
//
// Lifecycle
//
public:
// To run the game, you simply need to Create this GameSystem, and call Run()
void Run();
// The Tick function is called every frame.
void Tick();
//
// Shutdown
//
public:
// Requesting a shutdown will cause the game to quit at the end of the current Tick.
void RequestShutdown();
bool IsShuttingDown() const;
private:
void Shutdown();
private:
bool m_bShutdownRequested;
//
// System Initialization
//
public:
// Create and initialize all the system singetons
void CreateSystems();
void InitializeSystems();
void TickSystems( float i_fSecFrame );
void DestroySystems();
bool AreAllSystemsInitialized() const;
private:
// Once InitializeSystems has finished its work initializing all the system
// singletons, this will be set to true.
bool m_bAllSystemsInitialized;
};
// Syntactic convenience function, for example so you can call GameSys()->Tick()
// instead of having to write GameSystem::GetSingleton()->Tick()
inline GameSystem* GameSys()
{
return GameSystem::GetSingleton();
}
#endif // __GAME_SYSTEM_H__
Code: Select all
int main(int argc, char *argv[])
{
GameSystem::Create();
GameSys()->Run();
delete GameSys();
}
Code: Select all
// pch
#include "pch.h"
// my header
#include "GameSystem.h"
// ogre
#include "OgreConfigFile.h"
using namespace Ogre;
// game
#include "AccomplishmentsSystem.h"
#include "ActionSystem.h"
#include "ActionDirectory.h"
#include "ActivitySystem.h"
#include "ActivityDirectory.h"
#include "AnimationSystem.h"
#include "AsteroidFactory.h"
#include "BattleSimSystem.h"
#include "BuildingFactory.h"
#include "BulletSystem.h"
#include "CameraSystem.h"
#include "ColonySystem.h"
#include "CombatSystem.h"
#include "CommandDirectory.h"
#include "CommandSystem.h"
#include "ComponentFactory.h"
#include "ConversationDialogDirectory.h"
#include "ConversationScriptDirectory.h"
#include "ConversationSystem.h"
#include "ConsoleSystem.h"
#include "DamageSystem.h"
#include "DemoSystem.h"
#include "DetectSystem.h"
#include "DeviceFactory.h"
#include "DockSystem.h"
#include "DropShipFactory.h"
#include "DropShipSystem.h"
#include "DiagnosticsSystem.h"
#include "EffectSystem.h"
#include "EventSystem.h"
#include "EquipmentSystem.h"
#include "ExplosionSystem.h"
#include "FactionSystem.h"
#include "FleetSystem.h"
#include "FlierFactory.h"
#include "FlightSystem.h"
#include "GoalDirectory.h"
#include "GraphicsSystem.h"
#include "HoloScreenDirectory.h"
#include "InputController.h"
#include "JumpSystem.h"
#include "InputSystem.h"
#include "IndoorPathSystem.h"
#include "IntroSystem.h"
#include "ItemFactory.h"
#include "KnowledgeSystem.h"
#include "LoadSaveSystem.h"
#include "LogSystem.h"
#include "MissionBadgeDirectory.h"
#include "MissionBriefDirectory.h"
#include "MissionSystem.h"
#include "NewsSystem.h"
#include "OptionSystem.h"
#include "PathSystem.h"
#include "PersonFactory.h"
#include "PirateSystem.h"
#include "PhysicsFactory.h"
#include "PhysicsSystem.h"
#include "RankSystem.h"
#include "RoomSystem.h"
#include "Scene.h"
#include "SceneSystem.h"
#include "ShipFactory.h"
#include "ShopSystem.h"
#include "SkillDirectory.h"
#include "SkillSystem.h"
#include "SoundSystem.h"
#include "SpaceTurretFactory.h"
#include "StationFactory.h"
#include "StorySystem.h"
#include "StrategySystem.h"
#include "TacticDirectory.h"
#include "TacticSystem.h"
#include "TaskDirectory.h"
#include "TextDirectory.h"
#include "TimeSystem.h"
#include "TurretFactory.h"
#include "TutorialSystem.h"
#include "UniverseSystem.h"
#include "UIMainMenu.h"
#include "UISystem.h"
#include "UsageSystem.h"
#include "UsageDirectory.h"
#include "VehicleFactory.h"
#include "WormholeFactory.h"
#include "WormholeSystem.h"
// static member variables
GameSystem* GameSystem::s_pSingleton = 0;
// member functions
GameSystem::GameSystem()
: m_bShutdownRequested ( false )
, m_bAllSystemsInitialized ( false )
{
}
GameSystem::~GameSystem()
{
ASSERT( s_pSingleton );
s_pSingleton = 0;
}
void GameSystem::Create()
{
// There can be only one.
ASSERT( !s_pSingleton );
s_pSingleton = new GameSystem;
}
void GameSystem::Run()
{
try
{
// Create all of our system singletons
CreateSystems();
// Tick Tick Tick Tick... like clockwork!
while ( !IsShuttingDown() )
{
Tick();
}
Shutdown();
}
catch ( std::exception& e )
{
if ( LogSystem::IsInitialized() )
{
std::stringstream ssErr;
ssErr << "GameSystem::Run exception: " << e.what();
LogSys()->AbortMessage( ssErr.str() );
}
else
{
// Note: it is unlikely that any exceptions will be thrown before the LogSystem has been initialized,
// because I don't use exceptions in my code, and we initialize the LogSystem before we start calling
// into any library code such as Ogre3D or CEGUI, with the exceptions of creating the Ogre::LogManager itself.
abort();
}
}
}
void GameSystem::Tick()
{
// If we're not in focus, sleep for a while to give up some CPU cycles
if ( AreAllSystemsInitialized() && !GraphicsSys()->GetRenderWindow()->isActive() )
{
// Note: This is win32 specific
// From somewhere on the web: "The time period for the Win32 Sleep function is in milliseconds and can even be INFINITE, in which case the thread will never resume. The Linux sleep function is similar to Sleep, but the time periods are measured in seconds. To obtain the millisecond resolution, use the nanosleep function to provide the same service."
Sleep( 250 );
}
// Tick the TimeSystem, to calculate our frame time.
TimeSys()->Tick();
float fSecFrame = TimeSys()->GetSecFrame();
// Initialize systems
if ( !AreAllSystemsInitialized() )
{
InitializeSystems();
// Always tick our GraphicsSystem so we can display the initialization screen.
GraphicsSys()->Tick( fSecFrame );
}
else
{
// We're done initializing.
// Tick all the system singletons
TickSystems( fSecFrame );
}
}
void GameSystem::RequestShutdown()
{
LogSys()->Message( "GameSystem::RequestShutdown", LML_NORMAL );
// This will close the game cleanly after this tick finishes.
m_bShutdownRequested = true;
}
bool GameSystem::IsShuttingDown() const
{
return m_bShutdownRequested;
}
void GameSystem::Shutdown()
{
LogSys()->Message( "GameSystem::Shutdown", LML_NORMAL );
// If we have an active Scene, we need to call Deactivate() otherwise a bunch
// of memory leaks show up in our memory leak detector (see vs_debug.txt)
Scene* pActiveScene = SceneSys()->GetActiveScene();
if ( pActiveScene )
{
pActiveScene->Deactivate();
}
DestroySystems();
}
void GameSystem::CreateSystems()
{
// Create the LogSystem first, so we can handle any logging and ASSERTs during
// the creation of other systems.
// - actually we won't be able to log until after we finish creating Ogre, because we're using
// Ogre's LogManager. Should think about fixing this somehow. But at least our ASSERTs will work.
LogSystem::Create();
// Create Factories
AsteroidFactory::Create();
BuildingFactory::Create();
ComponentFactory::Create();
DeviceFactory::Create();
DropShipFactory::Create();
FlierFactory::Create();
ItemFactory::Create();
PersonFactory::Create();
ShipFactory::Create();
SpaceTurretFactory::Create();
StationFactory::Create();
TurretFactory::Create();
VehicleFactory::Create();
WormholeFactory::Create();
PhysicsFactory::Create();
// Create Directories
ActionDirectory::Create();
ActivityDirectory::Create();
CommandDirectory::Create();
ConversationDialogDirectory::Create();
ConversationScriptDirectory::Create();
GoalDirectory::Create();
HoloScreenDirectory::Create();
MissionBriefDirectory::Create();
MissionBadgeDirectory::Create();
SkillDirectory::Create();
TacticDirectory::Create();
TaskDirectory::Create();
TextDirectory::Create();
UsageDirectory::Create();
// Createm Systems
AccomplishmentsSystem::Create();
ActionSystem::Create();
ActivitySystem::Create();
AnimationSystem::Create();
BattleSimSystem::Create();
BulletSystem::Create();
CameraSystem::Create();
ColonySystem::Create();
CombatSystem::Create();
CommandSystem::Create();
ConversationSystem::Create();
ConsoleSystem::Create();
DamageSystem::Create();
DemoSystem::Create();
DetectSystem::Create();
DiagnosticsSystem::Create();
DockSystem::Create();
DropShipSystem::Create();
EffectSystem::Create();
EquipmentSystem::Create();
EventSystem::Create();
ExplosionSystem::Create();
FactionSystem::Create();
FleetSystem::Create();
FlightSystem::Create();
GraphicsSystem::Create();
JumpSystem::Create();
IndoorPathSystem::Create();
InputSystem::Create();
IntroSystem::Create();
KnowledgeSystem::Create();
LoadSaveSystem::Create();
MissionSystem::Create();
OptionSystem::Create();
NewsSystem::Create();
PathSystem::Create();
PhysicsSystem::Create();
PirateSystem::Create();
RankSystem::Create();
RoomSystem::Create();
SceneSystem::Create();
ShopSystem::Create();
SkillSystem::Create();
SoundSystem::Create();
StorySystem::Create();
StrategySystem::Create();
TacticSystem::Create();
TimeSystem::Create();
TutorialSystem::Create();
UISystem::Create();
UniverseSystem::Create();
UsageSystem::Create();
WormholeSystem::Create();
}
void GameSystem::InitializeSystems()
{
if ( AreAllSystemsInitialized() )
{
ASSERT( false );
return;
}
// --- BEGIN EDIT ---
// This code is a little complex, so I'm not going to display it all here ---
//
// But the main point is that we call Init() on every system, like this:
OptionSys()->Init();
LogSys()->Init();
CameraSys()->Init();
// ... etc...
// --- END EDIT ---
}
void GameSystem::TickSystems( float i_fSecFrame )
{
// --- BEGIN EDIT ---
// This code is a little complex, so I'm not going to display it all here ---
//
// But the main point is that we call Tick() on every system, like this:
InputSys()->Tick( i_fSecFrame );
SoundSys()->Tick( i_fSecFrame );
GraphicsSys()->Tick( i_fSecFrame );
// ... etc...
// --- END EDIT ---
}
void GameSystem::DestroySystems()
{
// Destroy factories
delete AsteroidFac();
delete BuildingFac();
delete ComponentFac();
delete DeviceFac();
delete DropShipFac();
delete FlierFac();
delete ItemFac();
delete PersonFac();
delete ShipFac();
delete SpaceTurretFac();
delete StationFac();
delete TurretFac();
delete VehicleFac();
delete WormholeFac();
// Destroy Directories
delete ActionDir();
delete ActivityDir();
delete CommandDir();
delete ConversationDialogDir();
delete ConversationScriptDir();
delete GoalDir();
delete HoloScreenDir();
delete MissionBriefDir();
delete MissionBadgeDir();
delete PirateSys();
delete SkillDir();
delete TacticDir();
delete TaskDir();
delete TextDir();
delete UsageDir();
// Destroy system singletons
delete AccomplishmentsSys();
delete ActionSys();
delete ActivitySys();
delete AnimationSys();
delete BattleSimSys();
delete ColonySys();
delete CombatSys();
delete CommandSys();
delete ConversationSys();
delete ConsoleSys();
delete DamageSys();
delete DemoSys();
delete DetectSys();
delete DiagnosticsSys();
delete DockSys();
delete DropShipSys();
delete EffectSys();
delete EquipmentSys();
delete EventSys();
delete ExplosionSys();
delete FactionSys();
delete FleetSys();
delete FlightSys();
delete JumpSys();
delete IntroSys();
delete KnowledgeSys();
delete LoadSaveSys();
delete MissionSys();
delete NewsSys();
delete RankSys();
delete RoomSys();
delete ShopSys();
delete SkillSys();
delete StorySys();
delete StrategySys();
delete TacticSys();
delete TutorialSys();
delete UsageSys();
delete WormholeSys();
delete UniverseSys();
// The TimeSystem must be deleted after the UniverseSys, because Mobile destruction ends up calling TimeSys()->GetApplicationTime()
delete TimeSys();
// The PhysicsFactory must be deleted after the UniverseSys, because the Scene destructor
// calls into PhysicsFactory::DestroyPhysicsScene
delete PhysicsFac();
// The CameraSys must be deleted after the UniverseSys, because
// the Mobile destructor talks to it.
delete CameraSys();
// The InputSys must be deleted after the UniverseSys, because
// the Mobile destructor talks to it.
delete InputSys();
// The PathSys must be deleted after the UniverseSys, because shutting down the active
// Scene tries to unregister any obstacles with the PathSystem.
delete PathSys();
delete IndoorPathSys();
// The SoundSys must be deleted after the UniverseSys, because shutting down a Scene
// tries to stop its soundtrack.
delete SoundSys();
// The BulletSys must be deleted after the UniverseSys, since OnBulletDeleted
// gets called.
delete BulletSys();
// The PhysicsSys must be deleted after the UniverseSys
delete PhysicsSys();
// Destroy the SceneSystem after UniverseSystem
// TODO: This was because of the old containment system. Is this timing
// still needed?
delete SceneSys();
// Destroy the UISystem after UniverseSystem, because the Mobile
// destructor calls into UISys.
delete UISys();
// The optionSys must be deleted after the UISys, because some UIs check options such as OptionSystem::IsSkipVideo
delete OptionSys();
// Destroy the GraphicsSys last, since lots of stuff depends on Ogre.
delete GraphicsSys();
// Destroy the LogSystem _really_ last, since we should be logging until we finish shutting down.
// And shutting down OgreRoot (from within the GraphicsSystem destructor) requires that we still have a valid Ogre::LogManager,
// which is created and destroyed by the LogSystem.
delete LogSys();
}
bool GameSystem::AreAllSystemsInitialized() const
{
return m_bAllSystemsInitialized;
}
For example, GraphicsSystem::Tick would call the Ogre::Root::renderOneFrame function
Other systems just provide some nice clean functions for the rest of the game to use.
E.g. The SoundSystem just has some nice easy "play me a sound" functions that any other System can call, as needed. Like this:
Code: Select all
void PlaySoundEffect( const String& i_strFile, SoundChannel i_eChannel, float i_fPriority = 1.f, float i_fVolume = 0.5f, float i_fPan = 0.f );
Code: Select all
SoundSys()->PlaySoundEffect( "zap.ogg", Gameplay_SoundChannel );