TheShip Class Reference

#include <TheShip.h>

Inheritance diagram for TheShip:

SpaceShip List of all members.

Public Member Functions

 TheShip (SceneManager *SceneMgr)
 On cree un Node pour le Ship, et un plan correspondant au plancher.
virtual ~TheShip ()
 Destructeur.
long getTypeID (void) const
 Renvoie un ID permettant d'identifier l'objet UserDefined de type "The Ship".
void addToScene (Vector3 Position)
 Fait apparaitre le Vaisseau.
bool frameStarted (const FrameEvent &evt)
 Gestion du vaisseau.
void loadInitialSituation ()
 Charge la situation initiale.
ShipLevelgetShipLevel (int Number)
 Renvoie un pointer sur un Level Object.
Real detectGround (Vector3 Origin)
 On determine la distance verticale entre la camera (Origin) et le plan "Floor".
Real detectFloorAltitude (Vector3 Origin)
 Cette fonctin renvoie l'altitude du plan "Floor" le plus proche.
void detectRoom (SceneNode *Origin)
 On détermine dans quelle Room se trouve le point fourni en paramètre.
void createFloor (int Level)
 Cree un plan (pour servir de plancher au joueurs et NPC).
void setFloorLevel (int Level)
 On fait descendre l'ascenseur (le floor).
Real getFloorYPosition ()
 Renvoie la position en Y du Floor.
bool openDoor (Door *Porte)
 On envoie l'ordre au Level d'ouvrir une porte.
bool openDoor (String DoorName)
 On envoie l'ordre au Level d'ouvrir une porte.
SceneNode * findNextWaypointTo (SceneNode *FromNode, SceneNode *ToNode)
 Détermination du meilleur itinéraire.
SceneNode * getClosestWaypoint (Vector3 CurrentPos)
 Renvoie le Waypoint le plus proche de la position courante.
bool doClosestWaypointAction (Vector3 CurrentPos)
 Cette fonctin effectue l'action associée au Waypoint le plus proche de la position fournie.
RoomgetActiveRoom ()
 Renvoie la pièce où se trouve la caméra.
void showActiveRoom (SceneNode *Origin)
 Affiche la pièce où se trouve la caméra .
void showActiveRoom (String RoomName)
 Affiche la pièce où se trouve la caméra.
RoomgetRoom (String RoomName)
 Retrouve une Room par son nom. Renvoie NULL si la piece n'existe pas.
String getStatus ()
 Renvoie le status du vaisseau sous forme de chaine XML.
short getAlertLevel ()
 Renvoie le niveau d'alert général sur le vaisseau (0 = normal).
void setRedLight (bool ON)
 Les lumières principales de toutes les pieces du vaisseau passent au rouge.
void setAlertLevel (short alert)
 Fixe le niveau d'alerte général sur le vaisseau. (0=normal).
int getAmbiantTemperature ()
 Renvoie la Temperature Ambiante dans le vaisseau (Kelvin).
Real getCurRadiation ()
 Renvoie le taux de radiation actuel à l'interieur du vaisseau (après filtrage coque).
Real getMaxRadiation ()
 Renvoie le taux de radiation MAX à l'interieur du vaisseau (depuis le début de la partie).
void loadObject ()
 Charge les paramètres initiaux du vaisseau.
void updateElements_Day ()
 Met à jour les éléments qui consomment sur une base quotidienne.
void updateElements_Hour (Real ElapsedHours)
 Met à jour les éléments qui consomment sur une base continue.
void addPassenger ()
 Ajoute un ShipElement consommateur de resources dans le vaisseau.
void initOISSystem ()
 Initialize the OIS library (for Joystick input).
void fly (Real ElapsedHours)
 Le vaisseau avance.
void _setPosition (Real X, Real Y, Real Z)
 Positionne le Ship.
Vector3 _getPosition ()
 Renvoie la position du Ship.
void _showWPnetwork ()
 Fonction de debug: affiche le réseau de Waypoints.
Vector3 _getCamPosition (int Level)
 Renvoie la position initiale d la camera dans ce level (debug).
