1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-31 18:39:10 +00:00

Compare commits

..

2 Commits

Author SHA1 Message Date
Darkvater
682e191c88 (svn r5413) Release 0.4.8-RC1 (try #2) 2006-06-28 22:06:29 +00:00
Darkvater
d3f19f5802 (svn r5411) Release 0.4.8-RC1 2006-06-28 21:46:30 +00:00
55 changed files with 150 additions and 580 deletions

View File

@@ -256,7 +256,7 @@ ENDIAN_CHECK=endian_check$(EXE)
STRGEN=strgen/strgen$(EXE) STRGEN=strgen/strgen$(EXE)
OSXAPP="OpenTTD.app" OSXAPP="OpenTTD.app"
REV := 0.4.8-$(shell if test -d .svn; then svnversion . | awk '{ print "r"$$0 }'; fi) REV := 0.4.8-RC1
# MorphOS needs builddate # MorphOS needs builddate
BUILDDATE=`date +%d.%m.%y` BUILDDATE=`date +%d.%m.%y`

View File

@@ -386,8 +386,8 @@ int32 CmdStartStopAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
* @param p1 vehicle ID to send to the hangar * @param p1 vehicle ID to send to the hangar
* @param p2 various bitmasked elements * @param p2 various bitmasked elements
* - p2 = 0 - aircraft goes to the depot and stays there (user command) * - p2 = 0 - aircraft goes to the depot and stays there (user command)
* - p2 (bit 16) - aircraft will try to goto a depot, but not stop there (eg autorenew or autoreplace) * - p2 non-zero - aircraft will try to goto a depot, but not stop there (eg forced servicing)
* - p2 (bit 17) - aircraft will try to goto a depot at the airport specified by low word of p2 XXX - Not Used * - p2 (bit 17) - aircraft will try to goto a depot at the next airport
*/ */
int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2) int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
{ {
@@ -408,11 +408,11 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
} }
} else { } else {
bool next_airport_has_hangar = true; bool next_airport_has_hangar = true;
/* If bit 17 is set, next airport is specified by low word of p2, otherwise it's the target airport */
/* XXX - I don't think p2 is any valid station cause all calls use either 0, 1, or 1<<16!!!!!!!!! */ /* XXX - I don't think p2 is any valid station cause all calls use either 0, 1, or 1<<16!!!!!!!!! */
StationID next_airport_index = (HASBIT(p2, 17)) ? (StationID)p2 : v->u.air.targetairport; StationID next_airport_index = (HASBIT(p2, 17)) ? (StationID)p2 : v->u.air.targetairport;
const Station *st = GetStation(next_airport_index); const Station *st = GetStation(next_airport_index);
/* If the station is not a valid airport or if it has no hangars */ // If an airport doesn't have terminals (so no landing space for airports),
// it surely doesn't have any hangars
if (!IsValidStation(st) || st->airport_tile == 0 || GetAirport(st->airport_type)->nof_depots == 0) { if (!IsValidStation(st) || st->airport_tile == 0 || GetAirport(st->airport_type)->nof_depots == 0) {
StationID station; StationID station;
@@ -1440,14 +1440,12 @@ static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *
AircraftNextAirportPos_and_Order(v); AircraftNextAirportPos_and_Order(v);
// check if the aircraft needs to be replaced or renewed and send it to a hangar if needed // check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
// unless it is due for renewal but the engine is no longer available
if (v->owner == _local_player && ( if (v->owner == _local_player && (
EngineHasReplacementForPlayer(p, v->engine_type) || EngineHasReplacementForPlayer(p, v->engine_type) ||
((p->engine_renew && v->age - v->max_age > p->engine_renew_months * 30) && (p->engine_renew && v->age - v->max_age > p->engine_renew_months * 30)
HASBIT(GetEngine(v->engine_type)->player_avail, _local_player))
)) { )) {
_current_player = _local_player; _current_player = _local_player;
DoCommandP(v->tile, v->index, 1 << 16, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR); DoCommandP(v->tile, v->index, 1, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
_current_player = OWNER_NONE; _current_player = OWNER_NONE;
} }
} }

View File

@@ -1,19 +1,3 @@
0.4.8 (2006-08-12)
------------------------------------------------------------------------
- Fix: A ship in a depot must be stopped before it can be cloned.
- Fix: After changing directory in 'Play Scenario', the default scenarios didn't show up in 'New Game'
0.4.8-RC2 (2006-07-31)
------------------------------------------------------------------------
- Feature: Add Italian town names as we have an official Italian translation
- Codechange: Verify the presence of music files in the gm/ folder. This should also solve some 100% CPU buildup for some users.
- Fix: Certain combinations of trains crash when moved around inside the depot.
- Fix: Reversed arrow-sign in the multiplayer list column headers on sort by name
- Fix: Industry production change button doesn't work for oilrig passangers.
- Fix: Helicopters stopping in depot after autorenew/autoreplace
- Fix: MorphOS crashes when you go a level up in the root level
- Fix: UDP sockets were used even if network-availability was set to false
- Fix: Crash when trying to build a vehicle type that is set to a max of zero
0.4.8-RC1 (2006-06-28) 0.4.8-RC1 (2006-06-28)
------------------------------------------------------------------------ ------------------------------------------------------------------------
- Feature: Add Turkish town names as we have an official Turkish translation - Feature: Add Turkish town names as we have an official Turkish translation

View File

@@ -1,6 +1,6 @@
.\" Hey, EMACS: -*- nroff -*- .\" Hey, EMACS: -*- nroff -*-
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.Dd August 12, 2006 .Dd March June 28, 2006
.Dt OPENTTD 6 .Dt OPENTTD 6
.Sh NAME .Sh NAME
.Nm openttd .Nm openttd

View File

@@ -1148,7 +1148,7 @@ static void DeliverGoodsToIndustry(TileIndex xy, byte cargo_type, int num_pieces
== ind->accepts_cargo[1] || cargo_type == ind->accepts_cargo[2]) && == ind->accepts_cargo[1] || cargo_type == ind->accepts_cargo[2]) &&
ind->produced_cargo[0] != CT_INVALID && ind->produced_cargo[0] != CT_INVALID &&
ind->produced_cargo[0] != cargo_type && ind->produced_cargo[0] != cargo_type &&
(t = DistanceManhattan(ind->xy, xy)) < u) { (t = DistanceManhattan(ind->xy, xy)) < 2) {
u = t; u = t;
best = ind; best = ind;
} }

View File

