Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

cGame_World Class Reference

contient le BSP qui décrit la zone de jeu et les fonctions membres sur la zone de jeu More...

#include <game_bsp.h>

List of all members.

Public Member Functions

 cGame_World ()
 constructeur

 ~cGame_World ()
 destructeur

void Print_Leaves ()
 affiche ds std::cout la liste des feuilles et leurs infos

bool Find_Path (cPoint2D &pA, cPoint2D &pB, std::vector< cPoint2D > &Path)
 met ds Path le chemin de pA à pB

bool Do_Ball_Intersect_Walls (int x, int y, int r)
 retourne true si la boule de centre (x,y) de rayon r intersecte un mur du monde

bool Do_Segment_Intersect_Walls (cSeg &seg, cPoint2D &p_inter, int square_test_range)
 retourne vrai si le segment intersecte au moins un mur

bool Do_Segment_Intersect_Walls (cSeg &seg, cPoint2D &p_inter)
 meme chose mais test le segment sur toute la longueur

void Decorate ()
 decore l'arbre bsp et crée les liste de murs et de portails


Public Attributes

cHV_BSP_Tree My_BSP
 l'arbre BSP qui contient la monde


Static Public Attributes

cPositive_Rectangle Ecran
 rectangle qui represente la zone de jeu entiere


Private Member Functions

void Decorate_With_Areas ()
 parcours l'arbre et remplace chaque feuille par un cSquare_Area

void Decorate_With_Areas (cHV_Node *node, cSquare_Area *area)
 remplace les feuilles du sous-arbre 'node' par un cSquare_Area

void Decorate_With_Walls_And_Portals ()
 parcours la liste des cSquare_Areas et ajoute a chacune ses murs et ses portals

cPortalDeclare_Portal (cSquare_Area *area, cHV_Seg &seg)
 declare au jeu l'existence d'un portal ( qui a peut-etre déja été créé )

void Add_Wall_And_Portals (cSquare_Area *area, cHV_Seg &seg)
 ajoute au jeu les murs et les portals contenu dans un coté d'une piece

void Creates_And_Add_Portals (cSquare_Area *area, cHV_Seg &seg, cHV_Seg &wall)
 ajoute au jeu les portals qui decoulent de l'ajout d'un mur au bord de cette piece

void Split_Portal (cPortal *p, cHV_Seg &seg)
 divise le portail 'p' selon le segment 'seg'

void Manage_Paralell_Portals (void)
 créee un noeud entre deux portails paralelles d'un mur d'une meme piece


Private Attributes

std::vector< cSquare_Area * > List_Areas
 la liste des pieces du jeu

std::vector< cPortal * > List_Portals
 la liste des portals qui sont les noeuds pour le A* algorithm

int N_Leaves
 nombres de pieces ds le jeu

int N_Portals
 nombre de portals

bool bDecorated_With_Areas
 indique que les feuilles de l'arbre ont ete insérées

cA_Star_Search Path_Finder
 class pour chercher un chemin dans un graphe ( A* )


Detailed Description

contient le BSP qui décrit la zone de jeu et les fonctions membres sur la zone de jeu

Definition at line 101 of file game_bsp.h.


Constructor & Destructor Documentation

cGame_World::cGame_World  ) 
 

constructeur

Definition at line 206 of file game_bsp.cpp.

References bDecorated_With_Areas, N_Leaves, and N_Portals.

cGame_World::~cGame_World  ) 
 

destructeur

Definition at line 215 of file game_bsp.cpp.

References bDecorated_With_Areas, List_Areas, List_Portals, N_Leaves, and N_Portals.


Member Function Documentation

void cGame_World::Add_Wall_And_Portals cSquare_Area area,
cHV_Seg seg
[private]
 

ajoute au jeu les murs et les portals contenu dans un coté d'une piece

'area' : area à laquelle on va ajouter les murs et portals trouvés
'seg' : segment dans lequel on cherche les murs et les portals
'seg' doit etre un coté de 'area' !!!

Definition at line 403 of file game_bsp.cpp.

References cSquare_Area::Add_Wall(), Add_Wall_And_Portals(), cBSP_Node< Divider_Type >::Back, Creates_And_Add_Portals(), Declare_Portal(), cBSP_Node< Divider_Type >::Divider, cBSP_Node< Divider_Type >::Front, cHV_Seg::Get_Intersection(), cSeg::Get_Middle(), cSeg::Get_p0(), cSeg::Get_p1(), My_BSP, cHV_Seg::Set(), and cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Where_Is().

Referenced by Add_Wall_And_Portals(), and Decorate_With_Walls_And_Portals().

void cGame_World::Creates_And_Add_Portals cSquare_Area area,
cHV_Seg seg,
cHV_Seg wall
[private]
 

ajoute au jeu les portals qui decoulent de l'ajout d'un mur au bord de cette piece

'area' : piece etudiée
'seg' : cote de la piece etudié
'wall' : segment de mur contenu dans 'seg'
on va generer les portals qui sont des deux cotés de 'wall' s'ils existent !