void _showAllLightPosition ()
 Debug: affiche la position de toutes le lumières.

Static Public Member Functions

static TheShipgetSingletonPtr (void)
 Override the Singleton Class method.

Public Attributes

ShipElementmHydProdSystem1
 Fabrication de plasma a partir de l'Hydrogène de l'espace.
ShipElementmHydProdSystem2
 Fabrication de plasma a partir de l'Hydrogène de l'espace.
ShipElementmEnergyProdSystem
 Système de production d'Energie à partir du Plasma.
ShipElementmAirProdSystem
 Système de fabrication d'air respirable.
ShipElementmFoodProdSystem
 Système de fabrication de provisions alimentaire.
ShipElementmWaterProdSystem
 Système de fabrication de d'eau douce.
ShipElementmHybernationSystem
 TODO.
ShipElementmAntigravitySystem
 TODO.
ShipEnginemEngine1
 Produit de la poussée à partir de plasma.
ShipEnginemEngine2
 Produit de la poussée à partir de plasma.
ShipElementmReactor
 Utile pour transformer la poussée en accélation ???
Real mCurRadiation
 Radiation Ambiante (en rad/jour).
Real mMaxRadiation
 Radiation Ambiante Max (en rad/jour).
Real mExternalTemp
 TODO: Température Exterieure.
TextListmAlertBook
 Journal des Alertes.
TextListmLogBook
 Journal de Bord.
TextListmCrewBook
 Journal d'équipage.
TextListmMissionBook
 Journal des missions.
ShipLightmSpot1
 Les projecteurs exterieurs.
ShipLightmSpot2
 Les projecteurs exterieurs.

Protected Member Functions

OIS::JoyStick * getJoyStick ()
 Renvoie un pointeur sur le Joystick.
void readJoyStick (Real elapsedTime)
 Gestion des mouvements du joystick.
bool buttonPressed (const OIS::JoyStickEvent &e, int buttonId)
 Callback OIS: Cette fonction est appelée quand un bouton du Joystick est pressé.
bool buttonReleased (const OIS::JoyStickEvent &e, int buttonId)
 Callback OIS: Cette fonction est appelée quand un bouton du Joystick est relaché.
bool axisMoved (const OIS::JoyStickEvent &e, int AxisId)
 Callback OIS: Cette fonction est appelée quand le Joystick est bougé.
bool povMoved (const OIS::JoyStickEvent &e, int PovId)
 Callback OIS: Cette fonction est appelée quand le TopHat est bougé.

Protected Attributes

OIS::JoyStick * mJoyStick
bool mJoyDisabled
SceneNode * mFloorNode
 Le niveau du sol pour la camera.
ShipLevelmLevels [MAX_LEVELS]
 Le vaisseau comporte MAX_LEVELS étages.
RoommActiveRoom
 Piece dans laquelle se trouve la camera.
WaypointNetworkmShipNetwork
 Le réseau de waypoints du vaisseau.
ParticleSystem * mSpaceDust
 Source de particules (SpaceDust).
SceneNode * mParticleNode
 Node pour la sources des particules.
Real mDelayDoorClosed
 Delai restant avant l'ordre de fermeture des portes.
short mAlertLevel
 Niveaux d'alerte. 0=normal. 2=collision 4=captain 5=evacuation Degre d'alerte.
int mAmbiantTemperature
 Temperature ambiante dans le vaisseau (Kelvin).
bool mPiloting
 VRAI si le joystick est actif.
ShipElementmPassenger1
ShipElementmPassenger2

Constructor & Destructor Documentation

TheShip::TheShip SceneManager *  SceneMgr  ) 
 

On cree un Node pour le Ship, et un plan correspondant au plancher.

On cree les differents niveaux qui composent le ship

TODO: A ajuster. Produit 5 moles par heure (=120 par jour)

1 mole = 22 litres de gaz

Produit 24 MW par jour

Air Prod = 10 m3/jour/pers (reserve=21 jours à 8)

Water Prod= 5 litre/jour/pers (reserve=14 jours à 8)

