/* * (C) COPYRIGHT Vincent S. Cojot and others 1996-1997 * All Rights Reserved * Licensed Materials - Property of Vincent S. Cojot and others. * Use, duplication or disclosure restricted by Vincent S. Cojot. */ #ifndef __COLLISIONS_H #define __COLLISIONS_H /* ------------------------------------------------*/ /* C'est ici que l'on fait mal a notre pauvre tank qui n'a rien */ /* fait a personne en le faisant rentrer dans des mechants obstacles. */ /* KA-BLAM-BOUM est la valeur retournee par ces fonctions si on rentre */ /* dans des obstacles */ /* ------------------------------------------------*/ /* ------------------------------------------------*/ /* Definitions des fonctions du corps du programme */ /* ------------------------------------------------*/ /* Fonction destinee a se ramener a un espace 40X40. (tank).*/ GLvoid ReduceWorldSize(GLvoid); /* Fonction destinee a se ramener a un espace 40X40. (Missile).*/ GLvoid ReduceMissileWorldSize(GLint Which); /* Fonction pour verifier si on a des chances de rentrer dans un prisme */ /* ou dans un cube. */ GLint VerifyVeryClose(GLint distance); /* Fonction pour verifier si on des chances de rentrer dans le cylindre */ /* central de la scene. */ GLint VerifyClose(GLint distance); /* Fonction pour verifier si on est en dehors des obstacles. (tank). */ GLint VerifyOutOfThisWorld(GLvoid); /* Fonction pour verifier si on est en dehors des obstacles. (Generique). */ GLint VerifyOutOfThisWorldGeneric(GLvoid); /* Fonction pour verifier si on est en dehors des obstacles. (Missile). */ GLint VerifyOutOfThisWorldMissile(GLint Which); /* Fonction pour verifier si on a affaire a un cube ou a un prism */ GLint VerifyEvenOrOdd(GLvoid); /* Fonction determinant la facon dont on rebondit sur le cylindre */ GLvoid BangOnCylinder(GLvoid); /* Fonction determinant la facon dont on rebondit sur un cube */ GLvoid BangOnCube(GLvoid); /* Fonction determinant la facon dont on rebondit sur un prisme */ GLvoid BangOnPrism(GLvoid); /* Fonction de gestion des collisions pour le tank. */ GLvoid VerifierCollision(GLvoid); /* Fonction de determination de la position de depart */ GLint FindStartupPosition(GLvoid); /* Fonction servant a l'affichage de tous les missiles en vol. */ GLvoid MoveMissiles(GLvoid); /* Fonction servant au deplacement du missile et verifiant ses collisions. */ /* Cette fonction sert aussi a gerer les explosions eventuelles des obus */ /* de notre propre Tank. */ GLvoid MoveMyMissile(GLvoid); /* Fonction de gestion de tous les autres Tanks .*/ GLvoid MoveTanks(GLvoid); /* Fonction de gestion des debris des autres Tanks .*/ GLvoid MoveDestroyedTanks(GLvoid); /* Fonction de destruction d'un missile dont on a determine */ /* la collision avec un obstacle ou un tank. */ GLvoid ExplodeMissile(GLint Which, GLint Who); /* Fonction de destruction d'un tank dont on a determine */ /* la collision avec notre missile. Il faut aussi appeler ExplodeMissile*/ /* conjointement avec cette fonction pour faire exploser le missile. */ GLvoid ExplodeTank(GLint Which); /* La fonction CallAnExplosion fait apparaitre toutes les*/ /* explosions necessaires. */ GLvoid CallAllExplosions(GLvoid); /* Fonction d'orientation du missile par rapport au tank grace a l'angle */ /* entre deux vecteurs. */ GLfloat OrienteMissile(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); /* Fonction chargee d'inserer un tank dans la matrice des tanks a la */ /* premiere place disponible. */ GLvoid InsertTank(TANK OneTank); /* Fonction chargee d'inserer un tank detruit dans la matrice des tanks */ /* detruits a la premiere place disponible. */ GLvoid InsertDestroyedTank(TANK OneTank); /* Fonction chargee d'inserer un missile dans la matrice des missiles a la */ /* premiere place disponible. */ GLvoid InsertMissile(MISSILE OneMissile); /* Fonction chargee d'inserer une explosion dans la matrice des explosions */ /* a la premiere place disponible. */ GLvoid InsertExplosion(EXPLOSION OneExplosion); /* ------------------------------------------------*/ /* Ces definitions sont des variables statiques deja definies dans */ /* tank.h pour utilisations par les differents modules du programme. */ /* On retrouve parmi celles-ci, la position en x,z du tank, sa */ /* vitesse longitudinale, sa vitesse anglaire et son orientation */ /* dans le plan du terrain d'evolution. */ /* ------------------------------------------------*/ extern GLfloat scenePosz ; /* Veritable coordonnees Z */ extern GLfloat scenePosx ; /* Veritable coordonnees X */ extern GLfloat sceneAngle ; extern GLfloat RandomscenePosz ; extern GLfloat RandomscenePosx ; extern GLfloat RandomsceneAngle ; extern GLfloat Explosx ; extern GLfloat Explosy ; extern GLfloat Explosz ; extern GLfloat TimeTravel ; extern GLfloat MissileAge ; extern GLint LongSpeed ; extern GLint RotaSpeed ; extern GLint explosion ; extern GLint explosion_count ; extern GLint FlyingMissile ; extern GLint MyFlyingMissile ; extern GLint mode ; extern GLint Network; extern GLint ShowNames; extern GLint Fog; extern TANK OneTank; extern MISSILE OneMissile; extern EXPLOSION OneExplosion; extern TANK OneDestroyedTank; extern MESSAGE InfoMessage; extern GLvoid DisplayInfoMessage(GLvoid); extern GLvoid ResetInfoMessage(GLvoid); extern GLvoid SendMyTankPacket(GLvoid); extern GLvoid SendMyMissilePacket(GLvoid); extern GLvoid SendMyExplosionPacket(GLvoid); extern char OurName[10]; /* ------------------------------------------------*/ /* Grosse Matrice a quatre dimensions contenant toutes les differentes */ /* Vues du missile avec ses textures... */ /* ------------------------------------------------*/ extern GLfloat MissileImages[NB_OF_MISSILE_TEXTURES][MissImageWidth][MissImageHeight][4]; /* ------------------------------------------------*/ /* Grosse Matrice a quatre dimensions contenant toutes les differentes */ /* Frames des explosions avec leurs textures... */ /* ------------------------------------------------*/ extern GLfloat ExplosionImages[NB_OF_EXPL_TEXTURES][ExplImageWidth][ExplImageHeight][4]; /* ------------------------------------------------*/ /* Definitions des matrices globales pour le jeu en reseau. */ /* On y trouve les definitions des structures de donnees de */ /* tous les tanks, missiles et explosions ainsi que des variables */ /* indiquant le nombre de ces objets. */ /* ------------------------------------------------*/ extern TANK Tanks[MAX_TANKS]; extern MISSILE Missiles[MAX_MISSILES]; extern EXPLOSION Explosions[MAX_EXPLOSIONS]; extern TANK DestroyedTanks[MAX_DESTROYED_TANKS]; extern GLint explosion; extern GLint tanks; extern GLint FlyingMissile; extern GLint destroyed; GLfloat RscenePosz ; /* Coordonnees Z relative, -20 < Rz < 20 */ GLfloat RscenePosx ; /* Coordonnees X relative, -20 < Rx < 20 */ GLfloat Cdistance = 0 ; /* Distance du mobile au centre du monde. */ GLfloat RCdistance = 0; /* Distance du mobile au centre de la zone */ /* 40 x 40 dans laquelle il evolue. */ GLfloat Pdistance = 0; /* Distance du centre de la zone a la*/ /* trajectoire du mobile. */ GLfloat Odistance = 0; /* Distance jusqu'au point de collision. */ GLfloat res_temp, Vlength /* Variable tampon et autres. */ , Theta, ThetaSecond; GLint i,j,a; GLint WasInside; /* Variable determinant si le tank vient */ /* d'effectuer une collision */ extern struct timeval temps2; /* Variable de type Timeval */ /* destinee a recevoir les informations */ /* de getttimeofday. */ #endif