Definition at line 366 of file game_bsp.cpp.

References Creates_And_Add_Portals(), Declare_Portal(), cSeg::Get_p0(), cSeg::Get_p1(), and cHV_Seg::Set().

Referenced by Add_Wall_And_Portals(), and Creates_And_Add_Portals().

cPortal * cGame_World::Declare_Portal cSquare_Area area,
cHV_Seg seg
[private]
 

declare au jeu l'existence d'un portal ( qui a peut-etre déja été créé )

'seg' : segment porteur du nouveau portal
'area' : une des deux cSquare_Area qui bordent ce portal
return : l'adresse de l'objet cPortal correspondant

Definition at line 447 of file game_bsp.cpp.

References cPortal::Add_Area(), cSquare_Area::Add_Portal(), cPortal::Area2, Declare_Portal(), cHV_Seg::Get_Complementaires(), cSeg::Get_p0(), cSeg::Get_p1(), List_Portals, N_Portals, cPortal::Segment, and Split_Portal().

Referenced by Add_Wall_And_Portals(), Creates_And_Add_Portals(), and Declare_Portal().

void cGame_World::Decorate  ) 
 

decore l'arbre bsp et crée les liste de murs et de portails

Definition at line 764 of file game_bsp.cpp.

References Decorate_With_Areas(), Decorate_With_Walls_And_Portals(), and Manage_Paralell_Portals().

Referenced by cGame_Manager::Load_Level(), Test_Intersections_1(), Test_Intersections_2(), Test_Path_Finder_1(), Test_Path_Finder_2(), Test_Path_Finder_3(), Test_Path_Finder_4(), and Test_Path_Finder_5().

void cGame_World::Decorate_With_Areas cHV_Node node,
cSquare_Area area
[private]
 

remplace les feuilles du sous-arbre 'node' par un cSquare_Area

'area' contient un pointeur vers un cSquare_Area qui represente ( node->front union node->back )
fonction recursive

Definition at line 260 of file game_bsp.cpp.

References cBSP_Node< Divider_Type >::Back, Decorate_With_Areas(), cBSP_Node< Divider_Type >::Divider, cBSP_Node< Divider_Type >::Front, List_Areas, N_Leaves, cBSP_Node< Divider_Type >::Set_Id(), and cSquare_Area::split().

void cGame_World::Decorate_With_Areas  )  [private]
 

parcours l'arbre et remplace chaque feuille par un cSquare_Area

met dans 'List_Areas' la liste des areas du jeu

Definition at line 241 of file game_bsp.cpp.

References bDecorated_With_Areas, cHV_Node, Ecran, cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Get_Root(), My_BSP, N_Leaves, and cBSP_Node< Divider_Type >::Set_Id().

Referenced by Decorate(), and Decorate_With_Areas().

void cGame_World::Decorate_With_Walls_And_Portals  )  [private]
 

parcours la liste des cSquare_Areas et ajoute a chacune ses murs et ses portals

met dans 'List_Portals' la liste des portals du jeu
parcours toutes les pieces, et pour chaque coté de chaque piece,
ajoute au jeu les murs et les portals de ce coté

Definition at line 316 of file game_bsp.cpp.

References Add_Wall_And_Portals(), bDecorated_With_Areas, and List_Areas.

Referenced by Decorate().

bool cGame_World::Do_Ball_Intersect_Walls int  x,
int  y,
int  r
 

retourne true si la boule de centre (x,y) de rayon r intersecte un mur du monde

retourne false si le fichier est introuvable ou non valide

Definition at line 679 of file game_bsp.cpp.

References Do_Ball_Intersect_Walls(), cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::In_Which_Leaf_Is(), cSquare_Area::List_Walls, and My_BSP.

Referenced by Do_Ball_Intersect_Walls(), cGame_Manager::Is_Free_Place(), cUnit::Move(), and Test_Intersections_2().

bool cGame_World::Do_Segment_Intersect_Walls cSeg seg,
cPoint2D p_inter
 

meme chose mais test le segment sur toute la longueur

Definition at line 699 of file game_bsp.cpp.

References Do_Segment_Intersect_Walls(), and cSeg::Get_Square_Length().

bool cGame_World::Do_Segment_Intersect_Walls cSeg seg,
cPoint2D p_inter,
int  square_test_range
 

retourne vrai si le segment intersecte au moins un mur

s'il y a intersection, le point d'intersection est mis ds p_inter
ne test que la partie du segment a une distance au carré < square_test_range

Definition at line 707 of file game_bsp.cpp.

References cBSP_Node< Divider_Type >::Back, cHV_Seg::Contient_Point(), cBSP_Node< Divider_Type >::Divider, Do_Segment_Intersect_Walls(), cBSP_Node< Divider_Type >::Front, cSeg::Get_p0(), cSeg::Get_p1(), cPoint2D::Get_X(), cPoint2D::Get_Y(), cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::In_Which_Leaf_Is(), My_BSP, cIncremental_Bresenham::Reset(), cHV_Seg::Set(), cIncremental_Bresenham::Step(), cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::Where_Is(), cPoint2D::X, and cPoint2D::Y.

