diff --git a/src/depot_gui.cpp b/src/depot_gui.cpp index 44ce649510..fe41c76e3c 100644 --- a/src/depot_gui.cpp +++ b/src/depot_gui.cpp @@ -296,6 +296,7 @@ struct DepotWindow : Window { ~DepotWindow() { DeleteWindowById(WC_BUILD_VEHICLE, this->window_number); + DeleteWindowById(GetWindowClassForVehicleType(this->type), VehicleListIdentifier(VL_DEPOT_LIST, this->type, this->owner, GetDepotIndex(this->window_number)).Pack(), false); OrderBackup::Reset(this->window_number); } diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index d488311bd4..4c0d49f67d 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -710,14 +710,14 @@ STR_MUSIC_PLAYLIST_ALL :{TINY_FONT}{BLA STR_MUSIC_PLAYLIST_OLD_STYLE :{TINY_FONT}{BLACK}Vana stiil STR_MUSIC_PLAYLIST_NEW_STYLE :{TINY_FONT}{BLACK}Uus stiil STR_MUSIC_PLAYLIST_EZY_STREET :{TINY_FONT}{BLACK}Ezy Street -STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Omatehtud 1 -STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Omatehtud 2 +STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLACK}Isiklik 1 +STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Isiklik 2 STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Muusika helitugevus STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Efektide helitugevus STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}-- STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------ -STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Muusikat pole saadaval +STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Muusika pole saadaval STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}" STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Lugu STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Pealkiri @@ -732,8 +732,8 @@ STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Vali 'k STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Vali 'vanas stiilis muusika' programm STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Vali 'uues stiilis muusika' programm STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}'Ezy Street' stiilis muusikaprogrammi valimine -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vali 'omatehtud 1' programm -STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vali 'omatehtud 2' programm +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Vali 'isiklik 1' programm +STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vali 'isiklik 2' programm STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Lülita lugude segamine sisse ja välja STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näita muusikalugude valimise akent @@ -744,9 +744,9 @@ STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLA STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Puhasta STR_PLAYLIST_CHANGE_SET :{BLACK}Muuda kogu -STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Tühjenda valitud programm (ainult omatehtud 1 ja omatehtud 2) +STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Tühjenda valitud programm (ainult isiklik 1 ja isiklik 2) STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Vaheta muusikavalik teise paigaldatud kogumi vastu -STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Vajuta loole, et seda programmi lisada (ainult omatehtud 1 ja omatehtud 2) +STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Vajuta loole, et seda programmi lisada (ainult isiklik 1 ja isiklik 2) STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Vajuta laulule, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult) # Highscore window @@ -2356,8 +2356,8 @@ STR_CONTENT_TYPE_GS_LIBRARY :GS teek STR_CONTENT_DOWNLOAD_TITLE :{WHITE}Aineste allalaadimine... STR_CONTENT_DOWNLOAD_INITIALISE :{WHITE}Küsin faile... STR_CONTENT_DOWNLOAD_FILE :{WHITE}Hetkel laaditakse alla {STRING} ({NUM}/{NUM}) -STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Allalaadimine valmis -STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES}/{BYTES} baiti alla laaditud ({NUM} %) +STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}Allalaadimise lõpp +STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES}/{BYTES} baiti allalaaditud ({NUM} %) # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}Aineste keskserveriga ei õnnestu ühenduda... @@ -3431,11 +3431,11 @@ STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Mitte ü STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Firmaväärtus: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% on ettevõtte {COMPANY} käes) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Taristu: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} röö{P bas pad} -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} sõidutee tük{P k id} -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} veekogu ruu{P t dud} -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} jaama ruu{P t dud} -STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} lennuväl{P i jad} +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} rööpajupp{P "" i} +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} teejupp{P "" i} +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} veeruut{P "" u} +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} jaamaruut{P "" u} +STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} lennuväl{P i ja} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Puudub STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Ehita peakorter @@ -4222,11 +4222,11 @@ STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Võimald STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Vahe sees: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Vahe sees STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Kui AI logi sõnum vastab selle stringiga, mäng seisatakse. -STR_AI_DEBUG_MATCH_CASE :{BLACK}Sobita tähemärgisuurus -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Toggle matching case when comparing AI log messages against the break string +STR_AI_DEBUG_MATCH_CASE :{BLACK}Tõstutundlik +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Vaheldab tõstutundlikkust, kui AI debug-sõnumeid võrreldakse peatamiskirjega STR_AI_DEBUG_CONTINUE :{BLACK}Jätka -STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Jätka tee ja tee edasi AI-d -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vaata selle AI silumisinfo väljundit +STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Lõpeta paus ja jätka AI-d +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Vaata selle AI debug-väljundit STR_AI_GAME_SCRIPT :{BLACK}GameScript STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Kontrolli GameScripti logi @@ -4283,7 +4283,7 @@ STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Kõrgusk STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Väikese kaardi kuvapaugutus # AI Parameters -STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameetrid +STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} parameetrid STR_AI_SETTINGS_CAPTION_AI :AI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :GameScript STR_AI_SETTINGS_CLOSE :{BLACK}Sulge diff --git a/src/lang/french.txt b/src/lang/french.txt index ab7d15b7e5..4de4203458 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -614,7 +614,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinateur de STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Superviseur de route STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Directeur STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Directeur Général -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Vice-président +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Secrétaire général(e) STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Président STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Tycoon @@ -697,7 +697,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Cliquer STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Meilleures compagnies qui ont atteint {NUM} STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tableau du Championnat des compagnies en {NUM} STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}. -STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Homme d'affaires +STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Personne d'affaires STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :Industriel STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :Capitaliste @@ -948,6 +948,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nouveau Dollar STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Chinois (CNY) STR_GAME_OPTIONS_CURRENCY_HKD :Dollar de Hong Kong (HKD) STR_GAME_OPTIONS_CURRENCY_INR :Roupie indienne (INR) +STR_GAME_OPTIONS_CURRENCY_IDR :Roupie indonésienne (IDR) ############ end of currency region STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conduite à gauche diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 33be449b1b..3d5a4f8dbc 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -4135,6 +4135,7 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, const G if (*ospec == nullptr) { *ospec = CallocT(1); (*ospec)->views = 1; // Default for NewGRFs that don't set it. + (*ospec)->size = 0x11; // Default for NewGRFs that manage to not set it (1x1) } /* Swap classid because we read it in BE. */ @@ -4160,6 +4161,10 @@ static ChangeInfoResult ObjectChangeInfo(uint id, int numinfo, int prop, const G case 0x0C: // Size spec->size = buf->ReadByte(); + if ((spec->size & 0xF0) == 0 || (spec->size & 0x0F) == 0) { + grfmsg(1, "ObjectChangeInfo: Invalid object size requested (%u) for object id %u. Ignoring.", spec->size, id + i); + spec->size = 0x11; // 1x1 + } break; case 0x0D: // Build cost multipler diff --git a/src/pathfinder/follow_track.hpp b/src/pathfinder/follow_track.hpp index 06644b77f8..ebf7de963d 100644 --- a/src/pathfinder/follow_track.hpp +++ b/src/pathfinder/follow_track.hpp @@ -488,13 +488,18 @@ public: if (!IsWaterTT() && IsBridgeTile(m_old_tile)) { int spd = GetBridgeSpec(GetBridgeType(m_old_tile))->speed; if (IsRoadTT()) spd *= 2; - if (max_speed > spd) max_speed = spd; + max_speed = std::min(max_speed, spd); } /* Check for speed limit imposed by railtype */ if (IsRailTT()) { uint16 rail_speed = GetRailTypeInfo(GetRailTypeByTrack(m_old_tile, TrackdirToTrack(m_old_td)))->max_speed; if (rail_speed > 0) max_speed = std::min(max_speed, rail_speed); } + if (IsRoadTT()) { + /* max_speed is already in roadvehicle units, no need to further modify (divide by 2) */ + uint16 road_speed = GetRoadTypeInfo(GetRoadType(m_old_tile, GetRoadTramType(RoadVehicle::From(m_veh)->roadtype)))->max_speed; + if (road_speed > 0) max_speed = std::min(max_speed, road_speed); + } /* if min speed was requested, return it */ if (pmin_speed != nullptr) *pmin_speed = min_speed; diff --git a/src/pathfinder/yapf/yapf_road.cpp b/src/pathfinder/yapf/yapf_road.cpp index 9be3a7a752..90c246f76b 100644 --- a/src/pathfinder/yapf/yapf_road.cpp +++ b/src/pathfinder/yapf/yapf_road.cpp @@ -199,8 +199,8 @@ public: int min_speed = 0; int max_veh_speed = v->GetDisplayMaxSpeed(); int max_speed = F.GetSpeedLimit(&min_speed); - if (max_speed < max_veh_speed) segment_cost += 1 * (max_veh_speed - max_speed); - if (min_speed > max_veh_speed) segment_cost += 10 * (min_speed - max_veh_speed); + if (max_speed < max_veh_speed) segment_cost += YAPF_TILE_LENGTH * (max_veh_speed - max_speed) * (4 + F.m_tiles_skipped) / max_veh_speed; + if (min_speed > max_veh_speed) segment_cost += YAPF_TILE_LENGTH * (min_speed - max_veh_speed); /* move to the next tile */ tile = F.m_new_tile; diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 4fddd6067d..629b9fe7f2 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -64,10 +64,6 @@ bool _cocoa_video_started = false; extern bool _tab_is_down; -#ifdef _DEBUG -static uint32 _tEvent; -#endif - /** List of common display/window sizes. */ static const Dimension _default_resolutions[] = { @@ -88,19 +84,6 @@ static const Dimension _default_resolutions[] = { static FVideoDriver_Cocoa iFVideoDriver_Cocoa; -/** - * Get current realtime. - * @return Tick time in milliseconds. - */ -static uint32 GetTick() -{ - struct timeval tim; - - gettimeofday(&tim, NULL); - return tim.tv_usec / 1000 + tim.tv_sec * 1000; -} - - /** Subclass of NSView for drawing to screen. */ @interface OTTD_QuartzView : NSView { VideoDriver_Cocoa *driver; @@ -603,13 +586,7 @@ void VideoDriver_Cocoa::CheckPaletteAnim() */ bool VideoDriver_Cocoa::PollEvent() { -#ifdef _DEBUG - uint32 et0 = GetTick(); -#endif NSEvent *event = [ NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[ NSDate distantPast ] inMode:NSDefaultRunLoopMode dequeue:YES ]; -#ifdef _DEBUG - _tEvent += GetTick() - et0; -#endif if (event == nil) return false;