summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-06-05 12:43:41 +0000
committertron <tron@openttd.org>2006-06-05 12:43:41 +0000
commit098e54f7d9905b5d33f0e13a9a9d6209d5dfea50 (patch)
tree71115f6bacc228220f52537dbab8c6154497e86a
parent6d135c110002729acd0800fa4ffe6750a3132f27 (diff)
downloadopenttd-098e54f7d9905b5d33f0e13a9a9d6209d5dfea50.tar.xz
(svn r5124) Add IsAircraftInHangar{Stopped,}(), which supersedes CheckStoppedInHangar()
-Fix: Be more strict what it means for an aircraft to be in a hangar: It's not just being stopped on a hangar tile
-rw-r--r--aircraft.h16
-rw-r--r--aircraft_cmd.c13
-rw-r--r--aircraft_gui.c8
3 files changed, 24 insertions, 13 deletions
diff --git a/aircraft.h b/aircraft.h
new file mode 100644
index 000000000..55fc35c89
--- /dev/null
+++ b/aircraft.h
@@ -0,0 +1,16 @@
+/* $Id$ */
+
+#include "station_map.h"
+#include "vehicle.h"
+
+
+static inline bool IsAircraftInHangar(const Vehicle* v)
+{
+ assert(v->type == VEH_Aircraft);
+ return v->vehstatus & VS_HIDDEN && IsHangarTile(v->tile);
+}
+
+static inline bool IsAircraftInHangarStopped(const Vehicle* v)
+{
+ return IsAircraftInHangar(v) && v->vehstatus & VS_STOPPED;
+}
diff --git a/aircraft_cmd.c b/aircraft_cmd.c
index 94411d3b2..7263f51d3 100644
--- a/aircraft_cmd.c
+++ b/aircraft_cmd.c
@@ -2,6 +2,7 @@
#include "stdafx.h"
#include "openttd.h"
+#include "aircraft.h"
#include "debug.h"
#include "functions.h"
#include "station_map.h"
@@ -338,12 +339,6 @@ int32 CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
}
-bool CheckStoppedInHangar(const Vehicle* v)
-{
- return v->vehstatus & VS_STOPPED && IsHangarTile(v->tile);
-}
-
-
static void DoDeleteAircraft(Vehicle *v)
{
DeleteWindowById(WC_VEHICLE_VIEW, v->index);
@@ -367,7 +362,7 @@ int32 CmdSellAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
v = GetVehicle(p1);
if (v->type != VEH_Aircraft || !CheckOwnership(v->owner)) return CMD_ERROR;
- if (!CheckStoppedInHangar(v)) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
+ if (!IsAircraftInHangarStopped(v)) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
@@ -402,7 +397,7 @@ int32 CmdStartStopAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
return_cmd_error(STR_A017_AIRCRAFT_IS_IN_FLIGHT);
if (flags & DC_EXEC) {
- if (v->vehstatus & VS_STOPPED && IsHangarTile(v->tile)) {
+ if (IsAircraftInHangarStopped(v)) {
DeleteVehicleNews(p1, STR_A014_AIRCRAFT_IS_WAITING_IN);
}
@@ -499,7 +494,7 @@ int32 CmdRefitAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
v = GetVehicle(p1);
if (v->type != VEH_Aircraft || !CheckOwnership(v->owner)) return CMD_ERROR;
- if (!CheckStoppedInHangar(v)) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
+ if (!IsAircraftInHangarStopped(v)) return_cmd_error(STR_A01B_AIRCRAFT_MUST_BE_STOPPED);
avi = AircraftVehInfo(v->engine_type);
diff --git a/aircraft_gui.c b/aircraft_gui.c
index 59c7b7c13..51695618f 100644
--- a/aircraft_gui.c
+++ b/aircraft_gui.c
@@ -2,6 +2,7 @@
#include "stdafx.h"
#include "openttd.h"
+#include "aircraft.h"
#include "debug.h"
#include "functions.h"
#include "station_map.h"
@@ -492,7 +493,6 @@ static const Widget _aircraft_view_widgets[] = {
{ WIDGETS_END }
};
-bool CheckStoppedInHangar(const Vehicle* v); /* XXX extern function declaration in .c */
static void AircraftViewWndProc(Window *w, WindowEvent *e)
{
@@ -502,7 +502,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
uint32 disabled = 1 << 8;
StringID str;
- if (v->vehstatus & VS_STOPPED && IsHangarTile(v->tile)) disabled = 0;
+ if (IsAircraftInHangarStopped(v)) disabled = 0;
if (v->owner != _local_player) disabled |= 1 << 8 | 1 << 7;
w->disabled_state = disabled;
@@ -595,7 +595,7 @@ static void AircraftViewWndProc(Window *w, WindowEvent *e)
case WE_MOUSELOOP: {
const Vehicle* v = GetVehicle(w->window_number);
- uint32 h = CheckStoppedInHangar(v) ? (1 << 7) : (1 << 11);
+ uint32 h = IsAircraftInHangarStopped(v) ? 1 << 7 : 1 << 11;
if (h != w->hidden_state) {
w->hidden_state = h;
@@ -1027,7 +1027,7 @@ static void PlayerAircraftWndProc(Window *w, WindowEvent *e)
DrawVehicleProfitButton(v, x, y + 13);
SetDParam(0, v->unitnumber);
- if (IsHangarTile(v->tile) && v->vehstatus & VS_HIDDEN) {
+ if (IsAircraftInHangar(v)) {
str = STR_021F;
} else {
str = v->age > v->max_age - 366 ? STR_00E3 : STR_00E2;