Files
@ r9765:c3e5347475e9
Branch filter:
Location: cpp/openttd-patchpack/source/src/roadveh_gui.cpp - annotation
r9765:c3e5347475e9
3.8 KiB
text/x-c
(svn r13901) -Fix: make sure REV_NR isn't empty, rev.cpp would fail to compile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | r5584:545d748cc681 r5584:545d748cc681 r9111:983de9c5a848 r6393:f9322fdf4c2c r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8107:82461791b7a2 r8224:194097dc7288 r8224:194097dc7288 r8116:df67d3c5e4fd r5584:545d748cc681 r5584:545d748cc681 r8114:866ed489ed98 r8144:1432edd15267 r8214:9a3935f9ef4e r8784:f3d6ba8eb078 r5584:545d748cc681 r8264:d493cb51fe8a r8264:d493cb51fe8a r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r9585:ea8ab5462274 r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7824:e4e35ff9ee2c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r9648:996b8efd5c66 r7530:8eaeedf8b40c r7530:8eaeedf8b40c r9585:ea8ab5462274 r9585:ea8ab5462274 r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7824:e4e35ff9ee2c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7824:e4e35ff9ee2c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7824:e4e35ff9ee2c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7824:e4e35ff9ee2c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r7530:8eaeedf8b40c r6857:1e07df806ef1 r6857:1e07df806ef1 r6857:1e07df806ef1 r6857:1e07df806ef1 r6857:1e07df806ef1 r8144:1432edd15267 r5584:545d748cc681 r6857:1e07df806ef1 r6857:1e07df806ef1 r6857:1e07df806ef1 r6857:1e07df806ef1 r6857:1e07df806ef1 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r6857:1e07df806ef1 r7134:b101dff10042 r6857:1e07df806ef1 r6857:1e07df806ef1 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r6857:1e07df806ef1 r6857:1e07df806ef1 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r8828:13b26c4bf7f4 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r7653:8b8bc2df3a7d r5584:545d748cc681 r7486:610eee847f11 r5584:545d748cc681 | /* $Id$ */
/** @file roadveh_gui.cpp GUI for road vehicles. */
#include "stdafx.h"
#include "openttd.h"
#include "debug.h"
#include "roadveh.h"
#include "gui.h"
#include "window_gui.h"
#include "viewport_func.h"
#include "gfx_func.h"
#include "command_func.h"
#include "vehicle_gui.h"
#include "newgrf_engine.h"
#include "strings_func.h"
#include "vehicle_func.h"
#include "string_func.h"
#include "order_func.h"
#include "table/sprites.h"
#include "table/strings.h"
void DrawRoadVehDetails(const Vehicle *v, int x, int y)
{
uint y_offset = RoadVehHasArticPart(v) ? 15 : 0;
StringID str;
SetDParam(0, v->engine_type);
SetDParam(1, v->build_year);
SetDParam(2, v->value);
DrawString(x, y + y_offset, STR_9011_BUILT_VALUE, TC_FROMSTRING);
if (RoadVehHasArticPart(v)) {
AcceptedCargo max_cargo;
char capacity[512];
memset(max_cargo, 0, sizeof(max_cargo));
for (const Vehicle *u = v; u != NULL; u = u->Next()) {
max_cargo[u->cargo_type] += u->cargo_cap;
}
GetString(capacity, STR_ARTICULATED_RV_CAPACITY, lastof(capacity));
bool first = true;
for (CargoID i = 0; i < NUM_CARGO; i++) {
if (max_cargo[i] > 0) {
char buffer[128];
SetDParam(0, i);
SetDParam(1, max_cargo[i]);
GetString(buffer, STR_BARE_CARGO, lastof(buffer));
if (!first) strecat(capacity, ", ", lastof(capacity));
strecat(capacity, buffer, lastof(capacity));
first = false;
}
}
SetDParamStr(0, capacity);
DrawStringTruncated(x, y + 10 + y_offset, STR_JUST_RAW_STRING, TC_BLUE, 380 - x);
for (const Vehicle *u = v; u != NULL; u = u->Next()) {
if (u->cargo_cap == 0) continue;
str = STR_8812_EMPTY;
if (!u->cargo.Empty()) {
SetDParam(0, u->cargo_type);
SetDParam(1, u->cargo.Count());
SetDParam(2, u->cargo.Source());
str = STR_8813_FROM;
}
DrawString(x, y + 21 + y_offset, str, TC_FROMSTRING);
y_offset += 11;
}
y_offset -= 11;
} else {
SetDParam(0, v->cargo_type);
SetDParam(1, v->cargo_cap);
DrawString(x, y + 10 + y_offset, STR_9012_CAPACITY, TC_FROMSTRING);
str = STR_8812_EMPTY;
if (!v->cargo.Empty()) {
SetDParam(0, v->cargo_type);
SetDParam(1, v->cargo.Count());
SetDParam(2, v->cargo.Source());
str = STR_8813_FROM;
}
DrawString(x, y + 21 + y_offset, str, TC_FROMSTRING);
}
/* Draw Transfer credits text */
SetDParam(0, v->cargo.FeederShare());
DrawString(x, y + 33 + y_offset, STR_FEEDER_CARGO_VALUE, TC_FROMSTRING);
}
static inline int RoadVehLengthToPixels(int length)
{
return (length * 28) / 8;
}
void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection, int count)
{
/* Road vehicle lengths are measured in eighths of the standard length, so
* count is the number of standard vehicles that should be drawn. If it is
* 0, we draw enough vehicles for 10 standard vehicle lengths. */
int max_length = (count == 0) ? 80 : count * 8;
/* Width of highlight box */
int highlight_w = 0;
for (int dx = 0; v != NULL && dx < max_length ; v = v->Next()) {
int width = v->u.road.cached_veh_length;
if (dx + width > 0 && dx <= max_length) {
SpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
DrawSprite(v->GetImage(DIR_W), pal, x + 14 + RoadVehLengthToPixels(dx), y + 6);
if (v->index == selection) {
/* Set the highlight position */
highlight_w = RoadVehLengthToPixels(width);
} else if (_cursor.vehchain && highlight_w != 0) {
highlight_w += RoadVehLengthToPixels(width);
}
}
dx += width;
}
if (highlight_w != 0) {
DrawFrameRect(x - 1, y - 1, x - 1 + highlight_w, y + 12, 15, FR_BORDERONLY);
}
}
void CcBuildRoadVeh(bool success, TileIndex tile, uint32 p1, uint32 p2)
{
const Vehicle *v;
if (!success) return;
v = GetVehicle(_new_vehicle_id);
if (v->tile == _backup_orders_tile) {
_backup_orders_tile = 0;
RestoreVehicleOrders(v);
}
ShowVehicleViewWindow(v);
}
|