@@ -345,7 +345,7 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
x = e->click.pt.x; x = e->click.pt.x;
line = (e->click.pt.y - 127) / 10; line = (e->click.pt.y - 127) / 10;
if (e->click.pt.y >= 127 && IS_INT_INSIDE(line, 0, 2) && i->produced_cargo[line] != CT_INVALID) { if (e->click.pt.y >= 127 && IS_INT_INSIDE(line, 0, 2) && i->produced_cargo[line]) {
if (IS_INT_INSIDE(x, 5, 25) ) { if (IS_INT_INSIDE(x, 5, 25) ) {
// clicked buttons // clicked buttons
if (x < 15) { if (x < 15) {

View File

@@ -23,30 +23,36 @@ URL: http://bugs.openttd.org
-73 vehicle selection bug -73 vehicle selection bug
-66 wagon re-fitting -66 wagon re-fitting
-65 short wagons bug -65 short wagons bug
-52 desync when server saves game (on slow hardware)
-51 Windows doesn't support CUSTOM_LANG_DIR -51 Windows doesn't support CUSTOM_LANG_DIR
-50 Trains chosing an alternative path when encountering a 1-way presignal instead of waiting -50 Trains chosing an alternative path when encountering a 1-way presignal instead of waiting
-47 Low rating calculation and cargo loading priority -47 Low rating calculation and cargo loading priority
-20 Low Saving files when run from gdb 2005-12-06 Unconfirmed -20 Low Saving files when run from gdb 2005-12-06 Unconfirmed
- 9 Low [MorphOS] write to NULL when going to device root in filerequester 2005-11-28 Assigned Christian Rosentreter
------------------------------------------------------------------------ ------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
-1459262 Towns building too many roads way too long now -1436419 Vehicles profits gone negitive.......bug
-1458995 Another bug with smooth_economy
-1436419 Vehicles profits gone negative.......bug
-1434000 Error in Transfer-Function -1434000 Error in Transfer-Function
-1427531 Newspapers problem -1427531 Newspapers problem
-1417453 Makefile and Variables issue -1417453 Makefile and Variables issue
-1397638 Economics bug? -1397638 Economics bug?
-1395628 Trackpad panning/scrolling broken
-1394799 Dual headed engines disagreement -1394799 Dual headed engines disagreement
-1393415 NPF & one-way sigs -1393415 NPF & one-way sigs
-1389999 Child windows not sticking
-1389986 Shares problem (nightly 3330) -1389986 Shares problem (nightly 3330)
-1362784 Incorrect vehicule profit calcul with inflation on
-1299162 Music volume too low -1299162 Music volume too low
-1250094 Towns Shrink when center tile is built on -1250094 Towns Shrink when center tile is built on
-1244842 Multiplayer interface bug (0.4.0.1) -1244842 Multiplayer interface bug (0.4.0.1)
-1212267 station visited twice when servicing -1212267 station visited twice when servicing
-1211764 AI companies behave weird on the stock market
-1208170 Duplicate station names can be created -1208170 Duplicate station names can be created
-1197116 Some stations are cargo-less -1197116 Some stations are cargo-less
-1188897 Station with cargo enroute_from INVALID_STATION
-1181888 Invaild Station Order => Crash
-1174829 Waypoint / Orders Bug -1174829 Waypoint / Orders Bug
-1168820 Some mouse and keyboard events are lost -1168820 Some mouse and keyboard events are lost
-1167810 Cargo payment after deleting stations (st->xy = 0) -1167810 Cargo payment after deleting stations (st->xy = 0)
@@ -58,20 +64,32 @@ Minor Bugs for 0.4.8
------------------------------------------------------------------------ ------------------------------------------------------------------------
URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
-1424115 Reversed arrow sign in list view column headers
-1412031 fast forward scrolling is also fast forward :) -1412031 fast forward scrolling is also fast forward :)
-1387424 overtake insolvent company is to cheap -1387424 overtake insolvent company is to cheap
-1382782 Loan interest calculated 'wrong' -1382782 Loan interest calculated 'wrong'
-1372891 Performance loss with NTP & NPF
-1296259 Autosave override for multiplayer games
-1242753 Town population minus 10
-1236320 Bug in main menu allows moving screen -1236320 Bug in main menu allows moving screen
-1201284 permanent hilight in a depot -1201284 permanent hilight in a depot
-1193870 keep the date counter running
-1185852 Scrollbars get arbitrarily small -1185852 Scrollbars get arbitrarily small
-1184634 Replace vehicles window bug -1184634 Replace vehicles window bug
-1183253 Incorrect Load vs Loading Sprites
-1183251 Hangar sprite does not update when refit.
-1160732 little bug with transparency -1160732 little bug with transparency
-1117731 Editor-StartingDate -1117731 Editor-StartingDate
-1114237 Wrong autoreplace hint
-1108046 game freezes -1108046 game freezes
-1106889 Chat Interface enhancements
-1104358 train lost message - history
-1102174 Bug if 3 people buy 25% shares in one company -1102174 Bug if 3 people buy 25% shares in one company
-1087407 wrong message in history
-1084620 Minor bug considering buses/trucks -1084620 Minor bug considering buses/trucks
-1034310 color mauve in diagrams -1034310 color mauve in diagrams
-1030661 It's possible to build a tunnel under oil wells -1030661 It's possible to build a tunnel under oil wells
-1009171 Canals and locks at sea level cause flooding
-0993516 Canal + bouy -> wrong graphics. -0993516 Canal + bouy -> wrong graphics.
-0987891 Large UFO destruction bug -0987891 Large UFO destruction bug
-0987883 Aircraft landing/taking off -0987883 Aircraft landing/taking off

View File

@@ -193,7 +193,6 @@ static Slope GetFoundationSlope(TileIndex tile, uint* z)
FindLandscapeHeightByTile(&ti, tile); FindLandscapeHeightByTile(&ti, tile);
tileh = ti.tileh; tileh = ti.tileh;
*z = ti.z;
slope = _tile_type_procs[GetTileType(tile)]->get_slope_tileh_proc(&ti); slope = _tile_type_procs[GetTileType(tile)]->get_slope_tileh_proc(&ti);
// Flatter slope -> higher base height // Flatter slope -> higher base height

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SWISS :Swiss STR_TOWNNAME_SWISS :Swiss
STR_TOWNNAME_DANISH :Danish STR_TOWNNAME_DANISH :Danish
STR_TOWNNAME_TURKISH :Turkish STR_TOWNNAME_TURKISH :Turkish
STR_TOWNNAME_ITALIAN :Italian
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pounds (<28>) STR_CURR_GBP :Pounds (<28>)

View File

@@ -838,7 +838,6 @@ STR_TOWNNAME_ROMANIAN :Romeno
STR_TOWNNAME_CZECH :Checo STR_TOWNNAME_CZECH :Checo
STR_TOWNNAME_SWISS :Sui<75>a STR_TOWNNAME_SWISS :Sui<75>a
STR_TOWNNAME_DANISH :Dinamarqu<71>s STR_TOWNNAME_DANISH :Dinamarqu<71>s
STR_TOWNNAME_TURKISH :Turco
############ end of townname region ############ end of townname region
STR_CURR_GBP :Libras (<28>) STR_CURR_GBP :Libras (<28>)
@@ -1250,7 +1249,6 @@ STR_NETWORK_7_PLAYERS :7 jogadores
STR_NETWORK_8_PLAYERS :8 jogadores STR_NETWORK_8_PLAYERS :8 jogadores
STR_NETWORK_9_PLAYERS :9 jogadores STR_NETWORK_9_PLAYERS :9 jogadores
STR_NETWORK_10_PLAYERS :10 jogadores STR_NETWORK_10_PLAYERS :10 jogadores
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Limite de companhias:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limita o servidor para um certo valor de companhias STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limita o servidor para um certo valor de companhias
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max espectadores: STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max espectadores:
@@ -1451,7 +1449,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Ferrovia com si
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na dire<72><65>o incorreta para a estrada STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na dire<72><65>o incorreta para a estrada
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Dever<65> remover a estrada primeiro STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Dever<65> remover a estrada primeiro
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabalhos em ruas em progresso
STR_1802_ROAD_CONSTRUCTION :{WHITE}Construir Estradas STR_1802_ROAD_CONSTRUCTION :{WHITE}Construir Estradas
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecionar Ponte de Estrada STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecionar Ponte de Estrada
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}N<>o <20> poss<73>vel construir estrada aqui... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}N<>o <20> poss<73>vel construir estrada aqui...

View File

@@ -1451,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :V
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreny inclinat en direcci<63> incorrecta per la carretera STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreny inclinat en direcci<63> incorrecta per la carretera
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}S'ha de treure la carretera primer STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}S'ha de treure la carretera primer
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Obres en progr<67>s
STR_1802_ROAD_CONSTRUCTION :{WHITE}Construcci<63> de Carreteres STR_1802_ROAD_CONSTRUCTION :{WHITE}Construcci<63> de Carreteres
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecciona Pont per Carretera STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecciona Pont per Carretera
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}No es pot construir carretera aqui... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}No es pot construir carretera aqui...

View File

@@ -896,7 +896,6 @@ STR_TOWNNAME_CZECH :Ceska
STR_TOWNNAME_SWISS :<3A>v<EFBFBD>carsk<73> STR_TOWNNAME_SWISS :<3A>v<EFBFBD>carsk<73>
STR_TOWNNAME_DANISH :D<>nsk<73> STR_TOWNNAME_DANISH :D<>nsk<73>
STR_TOWNNAME_TURKISH :Tureck<63> STR_TOWNNAME_TURKISH :Tureck<63>
STR_TOWNNAME_ITALIAN :Italsk<73>
############ end of townname region ############ end of townname region
STR_CURR_GBP :Libry (<28>) STR_CURR_GBP :Libry (<28>)

View File

@@ -1451,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Togskinner med
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landet h<>lder i en forkert retning til byggning af vej STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Landet h<>lder i en forkert retning til byggning af vej
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Det er n<>dvendigt at fjerne vejen f<>rst STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Det er n<>dvendigt at fjerne vejen f<>rst
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vejarbejde er i gang
STR_1802_ROAD_CONSTRUCTION :{WHITE}Vej Konstruktion STR_1802_ROAD_CONSTRUCTION :{WHITE}Vej Konstruktion
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}V<>lg vejbro STR_1803_SELECT_ROAD_BRIDGE :{WHITE}V<>lg vejbro
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vej her... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vej her...

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Tsjechisch
STR_TOWNNAME_SWISS :Zwitsers STR_TOWNNAME_SWISS :Zwitsers
STR_TOWNNAME_DANISH :Deens STR_TOWNNAME_DANISH :Deens
STR_TOWNNAME_TURKISH :Turks STR_TOWNNAME_TURKISH :Turks
STR_TOWNNAME_ITALIAN :Italiaans
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pond (<28>) STR_CURR_GBP :Pond (<28>)

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Czech
STR_TOWNNAME_SWISS :Swiss STR_TOWNNAME_SWISS :Swiss
STR_TOWNNAME_DANISH :Danish STR_TOWNNAME_DANISH :Danish
STR_TOWNNAME_TURKISH :Turkish STR_TOWNNAME_TURKISH :Turkish
STR_TOWNNAME_ITALIAN :Italian
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pounds (<28>) STR_CURR_GBP :Pounds (<28>)

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :T
STR_TOWNNAME_SWISS :<3A>veitsi STR_TOWNNAME_SWISS :<3A>veitsi
STR_TOWNNAME_DANISH :Taani STR_TOWNNAME_DANISH :Taani
STR_TOWNNAME_TURKISH :T<>rgi STR_TOWNNAME_TURKISH :T<>rgi
STR_TOWNNAME_ITALIAN :Itaalia
############ end of townname region ############ end of townname region
STR_CURR_GBP :Naelad (<28>) STR_CURR_GBP :Naelad (<28>)
@@ -1452,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Raudtee kombo-s
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maapind on tee ehitamiseks sobimatu kaldega STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maapind on tee ehitamiseks sobimatu kaldega
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Enne on vaja tee eemaldada STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Enne on vaja tee eemaldada
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Tee ehitus k<>ib
STR_1802_ROAD_CONSTRUCTION :{WHITE}Tee ehitamine STR_1802_ROAD_CONSTRUCTION :{WHITE}Tee ehitamine
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vali sillat<61><74>p STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vali sillat<61><74>p
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Siia ei saa teed ehitada... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Siia ei saa teed ehitada...

View File

@@ -1451,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Rautatie yhdist
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maa viett<74><74> v<><76>r<EFBFBD><72>n suuntaan. STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maa viett<74><74> v<><76>r<EFBFBD><72>n suuntaan.
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Tie pit<69><74> siirt<72><74> ensin. STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Tie pit<69><74> siirt<72><74> ensin.
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Tiety<74>t ovat k<>ynniss<73>.
STR_1802_ROAD_CONSTRUCTION :{WHITE}Tien rakentaminen STR_1802_ROAD_CONSTRUCTION :{WHITE}Tien rakentaminen
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Valitse maantiesilta STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Valitse maantiesilta
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Tiet<65> ei voi rakentaa... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Tiet<65> ei voi rakentaa...

View File

@@ -840,7 +840,6 @@ STR_TOWNNAME_CZECH :Tch
STR_TOWNNAME_SWISS :Suisse STR_TOWNNAME_SWISS :Suisse
STR_TOWNNAME_DANISH :Danois STR_TOWNNAME_DANISH :Danois
STR_TOWNNAME_TURKISH :Turques STR_TOWNNAME_TURKISH :Turques
STR_TOWNNAME_ITALIAN :Italien
############ end of townname region ############ end of townname region
STR_CURR_GBP :Livre (<28>) STR_CURR_GBP :Livre (<28>)

View File

@@ -1241,10 +1241,8 @@ STR_NETWORK_8_PLAYERS :8 xogadores
STR_NETWORK_9_PLAYERS :9 xogadores STR_NETWORK_9_PLAYERS :9 xogadores
STR_NETWORK_10_PLAYERS :10 xogadores STR_NETWORK_10_PLAYERS :10 xogadores
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}N<> m<>x. de compa<70><61>as: STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}N<> m<>x. de compa<70><61>as:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limita-lo servidor a unha certa cantidade de compa<70><61>as
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}N<> m<>x. de espectadores: STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}N<> m<>x. de espectadores:
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limita-lo servidor a unha certa cantidade de espectadores
STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado: STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
STR_NETWORK_LANGUAGE_TIP :{BLACK}Outros xogadores sabr<62>n cal <20> o idioma que se fala no servidor STR_NETWORK_LANGUAGE_TIP :{BLACK}Outros xogadores sabr<62>n cal <20> o idioma que se fala no servidor