Referenced by Do_Segment_Intersect_Walls(), and Test_Intersections_1().

bool cGame_World::Find_Path cPoint2D pA,
cPoint2D pB,
std::vector< cPoint2D > &  Path
 

met ds Path le chemin de pA à pB

retourne vrai si un chemin a ete trouvé, false sinon

Definition at line 609 of file game_bsp.cpp.

References cPortal::Add_Voisin(), cA_Star_Search::Find_Path(), Find_Path(), cA_Star_Node::Get_List_Neighbors(), cPoint2D::Get_X(), cPoint2D::Get_Y(), cBSP_Tree< cItem, cBSP_Node, cDivider_Type >::In_Which_Leaf_Is(), My_BSP, Path_Finder, cPortal::Remove_Voisin(), cPoint2D::X, and cPoint2D::Y.

Referenced by Find_Path(), Test_Path_Finder_1(), Test_Path_Finder_2(), Test_Path_Finder_3(), Test_Path_Finder_4(), Test_Path_Finder_5(), and cEnnemy::Update_Path().

void cGame_World::Manage_Paralell_Portals void   )  [private]
 

créee un noeud entre deux portails paralelles d'un mur d'une meme piece

le noeud est placé a distance egale des deux portails, décalé un peu dans la piece
cela permet a une unité d'aller d'un portail a l'aute en evitant le mur

Definition at line 352 of file game_bsp.cpp.

References List_Areas.

Referenced by Decorate().

void cGame_World::Print_Leaves  ) 
 

affiche ds std::cout la liste des feuilles et leurs infos

Definition at line 304 of file game_bsp.cpp.

References List_Areas.

void cGame_World::Split_Portal cPortal p,
cHV_Seg seg
[private]
 

divise le portail 'p' selon le segment 'seg'

precondition : 'seg' est contenu dans le portail
il ya les cas suivants :
suivant la position de 'seg' dans 'p', il faut modifier 'p', créer 1 ou 2 nouveaux portails

Definition at line 536 of file game_bsp.cpp.

References cSquare_Area::Add_Portal(), cPortal::Area1, cHV_Seg::Contient(), cHV_Seg::Get_Complementaires(), cSeg::Get_Middle(), cSeg::Get_p0(), cSeg::Get_p1(), List_Portals, N_Portals, cA_Star_Node::Position, cPortal::Segment, cHV_Seg::Set(), and Split_Portal().

Referenced by Declare_Portal(), and Split_Portal().


Member Data Documentation

bool cGame_World::bDecorated_With_Areas [private]
 

indique que les feuilles de l'arbre ont ete insérées

Definition at line 142 of file game_bsp.h.

Referenced by cGame_World(), Decorate_With_Areas(), Decorate_With_Walls_And_Portals(), and ~cGame_World().

cPositive_Rectangle cGame_World::Ecran [static]
 

rectangle qui represente la zone de jeu entiere

Definition at line 135 of file game_bsp.h.

Referenced by Decorate_With_Areas().

std::vector<cSquare_Area*> cGame_World::List_Areas [private]
 

la liste des pieces du jeu

Definition at line 138 of file game_bsp.h.

Referenced by Decorate_With_Areas(), Decorate_With_Walls_And_Portals(), cGame_World_Debug_Displayer::Display_Areas(), Manage_Paralell_Portals(), Print_Leaves(), and ~cGame_World().

std::vector<cPortal*> cGame_World::List_Portals [private]
 

la liste des portals qui sont les noeuds pour le A* algorithm

Definition at line 139 of file game_bsp.h.

Referenced by Declare_Portal(), cGame_World_Debug_Displayer::Display_Graph(), Split_Portal(), and ~cGame_World().

cHV_BSP_Tree cGame_World::My_BSP
 

l'arbre BSP qui contient la monde

Definition at line 134 of file game_bsp.h.

Referenced by Add_Wall_And_Portals(), Decorate_With_Areas(), cGame_Manager::Display(), Do_Ball_Intersect_Walls(), Do_Segment_Intersect_Walls(), Find_Path(), cLevel_Loader::Read_Wall(), and cBSP_Loader::Read_Wall().

int cGame_World::N_Leaves [private]
 

nombres de pieces ds le jeu

Definition at line 140 of file game_bsp.h.

Referenced by cGame_World(), Decorate_With_Areas(), and ~cGame_World().

int cGame_World::N_Portals [private]
 

nombre de portals

Definition at line 141 of file game_bsp.h.

Referenced by cGame_World(), Declare_Portal(), Split_Portal(), and ~cGame_World().

cA_Star_Search cGame_World::Path_Finder [private]
 

class pour chercher un chemin dans un graphe ( A* )

Definition at line 143 of file game_bsp.h.

Referenced by Find_Path().


The documentation for this class was generated from the following files:
Generated on Fri May 21 19:22:37 2004 for LIBELL by doxygen 1.3.7