mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r16638) [0.7] -Backport from trunk:
- Fix: Loading of some town data from old savegames was broken (r16631) - Fix: [NewGRF] Some of the var action 2 80+ variables contained wrong values from NewGRF perspective (r16615, r16613) - Fix: Antialiased fonts broken; check pixel_mode instead of palette_mode (r16602) - Fix: Give a more meaningful error message when console commands expect an integer but do not get one (r16600)
This commit is contained in:
parent
024aa14f94
commit
0ffca06944
|
@ -715,7 +715,7 @@ const Sprite *GetGlyph(FontSize size, WChar key)
|
|||
FT_Render_Glyph(face->glyph, aa ? FT_RENDER_MODE_NORMAL : FT_RENDER_MODE_MONO);
|
||||
|
||||
/* Despite requesting a normal glyph, FreeType may have returned a bitmap */
|
||||
aa = (slot->bitmap.palette_mode == FT_PIXEL_MODE_GRAY);
|
||||
aa = (slot->bitmap.pixel_mode == FT_PIXEL_MODE_GRAY);
|
||||
|
||||
/* Add 1 pixel for the shadow on the medium font. Our sprite must be at least 1x1 pixel */
|
||||
width = max(1, slot->bitmap.width + (size == FS_NORMAL));
|
||||
|
|
|
@ -637,7 +637,7 @@ STR_0299_SAVE_SCENARIO :{WHITE}Save Sce
|
|||
STR_029A_PLAY_SCENARIO :{BLACK}Play Scenario
|
||||
STR_PLAY_HEIGHTMAP :{BLACK}Play Heightmap
|
||||
STR_PLAY_HEIGHTMAP_HINT :{BLACK}Start a new game, using a heightmap as landscape
|
||||
STR_QUIT_SCENARIO_QUERY :{YELLOW}Are you sure you want to quit this scenario ?
|
||||
STR_QUIT_SCENARIO_QUERY :{YELLOW}Are you sure you want to quit this scenario?
|
||||
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...can only be built in towns with a population of at least 1200
|
||||
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Move the starting date backward 1 year
|
||||
STR_029F_MOVE_THE_STARTING_DATE :{BLACK}Move the starting date forward 1 year
|
||||
|
|
|
@ -129,10 +129,18 @@ uint32 GetEngineGRFID(EngineID engine)
|
|||
|
||||
static int MapOldSubType(const Vehicle *v)
|
||||
{
|
||||
if (v->type != VEH_TRAIN) return v->subtype;
|
||||
if (IsTrainEngine(v)) return 0;
|
||||
if (IsFreeWagon(v)) return 4;
|
||||
return 2;
|
||||
switch (v->type) {
|
||||
case VEH_TRAIN:
|
||||
if (IsTrainEngine(v)) return 0;
|
||||
if (IsFreeWagon(v)) return 4;
|
||||
return 2;
|
||||
case VEH_ROAD:
|
||||
case VEH_SHIP: return 0;
|
||||
case VEH_AIRCRAFT:
|
||||
case VEH_DISASTER: return v->subtype;
|
||||
case VEH_EFFECT: return v->subtype << 1;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -685,12 +693,12 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
|||
|
||||
/* General vehicle properties */
|
||||
switch (variable - 0x80) {
|
||||
case 0x00: return v->type;
|
||||
case 0x00: return v->type + 0x10;
|
||||
case 0x01: return MapOldSubType(v);
|
||||
case 0x04: return v->index;
|
||||
case 0x05: return GB(v->index, 8, 8);
|
||||
case 0x0A: return v->current_order.Pack();
|
||||
case 0x0B: return GB(v->current_order.Pack(), 8, 8);
|
||||
case 0x0A: return v->current_order.MapOldOrder();
|
||||
case 0x0B: return v->current_order.GetDestination();
|
||||
case 0x0C: return v->GetNumOrders();
|
||||
case 0x0D: return v->cur_order_index;
|
||||
case 0x10: return v->load_unload_time_rem;
|
||||
|
|
|
@ -232,6 +232,13 @@ public:
|
|||
*/
|
||||
uint32 Pack() const;
|
||||
|
||||
/**
|
||||
* Pack this order into a 16 bits integer as close to the TTD
|
||||
* representation as possible.
|
||||
* @return the TTD-like packed representation.
|
||||
*/
|
||||
uint16 MapOldOrder() const;
|
||||
|
||||
/**
|
||||
* Converts this order from an old savegame's version;
|
||||
* it moves all bits to the new location.
|
||||
|
|
|
@ -125,6 +125,28 @@ uint32 Order::Pack() const
|
|||
return this->dest << 16 | this->flags << 8 | this->type;
|
||||
}
|
||||
|
||||
uint16 Order::MapOldOrder() const
|
||||
{
|
||||
uint16 order = this->GetType();
|
||||
switch (this->type) {
|
||||
case OT_GOTO_STATION:
|
||||
if (this->GetUnloadType() & OUFB_UNLOAD) SetBit(order, 5);
|
||||
if (this->GetLoadType() & OLFB_FULL_LOAD) SetBit(order, 6);
|
||||
if (this->GetNonStopType() & ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS) SetBit(order, 7);
|
||||
order |= GB(this->GetDestination(), 0, 8) << 8;
|
||||
break;
|
||||
case OT_GOTO_DEPOT:
|
||||
if (!(this->GetDepotOrderType() & ODTFB_PART_OF_ORDERS)) SetBit(order, 6);
|
||||
SetBit(order, 7);
|
||||
order |= GB(this->GetDestination(), 0, 8) << 8;
|
||||
break;
|
||||
case OT_LOADING:
|
||||
if (this->GetLoadType() & OLFB_FULL_LOAD) SetBit(order, 6);
|
||||
break;
|
||||
}
|
||||
return order;
|
||||
}
|
||||
|
||||
Order::Order(uint32 packed)
|
||||
{
|
||||
this->type = (OrderType)GB(packed, 0, 8);
|
||||
|
|
|
@ -520,36 +520,36 @@ static const OldChunks town_chunk[] = {
|
|||
OCL_NULL( 2 ), ///< population, no longer in use
|
||||
OCL_SVAR( OC_UINT16, Town, townnametype ),
|
||||
OCL_SVAR( OC_UINT32, Town, townnameparts ),
|
||||
OCL_SVAR( OC_UINT8, Town, grow_counter ),
|
||||
OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, grow_counter ),
|
||||
OCL_NULL( 1 ), ///< sort_index, no longer in use
|
||||
OCL_NULL( 4 ), ///< sign-coordinates, no longer in use
|
||||
OCL_NULL( 2 ), ///< namewidth, no longer in use
|
||||
OCL_SVAR( OC_UINT16, Town, flags12 ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, Town, flags12 ),
|
||||
OCL_NULL( 10 ), ///< radius, no longer in use
|
||||
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[0] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[1] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[2] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[3] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[4] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[5] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[6] ),
|
||||
OCL_SVAR( OC_UINT16, Town, ratings[7] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[0] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[1] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[2] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[3] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[4] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[5] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[6] ),
|
||||
OCL_SVAR( OC_INT16, Town, ratings[7] ),
|
||||
|
||||
OCL_SVAR( OC_FILE_U32 | OC_VAR_U16, Town, have_ratings ),
|
||||
OCL_SVAR( OC_FILE_U32 | OC_VAR_U16, Town, statues ),
|
||||
OCL_NULL( 2 ), ///< num_houses, no longer in use
|
||||
OCL_SVAR( OC_UINT8, Town, time_until_rebuild ),
|
||||
OCL_SVAR( OC_UINT8, Town, growth_rate ),
|
||||
OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Town, time_until_rebuild ),
|
||||
OCL_SVAR( OC_FILE_U8 | OC_VAR_I16, Town, growth_rate ),
|
||||
|
||||
OCL_SVAR( OC_UINT16, Town, new_max_pass ),
|
||||
OCL_SVAR( OC_UINT16, Town, new_max_mail ),
|
||||
OCL_SVAR( OC_UINT16, Town, new_act_pass ),
|
||||
OCL_SVAR( OC_UINT16, Town, new_act_mail ),
|
||||
OCL_SVAR( OC_UINT16, Town, max_pass ),
|
||||
OCL_SVAR( OC_UINT16, Town, max_mail ),
|
||||
OCL_SVAR( OC_UINT16, Town, act_pass ),
|
||||
OCL_SVAR( OC_UINT16, Town, act_mail ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, new_max_pass ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, new_max_mail ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, new_act_pass ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, new_act_mail ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, max_pass ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, max_mail ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, act_pass ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Town, act_mail ),
|
||||
|
||||
OCL_SVAR( OC_UINT8, Town, pct_pass_transported ),
|
||||
OCL_SVAR( OC_UINT8, Town, pct_mail_transported ),
|
||||
|
|
|
@ -112,9 +112,9 @@ static const SaveLoad _town_desc[] = {
|
|||
SLE_VAR(Town, new_act_food, SLE_UINT16),
|
||||
SLE_VAR(Town, new_act_water, SLE_UINT16),
|
||||
|
||||
SLE_CONDVAR(Town, time_until_rebuild, SLE_UINT8, 0, 53),
|
||||
SLE_CONDVAR(Town, grow_counter, SLE_UINT8, 0, 53),
|
||||
SLE_CONDVAR(Town, growth_rate, SLE_UINT8, 0, 53),
|
||||
SLE_CONDVAR(Town, time_until_rebuild, SLE_FILE_U8 | SLE_VAR_U16, 0, 53),
|
||||
SLE_CONDVAR(Town, grow_counter, SLE_FILE_U8 | SLE_VAR_U16, 0, 53),
|
||||
SLE_CONDVAR(Town, growth_rate, SLE_FILE_U8 | SLE_VAR_I16, 0, 53),
|
||||
|
||||
SLE_CONDVAR(Town, time_until_rebuild, SLE_UINT16, 54, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(Town, grow_counter, SLE_UINT16, 54, SL_MAX_VERSION),
|
||||
|
|
|
@ -2153,7 +2153,12 @@ void IConsoleSetSetting(const char *name, const char *value)
|
|||
uint32 val;
|
||||
extern bool GetArgumentInteger(uint32 *value, const char *arg);
|
||||
success = GetArgumentInteger(&val, value);
|
||||
if (success) success = SetSettingValue(index, val);
|
||||
if (!success) {
|
||||
IConsolePrintF(CC_ERROR, "'%s' is not an integer.", value);
|
||||
return;
|
||||
}
|
||||
|
||||
success = SetSettingValue(index, val);
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
|
|
Loading…
Reference in New Issue