View File

@@ -840,7 +840,6 @@ STR_TOWNNAME_CZECH :Tschechisch
STR_TOWNNAME_SWISS :Schweizerisch STR_TOWNNAME_SWISS :Schweizerisch
STR_TOWNNAME_DANISH :D<>nisch STR_TOWNNAME_DANISH :D<>nisch
STR_TOWNNAME_TURKISH :T<>rkisch STR_TOWNNAME_TURKISH :T<>rkisch
STR_TOWNNAME_ITALIAN :Italienisch
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pfund (<28>) STR_CURR_GBP :Pfund (<28>)

View File

@@ -904,7 +904,6 @@ STR_TOWNNAME_CZECH :Cseh
STR_TOWNNAME_SWISS :Sv<53>jci STR_TOWNNAME_SWISS :Sv<53>jci
STR_TOWNNAME_DANISH :D<>n STR_TOWNNAME_DANISH :D<>n
STR_TOWNNAME_TURKISH :T<>r<EFBFBD>k STR_TOWNNAME_TURKISH :T<>r<EFBFBD>k
STR_TOWNNAME_ITALIAN :Olasz
############ end of townname region ############ end of townname region
STR_CURR_GBP :Font (<28>) STR_CURR_GBP :Font (<28>)

View File

@@ -820,26 +820,24 @@ STR_0335_6 :{BLACK}6
STR_0336_7 :{BLACK}7 STR_0336_7 :{BLACK}7
############ start of townname region ############ start of townname region
STR_TOWNNAME_ORIGINAL_ENGLISH :Ensk (Upphafleg) STR_TOWNNAME_ORIGINAL_ENGLISH :Ensk
STR_TOWNNAME_FRENCH :Fr<46>nsk STR_TOWNNAME_FRENCH :Fr<46>nsk
STR_TOWNNAME_GERMAN :<3A><>sk STR_TOWNNAME_GERMAN :<3A><>sk
STR_TOWNNAME_ADDITIONAL_ENGLISH :Ensk (Aukaleg) STR_TOWNNAME_ADDITIONAL_ENGLISH :Enska (Aukaleg)
STR_TOWNNAME_LATIN_AMERICAN :R<EFBFBD>m<EFBFBD>nsk-Amer<65>sk STR_TOWNNAME_LATIN_AMERICAN :Latin-Amer<65>sk
STR_TOWNNAME_SILLY :F<>r<EFBFBD>nleg STR_TOWNNAME_SILLY :F<>r<EFBFBD>nleg
STR_TOWNNAME_SWEDISH :S<>nsk STR_TOWNNAME_SWEDISH :S<>nsk
STR_TOWNNAME_DUTCH :Hollensk STR_TOWNNAME_DUTCH :Hollensk
STR_TOWNNAME_FINNISH :Finnsk STR_TOWNNAME_FINNISH :Finnsk
STR_TOWNNAME_POLISH :P<>lsk STR_TOWNNAME_POLISH :P<>lsk
STR_TOWNNAME_SLOVAKISH :Sl<53>vak<61>sk STR_TOWNNAME_SLOVAKISH :Sl<53>vak<61>sk
STR_TOWNNAME_NORWEGIAN :Norsk STR_TOWNNAME_NORWEGIAN :Norska
STR_TOWNNAME_HUNGARIAN :Ungversk STR_TOWNNAME_HUNGARIAN :Ungversk
STR_TOWNNAME_AUSTRIAN :Austurr<72>sk STR_TOWNNAME_AUSTRIAN :Austurr<72>sk
STR_TOWNNAME_ROMANIAN :R<>mensk STR_TOWNNAME_ROMANIAN :R<>mensk
STR_TOWNNAME_CZECH :T<>kknesk STR_TOWNNAME_CZECH :T<>kknesk
STR_TOWNNAME_SWISS :Svissnesk STR_TOWNNAME_SWISS :Svissnesk
STR_TOWNNAME_DANISH :D<>nsk STR_TOWNNAME_DANISH :D<>nsk
STR_TOWNNAME_TURKISH :Tyrknesk
STR_TOWNNAME_ITALIAN :<3A>t<EFBFBD>lsk
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pund (<28>) STR_CURR_GBP :Pund (<28>)
@@ -1239,22 +1237,7 @@ STR_NETWORK_INTERNET :Internet
STR_NETWORK_LAN_INTERNET :Sta<74>arnet / Internet STR_NETWORK_LAN_INTERNET :Sta<74>arnet / Internet
STR_NETWORK_INTERNET_ADVERTISE :Internet (augl<67>sa) STR_NETWORK_INTERNET_ADVERTISE :Internet (augl<67>sa)
STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_COMBO2 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_0_PLAYERS :0 leikmenn
STR_NETWORK_1_PLAYERS :1 leikma<6D>ur
STR_NETWORK_2_PLAYERS :2 leikmenn
STR_NETWORK_3_PLAYERS :3 leikmenn
STR_NETWORK_4_PLAYERS :4 leikmenn
STR_NETWORK_5_PLAYERS :5 leikmenn
STR_NETWORK_6_PLAYERS :6 leikmenn
STR_NETWORK_7_PLAYERS :7 leikmenn
STR_NETWORK_8_PLAYERS :8 leikmenn
STR_NETWORK_9_PLAYERS :9 leikmenn
STR_NETWORK_10_PLAYERS :10 leikmenn
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}H<>marksfj<66>ldi fyrirt<72>kja:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Takmarka fj<66>lda fyrirt<72>kja <20> vef<65>j<EFBFBD>ni
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}H<>marksfj<66>ldi <20>horfanda:
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Takmarka fj<66>lda <20>horfanda <20> vef<65>j<EFBFBD>ninum
STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING} STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Tungum<75>l: STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Tungum<75>l:
STR_NETWORK_LANGUAGE_TIP :{BLACK}A<>rir notendur munu vita hva<76>a tungum<75>l er tala<6C> <20> <20>j<EFBFBD>ninum STR_NETWORK_LANGUAGE_TIP :{BLACK}A<>rir notendur munu vita hva<76>a tungum<75>l er tala<6C> <20> <20>j<EFBFBD>ninum
@@ -1352,7 +1335,6 @@ STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :rangt leikjalyk
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :rangt notandan<61>mer <20> DoCommand STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :rangt notandan<61>mer <20> DoCommand
STR_NETWORK_ERR_CLIENT_KICKED :hent <20>t af <20>j<EFBFBD>n STR_NETWORK_ERR_CLIENT_KICKED :hent <20>t af <20>j<EFBFBD>n
STR_NETWORK_ERR_CLIENT_CHEATER :reyndi a<> svindla STR_NETWORK_ERR_CLIENT_CHEATER :reyndi a<> svindla
STR_NETWORK_ERR_CLIENT_SERVER_FULL :vef<65>j<EFBFBD>nn fullur
############ End of leave-in-this-order ############ End of leave-in-this-order
STR_NETWORK_CLIENT_JOINED :hefur b<>st vi<76> leikinn STR_NETWORK_CLIENT_JOINED :hefur b<>st vi<76> leikinn
STR_NETWORK_GIVE_MONEY :gaf fyrirt<72>kinu <20><>nu pening ({CURRENCY}) STR_NETWORK_GIVE_MONEY :gaf fyrirt<72>kinu <20><>nu pening ({CURRENCY})
@@ -1451,7 +1433,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Lestarteinn me
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land hallar <20> ranga <20>tt fyrir vegager<65> STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Land hallar <20> ranga <20>tt fyrir vegager<65>
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Ver<65>ur a<> fjarl<72>gja veg fyrst STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Ver<65>ur a<> fjarl<72>gja veg fyrst
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vegaframkv<6B>mdir standa yfir
STR_1802_ROAD_CONSTRUCTION :{WHITE}Vegager<65> STR_1802_ROAD_CONSTRUCTION :{WHITE}Vegager<65>
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Veldu vegabr<62> STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Veldu vegabr<62>
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Get ekki lagt veg h<>r... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Get ekki lagt veg h<>r...
@@ -2417,7 +2398,6 @@ STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Get ekki
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Get ekki eytt <20>essari skipun... STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Get ekki eytt <20>essari skipun...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Get ekki breytt <20>essari skipun... STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Get ekki breytt <20>essari skipun...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Get ekki f<>rt farart<72>ki... STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Get ekki f<>rt farart<72>ki...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Aftari dr<64>ttarvagn fylgir alltaf fremri hluta
STR_8838_N_A :N/A{SKIP} STR_8838_N_A :N/A{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Get ekki selt lest... STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Get ekki selt lest...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Get ekki fundi<64> leit til sta<74>bundins sk<73>lis STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Get ekki fundi<64> leit til sta<74>bundins sk<73>lis
@@ -2768,8 +2748,6 @@ STR_REPLACE_HELP_RAILTYPE :{BLACK}Veldu hv
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}S<>nir hva<76>a vagn kemur <20> sta<74> <20>ess sem valinn er vinstra megin STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}S<>nir hva<76>a vagn kemur <20> sta<74> <20>ess sem valinn er vinstra megin
STR_REPLACE_HELP :{BLACK}<7D>etta gerir <20><>r kleift a<> skipta <20>t <20>llum v<>gum af einni tegund me<6D> annarri, <20>egar <20>eir fara <20> lestarsk<73>li STR_REPLACE_HELP :{BLACK}<7D>etta gerir <20><>r kleift a<> skipta <20>t <20>llum v<>gum af einni tegund me<6D> annarri, <20>egar <20>eir fara <20> lestarsk<73>li
STR_REPLACE_REMOVE_WAGON :{BLACK}Selja lestarvagna: {ORANGE}{SKIP}{STRING} STR_REPLACE_REMOVE_WAGON :{BLACK}Selja lestarvagna: {ORANGE}{SKIP}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Heldur lengd lestar me<6D> <20>v<EFBFBD> a<> fjarl<72>gja vagna (framan fr<66>) ef <20>tskipting dr<64>ttarvagna myndi lengja hana.
STR_ENGINE_NOT_BUILDABLE :{WHITE}Ekki h<>gt a<> sm<73><6D>a dr<64>ttarvagn
STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_SHORT_DATE :{WHITE}{DATE_TINY}
STR_SIGN_LIST_CAPTION :{WHITE}Merkjalisti - {COMMA} merki STR_SIGN_LIST_CAPTION :{WHITE}Merkjalisti - {COMMA} merki

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Cechi
STR_TOWNNAME_SWISS :Svizzero STR_TOWNNAME_SWISS :Svizzero
STR_TOWNNAME_DANISH :Danese STR_TOWNNAME_DANISH :Danese
STR_TOWNNAME_TURKISH :Turco STR_TOWNNAME_TURKISH :Turco
STR_TOWNNAME_ITALIAN :Italiano
############ end of townname region ############ end of townname region
STR_CURR_GBP :Sterlina (<28>) STR_CURR_GBP :Sterlina (<28>)

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Tsjekkisk
STR_TOWNNAME_SWISS :Sveitsisk STR_TOWNNAME_SWISS :Sveitsisk
STR_TOWNNAME_DANISH :Dansk STR_TOWNNAME_DANISH :Dansk
STR_TOWNNAME_TURKISH :Tyrkisk STR_TOWNNAME_TURKISH :Tyrkisk
STR_TOWNNAME_ITALIAN :Italiensk
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pund (<28>) STR_CURR_GBP :Pund (<28>)
@@ -1452,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Jernbanespor me
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Feltet heller feil vei for veibygging STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Feltet heller feil vei for veibygging
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}M<> fjerne vei f<>rst STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}M<> fjerne vei f<>rst
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Veiarbeid i gang
STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg vei STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg vei
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Velg brotype STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Velg brotype
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vei her STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikke bygge vei her
@@ -2419,7 +2417,6 @@ STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikke
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikke slette denne ordren... STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikke slette denne ordren...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikke endre denne ordren... STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikke endre denne ordren...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte kj<6B>ret<65>y... STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte kj<6B>ret<65>y...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Bakmaskinen vil alltid f<>lge det fremste motstykket
STR_8838_N_A :N/A{SKIP} STR_8838_N_A :N/A{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan ikke selge jernbanekj<6B>ret<65>y... STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Kan ikke selge jernbanekj<6B>ret<65>y...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikke finne en togstall i n<>rheten STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan ikke finne en togstall i n<>rheten
@@ -2770,7 +2767,6 @@ STR_REPLACE_HELP_RAILTYPE :{BLACK}Velg jer
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dette viser hvilket lokomotiv som overtar for det valgte lokomotivet p<> venstresiden STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dette viser hvilket lokomotiv som overtar for det valgte lokomotivet p<> venstresiden
STR_REPLACE_HELP :{BLACK}Dette verkt<6B>yet lar deg bytte ut en type lokomotiv med en annen. Dette blir gjort neste gang lokomotivet er innom et depot. STR_REPLACE_HELP :{BLACK}Dette verkt<6B>yet lar deg bytte ut en type lokomotiv med en annen. Dette blir gjort neste gang lokomotivet er innom et depot.
STR_REPLACE_REMOVE_WAGON :{BLACK}Vognfjerning: {ORANGE}{SKIP}{STRING} STR_REPLACE_REMOVE_WAGON :{BLACK}Vognfjerning: {ORANGE}{SKIP}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}La den automatiske utskiftningen beholde lengen p<> toget ved <20> fjerne vogner (fra f<>rste vogn), hvis utskiftningen gj<67>r toget lenger.
STR_ENGINE_NOT_BUILDABLE :{WHITE}Motoren kan ikke bygges STR_ENGINE_NOT_BUILDABLE :{WHITE}Motoren kan ikke bygges
STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_SHORT_DATE :{WHITE}{DATE_TINY}