Food Prod = 3 repas/jour/pers (reserve= 4 mois à 8)

Hibernator = ne produit rien (pas de reserve)

Antigrav = ne produit rien (pas de reserve)

Engine 1 et 2 = produisent de la poussée

On atteint le max en 1 unité de temps

Système de Turbines = produit de l'accélération

TheShip::~TheShip  )  [virtual]
 

Destructeur.


Member Function Documentation

Vector3 TheShip::_getCamPosition int  Level  ) 
 

Renvoie la position initiale d la camera dans ce level (debug).

Vector3 TheShip::_getPosition  ) 
 

Renvoie la position du Ship.

void TheShip::_setPosition Real  X,
Real  Y,
Real  Z
 

Positionne le Ship.

void TheShip::_showAllLightPosition  ) 
 

Debug: affiche la position de toutes le lumières.

void TheShip::_showWPnetwork  ) 
 

Fonction de debug: affiche le réseau de Waypoints.

void TheShip::addPassenger  ) 
 

Ajoute un ShipElement consommateur de resources dans le vaisseau.

Un passager ne produit rien, mais il consomme:

  • 5 litres d'oxygène par minute = 300 litres par heure = 0.3 m3/heure
  • 5 litres d'eau par jour.
  • 3 repas par jour.

void TheShip::addToScene Vector3  Position  ) 
 

Fait apparaitre le Vaisseau.

bool TheShip::axisMoved const OIS::JoyStickEvent &  e,
int  AxisId
[protected]
 

Callback OIS: Cette fonction est appelée quand le Joystick est bougé.

Inactif, car on n'est pas en mode bufferisé)

bool TheShip::buttonPressed const OIS::JoyStickEvent &  e,
int  buttonId
[protected]
 

Callback OIS: Cette fonction est appelée quand un bouton du Joystick est pressé.

button 0 = tir button 3 = change weapon TODO : configuration des boutons

bool TheShip::buttonReleased const OIS::JoyStickEvent &  e,
int  buttonId
[protected]
 

Callback OIS: Cette fonction est appelée quand un bouton du Joystick est relaché.

Inactif, car on n'est pas en mode bufferisé)

void TheShip::createFloor int  Level  ) 
 

Cree un plan (pour servir de plancher au joueurs et NPC).

Real TheShip::detectFloorAltitude Vector3  Origin  ) 
 

Cette fonctin renvoie l'altitude du plan "Floor" le plus proche.

Parameters:
Origin L'origine correspond à des coordonnées par rapport au vaisseau (mShipNode).
TODO: attention à la précision des Real

Real TheShip::detectGround Vector3  Origin  ) 
 

On determine la distance verticale entre la camera (Origin) et le plan "Floor".

void TheShip::detectRoom SceneNode *  Origin  ) 
 

On détermine dans quelle Room se trouve le point fourni en paramètre.

La fonction ne renvoie rien, mais met à jour mActiveRoom.

Parameters:
Origin Coordonnées du point, relatives au Ship.

bool TheShip::doClosestWaypointAction Vector3  CurrentPos  ) 
 

Cette fonctin effectue l'action associée au Waypoint le plus proche de la position fournie.

Returns:
le resultat de l'action demandée. TRUE = l'action s'est bien passée FALSE= l'action s'est mal passée

SceneNode * TheShip::findNextWaypointTo SceneNode *  FromNode,
SceneNode *  ToNode
 

Détermination du meilleur itinéraire.

void TheShip::fly Real  ElapsedHours  ) 
 

Le vaisseau avance.

On applique une translation du vecteur vitesse mSpeedVector (calculé précédement) au vaisseau (ou plus exactement à la galaxie), et on active un flux de particules donnant une illusion de vitesse. TODO : appliquer une fraction du vecteur vitesse en fonction du framerate. (fait en amont?)

See also:
updateElements_Hour

bool TheShip::frameStarted const FrameEvent &  evt  ) 
 

Gestion du vaisseau.

Room * TheShip::getActiveRoom  ) 
 

Renvoie la pièce où se trouve la caméra.

