# HG changeset patch # User truelight # Date 1182536924 0 # Node ID 53352175412311446510cd101573143b03a8f141 # Parent b9643e4f798bdd29774d3477a5fd1d644320dfb1 (svn r10270) -Add: prefixed the loading indicator with an arrow, up meaning vehicle is loading, down meaning vehicle is unloading diff -r b9643e4f798b -r 533521754123 src/economy.cpp --- a/src/economy.cpp Fri Jun 22 17:34:04 2007 +0000 +++ b/src/economy.cpp Fri Jun 22 18:28:44 2007 +0000 @@ -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); } } diff -r b9643e4f798b -r 533521754123 src/lang/english.txt --- a/src/lang/english.txt Fri Jun 22 17:34:04 2007 +0000 +++ b/src/lang/english.txt Fri Jun 22 18:28:44 2007 +0000 @@ -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} diff -r b9643e4f798b -r 533521754123 src/misc_gui.cpp --- a/src/misc_gui.cpp Fri Jun 22 17:34:04 2007 +0000 +++ b/src/misc_gui.cpp Fri Jun 22 18:28:44 2007 +0000 @@ -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) diff -r b9643e4f798b -r 533521754123 src/texteff.hpp --- a/src/texteff.hpp Fri Jun 22 17:34:04 2007 +0000 +++ b/src/texteff.hpp Fri Jun 22 18:28:44 2007 +0000 @@ -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 */ diff -r b9643e4f798b -r 533521754123 src/vehicle.cpp --- a/src/vehicle.cpp Fri Jun 22 17:34:04 2007 +0000 +++ b/src/vehicle.cpp Fri Jun 22 18:28:44 2007 +0000 @@ -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; diff -r b9643e4f798b -r 533521754123 src/vehicle.h --- a/src/vehicle.h Fri Jun 22 17:34:04 2007 +0000 +++ b/src/vehicle.h Fri Jun 22 18:28:44 2007 +0000 @@ -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();