View File

@@ -926,7 +926,6 @@ STR_TOWNNAME_CZECH :Czeskie
STR_TOWNNAME_SWISS :Szwajcarskie STR_TOWNNAME_SWISS :Szwajcarskie
STR_TOWNNAME_DANISH :Dunskie STR_TOWNNAME_DANISH :Dunskie
STR_TOWNNAME_TURKISH :Tureckie STR_TOWNNAME_TURKISH :Tureckie
STR_TOWNNAME_ITALIAN :Wloskie
############ end of townname region ############ end of townname region
STR_CURR_GBP :Funty (<28>) STR_CURR_GBP :Funty (<28>)

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Checo
STR_TOWNNAME_SWISS :Sui<75>a STR_TOWNNAME_SWISS :Sui<75>a
STR_TOWNNAME_DANISH :Dinamarqu<71>s STR_TOWNNAME_DANISH :Dinamarqu<71>s
STR_TOWNNAME_TURKISH :Turco STR_TOWNNAME_TURKISH :Turco
STR_TOWNNAME_ITALIAN :Italiano
############ end of townname region ############ end of townname region
STR_CURR_GBP :Libras (<28>) STR_CURR_GBP :Libras (<28>)

View File

@@ -1451,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Cale ferat
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terenul are o <20>nclinatie nepotrivit<69> pentru o sosea STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terenul are o <20>nclinatie nepotrivit<69> pentru o sosea
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Mai <20>nt<6E>i trebuie demolat<61> soseaua STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Mai <20>nt<6E>i trebuie demolat<61> soseaua
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Lucrari la drum in curs de desfasurare
STR_1802_ROAD_CONSTRUCTION :{WHITE}Constructii rutiere STR_1802_ROAD_CONSTRUCTION :{WHITE}Constructii rutiere
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Alege pod rutier STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Alege pod rutier
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Nu pot construi sosea aici... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Nu pot construi sosea aici...

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Ceske
STR_TOWNNAME_SWISS :Svajciarske STR_TOWNNAME_SWISS :Svajciarske
STR_TOWNNAME_DANISH :Danske STR_TOWNNAME_DANISH :Danske
STR_TOWNNAME_TURKISH :Tureck<63> STR_TOWNNAME_TURKISH :Tureck<63>
STR_TOWNNAME_ITALIAN :Talianske
############ end of townname region ############ end of townname region
STR_CURR_GBP :Libry (<28>) STR_CURR_GBP :Libry (<28>)
@@ -1451,7 +1450,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Zeleznicne kola
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren ma nevhodny sklon pre stavbu cesty STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren ma nevhodny sklon pre stavbu cesty
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Cesta musi byt najskor odstranena STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Cesta musi byt najskor odstranena
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Prebiehaju cestne prace
STR_1802_ROAD_CONSTRUCTION :{WHITE}Vystavba cesty STR_1802_ROAD_CONSTRUCTION :{WHITE}Vystavba cesty
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vyber cestny most STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vyber cestny most
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Tu sa neda postavit cesta... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Tu sa neda postavit cesta...
@@ -2769,7 +2767,6 @@ STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tu sa zo
STR_REPLACE_HELP :{BLACK}Umoznuje vybrat typ lokomotivy, ktory automaticky sa zameni za iny typ, ak vlaky s takouto lokomotivou sa zastavia v depe STR_REPLACE_HELP :{BLACK}Umoznuje vybrat typ lokomotivy, ktory automaticky sa zameni za iny typ, ak vlaky s takouto lokomotivou sa zastavia v depe
STR_REPLACE_REMOVE_WAGON :{BLACK}Odstranenie vagonu: {ORANGE}{SKIP}{STRING} STR_REPLACE_REMOVE_WAGON :{BLACK}Odstranenie vagonu: {ORANGE}{SKIP}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Funkcia automatickeho vylepsovania vlakov moze udrzovat rovnaku dlzku vlakov odstranovanim vagonov (od zaciatku vlakov), pokial by zmena masiny vlak predlzila. STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Funkcia automatickeho vylepsovania vlakov moze udrzovat rovnaku dlzku vlakov odstranovanim vagonov (od zaciatku vlakov), pokial by zmena masiny vlak predlzila.
STR_ENGINE_NOT_BUILDABLE :{WHITE}Lokomotiva sa nevyraba
STR_SHORT_DATE :{WHITE}{DATE_TINY} STR_SHORT_DATE :{WHITE}{DATE_TINY}
STR_SIGN_LIST_CAPTION :{WHITE}Zoznam popisov - {COMMA} popisov STR_SIGN_LIST_CAPTION :{WHITE}Zoznam popisov - {COMMA} popisov

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Checo
STR_TOWNNAME_SWISS :Suizo STR_TOWNNAME_SWISS :Suizo
STR_TOWNNAME_DANISH :Danes STR_TOWNNAME_DANISH :Danes
STR_TOWNNAME_TURKISH :Turco STR_TOWNNAME_TURKISH :Turco
STR_TOWNNAME_ITALIAN :Italiano
############ end of townname region ############ end of townname region
STR_CURR_GBP :Libras (<28>) STR_CURR_GBP :Libras (<28>)
@@ -1451,7 +1450,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :V
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tierra inclinada en direcci<63>n err<72>nea para carretera STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Tierra inclinada en direcci<63>n err<72>nea para carretera
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Ha de retirar carretera primero STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Ha de retirar carretera primero
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Trabajos en la carretera en progreso
STR_1802_ROAD_CONSTRUCTION :{WHITE}Construcci<63>n de carretera STR_1802_ROAD_CONSTRUCTION :{WHITE}Construcci<63>n de carretera
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Elige puente de carretera STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Elige puente de carretera
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}No se puede construir carretera aqu<71>... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}No se puede construir carretera aqu<71>...

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :Tjeckiska
STR_TOWNNAME_SWISS :Schweiziska STR_TOWNNAME_SWISS :Schweiziska
STR_TOWNNAME_DANISH :Danska STR_TOWNNAME_DANISH :Danska
STR_TOWNNAME_TURKISH :Turkiska STR_TOWNNAME_TURKISH :Turkiska
STR_TOWNNAME_ITALIAN :Italienska
############ end of townname region ############ end of townname region
STR_CURR_GBP :Pund (<28>) STR_CURR_GBP :Pund (<28>)
@@ -1452,7 +1451,6 @@ STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :J
##id 0x1800 ##id 0x1800
STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Marken lutar <20>t fel h<>ll f<>r v<>g STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Marken lutar <20>t fel h<>ll f<>r v<>g
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}M<>ste ta bort v<>g f<>rst STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}M<>ste ta bort v<>g f<>rst
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}V<>garbete p<>g<EFBFBD>r
STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg v<>g STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg v<>g
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}V<>lj v<>gbro STR_1803_SELECT_ROAD_BRIDGE :{WHITE}V<>lj v<>gbro
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan inte bygga v<>g h<>r... STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan inte bygga v<>g h<>r...

View File