short TheShip::getAlertLevel  ) 
 

Renvoie le niveau d'alert général sur le vaisseau (0 = normal).

int TheShip::getAmbiantTemperature  ) 
 

Renvoie la Temperature Ambiante dans le vaisseau (Kelvin).

SceneNode * TheShip::getClosestWaypoint Vector3  CurrentPos  ) 
 

Renvoie le Waypoint le plus proche de la position courante.

Real TheShip::getCurRadiation  ) 
 

Renvoie le taux de radiation actuel à l'interieur du vaisseau (après filtrage coque).

Real TheShip::getFloorYPosition  ) 
 

Renvoie la position en Y du Floor.

OIS::JoyStick * TheShip::getJoyStick  )  [protected]
 

Renvoie un pointeur sur le Joystick.

Real TheShip::getMaxRadiation  ) 
 

Renvoie le taux de radiation MAX à l'interieur du vaisseau (depuis le début de la partie).

Room * TheShip::getRoom String  RoomName  ) 
 

Retrouve une Room par son nom. Renvoie NULL si la piece n'existe pas.

ShipLevel * TheShip::getShipLevel int  Number  ) 
 

Renvoie un pointer sur un Level Object.

TheShip * TheShip::getSingletonPtr void   )  [static]
 

Override the Singleton Class method.

String TheShip::getStatus  ) 
 

Renvoie le status du vaisseau sous forme de chaine XML.

TODO: gerer le status des autres levels

long TheShip::getTypeID void   )  const
 

Renvoie un ID permettant d'identifier l'objet UserDefined de type "The Ship".

void TheShip::initOISSystem  ) 
 

Initialize the OIS library (for Joystick input).

void TheShip::loadInitialSituation  ) 
 

Charge la situation initiale.

void TheShip::loadObject  ) 
 

Charge les paramètres initiaux du vaisseau.

TODO: Charger aussi SpaceShip:loadObject

bool TheShip::openDoor String  DoorName  ) 
 

On envoie l'ordre au Level d'ouvrir une porte.

Cette fonction n'étant pas utilisée par le player, mais plus par les NPC, on ne fait pas apparaitre toutes les sections de l'ascenseur.

TODO: le cas d'une porte d'ascenseur n'est pas géré...

bool TheShip::openDoor Door Porte  ) 
 

On envoie l'ordre au Level d'ouvrir une porte.

Cette function est plutot utilisée par le player.

bool TheShip::povMoved const OIS::JoyStickEvent &  e,
int  PovId
[protected]
 

Callback OIS: Cette fonction est appelée quand le TopHat est bougé.

