Mercurial > hg > openttd
changeset 7014:d03670858cef draft
(svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading
author | truelight <truelight@openttd.org> |
---|---|
date | Fri, 22 Jun 2007 18:28:44 +0000 |
parents | 4b344122f60d |
children | 462a3f72303b |
files | src/economy.cpp src/lang/english.txt src/misc_gui.cpp src/texteff.hpp src/vehicle.cpp src/vehicle.h |
diffstat | 6 files changed, 35 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/economy.cpp +++ b/src/economy.cpp @@ -1669,11 +1669,12 @@ /* Calculate the loading indicator fill percent and display */ if (_patches.loading_indicators && _game_mode != GM_MENU && v->owner == _local_player) { - int percent = CalcPercentVehicleFilled(v); + StringID percent_up_down = STR_NULL; + int percent = CalcPercentVehicleFilled(v, &percent_up_down); if (v->fill_percent_te_id == INVALID_TE_ID) { - v->fill_percent_te_id = ShowFillingPercent(v->x_pos, v->y_pos, v->z_pos + 20, percent); + v->fill_percent_te_id = ShowFillingPercent(v->x_pos, v->y_pos, v->z_pos + 20, percent, percent_up_down); } else { - UpdateFillingPercent(v->fill_percent_te_id, percent); + UpdateFillingPercent(v->fill_percent_te_id, percent, percent_up_down); } }
--- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3292,8 +3292,12 @@ STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Toggle transparency for structures like lighthouses and antennas, maybe in future for eyecandy STR_TRANSPARENT_LOADING_DESC :{BLACK}Toggle transparency for loading indicators -STR_PERCENT_FULL_SMALL :{TINYFONT}{WHITE}{NUM}% -STR_PERCENT_FULL :{WHITE}{NUM}% +STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW} +STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW} +STR_PERCENT_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{DOWNARROW} +STR_PERCENT_DOWN :{WHITE}{NUM}%{DOWNARROW} +STR_PERCENT_UP_DOWN_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}{DOWNARROW} +STR_PERCENT_UP_DOWN :{WHITE}{NUM}%{UPARROW}{DOWNARROW} ##### Mass Order STR_GROUP_NAME_FORMAT :Group {COMMA}
--- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -644,18 +644,22 @@ AddTextEffect(STR_FEEDER, pt.x, pt.y, 0x250, TE_RISING); } -TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent) +TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID string) { Point pt = RemapCoords(x, y, z); + assert(string != STR_NULL); + SetDParam(0, percent); - return AddTextEffect(STR_PERCENT_FULL, pt.x, pt.y, 0xFFFF, TE_STATIC); + return AddTextEffect(string, pt.x, pt.y, 0xFFFF, TE_STATIC); } -void UpdateFillingPercent(TextEffectID te_id, uint8 percent) +void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID string) { + assert(string != STR_NULL); + SetDParam(0, percent); - UpdateTextEffect(te_id, STR_PERCENT_FULL); + UpdateTextEffect(te_id, string); } void HideFillingPercent(TextEffectID te_id)
--- a/src/texteff.hpp +++ b/src/texteff.hpp @@ -28,8 +28,8 @@ void UndrawTextMessage(); /* misc_gui.cpp */ -TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent); -void UpdateFillingPercent(TextEffectID te_id, uint8 percent); +TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID color); +void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID color); void HideFillingPercent(TextEffectID te_id); #endif /* TEXTEFF_HPP */
--- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -2271,19 +2271,32 @@ /** * Calculates how full a vehicle is. * @param v The Vehicle to check. For trains, use the first engine. + * @param color The string to show depending on if we are unloading or loading * @return A percentage of how full the Vehicle is. */ -uint8 CalcPercentVehicleFilled(Vehicle *v) +uint8 CalcPercentVehicleFilled(Vehicle *v, StringID *color) { int count = 0; int max = 0; + int cars = 0; + int unloading = 0; + + assert(color != NULL); /* Count up max and used */ for (; v != NULL; v = v->next) { count += v->cargo.Count(); max += v->cargo_cap; + if (v->cargo_cap != 0) { + unloading += HASBIT(v->vehicle_flags, VF_CARGO_UNLOADING) ? 1 : 0; + cars++; + } } + if (unloading == 0) *color = STR_PERCENT_UP; + else if (cars == unloading) *color = STR_PERCENT_DOWN; + else *color = STR_PERCENT_UP_DOWN; + /* Train without capacity */ if (max == 0) return 100;
--- a/src/vehicle.h +++ b/src/vehicle.h @@ -505,7 +505,7 @@ void *VehicleFromPosXY(int x, int y, void *data, VehicleFromPosProc *proc); void CallVehicleTicks(); Vehicle *FindVehicleOnTileZ(TileIndex tile, byte z); -uint8 CalcPercentVehicleFilled(Vehicle *v); +uint8 CalcPercentVehicleFilled(Vehicle *v, StringID *color); void InitializeTrains(); byte VehicleRandomBits();