@@ -839,7 +839,6 @@ STR_TOWNNAME_CZECH :
STR_TOWNNAME_SWISS :isvi<76>rece STR_TOWNNAME_SWISS :isvi<76>rece
STR_TOWNNAME_DANISH :Danimarkaca STR_TOWNNAME_DANISH :Danimarkaca
STR_TOWNNAME_TURKISH :T<>rk<72>e STR_TOWNNAME_TURKISH :T<>rk<72>e
STR_TOWNNAME_ITALIAN :Italyanca
############ end of townname region ############ end of townname region
STR_CURR_GBP :Sterlin (<28>) STR_CURR_GBP :Sterlin (<28>)

View File

@@ -212,7 +212,7 @@ static const char *credits[] = {
" Stefan Mei<65>ner (sign_de) - For his work on the console", " Stefan Mei<65>ner (sign_de) - For his work on the console",
" Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with (and PBS)", " Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with (and PBS)",
" Cian Duffy (MYOB) - BeOS port / manual writing", " Cian Duffy (MYOB) - BeOS port / manual writing",
" Christian Rosentreter (tokai) - MorphOS / AmigaOS port", " Christian Rosentreter (tokaiz) - MorphOS / AmigaOS port",
"", "",
" Michael Blunck - Pre-Signals and Semaphores <20> 2003", " Michael Blunck - Pre-Signals and Semaphores <20> 2003",
" George - Canal/Lock graphics <20> 2003-2004", " George - Canal/Lock graphics <20> 2003-2004",

16
music.h
View File

@@ -1,16 +0,0 @@
/* $Id */
#ifndef MUSIC_H
#define MUSIC_H
#define NUM_SONGS_PLAYLIST 33
#define NUM_SONGS_AVAILABLE 22
typedef struct SongSpecs {
char filename[256];
char song_name[64];
} SongSpecs;
extern const SongSpecs origin_songs_specs[NUM_SONGS_AVAILABLE];
#endif //MUSIC_H

View File

@@ -10,12 +10,12 @@
#include "hal.h" #include "hal.h"
#include "macros.h" #include "macros.h"
#include "variables.h" #include "variables.h"
#include "music.h"
static byte _music_wnd_cursong; static byte _music_wnd_cursong;
static bool _song_is_active; static bool _song_is_active;
static byte _cur_playlist[NUM_SONGS_PLAYLIST]; static byte _cur_playlist[33];
#define NUM_SONGS_AVAILABLE 22
static byte _playlist_all[] = { static byte _playlist_all[] = {
@@ -43,31 +43,33 @@ static byte * const _playlists[] = {
msf.custom_2, msf.custom_2,
}; };
const SongSpecs origin_songs_specs[NUM_SONGS_AVAILABLE] = { // Map the order of the song names to the numbers of the midi filenames
{"gm_tt00.gm", "Tycoon DELUXE Theme"}, static const byte midi_idx[] = {
{"gm_tt02.gm", "Easy Driver"}, 0, // Tycoon DELUXE Theme
{"gm_tt03.gm", "Little Red Diesel"}, 2, // Easy Driver
{"gm_tt17.gm", "Cruise Control"}, 3, // Little Red Diesel
{"gm_tt07.gm", "Don't Walk!"}, 17, // Cruise Control
{"gm_tt09.gm", "Fell Apart On Me"}, 7, // Don't Walk!
{"gm_tt04.gm", "City Groove"}, 9, // Fell Apart On Me
{"gm_tt19.gm", "Funk Central"}, 4, // City Groove
{"gm_tt06.gm", "Stoke It"}, 19, // Funk Central
{"gm_tt12.gm", "Road Hog"}, 6, // Stoke It
{"gm_tt05.gm", "Aliens Ate My Railway"}, 12, // Road Hog
{"gm_tt01.gm", "Snarl Up"}, 5, // Aliens Ate My Railway
{"gm_tt18.gm", "Stroll On"}, 1, // Snarl Up
{"gm_tt10.gm", "Can't Get There From Here"}, 18, // Stroll On
{"gm_tt08.gm", "Sawyer's Tune"}, 10, // Can't Get There From Here
{"gm_tt13.gm", "Hold That Train!"}, 8, // Sawyer's Tune
{"gm_tt21.gm", "Movin' On"}, 13, // Hold That Train!
{"gm_tt15.gm", "Goss Groove"}, 21, // Movin' On
{"gm_tt16.gm", "Small Town"}, 15, // Goss Groove
{"gm_tt14.gm", "Broomer's Oil Rag"}, 16, // Small Town
{"gm_tt20.gm", "Jammit"}, 14, // Broomer's Oil Rag
{"gm_tt11.gm", "Hard Drivin'"}, 20, // Jammit
11 // Hard Drivin'
}; };
static void SkipToPrevSong(void) static void SkipToPrevSong(void)
{ {
byte *b = _cur_playlist; byte *b = _cur_playlist;
@@ -116,8 +118,8 @@ static void MusicVolumeChanged(byte new_vol)
static void DoPlaySong(void) static void DoPlaySong(void)
{ {
char filename[256]; char filename[256];
snprintf(filename, sizeof(filename), "%s%s", snprintf(filename, sizeof(filename), "%sgm_tt%.2d.gm",
_path.gm_dir, origin_songs_specs[_music_wnd_cursong - 1].filename); _path.gm_dir, midi_idx[_music_wnd_cursong - 1]);
_music_driver->play_song(filename); _music_driver->play_song(filename);
} }
@@ -129,19 +131,10 @@ static void DoStopMusic(void)
static void SelectSongToPlay(void) static void SelectSongToPlay(void)
{ {
uint i = 0; uint i = 0;
uint j = 0;
char filename[256];
memset(_cur_playlist, 0, sizeof(_cur_playlist)); memset(_cur_playlist, 0, sizeof(_cur_playlist));
do { do {
snprintf(filename, sizeof(filename), "%s%s", _cur_playlist[i] = _playlists[msf.playlist][i];
_path.gm_dir, origin_songs_specs[_playlists[msf.playlist][i]].filename);
//we are now checking for the existence of that file prior
//to add it to the list of available songs
if (FileExists(filename)) {
_cur_playlist[j] = _playlists[msf.playlist][i];
j++;
}
} while (_playlists[msf.playlist][i++] != 0 && i < lengthof(_cur_playlist) - 1); } while (_playlists[msf.playlist][i++] != 0 && i < lengthof(_cur_playlist) - 1);
if (msf.shuffle) { if (msf.shuffle) {
@@ -172,15 +165,7 @@ static void PlayPlaylistSong(void)
{ {
if (_cur_playlist[0] == 0) { if (_cur_playlist[0] == 0) {
SelectSongToPlay(); SelectSongToPlay();
//if there is not songs in the playlist, it may indicate if (_cur_playlist[0] == 0) return;
//no file on the gm folder, or even no gm folder.
//Stop the playback, then
if (_cur_playlist[0] == 0) {
_song_is_active = false;
_music_wnd_cursong = 0;
msf.playing = false;
return;
}
} }
_music_wnd_cursong = _cur_playlist[0]; _music_wnd_cursong = _cur_playlist[0];
DoPlaySong(); DoPlaySong();
@@ -197,13 +182,13 @@ void ResetMusic(void)
void MusicLoop(void) void MusicLoop(void)
{ {
if (!msf.playing && _song_is_active) { if (!msf.btn_down && _song_is_active) {
StopMusic(); StopMusic();
} else if (msf.playing && !_song_is_active) { } else if (msf.btn_down && !_song_is_active) {
PlayPlaylistSong(); PlayPlaylistSong();
} }
if (!_song_is_active) return; if (_song_is_active == false) return;
if (!_music_driver->is_song_playing()) { if (!_music_driver->is_song_playing()) {
if (_game_mode != GM_MENU) { if (_game_mode != GM_MENU) {
@@ -272,7 +257,7 @@ static void MusicTrackSelectionWndProc(Window *w, WindowEvent *e)
if (!IS_INT_INSIDE(y, 0, NUM_SONGS_AVAILABLE)) return; if (!IS_INT_INSIDE(y, 0, NUM_SONGS_AVAILABLE)) return;
p = _playlists[msf.playlist]; p = _playlists[msf.playlist];
for (i = 0; i != NUM_SONGS_PLAYLIST - 1; i++) { for (i = 0; i != 32; i++) {
if (p[i] == 0) { if (p[i] == 0) {
p[i] = y + 1; p[i] = y + 1;
p[i + 1] = 0; p[i + 1] = 0;
@@ -354,7 +339,7 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
color = 0xB8; color = 0xB8;
} }
} }
GfxFillRect(187, NUM_SONGS_PLAYLIST - i * 2, 200, NUM_SONGS_PLAYLIST - i * 2, color); GfxFillRect(187, 33 - i * 2, 200, 33 - i * 2, color);
} }
GfxFillRect(60, 46, 239, 52, 0); GfxFillRect(60, 46, 239, 52, 0);
@@ -420,10 +405,10 @@ static void MusicWindowWndProc(Window *w, WindowEvent *e)
SkipToNextSong(); SkipToNextSong();
break; break;
case 4: // stop playing case 4: // stop playing
msf.playing = false; msf.btn_down = false;
break; break;
case 5: // start playing case 5: // start playing
msf.playing = true; msf.btn_down = true;
break; break;
case 6:{ // volume sliders case 6:{ // volume sliders
byte *vol,new_vol; byte *vol,new_vol;

View File

@@ -621,51 +621,6 @@ static byte MakeTurkishTownName(char *buf, uint32 seed)
return 0; return 0;
} }
static const char *mascul_femin_italian[] = {
"o",
"a",
};
static byte MakeItalianTownName(char *buf, uint32 seed) {
strcpy(buf, "");
if (SeedModChance(0, 6, seed) == 0) { // real city names
strcat(buf, name_italian_real[SeedModChance(4, lengthof(name_italian_real), seed)]);
} else {
uint i;
if (SeedModChance(0, 8, seed) == 0) { // prefix
strcat(buf, name_italian_pref[SeedModChance(11, lengthof(name_italian_pref), seed)]);
}
i = SeedChance(0, 2, seed);
if (i == 0) { // masculine form
strcat(buf, name_italian_1m[SeedModChance(4, lengthof(name_italian_1m), seed)]);
} else { // feminine form
strcat(buf, name_italian_1f[SeedModChance(4, lengthof(name_italian_1f), seed)]);
}
if (SeedModChance(3, 3, seed) == 0) {
strcat(buf, name_italian_2[SeedModChance(11, lengthof(name_italian_2), seed)]);
strcat(buf,mascul_femin_italian[i]);
} else {
strcat(buf, name_italian_2i[SeedModChance(16, lengthof(name_italian_2i), seed)]);
}
if (SeedModChance(15, 4, seed) == 0) {
if (SeedModChance(5, 2, seed) == 0) { // generic suffix
strcat(buf, name_italian_3[SeedModChance(4, lengthof(name_italian_3), seed)]);
} else { // river name suffix
strcat(buf, name_italian_river1[SeedModChance(4, lengthof(name_italian_river1), seed)]);
strcat(buf, name_italian_river2[SeedModChance(16, lengthof(name_italian_river2), seed)]);
}
}
}
return 0;
}
TownNameGenerator * const _town_name_generators[] = TownNameGenerator * const _town_name_generators[] =
{ {
MakeEnglishOriginalTownName, MakeEnglishOriginalTownName,
@@ -687,7 +642,6 @@ TownNameGenerator * const _town_name_generators[] =
MakeSwissTownName, MakeSwissTownName,
MakeDanishTownName, MakeDanishTownName,
MakeTurkishTownName, MakeTurkishTownName,
MakeItalianTownName,
}; };
// DO WE NEED THIS ANY MORE? // DO WE NEED THIS ANY MORE?

View File

@@ -15,7 +15,7 @@
extern const char _openttd_revision[]; extern const char _openttd_revision[];
#elif defined(WITH_REV_HACK) #elif defined(WITH_REV_HACK)
#define WITH_REV #define WITH_REV
const char _openttd_revision[] = WITH_REV_HACK; const char _openttd_revision[] = "0.4.8-RC1";
#else #else
const char _openttd_revision[] = NOREV_STRING; const char _openttd_revision[] = NOREV_STRING;
#endif #endif

View File

@@ -129,7 +129,7 @@ static int CDECL NGameClientSorter(const void *a, const void *b)
const NetworkGameList *cmp1 = *(const NetworkGameList**)a; const NetworkGameList *cmp1 = *(const NetworkGameList**)a;
const NetworkGameList *cmp2 = *(const NetworkGameList**)b; const NetworkGameList *cmp2 = *(const NetworkGameList**)b;
/* Reverse as per default we are interested in most-clients first */ /* Reverse as per default we are interested in most-clients first */
int r = cmp1->info.clients_on - cmp2->info.clients_on; int r = cmp2->info.clients_on - cmp1->info.clients_on;
if (r == 0) r = cmp1->info.clients_max - cmp2->info.clients_max; if (r == 0) r = cmp1->info.clients_max - cmp2->info.clients_max;
if (r == 0) r = strcasecmp(cmp1->info.server_name, cmp2->info.server_name); if (r == 0) r = strcasecmp(cmp1->info.server_name, cmp2->info.server_name);

View File

@@ -985,8 +985,7 @@ void GameLoop(void)
#ifdef ENABLE_NETWORK #ifdef ENABLE_NETWORK
// Check for UDP stuff // Check for UDP stuff
if (_network_available) NetworkUDPGameLoop();
NetworkUDPGameLoop();
if (_networking) { if (_networking) {
// Multiplayer // Multiplayer

View File

@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /Gr /Zp4 /MT /W3 /Zi /Ox /Oa /Ow /Og /Oi /Os /Gf /Gy /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "WIN32_EXCEPTION_TRACKER" /D "WIN32_ENABLE_DIRECTMUSIC_SUPPORT" /D "WITH_PNG" /D "WITH_ZLIB" /D "ENABLE_NETWORK" /FAcs /FR /Yu"stdafx.h" /J /FD /c # ADD CPP /nologo /Gr /Zp4 /MT /W3 /Zi /Ox /Oa /Ow /Og /Oi /Os /Gf /Gy /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "WIN32_EXCEPTION_TRACKER" /D "WIN32_ENABLE_DIRECTMUSIC_SUPPORT" /D "WITH_PNG" /D "WITH_ZLIB" /D "ENABLE_NETWORK" /D "WITH_REV_HACK" /FAcs /FR /Yu"stdafx.h" /J /FD /c
# SUBTRACT CPP /WX /Ot # SUBTRACT CPP /WX /Ot
# ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD BASE RSC /l 0x809 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG"
@@ -68,7 +68,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "WITH_PNG" /D "WITH_ZLIB" /D "ENABLE_NETWORK" /D "WIN32_ENABLE_DIRECTMUSIC_SUPPORT" /YX"stdafx.h" /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "WITH_PNG" /D "WITH_ZLIB" /D "ENABLE_NETWORK" /D "WIN32_ENABLE_DIRECTMUSIC_SUPPORT" /D "WITH_REV_HACK" /YX"stdafx.h" /FD /GZ /c
# SUBTRACT CPP /WX /Fr # SUBTRACT CPP /WX /Fr
# ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG"

View File

@@ -493,8 +493,7 @@ enum SpecialStrings {
SPECSTR_TOWNNAME_SWISS, SPECSTR_TOWNNAME_SWISS,
SPECSTR_TOWNNAME_DANISH, SPECSTR_TOWNNAME_DANISH,
SPECSTR_TOWNNAME_TURKISH, SPECSTR_TOWNNAME_TURKISH,
SPECSTR_TOWNNAME_ITALIAN, SPECSTR_TOWNNAME_LAST = SPECSTR_TOWNNAME_TURKISH,
SPECSTR_TOWNNAME_LAST = SPECSTR_TOWNNAME_ITALIAN,
// special strings for player names on the form "TownName transport". // special strings for player names on the form "TownName transport".
SPECSTR_PLAYERNAME_START = 0x70EA, SPECSTR_PLAYERNAME_START = 0x70EA,

View File

@@ -28,7 +28,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="TRUE" OmitFramePointers="TRUE"
OptimizeForProcessor="1" OptimizeForProcessor="1"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;ENABLE_NETWORK" PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;ENABLE_NETWORK;WITH_REV_HACK"
StringPooling="TRUE" StringPooling="TRUE"
ExceptionHandling="FALSE" ExceptionHandling="FALSE"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -100,7 +100,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;ENABLE_NETWORK" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;ENABLE_NETWORK;WITH_REV_HACK"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
RuntimeLibrary="1" RuntimeLibrary="1"
UsePrecompiledHeader="2" UsePrecompiledHeader="2"

View File

@@ -84,7 +84,7 @@ endif
# build the bundle. OSX wants to keep apps in bundles, so we will give it one # build the bundle. OSX wants to keep apps in bundles, so we will give it one
# the good thing about bundles is that you can keep extra files in them, so we keep lng files and a data dir in it # the good thing about bundles is that you can keep extra files in them, so we keep lng files and a data dir in it
BUILD_OSX_BUNDLE: $(TTD) $(BUILD_OSX_BUNDLE): $(TTD)
@echo '===> Building application bundle' @echo '===> Building application bundle'
$(Q)rm -fr "$(OSXAPP)" $(Q)rm -fr "$(OSXAPP)"
$(Q)mkdir -p "$(OSXAPP)"/Contents/MacOS $(Q)mkdir -p "$(OSXAPP)"/Contents/MacOS
@@ -118,6 +118,6 @@ release: all
$(Q)/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(REV)" openttd-"$(REV)"-osx"$(JAGUAR_POSTFIX)".dmg $(Q)/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(REV)" openttd-"$(REV)"-osx"$(JAGUAR_POSTFIX)".dmg
$(Q)rm -fr "OpenTTD $(REV)" $(Q)rm -fr "OpenTTD $(REV)"
$(OSX): $(TTD) BUILD_OSX_BUNDLE $(OSX): $(TTD) $(BUILD_OSX_BUNDLE)
.PHONY: release BUILD_OSX_BUNDLE .PHONY: release $(BUILD_OSX_BUNDLE) $(UNIVERSAL_BINARY)

View File

@@ -2,7 +2,7 @@
!define APPNAME "OpenTTD" !define APPNAME "OpenTTD"
!define APPNAMEANDVERSION "OpenTTD 0.4.8.0" !define APPNAMEANDVERSION "OpenTTD 0.4.8.0"
!define APPVERSION "0.4.8.0" !define APPVERSION "0.4.8.0"
!define INSTALLERVERSION 22 ;NEED TO UPDATE THIS FOR EVERY RELEASE!!! !define INSTALLERVERSION 20 ;NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define MUI_ICON "..\..\..\openttd.ico" !define MUI_ICON "..\..\..\openttd.ico"
!define MUI_UNICON "..\..\..\openttd.ico" !define MUI_UNICON "..\..\..\openttd.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp"

7
os2.c
View File

@@ -210,10 +210,9 @@ FiosItem *FiosGetScenarioList(int *num, int mode)
int sort_start; int sort_start;
char filename[MAX_PATH]; char filename[MAX_PATH];
/* Copy the default path on first run or on 'New Game' */ if (_fios_scn_path == NULL) {
if (mode == SLD_NEW_GAME || _fios_scn_path == NULL) { _fios_scn_path = malloc(MAX_PATH);
if (_fios_scn_path == NULL) _fios_scn_path = malloc(MAX_PATH); strcpy(_fios_scn_path, _path.scenario_dir);
ttd_strlcpy(_fios_scn_path, _path.scenario_dir, MAX_PATH);
} }
_fios_path = _fios_scn_path; _fios_path = _fios_scn_path;

View File

@@ -1,6 +1,6 @@
OpenTTD README OpenTTD README
Last updated: 2006-08-12 Last updated: 2006-03-26
Release version: 0.4.8 Release version: 0.4.7
------------------------------------------------------------------------ ------------------------------------------------------------------------
@@ -166,9 +166,8 @@ FreeBSD:
Use "gmake". Use "gmake".
MorphOS: MorphOS:
Use "make". Note that you need the MorphOS SDK, latest libnix updates (else Use "make". Note that you need the MorphOS SDK and the
C++ parts of OpenTTD will not build) and the powersdl.library SDK. Optionally powersdl.library SDK.
libz and libpng developer files.
OS/2: OS/2:
Open Watcom C/C++ 1.3 or later is required to build the OS/2 version. See the Open Watcom C/C++ 1.3 or later is required to build the OS/2 version. See the
@@ -281,7 +280,7 @@ Thanks to:
Stefan Mei<65>ner (sign_de) - For his work on the console Stefan Mei<65>ner (sign_de) - For his work on the console
Mike Ragsdale - OpenTTD installer Mike Ragsdale - OpenTTD installer
Cian Duffy (MYOB) - BeOS port / manual writing Cian Duffy (MYOB) - BeOS port / manual writing
Christian Rosentreter (tokai) - MorphOS / AmigaOS port Christian Rosentreter (tokaiz) - MorphOS / AmigaOS port
Michael Blunck - For revolutionizing TTD with awesome graphics Michael Blunck - For revolutionizing TTD with awesome graphics
George - Canal graphics George - Canal graphics
All Translators - For their support to make OpenTTD a truly international game All Translators - For their support to make OpenTTD a truly international game

View File

@@ -742,7 +742,7 @@ static const SettingDesc music_settings[] = {
{"effect_vol",SDT_UINT8, (void*)128, &msf.effect_vol, NULL}, {"effect_vol",SDT_UINT8, (void*)128, &msf.effect_vol, NULL},
{"custom_1", SDT_INTLIST | SDT_UINT8 | lengthof(msf.custom_1) << 16, NULL, &msf.custom_1, NULL}, {"custom_1", SDT_INTLIST | SDT_UINT8 | lengthof(msf.custom_1) << 16, NULL, &msf.custom_1, NULL},
{"custom_2", SDT_INTLIST | SDT_UINT8 | lengthof(msf.custom_2) << 16, NULL, &msf.custom_2, NULL}, {"custom_2", SDT_INTLIST | SDT_UINT8 | lengthof(msf.custom_2) << 16, NULL, &msf.custom_2, NULL},
{"playing", SDT_BOOL, (void*)true, &msf.playing, NULL}, {"playing", SDT_BOOL, (void*)true, &msf.btn_down, NULL},
{"shuffle", SDT_BOOL, (void*)false, &msf.shuffle, NULL}, {"shuffle", SDT_BOOL, (void*)false, &msf.shuffle, NULL},
{"extmidi", SDT_STRINGBUF | (lengthof(msf.extmidi)<<16), EXTERNAL_PLAYER, &msf.extmidi, NULL}, {"extmidi", SDT_STRINGBUF | (lengthof(msf.extmidi)<<16), EXTERNAL_PLAYER, &msf.extmidi, NULL},
{NULL, 0, NULL, NULL, NULL} {NULL, 0, NULL, NULL, NULL}
@@ -811,7 +811,7 @@ static const SettingDesc gameopt_settings[] = {
{"diff_custom", SDT_INTLIST | SDT_UINT32 | (sizeof(GameDifficulty)/4) << 16, NULL, &_opt_newgame.diff, NULL}, {"diff_custom", SDT_INTLIST | SDT_UINT32 | (sizeof(GameDifficulty)/4) << 16, NULL, &_opt_newgame.diff, NULL},
{"currency", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.currency, "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|ROL|RUR|SEK|custom" }, {"currency", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.currency, "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|ROL|RUR|SEK|custom" },
{"distances", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.kilometers, "imperial|metric" }, {"distances", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.kilometers, "imperial|metric" },
{"town_names", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.town_name, "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovakish|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish|italian" }, {"town_names", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.town_name, "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovakish|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish" },
{"landscape", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.landscape, "normal|hilly|desert|candy" }, {"landscape", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.landscape, "normal|hilly|desert|candy" },
{"autosave", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.autosave, "off|monthly|quarterly|half year|yearly" }, {"autosave", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.autosave, "off|monthly|quarterly|half year|yearly" },
{"road_side", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.road_side, "left|right" }, {"road_side", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.road_side, "left|right" },

15
ship.h
View File

@@ -1,15 +0,0 @@
/* $Id$ */
#include "vehicle.h"
static inline bool IsShipInDepot(const Vehicle* v)
{
assert(v->type == VEH_Ship);
return v->u.ship.state == 0x80;
}
static inline bool IsShipInDepotStopped(const Vehicle* v)
{
return IsShipInDepot(v) && v->vehstatus & VS_STOPPED;
}

View File

@@ -4,7 +4,6 @@
#include "openttd.h" #include "openttd.h"
#include "debug.h" #include "debug.h"
#include "functions.h" #include "functions.h"
#include "ship.h"
#include "table/strings.h" #include "table/strings.h"
#include "table/sprites.h" #include "table/sprites.h"
#include "map.h" #include "map.h"
@@ -570,7 +569,7 @@ static void ShipViewWndProc(Window *w, WindowEvent *e) {
Vehicle *v; Vehicle *v;
uint32 h; uint32 h;
v = GetVehicle(w->window_number); v = GetVehicle(w->window_number);
h = IsShipInDepotStopped(v) ? (1<< 7) : (1 << 11); h = IsTileDepotType(v->tile, TRANSPORT_WATER) && v->vehstatus & VS_HIDDEN ? (1<< 7) : (1 << 11);
if (h != w->hidden_state) { if (h != w->hidden_state) {
w->hidden_state = h; w->hidden_state = h;
SetWindowDirty(w); SetWindowDirty(w);

View File

@@ -9,7 +9,7 @@ typedef struct MusicFileSettings {
byte effect_vol; byte effect_vol;
byte custom_1[33]; byte custom_1[33];
byte custom_2[33]; byte custom_2[33];
bool playing; bool btn_down;
bool shuffle; bool shuffle;
char extmidi[80]; char extmidi[80];
} MusicFileSettings; } MusicFileSettings;

View File

@@ -16,7 +16,6 @@
#include "waypoint.h" #include "waypoint.h"
#include "industry.h" #include "industry.h"
#include "variables.h" #include "variables.h"
#include "music.h"
char _userstring[128]; char _userstring[128];
@@ -900,6 +899,31 @@ static char *GenPresidentName(char *buff, uint32 x)
return buff; return buff;
} }
static const char * const _song_names[] = {
"Tycoon DELUXE Theme",
"Easy Driver",
"Little Red Diesel",
"Cruise Control",
"Don't Walk!",
"Fell Apart On Me",
"City Groove",
"Funk Central",
"Stoke It",
"Road Hog",
"Aliens Ate My Railway",
"Snarl Up",
"Stroll On",
"Can't Get There From Here",
"Sawyer's Tune",
"Hold That Train!",
"Movin' On",
"Goss Groove",
"Small Town",
"Broomer's Oil Rag",
"Jammit",
"Hard Drivin'"
};
static char *GetSpecialPlayerNameString(char *buff, int ind, const int32 *argv) static char *GetSpecialPlayerNameString(char *buff, int ind, const int32 *argv)
{ {
switch (ind) { switch (ind) {
@@ -913,7 +937,7 @@ static char *GetSpecialPlayerNameString(char *buff, int ind, const int32 *argv)
return GenPresidentName(buff, GetInt32(&argv)); return GenPresidentName(buff, GetInt32(&argv));
case 4: // song names case 4: // song names
return strecpy(buff, origin_songs_specs[GetInt32(&argv) - 1].song_name, NULL); return strecpy(buff, _song_names[GetInt32(&argv) - 1], NULL);
} }
// town name? // town name?

View File

@@ -2843,269 +2843,3 @@ static const char *name_turkish_real[] = {
"Osmaniye", "Osmaniye",
"D<EFBFBD>zce" "D<EFBFBD>zce"
}; };
static const char *name_italian_real[] = {
"Roma",
"Milano",
"Napoli",
"Torino",
"Venezia",
"Firenze",
"Palermo",
"Genova",
"Parma",
"Bologna",
"Bari",
"Cagliari",
"Sassari",
"Pisa",
"Aosta",
"Brescia",
"Verona",
"Bolzano",
"Padova",
"Udine",
"Trieste",
"Livorno",
"Ancona",
"Perugia",
"Pescara",
"L'Aquila",
"Campobasso",
"Potenza",
"Cosenza",
"Reggio Calabria",
"Catania",
"Caltanisetta",
"Agrigento",
"La Spezia",
"Modena",
"Vicenza",
"Mantova",
"Cremona",
"Piacenza",
"Reggio Emilia",
"Foggia",
"Benevento",
"Salerno",
"Catanzaro",
"Lecce",
"Como",
"Lecco",
"Sondrio",
"Trento",
"Desenzano",
"Cuneo",
"Asti",
"Lodi",
"Novara",
"Biella",
"Vercelli",
"Rieti",
"Nuoro",
"Oristano",
"Matera",
"Taranto",
"Varese",
"Bergamo",
"Pavia",
"Caserta",
"Frosinone",
"Latina",
"Enna",
"Ragusa",
"Siracusa",
"Pordenone",
"Imperia",
"Verbania",
"Alessandria",
"Messina",
"Siena",
"Arezzo",
"Grosseto",
};
static const char *name_italian_pref[] = {
"Alpe ",
"Borgo ",
"Cascina ",
"Castel ",
"Fonte ",
"Forte ",
"Malga ",
"Pieve ",
"Poggio ",
"Rocca ",
"Villa ",
"Villar ",
};
static const char *name_italian_1m[] = {
"Bel",
"Borgo",
"Bosco",
"Campo",
"Capo",
"Casal",
"Castel",
"Colle",
"Fiume",
"Fonte",
"Lago",
"Mezzo",
"Monte",
"Mon",
"Orto",
"Passo",
"Prato",
"Poggio",
"Ponte",
"Pozzo",
"Sasso",
"Tra",
"Tre",
"Ver",
"Vico",
};
static const char *name_italian_1f[] = {
"Acqua",
"Bra",
"Cala",
"Casa",
"Chiesa",
"Citta",
"Civita",
"Corte",
"Costa",
"Croce",
"Fontana",
"Grotta",
"Guardia",
"Mezza",
"Palma",
"Pietra",
"Ripa",
"Rocca",
"Serra",
"Torre",
"Val",
"Valle",
"Villa",
};
static const char *name_italian_2[] = {
"bell",
"bianc",
"cald",
"chiar",
"cort",
"ferrat",
"fier",
"fredd",
"gioios",
"grec",
"guzz",
"lung",
"long",
"migli",
"negr",
"ner",
"nov",
"nuov",
"ross",
"rotond",
"scur",
"secc",
"sett",
"vecchi",
"ventos",
"vers",
"viv",
};
static const char *name_italian_2i[] = {
"",
"breve",
"brevi",
"chiari",
"ferro",
"fieschi",
"fiore",
"fonte",
"forte",
"gate",
"leone",
"maggiore",
"minore",
"mole",
"monte",
"poli",
"scuri",
"terra",
"te",
"torrione",
"vento",
"verde",
"versiere",
};
static const char *name_italian_3[] = {
" Marittimo",
" Marittima",
" del Capo",
" del Monte",
" di Sopra",
" di Sotto",
" sui Monti",
" dei Marmi",
" dei Sassi",
" delle Fonti",
" sui Prati",
" a Mare",
" Superiore",
" Inferiore",
" Terme",
" Alta",
" Bassa",
" Brianza",
" Vesuviano",
" Scrivia",
" Ticino",
};
static const char *name_italian_river1[] = {
" del",
" sul",
" al",
" nel",
};
static const char *name_italian_river2[] = {
"l'Adda",
"l'Adige",
"le Alpi",
"l'Arno",
" Bormida",
" Brenta",
"la Dora Baltea",
" Lambro",
" Mincio",
" Naviglio",
"l'Oglio",
"l'Olona",
"l'Ombrone",
" Panaro",
" Piave",
" Po",
" Reno",
" Scrivia",
" Secchia",
" Serio",
" Tagliamento",
" Tanaro",
" Taro",
" Ticino",
" Tevere",
};

View File

@@ -1130,8 +1130,6 @@ int32 CmdMoveRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
src_head = src_head->next; src_head = src_head->next;
} }
AddWagonToConsist(src->u.rail.other_multiheaded_part, src); AddWagonToConsist(src->u.rail.other_multiheaded_part, src);
// previous line set the front engine to the old front. We need to clear that
src->u.rail.other_multiheaded_part->first = NULL;
} }
if (HASBIT(p2, 0) && src_head != NULL && src_head != src) { if (HASBIT(p2, 0) && src_head != NULL && src_head != src) {

60
unix.c
View File

@@ -79,19 +79,6 @@ int compare_FiosItems(const void *a, const void *b)
return r; return r;
} }
#if !defined(__MORPHOS__) && !defined(__AMIGAOS__)
#define ISROOT(__p) (__p[1] == '\0')
#define PATHTEMPLATE "%s/%s"
#else
/* on MorphOS or AmigaOS paths look like: "Volume:directory/subdirectory".
* This is some evil magic which tries to handle this transparently w/o
* disturbing code with too much #ifdefs. It's not possible to switch the
* volume, but at least it doesn't crash :) (tokai)
*/
static bool __isroot; /* not very thread save, but will do in this case */
#define ISROOT(__p) (__isroot = (__p[strlen(__p)-1] == ':'))
#define PATHTEMPLATE (__isroot ? "%s:%s" : "%s/%s")
#endif
// Get a list of savegames // Get a list of savegames
FiosItem *FiosGetSavegameList(int *num, int mode) FiosItem *FiosGetSavegameList(int *num, int mode)
@@ -111,7 +98,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode)
_fios_path = _fios_save_path; _fios_path = _fios_save_path;
// Parent directory, only if not in root already. // Parent directory, only if not in root already.
if (!ISROOT(_fios_path)) { if (_fios_path[1] != '\0') {
fios = FiosAlloc(); fios = FiosAlloc();
fios->type = FIOS_TYPE_PARENT; fios->type = FIOS_TYPE_PARENT;
fios->mtime = 0; fios->mtime = 0;
@@ -123,7 +110,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode)
dir = opendir(_fios_path); dir = opendir(_fios_path);
if (dir != NULL) { if (dir != NULL) {
while ((dirent = readdir(dir)) != NULL) { while ((dirent = readdir(dir)) != NULL) {
snprintf(filename, lengthof(filename), PATHTEMPLATE, snprintf(filename, lengthof(filename), "%s/%s",
_fios_path, dirent->d_name); _fios_path, dirent->d_name);
if (!stat(filename, &sb) && S_ISDIR(sb.st_mode) && if (!stat(filename, &sb) && S_ISDIR(sb.st_mode) &&
dirent->d_name[0] != '.') { dirent->d_name[0] != '.') {
@@ -161,7 +148,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode)
while ((dirent = readdir(dir)) != NULL) { while ((dirent = readdir(dir)) != NULL) {
char *t; char *t;
snprintf(filename, lengthof(filename), PATHTEMPLATE, snprintf(filename, lengthof(filename), "%s/%s",
_fios_path, dirent->d_name); _fios_path, dirent->d_name);
if (stat(filename, &sb) || S_ISDIR(sb.st_mode)) continue; if (stat(filename, &sb) || S_ISDIR(sb.st_mode)) continue;
@@ -208,16 +195,15 @@ FiosItem *FiosGetScenarioList(int *num, int mode)
int sort_start; int sort_start;
char filename[MAX_PATH]; char filename[MAX_PATH];
/* Copy the default path on first run or on 'New Game' */ if (_fios_scn_path == NULL) {
if (mode == SLD_NEW_GAME || _fios_scn_path == NULL) { _fios_scn_path = malloc(MAX_PATH);
if (_fios_scn_path == NULL) _fios_scn_path = malloc(MAX_PATH); strcpy(_fios_scn_path, _path.scenario_dir);
ttd_strlcpy(_fios_scn_path, _path.scenario_dir, MAX_PATH);
} }
_fios_path = _fios_scn_path; _fios_path = _fios_scn_path;
// Parent directory, only if not of the type C:\. // Parent directory, only if not of the type C:\.
if ((!ISROOT(_fios_path)) && mode != SLD_NEW_GAME) { if (_fios_path[1] != '\0' && mode != SLD_NEW_GAME) {
fios = FiosAlloc(); fios = FiosAlloc();
fios->type = FIOS_TYPE_PARENT; fios->type = FIOS_TYPE_PARENT;
fios->mtime = 0; fios->mtime = 0;
@@ -228,7 +214,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode)
dir = opendir(_fios_path); dir = opendir(_fios_path);
if (dir != NULL) { if (dir != NULL) {
while ((dirent = readdir(dir)) != NULL) { while ((dirent = readdir(dir)) != NULL) {
snprintf(filename, lengthof(filename), PATHTEMPLATE, snprintf(filename, lengthof(filename), "%s/%s",
_fios_path, dirent->d_name); _fios_path, dirent->d_name);
if (!stat(filename, &sb) && S_ISDIR(sb.st_mode) && if (!stat(filename, &sb) && S_ISDIR(sb.st_mode) &&
dirent->d_name[0] != '.') { dirent->d_name[0] != '.') {
@@ -264,7 +250,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode)
while ((dirent = readdir(dir)) != NULL) { while ((dirent = readdir(dir)) != NULL) {
char *t; char *t;
snprintf(filename, lengthof(filename), PATHTEMPLATE, _fios_path, dirent->d_name); snprintf(filename, lengthof(filename), "%s/%s", _fios_path, dirent->d_name);
if (stat(filename, &sb) || S_ISDIR(sb.st_mode)) continue; if (stat(filename, &sb) || S_ISDIR(sb.st_mode)) continue;
t = strrchr(dirent->d_name, '.'); t = strrchr(dirent->d_name, '.');
@@ -316,25 +302,15 @@ char *FiosBrowseTo(const FiosItem *item)
switch (item->type) { switch (item->type) {
case FIOS_TYPE_PARENT: case FIOS_TYPE_PARENT:
/* Check for possible NULL ptr (not required for UNIXes, but AmigaOS-alikes) */ s = strrchr(path, '/');
if ((s = strrchr(path, '/'))) { if (s != path)
if (s != path) { s[0] = '\0';
s[0] = '\0'; else
} else { s[1] = '\0';
s[1] = '\0';
}
}
#if defined(__MORPHOS__) || defined(__AMIGAOS__)
else {
if ((s = strrchr(path, ':'))) {
s[1] = '\0';
}
}
#endif
break; break;
case FIOS_TYPE_DIR: case FIOS_TYPE_DIR:
if (!ISROOT(path)) strcat(path, "/"); if (path[1] != '\0') strcat(path, "/");
strcat(path, item->name); strcat(path, item->name);
break; break;
@@ -350,11 +326,7 @@ char *FiosBrowseTo(const FiosItem *item)
case FIOS_TYPE_OLD_SCENARIO: { case FIOS_TYPE_OLD_SCENARIO: {
static char str_buffr[512]; static char str_buffr[512];
#if defined(__MORPHOS__) || defined(__AMIGAOS__) sprintf(str_buffr, "%s/%s", path, item->name);
ISROOT(path); /* init __isroot for PATHTEMPLATE */
#endif
sprintf(str_buffr, PATHTEMPLATE, path, item->name);
return str_buffr; return str_buffr;
} }
} }

View File

@@ -2012,7 +2012,7 @@ uint32 VehicleEnterTile(Vehicle *v, TileIndex tile, int x, int y)
UnitID GetFreeUnitNumber(byte type) UnitID GetFreeUnitNumber(byte type)
{ {
UnitID unit, max = 0; UnitID unit, max;
const Vehicle *u; const Vehicle *u;
static bool *cache = NULL; static bool *cache = NULL;
static UnitID gmax = 0; static UnitID gmax = 0;
@@ -2025,14 +2025,6 @@ UnitID GetFreeUnitNumber(byte type)
default: assert(0); default: assert(0);
} }
if (max == 0) {
/* we can't build any of this kind of vehicle, so we just return 1 instead of looking for a free number
* a max of 0 will cause the following code to write to a NULL pointer
* We know that 1 is bigger than the max allowed vehicle number, so it's the same as returning something, that is too big
*/
return 1;
}
if (max > gmax) { if (max > gmax) {
gmax = max; gmax = max;
free(cache); free(cache);

15
win32.c
View File

@@ -22,6 +22,10 @@
static bool _has_console; static bool _has_console;
#if defined(__MINGW32__) || defined(__CYGWIN__)
#define __TIMESTAMP__ __DATE__ __TIME__
#endif
#if defined(__MINGW32__) #if defined(__MINGW32__)
#include <stdint.h> #include <stdint.h>
#endif #endif
@@ -441,10 +445,10 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
{ {
SYSTEMTIME time; SYSTEMTIME time;
GetLocalTime(&time); GetLocalTime(&time);
output += snprintf(output, 8192, output += sprintf(output,
"*** OpenTTD Crash Report ***\r\n" "*** OpenTTD Crash Report ***\r\n"
"Date: %d-%.2d-%.2d %.2d:%.2d:%.2d\r\n" "Date: %d-%.2d-%.2d %.2d:%.2d:%.2d\r\n"
"Build: %s built on " __DATE__ " " __TIME__ "\r\n", "Build: %s built on " __TIMESTAMP__ "\r\n",
time.wYear, time.wYear,
time.wMonth, time.wMonth,
time.wDay, time.wDay,
@@ -775,10 +779,9 @@ FiosItem *FiosGetScenarioList(int *num, int mode)
HANDLE h; HANDLE h;
int sort_start; int sort_start;
/* Copy the default path on first run or on 'New Game' */ if (_fios_scn_path == NULL) {
if (mode == SLD_NEW_GAME || _fios_scn_path == NULL) { _fios_scn_path = malloc(MAX_PATH);
if (_fios_scn_path == NULL) _fios_scn_path = malloc(MAX_PATH); strcpy(_fios_scn_path, _path.scenario_dir);
ttd_strlcpy(_fios_scn_path, _path.scenario_dir, MAX_PATH);
} }
_fios_path = _fios_scn_path; _fios_path = _fios_scn_path;