// $Id: vehicle.h,v 1.3.2.2 2000/05/03 02:25:14 justin Exp $ // $Revision: 1.3.2.2 $ $Author: justin $ $Date: 2000/05/03 02:25:14 $ // //ScryMUD Server Code //Copyright (C) 1998 Ben Greear // //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. // //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU General Public License for more details. // //You should have received a copy of the GNU General Public License //along with this program; if not, write to the Free Software //Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // To contact the Author, Ben Greear: greear@cyberhighway.net, (preferred) // greearb@agcs.com // ///************************* Vehicle *****************************/// #ifndef GRRMUD_VEHICLE_INCLUDE_H #define GRRMUD_VEHICLE_INCLUDE_H #include "room.h" #include "misc.h" #include "misc2.h" class vehicle : public room { protected: bitfield vehicle_flags; /* 0 is_self_guided, 1 is_stealthy, 2 unlimited_fuel, * 3 can_fly, 4 can_climb, 5 can_float, 6 can_dive, * 7 can_see_out (show room descs to passengers) */ Cell<PathCell*> cll; //this will iterate around and around List<PathCell*> path_cells; int ticks_till_next_stop; int in_room; //the room the vehicle is currently in int cur_fuel; int max_fuel; int ticks_between_stops; public: vehicle(); vehicle(int num); virtual ~vehicle(); int isVehicle() { return TRUE; } int isSelfGuided() const; int isStealthy() const; int hasUnlimitedFuel() const; int canFly() const; int canClimb() const; int canFloat() const; int canDive() const; void toggleVehicleFlag(int i) { if ((i >=0) && (i<50)) { vehicle_flags.flip(i); } } void showVehicleFlags(critter& pc) { out_field(vehicle_flags, pc, VEHICLE_FLAGS_NAMES); } void showPaths(critter& pc); void insertPathCell(int index, PathCell* pcell); PathCell* hasPathCell(int path_cell_num); void remPathCell(int path_cell_num); //deletes it from memory void setPathPointer(int index); int isAtDestination(); void advancePathIterator(); void decrementTicksTillNextStop(); int getTicksTillNextStop() const; void setInRoom(int i); void setCurFuel(int i) { cur_fuel = i; } void setMaxFuel(int i) { max_fuel = i; } void setTicksBetweenStops(int i) { ticks_between_stops = i; } String getPassengerMessage(); String getExitDirection(); int getExitNum(); //figure out next destination and go there... int move(int see_bit, int i_th, const String& exit_direction); int move(); //figure direction and call other move function door* findNextExit(); //for non-self-guided vehicles int canEnter(const room* dest, int do_msg) const; virtual void stat(critter& pc); virtual void Clear(); #ifdef USEMYSQL virtual void dbRead(int veh_num, short read_all); #endif virtual void fileRead(ifstream& da_file, short read_all); virtual void Write(ofstream& da_file); virtual void normalize(); /* called after OLC to enforce as much state as * possible. */ };//vehicle #endif