(svn r13923) -Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle.

This commit is contained in:
frosch 2008-08-02 12:43:45 +00:00
parent 0fc769bb6c
commit 770d293788
2 changed files with 70 additions and 4 deletions

View File

@ -609,7 +609,6 @@ struct DepotWindow : Window {
this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_TRAIN_TIP;
this->widget[DEPOT_WIDGET_SELL].tooltips = STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE;
this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP;
this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_883F_TRAINS_CLICK_ON_TRAIN_FOR;
this->widget[DEPOT_WIDGET_BUILD].data = STR_8815_NEW_VEHICLES;
this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_8840_BUILD_NEW_TRAIN_VEHICLE;
@ -633,7 +632,6 @@ struct DepotWindow : Window {
this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_ROADVEH_TIP;
this->widget[DEPOT_WIDGET_SELL].tooltips = STR_9024_DRAG_ROAD_VEHICLE_TO_HERE;
this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP;
this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_9022_VEHICLES_CLICK_ON_VEHICLE;
this->widget[DEPOT_WIDGET_BUILD].data = STR_9004_NEW_VEHICLES;
this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_9023_BUILD_NEW_ROAD_VEHICLE;
@ -657,7 +655,6 @@ struct DepotWindow : Window {
this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_DEPOT_SHIP_TIP;
this->widget[DEPOT_WIDGET_SELL].tooltips = STR_9821_DRAG_SHIP_TO_HERE_TO_SELL;
this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP;
this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_981F_SHIPS_CLICK_ON_SHIP_FOR;
this->widget[DEPOT_WIDGET_BUILD].data = STR_9804_NEW_SHIPS;
this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_9820_BUILD_NEW_SHIP;
@ -681,7 +678,6 @@ struct DepotWindow : Window {
this->widget[DEPOT_WIDGET_START_ALL].tooltips= STR_MASS_START_HANGAR_TIP;
this->widget[DEPOT_WIDGET_SELL].tooltips = STR_A023_DRAG_AIRCRAFT_TO_HERE_TO;
this->widget[DEPOT_WIDGET_SELL_ALL].tooltips = STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TIP;
this->widget[DEPOT_WIDGET_MATRIX].tooltips = STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT;
this->widget[DEPOT_WIDGET_BUILD].data = STR_A003_NEW_AIRCRAFT;
this->widget[DEPOT_WIDGET_BUILD].tooltips = STR_A022_BUILD_NEW_AIRCRAFT;
@ -842,6 +838,73 @@ struct DepotWindow : Window {
}
}
virtual void OnRightClick(Point pt, int widget)
{
if (widget != DEPOT_WIDGET_MATRIX) return;
GetDepotVehiclePtData gdvp = { NULL, NULL };
const Vehicle *v = NULL;
DepotGUIAction mode = this->GetVehicleFromDepotWndPt(pt.x, pt.y, &v, &gdvp);
if (this->type == VEH_TRAIN) v = gdvp.wagon;
if (v != NULL && mode == MODE_DRAG_VEHICLE) {
AcceptedCargo capacity, loaded;
memset(capacity, 0, sizeof(capacity));
memset(loaded, 0, sizeof(loaded));
/* Display info for single (articulated) vehicle, or for whole chain starting with selected vehicle */
bool whole_chain = (this->type == VEH_TRAIN && _ctrl_pressed);
/* loop through vehicle chain and collect cargos */
uint num = 0;
for (const Vehicle *w = v; w != NULL; w = w->Next()) {
if (w->cargo_cap > 0 && w->cargo_type < NUM_CARGO) {
capacity[w->cargo_type] += w->cargo_cap;
loaded [w->cargo_type] += w->cargo.Count();
}
if (w->type == VEH_TRAIN && !EngineHasArticPart(w)) {
num++;
if (!whole_chain) break;
}
}
/* Build tooltipstring */
static char details[1024];
details[0] = '\0';
char *pos = details;
for (CargoID cargo_type = 0; cargo_type < NUM_CARGO; cargo_type++) {
if (capacity[cargo_type] == 0) continue;
SetDParam(0, cargo_type); // {CARGO} #1
SetDParam(1, loaded[cargo_type]); // {CARGO} #2
SetDParam(2, cargo_type); // {SHORTCARGO} #1
SetDParam(3, capacity[cargo_type]); // {SHORTCARGO} #2
pos = GetString(pos, STR_DEPOT_VEHICLE_TOOLTIP_CARGO, lastof(details));
}
/* Show tooltip window */
uint64 args[2];
args[0] = (whole_chain ? num : v->engine_type);
args[1] = (uint64)details;
GuiShowTooltips(whole_chain ? STR_DEPOT_VEHICLE_TOOLTIP_CHAIN : STR_DEPOT_VEHICLE_TOOLTIP, 2, args);
} else {
/* Show tooltip help */
StringID tooltip = INVALID_STRING_ID;
switch (this->type) {
case VEH_TRAIN: tooltip = STR_883F_TRAINS_CLICK_ON_TRAIN_FOR; break;
case VEH_ROAD: tooltip = STR_9022_VEHICLES_CLICK_ON_VEHICLE; break;
case VEH_SHIP: tooltip = STR_981F_SHIPS_CLICK_ON_SHIP_FOR; break;
case VEH_AIRCRAFT: tooltip = STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT;break;
default: NOT_REACHED();
}
GuiShowTooltips(tooltip);
}
}
virtual void OnPlaceObject(Point pt, TileIndex tile)
{
const Vehicle *v = CheckMouseOverVehicle();

View File

@ -2948,6 +2948,9 @@ STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Build th
STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Cost: {CURRENCY}{}Speed: {VELOCITY}{}Running Cost: {CURRENCY}/yr{}Capacity: {CARGO}
STR_ARTICULATED_RV_CAPACITY :{BLACK}Capacity: {LTBLUE}
STR_BARE_CARGO :{CARGO}
STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{RAW_STRING}
STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM} vehicle{P "" s}{RAW_STRING}
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO} ({SHORTCARGO})
STR_902C_NAME_ROAD_VEHICLE :{WHITE}Name road vehicle
STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Can't name road vehicle...