La variable e.state.mPOV prend une valeur différente pour chacune des 9 positions possibles du hat: (+ des valeurs parasites par moment)

  • centre = -1
  • haut = 000
  • haut/droit= 4500
  • droite = 9000
  • bas/droit = 13500
  • bas = 18000
  • bas/gauche= 22500
  • gauche = 27000
  • haut/gche = 31500 /* --------------------------------------------------------------------------

void TheShip::readJoyStick Real  elapsedTime  )  [protected]
 

Gestion des mouvements du joystick.

Axis 0 : Joystick principal (stick) (avant/arriere=Y - lateral=X) Axis 1 : Rotationnel (Z only) Les valeurs sont normalement comprises entre -32767 et 32768. Pour éviter des variations, le joystick doit être étaloné avant de lancer le jeu. Cette fonction fait aussi bouger le mShipNode (en rotation uniquement)

void TheShip::setAlertLevel short  alert  ) 
 

Fixe le niveau d'alerte général sur le vaisseau. (0=normal).

void TheShip::setFloorLevel int  Level  ) 
 

On fait descendre l'ascenseur (le floor).

void TheShip::setRedLight bool  ON  ) 
 

Les lumières principales de toutes les pieces du vaisseau passent au rouge.

void TheShip::showActiveRoom String  RoomName  ) 
 

Affiche la pièce où se trouve la caméra.

void TheShip::showActiveRoom SceneNode *  Origin  ) 
 

Affiche la pièce où se trouve la caméra .

Ceci ne fonctionne pas au tout debut du jeu, car les mesh des rooms ne sont pas encore tous forcement rendus.

TODO: Le problème c'est que ca active aussi tous les sons...

void TheShip::updateElements_Day  ) 
 

Met à jour les éléments qui consomment sur une base quotidienne.

void TheShip::updateElements_Hour Real  ElapsedHours  ) 
 

Met à jour les éléments qui consomment sur une base continue.

Acceleration = Force / Masse

VecteurAccélération = Accelération * VecteurDirection

VecteurVitesse = VecteurVitesseInitiale + VecteurAccélération * DeltaTemps

TODO : les autres elements du vaisseau


Member Data Documentation

Room* TheShip::mActiveRoom [protected]
 

Piece dans laquelle se trouve la camera.

ShipElement* TheShip::mAirProdSystem
 

Système de fabrication d'air respirable.

TextList* TheShip::mAlertBook
 

Journal des Alertes.

short TheShip::mAlertLevel [protected]
 

Niveaux d'alerte. 0=normal. 2=collision 4=captain 5=evacuation Degre d'alerte.

int TheShip::mAmbiantTemperature [protected]
 

Temperature ambiante dans le vaisseau (Kelvin).

ShipElement* TheShip::mAntigravitySystem
 

TODO.

TextList* TheShip::mCrewBook
 

Journal d'équipage.

Real TheShip::mCurRadiation
 

Radiation Ambiante (en rad/jour).

Real TheShip::mDelayDoorClosed [protected]
 

Delai restant avant l'ordre de fermeture des portes.

ShipElement* TheShip::mEnergyProdSystem
 

Système de production d'Energie à partir du Plasma.

ShipEngine* TheShip::mEngine1
 

Produit de la poussée à partir de plasma.

ShipEngine* TheShip::mEngine2
 

Produit de la poussée à partir de plasma.

Real TheShip::mExternalTemp
 

TODO: Température Exterieure.

SceneNode* TheShip::mFloorNode [protected]
 

Le niveau du sol pour la camera.

ShipElement* TheShip::mFoodProdSystem
 

Système de fabrication de provisions alimentaire.

ShipElement* TheShip::mHybernationSystem
 

TODO.

ShipElement* TheShip::mHydProdSystem1
 

Fabrication de plasma a partir de l'Hydrogène de l'espace.

ShipElement* TheShip::mHydProdSystem2
 

Fabrication de plasma a partir de l'Hydrogène de l'espace.

bool TheShip::mJoyDisabled [protected]
 

OIS::JoyStick* TheShip::mJoyStick [protected]
 

ShipLevel* TheShip::mLevels[MAX_LEVELS] [protected]
 

Le vaisseau comporte MAX_LEVELS étages.

TextList* TheShip::mLogBook
 

Journal de Bord.

Real TheShip::mMaxRadiation
 

Radiation Ambiante Max (en rad/jour).

TextList* TheShip::mMissionBook
 

Journal des missions.

SceneNode* TheShip::mParticleNode [protected]
 

Node pour la sources des particules.

ShipElement* TheShip::mPassenger1 [protected]
 

ShipElement* TheShip::mPassenger2 [protected]
 

bool TheShip::mPiloting [protected]
 

VRAI si le joystick est actif.

ShipElement* TheShip::mReactor
 

Utile pour transformer la poussée en accélation ???

WaypointNetwork* TheShip::mShipNetwork [protected]
 

Le réseau de waypoints du vaisseau.

ParticleSystem* TheShip::mSpaceDust [protected]
 

Source de particules (SpaceDust).

ShipLight* TheShip::mSpot1
 

Les projecteurs exterieurs.

ShipLight* TheShip::mSpot2
 

Les projecteurs exterieurs.

ShipElement* TheShip::mWaterProdSystem
 

Système de fabrication de d'eau douce.


The documentation for this class was generated from the following files:
Generated on Mon Mar 27 21:33:16 2006 for Long Forgotten Earth by  doxygen 1.4.6-NO