93 lines
2.9 KiB
C++
93 lines
2.9 KiB
C++
/***************************************************************************
|
|
iraceengine.h -- Interface for any race engine
|
|
|
|
created : Mon Mar 7 19:32:14 CEST 2011
|
|
copyright : (C) 2011 by Jean-Philippe Meuret
|
|
web : http://www.speed-dreams.org
|
|
version : $Id$
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
/** @file
|
|
Interface for any race engine
|
|
@version $Id$
|
|
*/
|
|
|
|
#ifndef __IRACEENGINE__H__
|
|
#define __IRACEENGINE__H__
|
|
|
|
class IUserInterface;
|
|
struct RmInfo;
|
|
class GfRaceManager;
|
|
class GfRace;
|
|
struct CarPitCmd;
|
|
|
|
|
|
class IRaceEngine
|
|
{
|
|
public:
|
|
|
|
virtual void reset() = 0;
|
|
virtual void cleanup() = 0;
|
|
virtual void shutdown() = 0;
|
|
|
|
virtual void setUserInterface(IUserInterface& userItf) = 0;
|
|
|
|
virtual void initializeState(void *prevMenu) = 0;
|
|
virtual void updateState() = 0;
|
|
virtual void applyState(int state) = 0;
|
|
|
|
virtual void selectRaceman(GfRaceManager* pRaceMan, bool bKeepHumans = true) = 0;
|
|
virtual void restoreRace(void* hparmResults) = 0;
|
|
virtual void configureRace(bool bInteractive = true) = 0;
|
|
|
|
virtual void startNewRace() = 0;
|
|
virtual void resumeRace() = 0;
|
|
|
|
virtual void startRace() = 0;
|
|
virtual void abandonRace() = 0;
|
|
virtual void abortRace() = 0;
|
|
virtual void skipRaceSession() = 0;
|
|
virtual void restartRace() = 0;
|
|
|
|
virtual void start() = 0;
|
|
virtual void stop() = 0;
|
|
|
|
virtual bool supportsHumanDrivers() = 0;
|
|
|
|
#ifdef SD_DEBUG
|
|
virtual void step(double dt) = 0;
|
|
#endif
|
|
|
|
virtual void stopPreracePause() = 0;
|
|
virtual void stopCooldown() = 0;
|
|
|
|
virtual GfRace* race() = 0;
|
|
virtual const GfRace* race() const = 0;
|
|
|
|
//! Temporary input / modifiable situation, for commanding the race engine from the outside
|
|
//! Aimed at being removed when dedicated setters are ready.
|
|
virtual struct RmInfo* inData() = 0;
|
|
|
|
//! Output / read-only situation, generated by the race engine for external use.
|
|
virtual const struct RmInfo* outData() const = 0;
|
|
|
|
// WIP : dedicated situation setters, for commanding the race engine from the outside.
|
|
virtual bool setSchedulingSpecs(double fSimuRate, double fOutputRate = 0) = 0;
|
|
virtual void accelerateTime(double fMultFactor) = 0;
|
|
virtual void setPitCommand(int nCarIndex, const struct CarPitCmd* pPitCmd) = 0;
|
|
|
|
};
|
|
|
|
#include <iuserinterface.h>
|
|
|
|
#endif // __IRACEENGINE__H__
|