2 Copyright (C) 2004-2011 Parallel Realities
3 Copyright (C) 2011-2015 Perpendicular Dimensions
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 See the GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
35 if ((think > 0) || (!active))
43 if ((think > 0) || (!active))
62 bool Train::isMoving()
70 bool Train::waitsForPlayer()
72 if ((active) || (pause != 0))
78 void Train::setName(const char *name)
80 strlcpy(this->name, name, sizeof this->name);
83 void Train::set(int startX, int startY, int endX, int endY, int pause, bool fromStart)
85 this->startX = startX;
86 this->startY = startY;
93 Math::calculateSlope(startX, startY, endX, endY, &dx, &dy);
95 if ((dx != 0) && (dy != 0))
96 debug(("WARNING: TRAIN '%s' is not straight! - %d %d %d %d\n", name, startX, startY, endX, endY));
100 this->x = this->startX;
101 this->y = this->startY;
106 this->x = this->endX;
107 this->y = this->endY;
108 if (type == TR_TRAIN)
117 bool Train::openClose()
119 Math::limitInt(&(--think), 0, 9999);
123 if ((x > startX) || (y > startY))
128 if ((x == startX) && (y == startY))
136 if ((x < endX) || (y < endY))
141 if ((x == endX) && (y == endY))
163 if (((x >= endX) && (y >= endY)) || ((x <= startX) && (y <= startY)))
173 if ((x <= startX) && (y <= startY) && (waitAtStart))
179 if ((x >= endX) && (y >= endY) && (!waitAtStart))
188 int Train::getPause()