Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 9756) +++ src/lang/english.txt (working copy) @@ -191,6 +191,7 @@ STR_00DF_GREY :Grey STR_00E0_WHITE :White STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Too many vehicles in game +STR_THE_VEHICLE_TYPE_IS_DISABLED :{WHITE}The selected vehicle type is not allowed in this game STR_00E2 :{BLACK}{COMMA} STR_00E3 :{RED}{COMMA} STR_00E4_LOCATION :{BLACK}Location Index: src/lang/german.txt =================================================================== --- src/lang/german.txt (revision 9756) +++ src/lang/german.txt (working copy) @@ -192,6 +192,7 @@ STR_00DF_GREY :Grau STR_00E0_WHITE :Weiß STR_00E1_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Zu viele Fahrzeuge im Spiel +STR_THE_VEHICLE_TYPE_IS_DISABLED :{WHITE}Der ausgewählte Fahrzeugtyp ist in diesem Spiel nicht erlaubt STR_00E2 :{BLACK}{COMMA} STR_00E3 :{RED}{COMMA} STR_00E4_LOCATION :{BLACK}Standort Index: src/main_gui.cpp =================================================================== --- src/main_gui.cpp (revision 9756) +++ src/main_gui.cpp (working copy) @@ -282,30 +282,54 @@ } } +/* Here we start checking if vehicle types are allowed before displaying a list of them */ static void MenuClickShowTrains(int index) { - ShowVehicleListWindow((PlayerID)index, VEH_TRAIN); + if (_patches.max_trains == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { ShowVehicleListWindow((PlayerID)index, VEH_TRAIN); } } static void MenuClickShowRoad(int index) { - ShowVehicleListWindow((PlayerID)index, VEH_ROAD); + if (_patches.max_roadveh == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { ShowVehicleListWindow((PlayerID)index, VEH_ROAD); } } static void MenuClickShowShips(int index) { - ShowVehicleListWindow((PlayerID)index, VEH_SHIP); + if (_patches.max_ships == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { ShowVehicleListWindow((PlayerID)index, VEH_SHIP); } } static void MenuClickShowAir(int index) { - ShowVehicleListWindow((PlayerID)index, VEH_AIRCRAFT); + if (_patches.max_aircraft == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { ShowVehicleListWindow((PlayerID)index, VEH_AIRCRAFT); } } +/* Here we start checking if a vehicle type is allowed before building stuff for them */ static void MenuClickBuildRail(int index) { - _last_built_railtype = (RailType)index; - ShowBuildRailToolbar(_last_built_railtype, -1); + if (_patches.max_trains == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { + _last_built_railtype = (RailType)index; + ShowBuildRailToolbar(_last_built_railtype, -1); + } } static void MenuClickBuildRoad(int index) @@ -315,12 +339,20 @@ static void MenuClickBuildWater(int index) { - ShowBuildDocksToolbar(); + if (_patches.max_ships == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { ShowBuildDocksToolbar(); } } static void MenuClickBuildAir(int index) { - ShowBuildAirToolbar(); + if (_patches.max_aircraft == 0) { + ShowErrorMessage(_error_message, STR_THE_VEHICLE_TYPE_IS_DISABLED,0 ,0); + return; + } + else { ShowBuildAirToolbar(); } } #ifdef ENABLE_NETWORK Index: src/road_gui.cpp =================================================================== --- src/road_gui.cpp (revision 9756) +++ src/road_gui.cpp (working copy) @@ -166,18 +166,21 @@ static void BuildRoadClick_Depot(Window *w) { if (_game_mode == GM_EDITOR) return; + SetWindowDirty(w); // grey out button if road vehicles disabled if (HandlePlacePushButton(w, RTW_DEPOT, SPR_CURSOR_ROAD_DEPOT, 1, PlaceRoad_Depot)) ShowRoadDepotPicker(); } static void BuildRoadClick_BusStation(Window *w) { if (_game_mode == GM_EDITOR) return; + SetWindowDirty(w); // grey out button if road vehicles disabled if (HandlePlacePushButton(w, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, 1, PlaceRoad_BusStation)) ShowBusStationPicker(); } static void BuildRoadClick_TruckStation(Window *w) { if (_game_mode == GM_EDITOR) return; + SetWindowDirty(w); // grey out button if road vehicles disabled if (HandlePlacePushButton(w, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, 1, PlaceRoad_TruckStation)) ShowTruckStationPicker(); } @@ -216,7 +219,14 @@ static void BuildRoadToolbWndProc(Window *w, WindowEvent *e) { switch (e->event) { - case WE_CREATE: DisableWindowWidget(w, RTW_REMOVE); break; + case WE_CREATE: DisableWindowWidget(w, RTW_REMOVE); + /* enable road vehicle stations only if you can build road vehicles */ + if (_patches.max_roadveh == 0) { + DisableWindowWidget(w, RTW_DEPOT); + DisableWindowWidget(w, RTW_BUS_STATION); + DisableWindowWidget(w, RTW_TRUCK_STATION); + } + break; case WE_PAINT: if (IsWindowWidgetLowered(w, RTW_ROAD_X) || IsWindowWidgetLowered(w, RTW_ROAD_Y) || IsWindowWidgetLowered(w, RTW_BUS_STATION) || IsWindowWidgetLowered(w, RTW_TRUCK_STATION)) {