1 /* 2 3 ************************************************************************* 4 5 ArmageTron -- Just another Tron Lightcycle Game in 3D. 6 Copyright (C) 2000 Manuel Moos (manuel@moosnet.de) 7 8 ************************************************************************** 9 10 This program is free software; you can redistribute it and/or 11 modify it under the terms of the GNU General Public License 12 as published by the Free Software Foundation; either version 2 13 of the License, or (at your option) any later version. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program; if not, write to the Free Software 22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 23 24 *************************************************************************** 25 26 */ 27 28 #ifndef ArmageTron_PATH_H 29 #define ArmageTron_PATH_H 30 31 #include "tArray.h" 32 #include "eCoord.h" 33 34 class eHalfEdge; 35 36 class ePath{ 37 public: 38 #ifdef DEBUG 39 static void RenderLast(); // renders the last found path 40 #endif 41 42 friend class eHalfEdge; 43 44 ePath(); 45 ~ePath(); Valid()46 bool Valid() const { return current >= 0 && current < positions.Len(); } CurrentPosition()47 eCoord& CurrentPosition() const { return positions(current); } CurrentOffset()48 eCoord& CurrentOffset() const { return offsets(current); } 49 bool Proceed(); 50 bool GoBack(); 51 52 void Clear(); 53 54 protected: 55 tArray<eCoord> positions; 56 tArray<eCoord> offsets; 57 int current; 58 59 void Add(eHalfEdge *edge); 60 void Add(const eCoord& point); 61 62 }; 63 64 #endif 65