mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-13 17:49:10 +00:00
Compare commits
55 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
80c73b93ed | ||
|
8a74170da0 | ||
|
a0bf18c3c9 | ||
|
31b226dc9f | ||
|
b320aa40fa | ||
|
37835e9158 | ||
|
749a4f8c7d | ||
e72232dc4c | |||
|
45a4c69842 | ||
|
a2c882af6f | ||
|
bb7c37b515 | ||
|
ec54b3ac24 | ||
|
a9032183df | ||
|
90feff4982 | ||
|
e434485dd8 | ||
|
dcc4ccf4e9 | ||
|
ef7e4abf7f | ||
|
5d0ed8fab8 | ||
|
ed7df6e2bf | ||
|
7cf9e0d8ca | ||
|
85141929a8 | ||
|
f4d5c1b01b | ||
|
31d6286cb4 | ||
|
ca0a0cdbfd | ||
|
04572ed7fe | ||
|
ebfef9683e | ||
|
c05d3dd558 | ||
|
6e029fe97d | ||
|
26ed195319 | ||
|
7170357a10 | ||
|
e4bbd3b41c | ||
|
5ed5e6beed | ||
|
5de94db9df | ||
|
6b664a3ba0 | ||
|
beee5698f9 | ||
|
a86ec733a0 | ||
|
37c1135d6b | ||
|
923dee9bec | ||
|
1856976d8e | ||
|
818a5a596f | ||
|
2be4b388ec | ||
|
300aba48cc | ||
|
f470a87dea | ||
|
4b938510a5 | ||
|
7ddae93da8 | ||
|
f75365fcf4 | ||
|
e89a98d296 | ||
|
8157969b2b | ||
|
b3ccef7045 | ||
|
af0fb58264 | ||
|
5f2e2ef32a | ||
|
8353c1260a | ||
|
8de919ce50 | ||
|
f9cacc9f5c | ||
|
af3ac4954a |
33
Makefile
33
Makefile
@@ -109,7 +109,8 @@
|
||||
#
|
||||
# Special for crosscompiling there are some commands available:
|
||||
#
|
||||
# FAT_BINARY: builds a universal binary for OSX. Make sure you got both PPC and x86 libs. Only works with GCC 4 or newer
|
||||
# UNIVERSAL_BINARY: builds a universal binary for OSX. Make sure you got both PPC and x86 libs. Only works with GCC 4 or newer
|
||||
# TRIPLE_BINARY: builds a universal binary with the addition of code optimised for G5 (which means a total of 3 binaries in one file)
|
||||
#
|
||||
# JAGUAR: Crosscompiling for OSX 1.2.8 (codenamed Jaguar). Only works if OSX is defined too. Only works with GCC 4 or newer
|
||||
# This can be changed to any PPC version of OSX by changing the ppc flags in Makefile.config
|
||||
@@ -132,7 +133,7 @@
|
||||
|
||||
# Makefile version tag
|
||||
# it checks if the version tag in Makefile.config is the same and force update outdated config files
|
||||
MAKEFILE_VERSION:=8
|
||||
MAKEFILE_VERSION:=9
|
||||
|
||||
# CONFIG_WRITER has to be found even for manual configuration
|
||||
CONFIG_WRITER=makefiledir/Makefile.config_writer
|
||||
@@ -267,11 +268,7 @@ ENDIAN_CHECK=endian_check$(EXE)
|
||||
STRGEN=strgen/strgen$(EXE)
|
||||
OSXAPP="OpenTTD.app"
|
||||
|
||||
ifdef RELEASE
|
||||
REV:=$(RELEASE)
|
||||
else
|
||||
REV := $(shell if test -d .svn; then svnversion . | awk '{ print "r"$$0 }'; fi)
|
||||
endif
|
||||
REV := 0.4.7
|
||||
|
||||
# MorphOS needs builddate
|
||||
BUILDDATE=`date +%d.%m.%y`
|
||||
@@ -344,6 +341,11 @@ endif
|
||||
ifdef OSX
|
||||
# these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer
|
||||
BASECFLAGS += -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic
|
||||
ifdef IS_G5
|
||||
ifndef UNIVERSAL_BINARY
|
||||
BASECFLAGS += $(G5_FLAGS)
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifdef MORPHOS
|
||||
BASECFLAGS += -I/gg/os-include -O2 -noixemul -fstrict-aliasing -fexpensive-optimizations
|
||||
@@ -479,6 +481,12 @@ LIBS += $(shell $(LIBPNG-CONFIG) --L_opts $(PNGCONFIG_FLAGS))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef OSX
|
||||
ifndef JAGUAR
|
||||
LIBS += -liconv
|
||||
endif
|
||||
endif
|
||||
|
||||
# enables/disables assert()
|
||||
ifdef DISABLE_ASSERTS
|
||||
CFLAGS += -DNDEBUG
|
||||
@@ -915,6 +923,7 @@ endif
|
||||
install -d $(DATA_DIR_INSTALL)/lang \
|
||||
$(DATA_DIR_INSTALL)/data \
|
||||
$(DATA_DIR_INSTALL)/gm \
|
||||
$(ICON_DIR_INSTALL) \
|
||||
$(BINARY_DIR_INSTALL)
|
||||
ifndef USE_HOMEDIR
|
||||
mkdir -p $(PERSONAL_DIR)/scenario
|
||||
@@ -991,17 +1000,21 @@ endif
|
||||
$(Q)$(CC) $(OBJCFLAGS) $(CDEFS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:.deps/%.d=%.o):#' > $@
|
||||
|
||||
|
||||
ifndef TRIPLE_BINARY
|
||||
# building tripple binary object files is handled in os/macosx/Makefile
|
||||
# TARGET_CPU_FLAGS is used to set target CPUs in OSX universal binaries. It's empty for all other builds
|
||||
%.o: %.c $(MAKE_CONFIG)
|
||||
@echo '===> Compiling $<'
|
||||
$(Q)$(CC) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
||||
$(Q)$(CC) $(TARGET_CPU_FLAGS) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
||||
|
||||
%.o: %.cpp $(MAKE_CONFIG)
|
||||
@echo '===> Compiling $<'
|
||||
$(Q)$(CXX) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
||||
$(Q)$(CXX) $(TARGET_CPU_FLAGS) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
||||
|
||||
%.o: %.m $(MAKE_CONFIG)
|
||||
@echo '===> Compiling $<'
|
||||
$(Q)$(CC) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
||||
$(Q)$(CC) $(TARGET_CPU_FLAGS) $(CFLAGS) $(CDEFS) -c -o $@ $<
|
||||
endif
|
||||
|
||||
%.o: %.rc
|
||||
@echo '===> Compiling resource $<'
|
||||
|
@@ -1,3 +1,46 @@
|
||||
0.4.7 (2006-03-26)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
- Feature: [OSX] Add support for triple-binaries (PPC, PPC970, i386) (r4102)
|
||||
- Fix: [OSX] crash when going to fullscreen (r4100)
|
||||
- Fix: Allow unused wagons to have their first cache set. Fixes faulty cache-warning message and noticably speeds up depot operations (r4094)
|
||||
- Fix: [NPF] Trains & busses were unable to find a route when leaving a depot or bus stop. (r4072)
|
||||
|
||||
0.4.6 (2006-03-22)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
- Codechange: [win32] Show the revision in crash.txt and enable the button to show the crash text in the crash-window (r3965)
|
||||
- Codechange: Add additional linker information to release builds to help figure out crashes more easily (r3526)
|
||||
- Fix: [OSX 10.3 and newer] [ 1157244 ] Can't save game if name contains german umlauts (loading savegames with certain chars still look odd) (r4038)
|
||||
- Fix: [OSX] major speedup for PPC fullscreen (r4034)
|
||||
- Fix: [Makefile] Make sure the ICON_DIR gets created before copying files there. (r4032)
|
||||
- Fix: [win32] Change compiler settings to use the multithreaded CRT. This prevents certain crashes on multi-threaded machines. (r4031)
|
||||
- Fix: [ 1453646 NPF ] Road vehicles planning through the back of depots and stations. (r4029)
|
||||
- Fix: Use the title of a savegame in the saveload dialog-editbox. (r4018)
|
||||
- Fix: Improper resolution written to the configuration file when exiting from fullscreen. (r4017)
|
||||
- Fix: When removing rail track from a tile where only X and Y pieces exist, explicitly update signals in both directions. (r4016)
|
||||
- Fix: Default the patch-setting 'pause_on_join' to true. (r4015)
|
||||
- Fix: Slope and height information returned for some tile types is wrong (r4014)
|
||||
- Fix: Fixes a bug introduced by r3228 which allowed steep rail tiles resulting in ... unwanted effects such as display artifacts. (r4012)
|
||||
- Fix: Update french translation (r3978)
|
||||
- Fix: FS#56 - [Crash] Missing glyph(s) in big-font. Added several missing glyphs for the big font. (r3970)
|
||||
- Fix: [ 1439907 ] Increase client list window width so at least most languages fit. (r3969)
|
||||
- Fix: Update german and finnish languages. (r3968)
|
||||
- Fix: Properly set back the owner of a crossing/road-under bridge after removing it. (r3967)
|
||||
- Fix: [autoreplace]: (FS#67) autoreplacing trains now keep their tile length instead of their pixel length. (r3964)
|
||||
- Fix: Mark the right tile as dirty. It's just a graphical glitch which happend in r1592. (r3962)
|
||||
- Fix: Fix crash when resizing news history window. (r3961)
|
||||
- Fix: Correctly implement minimum search, so road vehicles head twoards the closest station, not the last one in the list. (r3960)
|
||||
- Fix: [FS#61] The tooltips for raising and lowering land buttons in the scenario editor are interchanged (r3959)
|
||||
- Fix: Correctly restore the roadside after roadworks are finished. (r3957)
|
||||
- Fix: [Multistop] Check the status of the destination road stop instead of a station's first road stop. This only has effect with road vehicle queuing disabled. (r3956)
|
||||
- Fix: validate the setting of max_companies/spectators through the console. (r3955)
|
||||
- Fix: Improve game-load times. (r3954)
|
||||
- Fix: On loading a game, GetPlayerRailtypes() didn't account for the fact that vehicles are introduced a year after their introduction date. This will also relieve possible (rare) network desyncs. (r3952)
|
||||
- Fix: Restore plural forms of cargo types for several languages. (r3951)
|
||||
- Fix: [win32] Add directives to allow Visual Studio 2005 compilation. (r3950)
|
||||
- Fix: [ 1415782 ] crash in string code with openbsd/zaurus; alignment issues (r3948)
|
||||
|
||||
0.4.5 (2006-01-31)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
60
clear_cmd.c
60
clear_cmd.c
@@ -86,38 +86,13 @@ static void TerraformAddDirtyTileAround(TerraformerState *ts, TileIndex tile)
|
||||
static int TerraformProc(TerraformerState *ts, TileIndex tile, int mode)
|
||||
{
|
||||
int r;
|
||||
bool skip_clear = false;
|
||||
|
||||
assert(tile < MapSize());
|
||||
|
||||
if ((r=TerraformAllowTileProcess(ts, tile)) <= 0)
|
||||
return r;
|
||||
|
||||
if (IsTileType(tile, MP_RAILWAY)) {
|
||||
static const byte _railway_modes[4] = {8, 0x10, 4, 0x20};
|
||||
static const byte _railway_dangslopes[4] = {0xd, 0xe, 7, 0xb};
|
||||
static const byte _railway_dangslopes2[4] = {0x2, 0x1, 0x8, 0x4};
|
||||
|
||||
// Nothing could be built at the steep slope - this avoids a bug
|
||||
// when you have a single diagonal track in one corner on a
|
||||
// basement and then you raise/lower the other corner.
|
||||
int tileh = GetTileSlope(tile, NULL) & 0xF;
|
||||
if (tileh == _railway_dangslopes[mode] ||
|
||||
tileh == _railway_dangslopes2[mode]) {
|
||||
_terraform_err_tile = tile;
|
||||
_error_message = STR_1008_MUST_REMOVE_RAILROAD_TRACK;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// If we have a single diagonal track there, the other side of
|
||||
// tile can be terraformed.
|
||||
if ((_m[tile].m5 & ~0x40) == _railway_modes[mode]) {
|
||||
if (ts->direction == 1) return 0;
|
||||
skip_clear = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!skip_clear) {
|
||||
if (!IsTileType(tile, MP_RAILWAY)) {
|
||||
int32 ret = DoCommandByTile(tile, 0,0, ts->flags & ~DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
|
||||
if (CmdFailed(ret)) {
|
||||
@@ -259,26 +234,35 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
return CMD_ERROR;
|
||||
}
|
||||
|
||||
if (direction == -1) {
|
||||
/* Check if tunnel would take damage */
|
||||
{ /* Check if tunnel or track would take damage */
|
||||
int count;
|
||||
TileIndex *ti = ts.tile_table;
|
||||
|
||||
for (count = ts.tile_table_count; count != 0; count--, ti++) {
|
||||
uint z, t;
|
||||
uint a, b, c, d, r, min;
|
||||
TileIndex tile = *ti;
|
||||
|
||||
z = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0));
|
||||
t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0));
|
||||
if (t <= z) z = t;
|
||||
t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1));
|
||||
if (t <= z) z = t;
|
||||
t = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
|
||||
if (t <= z) z = t;
|
||||
_terraform_err_tile = tile;
|
||||
|
||||
if (!CheckTunnelInWay(tile, z * 8)) {
|
||||
return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
|
||||
a = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 0));
|
||||
b = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 0));
|
||||
c = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(0, 1));
|
||||
d = TerraformGetHeightOfTile(&ts, tile + TileDiffXY(1, 1));
|
||||
|
||||
r = GetTileh(a, b, c, d, &min);
|
||||
|
||||
if (IsTileType(tile, MP_RAILWAY)) {
|
||||
if (IsSteepTileh(r)) return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
|
||||
|
||||
if (IsPlainRailTile(tile)) {
|
||||
extern const TrackBits _valid_tileh_slopes[2][15];
|
||||
if (GetTrackBits(tile) & ~_valid_tileh_slopes[0][r]) return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
|
||||
} else return_cmd_error(STR_5800_OBJECT_IN_THE_WAY);
|
||||
}
|
||||
|
||||
if (direction == -1 && !CheckTunnelInWay(tile, min)) return_cmd_error(STR_1002_EXCAVATION_WOULD_DAMAGE);
|
||||
|
||||
_terraform_err_tile = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -553,10 +553,29 @@ DEF_CONSOLE_CMD(ConServerInfo)
|
||||
|
||||
DEF_CONSOLE_HOOK(ConHookValidateMaxClientsCount) {
|
||||
/* XXX - hardcoded, string limiation -- TrueLight
|
||||
* XXX - also see network.c:NetworkStartup ~1343 */
|
||||
* XXX - also see network.c:NetworkStartup ~1356 */
|
||||
if (_network_game_info.clients_max > 10) {
|
||||
_network_game_info.clients_max = 10;
|
||||
IConsoleError("Maximum clients is 10, truncating.");
|
||||
IConsoleError("Maximum clients out of bounds, truncating to limit.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_HOOK(ConHookValidateMaxCompaniesCount) {
|
||||
if (_network_game_info.companies_max > MAX_PLAYERS) {
|
||||
_network_game_info.companies_max = MAX_PLAYERS;
|
||||
IConsoleError("Maximum companies out of bounds, truncating to limit.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_HOOK(ConHookValidateMaxSpectatorsCount) {
|
||||
/* XXX @see ConHookValidateMaxClientsCount */
|
||||
if (_network_game_info.spectators_max > 10) {
|
||||
_network_game_info.spectators_max = 10;
|
||||
IConsoleError("Maximum spectators out of bounds, truncating to limit.");
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -1444,8 +1463,10 @@ void IConsoleStdLibRegister(void)
|
||||
IConsoleVarHookAdd("max_clients", ICONSOLE_HOOK_POST_ACTION, ConHookValidateMaxClientsCount);
|
||||
IConsoleVarRegister("max_companies", &_network_game_info.companies_max, ICONSOLE_VAR_BYTE, "Control the maximum amount of active companies during runtime. Default value: 8");
|
||||
IConsoleVarHookAdd("max_companies", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
|
||||
IConsoleVarHookAdd("max_companies", ICONSOLE_HOOK_POST_ACTION, ConHookValidateMaxCompaniesCount);
|
||||
IConsoleVarRegister("max_spectators", &_network_game_info.spectators_max, ICONSOLE_VAR_BYTE, "Control the maximum amount of active spectators during runtime. Default value: 9");
|
||||
IConsoleVarHookAdd("max_spectators", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
|
||||
IConsoleVarHookAdd("max_spectators", ICONSOLE_HOOK_POST_ACTION, ConHookValidateMaxSpectatorsCount);
|
||||
|
||||
IConsoleVarRegister("max_join_time", &_network_max_join_time, ICONSOLE_VAR_UINT16, "Set the maximum amount of time (ticks) a client is allowed to join. Default value: 500");
|
||||
|
||||
|
BIN
data/openttd.grf
BIN
data/openttd.grf
Binary file not shown.
23
docs/OSX_install_instructions.txt
Normal file
23
docs/OSX_install_instructions.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
To install OpenTTD, you should drag the game to any location you want and in that folder, you should create a folder called "data". It should contain:
|
||||
sample.cat
|
||||
trg1r.grf
|
||||
trgcr.grf
|
||||
trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
You should also use the data folder to add any custom grf files if you like
|
||||
|
||||
if you want music, you can add a GM folder and add all .gm files from TTD inside it
|
||||
|
||||
If you want to use the scenarios, you can copy the scenario folder as well. If you already have one, just copy the content so you don't overwrite old ones that have been removed.
|
||||
|
||||
In the end, you should have a folder containing:
|
||||
OpenTTD (the actual game)
|
||||
data (containing the grf files)
|
||||
GM (optional for music)
|
||||
scenario (optional pregenerated maps)
|
||||
|
||||
The game adds some items by itself when it runs, like a save folder and a setting file
|
@@ -1,24 +0,0 @@
|
||||
It's gone
|
||||
|
||||
The main goal with the package system was to make it as simple as possible to update. The problem was that some files inside the data folder should be updated and not others. Now the data files have been moved inside OpenTTD itself and to make it even easier, the same goes for the lang dir. There will no longer be an issue where people have different versions of grf files, language files and OpenTTD.
|
||||
|
||||
To install simply copy OpenTTD into the folder you want
|
||||
If it is your current folder with outdated grf files, you should remove
|
||||
canalsw.grf
|
||||
openttd.grf
|
||||
opntitle.dat
|
||||
signalsw.grf
|
||||
trkfoundw.grf
|
||||
|
||||
THE TTD GRF FILES ARE STILL NEEDED!
|
||||
They need to be inside a folder called "data" in the same folder as OpenTTD. Create it if you have none. It should contain:
|
||||
sample.cat
|
||||
trg1r.grf
|
||||
trgcr.grf
|
||||
trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF, TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF. A few minor graphical glitches with the DOS graphics remain. E.g. the autorail button in the rail toolbar doesn't look as nice as with the Windows graphics.)
|
||||
|
||||
You should also use the data folder to add any custom grf files if you like
|
10
docs/OSX_why_multiple_applications.txt
Normal file
10
docs/OSX_why_multiple_applications.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
There are currently two different downloads for OSX, one is named osx, while the other one is named osx-jaguar
|
||||
|
||||
The reason for this is that Apple added more functionality to 10.3 and to make use of that, it will no longer run on OSX 10.2 (codenamed Jaguar). To make the game useable on Jaguar, then a special download is available, but it will miss the bugfixes/features, that relies on newer functionality.
|
||||
|
||||
The general download is a universal binary and should work great on all macs using 10.3.9 or newer, no matter what processor it got. You should at all time avoid the Jaguar Build if possible.
|
||||
|
||||
Technically the universal binary is a triple binary because it contains code for 3 CPUs and the CPUs in question are PPC (G3+G4), G5 and Intel. The Jaguar build is only optimised for PPC and other (newer) CPUs will not benefit so much from their advanced features. This is another reason to avoid the Jaguar build. It's generally slower on modern CPUs.
|
||||
|
||||
Current list of missing features in the Jaguar build:
|
||||
-Can't save screenshots or savegames if certain chars are in the filename. This mainly applies to European chars and hits German hard as the month Mär (Mar) can't be saved
|
@@ -1,36 +0,0 @@
|
||||
Since you are reading this, OpenTTD have crashed. This file tells you how
|
||||
to fix the most common problems or make to make a bug report, that the
|
||||
developers can use to track down the problem
|
||||
|
||||
If it is an assert, OpenTTD will open the console for you, if it is truly a crash, you have to do it yourself. The Console is located at /Applications/Utilities/Console.
|
||||
The problem is near the button of the page
|
||||
|
||||
The problems are as follows:
|
||||
NOTE: build from source means to download the source and compile
|
||||
yourself. If you get one of the build from source error with the version
|
||||
that is downloaded on a dmg file, you should make a bug report
|
||||
|
||||
--Didn't find a needed file:
|
||||
you just give it the file it asks for. It even tells you what
|
||||
folder it wants it in
|
||||
most common version of this problem is "Error: Cannot open file
|
||||
'data/sample.cat'"
|
||||
if you get that one, that means that you haven't got all the
|
||||
needed files from the WINDOWS version of TTD
|
||||
or if you build from source,
|
||||
|
||||
--Error: No available language packs
|
||||
you need at least one .lng file in your lang folder. This applies
|
||||
only to people who build from source
|
||||
|
||||
--spritecache.c:237: failed assertion `b'
|
||||
you got an outdated grf file. Update from the data folder in the
|
||||
source. This applies only to people, who build from source
|
||||
|
||||
--assertion error that are not triggered by one of the errors listed in
|
||||
this file:
|
||||
you most likely found a bug. Write down the assertion and try to
|
||||
see if you can reproduce it. If you can, make a
|
||||
savegame from just before it happens (autosaves are useful here)
|
||||
and post a bugreport with it on sourceforge
|
||||
Write what you did to trigger the bug and what assertion it made
|
@@ -1,9 +1,9 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.Dd July 27, 2005
|
||||
.Dd March 26, 2006
|
||||
.Dt OPENTTD 6
|
||||
.Sh NAME
|
||||
.Nm openttd
|
||||
.Nm openttd
|
||||
.Nd An open source clone of the Microprose game "Transport Tycoon Deluxe"
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
@@ -59,6 +59,7 @@ Set the starting date
|
||||
.It Fl v Ar driver
|
||||
Set the video driver, see
|
||||
.Fl h
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
http://wiki.openttd.org/
|
||||
.Sh HISTORY
|
||||
|
@@ -16,12 +16,12 @@ static void DrawTile_Dummy(TileInfo *ti)
|
||||
|
||||
static uint GetSlopeZ_Dummy(const TileInfo* ti)
|
||||
{
|
||||
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint GetSlopeTileh_Dummy(const TileInfo* ti)
|
||||
{
|
||||
return ti->tileh;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32 ClearTile_Dummy(TileIndex tile, byte flags)
|
||||
|
2
engine.c
2
engine.c
@@ -1010,7 +1010,7 @@ void EnginesMonthlyLoop(void)
|
||||
CalcEngineReliability(e);
|
||||
}
|
||||
|
||||
if (!(e->flags & ENGINE_AVAILABLE) && (uint16)(_date - min(_date, 365)) >= e->intro_date) {
|
||||
if (!(e->flags & ENGINE_AVAILABLE) && _date >= (e->intro_date + 365)) {
|
||||
// Introduce it to all players
|
||||
NewVehicleAvailable(e);
|
||||
} else if (!(e->flags & (ENGINE_AVAILABLE|ENGINE_INTRODUCING)) && _date >= e->intro_date) {
|
||||
|
20
gfx.c
20
gfx.c
@@ -698,7 +698,7 @@ static void GfxBlitTileZoomIn(BlitterParams *bp)
|
||||
const byte* ctab;
|
||||
|
||||
if (bp->mode & 1) {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
|
||||
do {
|
||||
do {
|
||||
@@ -741,7 +741,7 @@ static void GfxBlitTileZoomIn(BlitterParams *bp)
|
||||
bp->dst += bp->pitch;
|
||||
} while (--bp->height != 0);
|
||||
} else if (bp->mode & 2) {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
do {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -775,7 +775,7 @@ static void GfxBlitTileZoomIn(BlitterParams *bp)
|
||||
bp->dst += bp->pitch;
|
||||
} while (--bp->height != 0);
|
||||
} else {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
do {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -900,7 +900,7 @@ static void GfxBlitTileZoomMedium(BlitterParams *bp)
|
||||
const byte* ctab;
|
||||
|
||||
if (bp->mode & 1) {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
do {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -949,7 +949,7 @@ static void GfxBlitTileZoomMedium(BlitterParams *bp)
|
||||
} while (!(done & 0x80));
|
||||
} while (--bp->height != 0);
|
||||
} else if (bp->mode & 2) {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
do {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -994,7 +994,7 @@ static void GfxBlitTileZoomMedium(BlitterParams *bp)
|
||||
} while (!(done & 0x80));
|
||||
} while (--bp->height != 0);
|
||||
} else {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
do {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -1105,7 +1105,7 @@ static void GfxBlitTileZoomOut(BlitterParams *bp)
|
||||
const byte* ctab;
|
||||
|
||||
if (bp->mode & 1) {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
for(;;) {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -1174,7 +1174,7 @@ static void GfxBlitTileZoomOut(BlitterParams *bp)
|
||||
if (--bp->height == 0) return;
|
||||
}
|
||||
} else if (bp->mode & 2) {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
for(;;) {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -1239,7 +1239,7 @@ static void GfxBlitTileZoomOut(BlitterParams *bp)
|
||||
if (--bp->height == 0) return;
|
||||
}
|
||||
} else {
|
||||
src_o += READ_LE_UINT16(src_o + bp->start_y * 2);
|
||||
src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
|
||||
for(;;) {
|
||||
do {
|
||||
done = src_o[0];
|
||||
@@ -1620,7 +1620,7 @@ void LoadStringWidthTable(void)
|
||||
}
|
||||
|
||||
for (i = 450; i != 674; i++) {
|
||||
*b++ = (i < 545 || i > 577) && i != 585 && i != 587 && i != 588 && (i < 590 || i > 597) && (i < 599 || i > 601) && i != 603 && i != 633 && i != 665 ? GetSprite(i)->width + 1 : 0;
|
||||
*b++ = (i < 545 || i > 577) && i != 588 && i != 590 && i != 591 && i != 593 && (i < 599 || i > 601) && i != 603 ? GetSprite(i)->width + 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -314,6 +314,12 @@ static const SpriteID _openttd_grf_indexes[] = {
|
||||
93, 96, // { | } ~ medium
|
||||
541, 544, // { | } ~ large
|
||||
SPR_HOUSE_ICON, SPR_HOUSE_ICON,
|
||||
585, 585, // <20> large
|
||||
587, 587, // <20> large
|
||||
592, 592, // <20> large
|
||||
594, 597, // <20> <20> <20> <20> large
|
||||
633, 633, // <20> large
|
||||
665, 665, // <20> large
|
||||
END
|
||||
};
|
||||
|
||||
|
2
hal.h
2
hal.h
@@ -88,7 +88,7 @@ StringID FiosGetDescText(const char **path, uint32 *tot);
|
||||
// Delete a name
|
||||
bool FiosDelete(const char *name);
|
||||
// Make a filename from a name
|
||||
void FiosMakeSavegameName(char *buf, const char *name);
|
||||
void FiosMakeSavegameName(char *buf, const char *name, size_t size);
|
||||
|
||||
int CDECL compare_FiosItems(const void *a, const void *b);
|
||||
|
||||
|
@@ -398,7 +398,7 @@ static void DrawTile_Industry(TileInfo *ti)
|
||||
|
||||
static uint GetSlopeZ_Industry(const TileInfo* ti)
|
||||
{
|
||||
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
|
||||
return ti->z + (ti->tileh == 0 ? 0 : 8);
|
||||
}
|
||||
|
||||
static uint GetSlopeTileh_Industry(const TileInfo* ti)
|
||||
|
@@ -12,25 +12,45 @@ Of course if you have more knowledge about any of these bugs, have more
|
||||
specifics, we welcome you to report them. React to the given bug indicated
|
||||
by the number below on http://sourceforge.net/tracker/?group_id=103924&atid=636365
|
||||
or http://bugs.openttd.org.
|
||||
If the the bug report is closed, it has been fixed, which then can be verified
|
||||
If the bug report is closed, it has been fixed, which then can be verified
|
||||
in the latest SVN version.
|
||||
|
||||
Bugs for 0.4.5
|
||||
Bugs for 0.4.7
|
||||
------------------------------------------------------------------------
|
||||
URL: http://bugs.openttd.org
|
||||
|
||||
-20 Saving files when run from gdb
|
||||
-45 NORETURN wrongly declared for gcc
|
||||
-46 Some if, for, switch and while have no space before (
|
||||
-47 rating calculation and cargo loading priority
|
||||
-9 [MorphOS] write to NULL when going to device root in filerequester
|
||||
-8 [MorphOS] game crashes if no TCP/IP stack is loaded
|
||||
-80 Medium Crash when switching from windowed to fullscreen
|
||||
-78 Low Save vs. Autosave
|
||||
-77 Low cocoa video driver got an artifact in fullscreen
|
||||
-74 Low message settings
|
||||
-73 vehicle selection bug
|
||||
-71 Invalid last_vehicle for station (crash)
|
||||
-68 wagon replacements
|
||||
-66 wagon re-fitting
|
||||
-65 short wagons bug
|
||||
-63 Initial Volume Level not restored
|
||||
-57 (Ship) Pathfinder problem
|
||||
-55 Assertion on TrainController (train_cmd.c:2840)
|
||||
-52 desync when server saves game (on slow hardware)
|
||||
-51 Windows doesn't support CUSTOM_LANG_DIR
|
||||
-50 Trains chosing an alternative path when encountering a 1-way presignal instead of waiting
|
||||
-47 Low rating calculation and cargo loading priority
|
||||
-45 Low NORETURN wrongly declared for gcc
|
||||
-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
|
||||
|
||||
-1458368 Ships cannot be sent to depot when loading with NPF on, transfer not working
|
||||
-1454591 Street junctions not able to converted
|
||||
-1453676 crash in windowed mode when moving mouse back to openttd
|
||||
-1436419 Vehicles profits gone negitive.......bug
|
||||
-1434000 Error in Transfer-Function
|
||||
-1433315 non-existant crash reporting
|
||||
-1432871 Wrong signalstate when track over track
|
||||
-1427531 Newspapers problem
|
||||
-1417453 Makefile and Variables issue
|
||||
-1415782 crash in string code with openbsd/zaurus
|
||||
-1397638 Economics bug?
|
||||
-1395628 Trackpad panning/scrolling broken
|
||||
-1394799 Dual headed engines disagreement
|
||||
@@ -40,11 +60,8 @@ URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
|
||||
-1389999 Child windows not sticking
|
||||
-1389986 Shares problem (nightly 3330)
|
||||
-1380497 problems with competitors during multiplayer
|
||||
-1372772 Train gets lost between two stations
|
||||
-1366446 different names for patches
|
||||
-1362784 Incorrect vehicule profit calcul with inflation on
|
||||
-1299162 Music volume too low
|
||||
-1288024 Strange string on OTTD initial screen
|
||||
-1250094 Towns Shrink when center tile is built on
|
||||
-1244842 Multiplayer interface bug (0.4.0.1)
|
||||
-1212267 station visited twice when servicing
|
||||
@@ -56,18 +73,17 @@ URL: http://sourceforge.net/tracker/?atid=636365&group_id=103924&func=browse
|
||||
-1174829 Waypoint / Orders Bug
|
||||
-1168820 Some mouse and keyboard events are lost
|
||||
-1167810 Cargo payment after deleting stations (st->xy = 0)
|
||||
-1157244 Can't save game if name contains german umlauts
|
||||
-1116638 "More, but smaller changes" deficiency
|
||||
-1106356 re-offered prototypes
|
||||
-1085486 Subsidies: Only count when station is in right suburb
|
||||
|
||||
Minor Bugs for 0.4.5
|
||||
Minor Bugs for 0.4.7
|
||||
------------------------------------------------------------------------
|
||||
URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
|
||||
|
||||
-1424115 Reversed arrow sign in list view column headers
|
||||
-1412033 autoreplace not possible on monorail/maglev trains
|
||||
-1412031 fast forward scrolling is also fast forward :)
|
||||
-1395489 Nightly 3358 Linux Driver warnings
|
||||
-1394316 Multistop traffic jam
|
||||
-1394231 Autorenew glitch on helicopters
|
||||
-1387424 overtake insolvent company is to cheap
|
||||
@@ -75,7 +91,6 @@ URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
|
||||
-1372891 Performance loss with NTP & NPF
|
||||
-1342383 Last built rail type not cleared when starting new game
|
||||
-1296259 Autosave override for multiplayer games
|
||||
-1254226 giant screenshot crashes multiplayer
|
||||
-1242753 Town population minus 10
|
||||
-1236320 Bug in main menu allows moving screen
|
||||
-1201284 permanent hilight in a depot
|
||||
@@ -85,7 +100,6 @@ URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
|
||||
-1183253 Incorrect Load vs Loading Sprites
|
||||
-1183251 Hangar sprite does not update when refit.
|
||||
-1160732 little bug with transparency
|
||||
-1153937 Game wont run from a start menu shortcut
|
||||
-1117731 Editor-StartingDate
|
||||
-1114237 Wrong autoreplace hint
|
||||
-1108046 game freezes
|
||||
@@ -102,4 +116,4 @@ URL: http://sourceforge.net/tracker/?atid=669662&group_id=103924&func=browse
|
||||
-0987883 Aircraft landing/taking off
|
||||
-0987880 company league table updating
|
||||
-0985924 aircraft taxi speed
|
||||
-0941694 Clipping problems stations/vehicles on slopes
|
||||
-0941694 Clipping problems stations/vehicles on slopes
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Baterias
|
||||
STR_004C_PLASTIC :Pl<50>stico
|
||||
STR_004D_FIZZY_DRINK :Bebidas Gasosas
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passageiro
|
||||
STR_QUANTITY_COAL :{COMMA} tonelada de carv<72>o
|
||||
STR_QUANTITY_MAIL :{COMMA} saco de correspond<6E>ncias
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passageiro{P "" s}
|
||||
STR_QUANTITY_COAL :{COMMA} tonelada{P "" s} de carv<72>o
|
||||
STR_QUANTITY_MAIL :{COMMA} saco{P "" s} de correspond<6E>ncias
|
||||
STR_QUANTITY_OIL :{VOLUME} de petr<74>leo
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} insumo de gado
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} insumo{P "" s} de gado
|
||||
STR_QUANTITY_GOODS :{COMMA} caixas de bens
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonelada de cereais
|
||||
STR_QUANTITY_WOOD :{COMMA} tonelada de madeira
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonelada de min<69>rio de ferro
|
||||
STR_QUANTITY_STEEL :{COMMA} tonelada de a<>o
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saco de valores
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonelada de min<69>rio de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonelada de milho
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonelada de fruta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} saco de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} tonelada de comida
|
||||
STR_QUANTITY_PAPER :{COMMA} tonelada de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} saco de ouro
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonelada{P "" s} de cereais
|
||||
STR_QUANTITY_WOOD :{COMMA} tonelada{P "" s} de madeira
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonelada{P "" s} de min<69>rio de ferro
|
||||
STR_QUANTITY_STEEL :{COMMA} tonelada{P "" s} de a<>o
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saco{P "" s} de valores
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonelada{P "" s} de min<69>rio de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonelada{P "" s} de milho
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonelada{P "" s} de fruta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} saco{P "" s} de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} tonelada{P "" s} de comida
|
||||
STR_QUANTITY_PAPER :{COMMA} tonelada{P "" s} de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} saco{P "" s} de ouro
|
||||
STR_QUANTITY_WATER :{VOLUME} de <20>gua
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonelada de trigo
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonelada{P "" s} de trigo
|
||||
STR_QUANTITY_RUBBER :{VOLUME} de borracha
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonelada de a<><61>car
|
||||
STR_QUANTITY_TOYS :{COMMA} brinquedo
|
||||
STR_QUANTITY_SWEETS :{COMMA} saco de doces
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonelada{P "" s} de a<><61>car
|
||||
STR_QUANTITY_TOYS :{COMMA} brinquedo{P "" s}
|
||||
STR_QUANTITY_SWEETS :{COMMA} saco{P "" s} de doces
|
||||
STR_QUANTITY_COLA :{VOLUME} de cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonelada de algod<6F>o doce
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bolha
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonelada de caramelo
|
||||
STR_QUANTITY_BATTERIES :{COMMA} bateria
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonelada{P "" s} de algod<6F>o doce
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bolha{P "" s}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonelada{P "" s} de caramelo
|
||||
STR_QUANTITY_BATTERIES :{COMMA} bateria{P "" s}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} de pl<70>stico
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} Bebida Gasosa
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bebida{P "" s} gasosa
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CL
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Pila
|
||||
STR_004C_PLASTIC :Pl<50>stic
|
||||
STR_004D_FIZZY_DRINK :Beguda Gasosa
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passatger
|
||||
STR_QUANTITY_COAL :{COMMA} tona de carb<72>
|
||||
STR_QUANTITY_MAIL :{COMMA} saca de correu
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passatger{P "" s}
|
||||
STR_QUANTITY_COAL :{COMMA} ton{P a es} de carb<72>
|
||||
STR_QUANTITY_MAIL :{COMMA} sa{P ca ques} de correu
|
||||
STR_QUANTITY_OIL :{VOLUME} de petroli
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} cap de bestiar
|
||||
STR_QUANTITY_GOODS :{COMMA} palet de mercaderies
|
||||
STR_QUANTITY_GRAIN :{COMMA} tona de gra
|
||||
STR_QUANTITY_WOOD :{COMMA} tona de fusta
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tona de mineral de ferro
|
||||
STR_QUANTITY_STEEL :{COMMA} tona d'acer
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saca de valors
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tona de mineral de coure
|
||||
STR_QUANTITY_MAIZE :{COMMA} tona de blat de moro
|
||||
STR_QUANTITY_FRUIT :{COMMA} tona de fruita
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} bossa de diamants
|
||||
STR_QUANTITY_FOOD :{COMMA} tona de queviures
|
||||
STR_QUANTITY_PAPER :{COMMA} tona de paper
|
||||
STR_QUANTITY_GOLD :{COMMA} sac d'or
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} cap{P "" s} de bestiar
|
||||
STR_QUANTITY_GOODS :{COMMA} palet{P "" s} de mercaderies
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton{P a es} de gra
|
||||
STR_QUANTITY_WOOD :{COMMA} ton{P a es} de fusta
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton{P a es} de mineral de ferro
|
||||
STR_QUANTITY_STEEL :{COMMA} ton{P a es} d'acer
|
||||
STR_QUANTITY_VALUABLES :{COMMA} sa{P ca ques} de valors
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton{P a es} de mineral de coure
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton{P a es} de blat de moro
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton{P a es} de fruita
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} boss{P a es} de diamants
|
||||
STR_QUANTITY_FOOD :{COMMA} ton{P a es} de queviures
|
||||
STR_QUANTITY_PAPER :{COMMA} ton{P a es} de paper
|
||||
STR_QUANTITY_GOLD :{COMMA} sa{P ca ques} d'or
|
||||
STR_QUANTITY_WATER :{VOLUME} d'aigua
|
||||
STR_QUANTITY_WHEAT :{COMMA} tona de blat
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton{P a es} de blat
|
||||
STR_QUANTITY_RUBBER :{VOLUME} de cautx<74>
|
||||
STR_QUANTITY_SUGAR :{COMMA} tona de sucre
|
||||
STR_QUANTITY_TOYS :{COMMA} joguina
|
||||
STR_QUANTITY_SWEETS :{COMMA} bossa de dol<6F>os
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton{P a es} de sucre
|
||||
STR_QUANTITY_TOYS :{COMMA} joguin{P a es}
|
||||
STR_QUANTITY_SWEETS :{COMMA} boss{P a es} de dol<6F>os
|
||||
STR_QUANTITY_COLA :{VOLUME} de refrescs
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tona de cot<6F> de sucre
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bombolla
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tona de caramel
|
||||
STR_QUANTITY_BATTERIES :{COMMA} pila
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton{P a es} de cot<6F> de sucre
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bomboll{P a es}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton{P a es} de caramel
|
||||
STR_QUANTITY_BATTERIES :{COMMA} pil{P a es}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} de pl<70>stic
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} beguda gasosa
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} begud{P a es} gasosa
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CB
|
||||
|
@@ -83,35 +83,35 @@ STR_004B_BATTERY :Batteri
|
||||
STR_004C_PLASTIC :Plastik
|
||||
STR_004D_FIZZY_DRINK :Sodavand
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passager
|
||||
STR_QUANTITY_COAL :{COMMA} ton kul
|
||||
STR_QUANTITY_MAIL :{COMMA} s<>k post
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passager{P "" er}
|
||||
STR_QUANTITY_COAL :{COMMA} ton{P "" s} kul
|
||||
STR_QUANTITY_MAIL :{COMMA} s<>k{P "" ke} post
|
||||
STR_QUANTITY_OIL :{VOLUME} olie
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} stk. kv<6B>g
|
||||
STR_QUANTITY_GOODS :{COMMA} kasse gods
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton korn
|
||||
STR_QUANTITY_WOOD :{COMMA} ton tr<74>
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton jernmalm
|
||||
STR_QUANTITY_STEEL :{COMMA} ton st<73>l
|
||||
STR_QUANTITY_VALUABLES :{COMMA} s<>k v<>rdigendstande
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tons kobbermalm
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton majs
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton frugt
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} s<>k diamanter
|
||||
STR_QUANTITY_FOOD :{COMMA} ton mad
|
||||
STR_QUANTITY_PAPER :{COMMA} ton papir
|
||||
STR_QUANTITY_GOLD :{COMMA} s<>k guld
|
||||
STR_QUANTITY_GOODS :{COMMA} kasse{P "" r} gods
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton{P "" s} korn
|
||||
STR_QUANTITY_WOOD :{COMMA} ton{P "" s} tr<74>
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton{P "" s} jernmalm
|
||||
STR_QUANTITY_STEEL :{COMMA} ton{P "" s} st<73>l
|
||||
STR_QUANTITY_VALUABLES :{COMMA} s<>k{P "" ke} v<>rdigendstande
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton{P "" s} kobbermalm
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton{P "" s} majs
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton{P "" s} frugt
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} s<>k{P "" ke} diamanter
|
||||
STR_QUANTITY_FOOD :{COMMA} ton{P "" s} mad
|
||||
STR_QUANTITY_PAPER :{COMMA} ton{P "" s} papir
|
||||
STR_QUANTITY_GOLD :{COMMA} s<>k{P "" ke} guld
|
||||
STR_QUANTITY_WATER :{VOLUME} vand
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton hvede
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton{P "" s} hvede
|
||||
STR_QUANTITY_RUBBER :{VOLUME} gummi
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton sukker
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton{P "" s} sukker
|
||||
STR_QUANTITY_TOYS :{COMMA} leget<65>j
|
||||
STR_QUANTITY_SWEETS :{COMMA} s<>k slik
|
||||
STR_QUANTITY_SWEETS :{COMMA} s<>k{P "" ke} slik
|
||||
STR_QUANTITY_COLA :{VOLUME} cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton candyfloss
|
||||
STR_QUANTITY_BUBBLES :{COMMA} boble
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton{P "" s} candyfloss
|
||||
STR_QUANTITY_BUBBLES :{COMMA} boble{P "" r}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton karamel
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batteri
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batteri{P "" er}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} plastik
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} sodavand
|
||||
STR_ABBREV_NOTHING :
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Batterij
|
||||
STR_004C_PLASTIC :Plastic
|
||||
STR_004D_FIZZY_DRINK :Frisdrank
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passagier
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passagier{P "" s}
|
||||
STR_QUANTITY_COAL :{COMMA} ton kolen
|
||||
STR_QUANTITY_MAIL :{COMMA} zak post
|
||||
STR_QUANTITY_MAIL :{COMMA} zak{P "" ken} post
|
||||
STR_QUANTITY_OIL :{VOLUME} olie
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} stuk vee
|
||||
STR_QUANTITY_GOODS :{COMMA} pallet goederen
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} stuk{P "" s} vee
|
||||
STR_QUANTITY_GOODS :{COMMA} pallet{P "" s} goederen
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton graan
|
||||
STR_QUANTITY_WOOD :{COMMA} ton hout
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton ijzererts
|
||||
STR_QUANTITY_STEEL :{COMMA} ton staal
|
||||
STR_QUANTITY_VALUABLES :{COMMA} zak kostbaarheden
|
||||
STR_QUANTITY_VALUABLES :{COMMA} zak{P "" ken} kostbaarheden
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton kopererts
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton ma<6D>s
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton fruit
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} zak diamanten
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} zak{P "" ken} diamanten
|
||||
STR_QUANTITY_FOOD :{COMMA} ton voedsel
|
||||
STR_QUANTITY_PAPER :{COMMA} ton papier
|
||||
STR_QUANTITY_GOLD :{COMMA} zak goud
|
||||
STR_QUANTITY_GOLD :{COMMA} zak{P "" ken} goud
|
||||
STR_QUANTITY_WATER :{VOLUME} water
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton tarwe
|
||||
STR_QUANTITY_RUBBER :{VOLUME} rubber
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton suiker
|
||||
STR_QUANTITY_TOYS :{COMMA} speelgoed
|
||||
STR_QUANTITY_SWEETS :{COMMA} zak snoep
|
||||
STR_QUANTITY_SWEETS :{COMMA} zak{P "" ken} snoep
|
||||
STR_QUANTITY_COLA :{VOLUME} cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton suikerspinnen
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bel
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bel{P "" len}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton toffee
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batterij
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batterij{P "" en}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} plastic
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} blikje frisdrank
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} blikje{P "" s} frisdrank
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}KL
|
||||
|
106
lang/finnish.txt
106
lang/finnish.txt
@@ -1957,7 +1957,7 @@ STR_700A_COMPANY_NAME :Yhti
|
||||
STR_700B_PRESIDENT_S_NAME :P<><50>johtajan nimi
|
||||
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Yhti<74>n nime<6D> ei voi muuttaa...
|
||||
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}P<><50>johtajan nime<6D> ei voi muuttaa...
|
||||
STR_700E_FINANCES :{WHITE}{COMPANY} Talous {BLACK}{PLAYERNAME}
|
||||
STR_700E_FINANCES :{WHITE}Talous, {COMPANY} {BLACK}{PLAYERNAME}
|
||||
STR_700F_EXPENDITURE_INCOME :{WHITE}Menot/tulot
|
||||
STR_7010 :{WHITE}{NUM}
|
||||
STR_7011_CONSTRUCTION :{GOLD}Rakentaminen
|
||||
@@ -2106,61 +2106,61 @@ STR_8019_T_I_M_ELECTRIC :'T.I.M.' (s
|
||||
STR_801A_ASIASTAR_ELECTRIC :'AsiaStar' (s<>hk<68>)
|
||||
STR_801B_PASSENGER_CAR :Matkustajavaunu
|
||||
STR_801C_MAIL_VAN :Postivaunu
|
||||
STR_801D_COAL_CAR :Hiilivaunu
|
||||
STR_801E_OIL_TANKER :<3A>ljys<EFBFBD>ili<EFBFBD>
|
||||
STR_801D_COAL_CAR :Kivihiilivaunu
|
||||
STR_801E_OIL_TANKER :<3A>ljyvaunu
|
||||
STR_801F_LIVESTOCK_VAN :Karjavaunu
|
||||
STR_8020_GOODS_VAN :Tavaravaunu
|
||||
STR_8021_GRAIN_HOPPER :Viljalaari
|
||||
STR_8022_WOOD_TRUCK :Tukkiteli
|
||||
STR_8023_IRON_ORE_HOPPER :Rautalaari
|
||||
STR_8024_STEEL_TRUCK :Ter<65>steli
|
||||
STR_8021_GRAIN_HOPPER :Viljavaunu
|
||||
STR_8022_WOOD_TRUCK :Raakapuuvaunu
|
||||
STR_8023_IRON_ORE_HOPPER :Malmivaunu
|
||||
STR_8024_STEEL_TRUCK :Ter<65>skelavaunu
|
||||
STR_8025_ARMORED_VAN :Panssaroitu vaunu
|
||||
STR_8026_FOOD_VAN :Ruokavaunu
|
||||
STR_8027_PAPER_TRUCK :Paperiteli
|
||||
STR_8028_COPPER_ORE_HOPPER :Kuparilaari
|
||||
STR_8029_WATER_TANKER :Vesis<EFBFBD>ili<EFBFBD>
|
||||
STR_802A_FRUIT_TRUCK :Hedelm<6C>teli
|
||||
STR_802B_RUBBER_TRUCK :Kumiteli
|
||||
STR_802C_SUGAR_TRUCK :Sokeriteli
|
||||
STR_802D_COTTON_CANDY_HOPPER :Hattaralaari
|
||||
STR_802E_TOFFEE_HOPPER :Toffeelaari
|
||||
STR_8027_PAPER_TRUCK :Paperivaunu
|
||||
STR_8028_COPPER_ORE_HOPPER :Malmivaunu
|
||||
STR_8029_WATER_TANKER :Vesivaunu
|
||||
STR_802A_FRUIT_TRUCK :Hedelm<6C>vaunu
|
||||
STR_802B_RUBBER_TRUCK :Kumivaunu
|
||||
STR_802C_SUGAR_TRUCK :Sokerivaunu
|
||||
STR_802D_COTTON_CANDY_HOPPER :Hattaravaunu
|
||||
STR_802E_TOFFEE_HOPPER :Toffeevaunu
|
||||
STR_802F_BUBBLE_VAN :Kuplavaunu
|
||||
STR_8030_COLA_TANKER :Limsas<EFBFBD>ili<EFBFBD>
|
||||
STR_8030_COLA_TANKER :Limsavaunu
|
||||
STR_8031_CANDY_VAN :Karkkivaunu
|
||||
STR_8032_TOY_VAN :Leluvaunu
|
||||
STR_8033_BATTERY_TRUCK :Paristoteli
|
||||
STR_8034_FIZZY_DRINK_TRUCK :Sihijuomateli
|
||||
STR_8035_PLASTIC_TRUCK :Muoviteli
|
||||
STR_8033_BATTERY_TRUCK :Paristovaunu
|
||||
STR_8034_FIZZY_DRINK_TRUCK :Sihijuomavaunu
|
||||
STR_8035_PLASTIC_TRUCK :Muovivaunu
|
||||
STR_8036_X2001_ELECTRIC :'X2001' (s<>hk<68>)
|
||||
STR_8037_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (s<>hk<68>)
|
||||
STR_8038_WIZZOWOW_Z99 :Wizzowow Z99
|
||||
STR_8039_PASSENGER_CAR :Matkustajavaunu
|
||||
STR_803A_MAIL_VAN :Postivaunu
|
||||
STR_803B_COAL_CAR :Hiilivaunu
|
||||
STR_803C_OIL_TANKER :<3A>ljys<EFBFBD>ili<EFBFBD>
|
||||
STR_803C_OIL_TANKER :<3A>ljyvaunu
|
||||
STR_803D_LIVESTOCK_VAN :Karjavaunu
|
||||
STR_803E_GOODS_VAN :Tavaravaunu
|
||||
STR_803F_GRAIN_HOPPER :Viljalaari
|
||||
STR_8040_WOOD_TRUCK :Tukkiteli
|
||||
STR_8041_IRON_ORE_HOPPER :Rautalaari
|
||||
STR_8042_STEEL_TRUCK :Ter<65>steli
|
||||
STR_803F_GRAIN_HOPPER :Viljavaunu
|
||||
STR_8040_WOOD_TRUCK :Raakapuuvaunu
|
||||
STR_8041_IRON_ORE_HOPPER :Malmivaunu
|
||||
STR_8042_STEEL_TRUCK :Ter<65>skelavaunu
|
||||
STR_8043_ARMORED_VAN :Panssaroitu vaunu
|
||||
STR_8044_FOOD_VAN :Ruokavaunu
|
||||
STR_8045_PAPER_TRUCK :Paperiteli
|
||||
STR_8046_COPPER_ORE_HOPPER :Kuparilaari
|
||||
STR_8047_WATER_TANKER :Vesis<EFBFBD>ili<EFBFBD>
|
||||
STR_8048_FRUIT_TRUCK :Hedelm<6C>teli
|
||||
STR_8049_RUBBER_TRUCK :Kumiteli
|
||||
STR_804A_SUGAR_TRUCK :Sokeriteli
|
||||
STR_804B_COTTON_CANDY_HOPPER :Hattaralaari
|
||||
STR_804C_TOFFEE_HOPPER :Toffeelaari
|
||||
STR_8045_PAPER_TRUCK :Paperivaunu
|
||||
STR_8046_COPPER_ORE_HOPPER :Malmivaunu
|
||||
STR_8047_WATER_TANKER :Vesivaunu
|
||||
STR_8048_FRUIT_TRUCK :Hedelm<6C>vaunu
|
||||
STR_8049_RUBBER_TRUCK :Kumivaunu
|
||||
STR_804A_SUGAR_TRUCK :Sokerivaunu
|
||||
STR_804B_COTTON_CANDY_HOPPER :Hattaravaunu
|
||||
STR_804C_TOFFEE_HOPPER :Toffeevaunu
|
||||
STR_804D_BUBBLE_VAN :Kuplavaunu
|
||||
STR_804E_COLA_TANKER :Limsas<EFBFBD>ili<EFBFBD>
|
||||
STR_804E_COLA_TANKER :Limsavaunu
|
||||
STR_804F_CANDY_VAN :Karkkivaunu
|
||||
STR_8050_TOY_VAN :Leluvaunu
|
||||
STR_8051_BATTERY_TRUCK :Paristoteli
|
||||
STR_8052_FIZZY_DRINK_TRUCK :Sihijuomateli
|
||||
STR_8053_PLASTIC_TRUCK :Muoviteli
|
||||
STR_8051_BATTERY_TRUCK :Paristovaunu
|
||||
STR_8052_FIZZY_DRINK_TRUCK :Sihijuomavaunu
|
||||
STR_8053_PLASTIC_TRUCK :Muovivaunu
|
||||
STR_8054_LEV1_LEVIATHAN_ELECTRIC :Lev1 'Leviathan' (s<>hk<68>)
|
||||
STR_8055_LEV2_CYCLOPS_ELECTRIC :Lev2 'Cyclops' (s<>hk<68>)
|
||||
STR_8056_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus' (s<>hk<68>)
|
||||
@@ -2169,30 +2169,30 @@ STR_8058_WIZZOWOW_ROCKETEER :Wizzowow Rocket
|
||||
STR_8059_PASSENGER_CAR :Matkustajavaunu
|
||||
STR_805A_MAIL_VAN :Postivaunu
|
||||
STR_805B_COAL_CAR :Hiilivaunu
|
||||
STR_805C_OIL_TANKER :<3A>ljys<EFBFBD>ili<EFBFBD>
|
||||
STR_805C_OIL_TANKER :<3A>ljyvaunu
|
||||
STR_805D_LIVESTOCK_VAN :Karjavaunu
|
||||
STR_805E_GOODS_VAN :Tavaravaunu
|
||||
STR_805F_GRAIN_HOPPER :Viljalaari
|
||||
STR_8060_WOOD_TRUCK :Tukkiteli
|
||||
STR_8061_IRON_ORE_HOPPER :Rautamalmilaari
|
||||
STR_8062_STEEL_TRUCK :Ter<65>steli
|
||||
STR_805F_GRAIN_HOPPER :Viljavaunu
|
||||
STR_8060_WOOD_TRUCK :Raakapuuvaunu
|
||||
STR_8061_IRON_ORE_HOPPER :Malmivaunu
|
||||
STR_8062_STEEL_TRUCK :Ter<65>skela
|
||||
STR_8063_ARMORED_VAN :Panssaroitu vaunu
|
||||
STR_8064_FOOD_VAN :Ruokavaunu
|
||||
STR_8065_PAPER_TRUCK :Paperiteli
|
||||
STR_8066_COPPER_ORE_HOPPER :Kuparilaari
|
||||
STR_8067_WATER_TANKER :Vesis<EFBFBD>ili<EFBFBD>
|
||||
STR_8068_FRUIT_TRUCK :Hedelm<6C>teli
|
||||
STR_8069_RUBBER_TRUCK :Kumiteli
|
||||
STR_806A_SUGAR_TRUCK :Sokeriteli
|
||||
STR_806B_COTTON_CANDY_HOPPER :Hattaralaari
|
||||
STR_806C_TOFFEE_HOPPER :Toffeelaari
|
||||
STR_8065_PAPER_TRUCK :Paperivaunu
|
||||
STR_8066_COPPER_ORE_HOPPER :Malmivaunu
|
||||
STR_8067_WATER_TANKER :Vesivaunu
|
||||
STR_8068_FRUIT_TRUCK :Hedelm<6C>vaunu
|
||||
STR_8069_RUBBER_TRUCK :Kumivaunu
|
||||
STR_806A_SUGAR_TRUCK :Sokerivaunu
|
||||
STR_806B_COTTON_CANDY_HOPPER :Hattaravaunu
|
||||
STR_806C_TOFFEE_HOPPER :Toffeevaunu
|
||||
STR_806D_BUBBLE_VAN :Kuplavaunu
|
||||
STR_806E_COLA_TANKER :Limsas<EFBFBD>ili<EFBFBD>
|
||||
STR_806E_COLA_TANKER :Limsavaunu
|
||||
STR_806F_CANDY_VAN :Karkkivaunu
|
||||
STR_8070_TOY_VAN :Leluvaunu
|
||||
STR_8071_BATTERY_TRUCK :Paristoteli
|
||||
STR_8072_FIZZY_DRINK_TRUCK :Sihijuomateli
|
||||
STR_8073_PLASTIC_TRUCK :Muoviteli
|
||||
STR_8071_BATTERY_TRUCK :Paristovaunu
|
||||
STR_8072_FIZZY_DRINK_TRUCK :Sihijuomavaunu
|
||||
STR_8073_PLASTIC_TRUCK :Muovivaunu
|
||||
STR_8074_MPS_REGAL_BUS :MPS Regal -linja-auto
|
||||
STR_8075_HEREFORD_LEOPARD_BUS :Hereford Leopard -linja-auto
|
||||
STR_8076_FOSTER_BUS :Foster-linja-auto
|
||||
|
@@ -1250,10 +1250,10 @@ STR_NETWORK_8_PLAYERS :8 joueurs
|
||||
STR_NETWORK_9_PLAYERS :9 joueurs
|
||||
STR_NETWORK_10_PLAYERS :10 joueurs
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Max compagnies:
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limiter le nombre de compagnies sur le serveur
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limiter le serveur <20> un certain nombre de compagnies
|
||||
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max spectateurs:
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limiter le nombre de spectateurs sur le serveur
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limiter le serveur <20> un certain nombre de spectateurs
|
||||
STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
|
||||
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Langue parl<72>e :
|
||||
STR_NETWORK_LANGUAGE_TIP :{BLACK}Les autres joueurs sauront quelle langue est parl<72>e sur ce serveur.
|
||||
@@ -1352,7 +1352,7 @@ STR_NETWORK_ERR_CLIENT_WRONG_PASSWORD :mot de passe de
|
||||
STR_NETWORK_ERR_CLIENT_PLAYER_MISMATCH :mauvais player-id dans DoCommand
|
||||
STR_NETWORK_ERR_CLIENT_KICKED :jet<65> par le serveur
|
||||
STR_NETWORK_ERR_CLIENT_CHEATER :a tent<6E> de tricher
|
||||
STR_NETWORK_ERR_CLIENT_SERVER_FULL :serveur complet
|
||||
STR_NETWORK_ERR_CLIENT_SERVER_FULL :Serveur complet
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CLIENT_JOINED :a rejoint la partie
|
||||
STR_NETWORK_GIVE_MONEY :vous a donn<6E> un peu d'argent ({CURRENCY})
|
||||
@@ -2767,7 +2767,7 @@ STR_REPLACE_HELP_RAILTYPE :{BLACK}Choisir
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Ceci affiche par quelle locomotive celle qui est s<>lectionn<6E>e <20> gauche sera remplac<61>e
|
||||
STR_REPLACE_HELP :{BLACK}Cette caract<63>ristique permet de choisir un type de locomotive et de le remplacer par un autre. Ceci sera fait automatiquement quand le v<>hicule rentre dans un d<>p<EFBFBD>t
|
||||
STR_REPLACE_REMOVE_WAGON :{BLACK}Retrait de wagon: {ORANGE}{SKIP}{STRING}
|
||||
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Faire que la longueur du train reste la m<>me en retirant des wagons (depuis la t<>te du train), si le remplacement du v<>hicule allonge le train.
|
||||
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}L'autoremplacement conserve la m<>me longueur du train en retirant des wagons (d'abord par la t<>te), si le remplacement fait en sorte que le train ne devienne plus long.
|
||||
STR_ENGINE_NOT_BUILDABLE :{WHITE}Ce v<>hicule ne peut pas <20>tre construit
|
||||
|
||||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Bater
|
||||
STR_004C_PLASTIC :Pl<50>stico
|
||||
STR_004D_FIZZY_DRINK :Bebida Gaseosa
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} pasaxeiro
|
||||
STR_QUANTITY_COAL :{COMMA} ton. de carb<72>n
|
||||
STR_QUANTITY_MAIL :{COMMA} saco de correo
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} pasaxeiro{P "" s}
|
||||
STR_QUANTITY_COAL :{COMMA} ton{P "" s}. de carb<72>n
|
||||
STR_QUANTITY_MAIL :{COMMA} saco{P "" s} de correo
|
||||
STR_QUANTITY_OIL :{VOLUME} de petr<74>leo
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} item de gando
|
||||
STR_QUANTITY_GOODS :{COMMA} caix<69>n de mercador<6F>as
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton. de gran
|
||||
STR_QUANTITY_WOOD :{COMMA} ton. de madeira
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton. de hematita
|
||||
STR_QUANTITY_STEEL :{COMMA} ton. de aceiro
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saco de valores
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton. de mineral de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton. de millo
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton. de froita
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} saco de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} ton. de comida
|
||||
STR_QUANTITY_PAPER :{COMMA} ton. de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} saco de ouro
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} item{P "" s} de gando
|
||||
STR_QUANTITY_GOODS :{COMMA} caix<69>n{P "" s} de mercador<6F>as
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton{P "" s}. de gran
|
||||
STR_QUANTITY_WOOD :{COMMA} ton{P "" s}. de madeira
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton{P "" s}. de hematita
|
||||
STR_QUANTITY_STEEL :{COMMA} ton{P "" s}. de aceiro
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saco{P "" s} de valores
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton{P "" s}. de mineral de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton{P "" s}. de millo
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton{P "" s}. de froita
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} saco{P "" s} de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} ton{P "" s}. de comida
|
||||
STR_QUANTITY_PAPER :{COMMA} ton{P "" s}. de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} saco{P "" s} de ouro
|
||||
STR_QUANTITY_WATER :{VOLUME} de auga
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton. de trigo
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton{P "" s}. de trigo
|
||||
STR_QUANTITY_RUBBER :{VOLUME} de caucho
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton. de azucre
|
||||
STR_QUANTITY_TOYS :{COMMA} xoguete
|
||||
STR_QUANTITY_SWEETS :{COMMA} saco de caramelo
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton{P "" s}. de azucre
|
||||
STR_QUANTITY_TOYS :{COMMA} xoguete{P "" s}
|
||||
STR_QUANTITY_SWEETS :{COMMA} saco{P "" s} de caramelo
|
||||
STR_QUANTITY_COLA :{VOLUME} de cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton. de algod<6F>n de azucre
|
||||
STR_QUANTITY_BUBBLES :{COMMA} burbulla
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton. de toffee
|
||||
STR_QUANTITY_BATTERIES :{COMMA} bater<65>a
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton{P "" s}. de algod<6F>n de azucre
|
||||
STR_QUANTITY_BUBBLES :{COMMA} burbulla{P "" s}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton{P "" s}. de toffee
|
||||
STR_QUANTITY_BATTERIES :{COMMA} bater<65>a{P "" s}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} de pl<70>stico
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bebida gaseosa
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bebida{P "" s} gaseosa{P "" s}
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CL
|
||||
|
@@ -1315,7 +1315,7 @@ STR_NETWORK_CONNECTING_DOWNLOADING :{BLACK}{NUM} /
|
||||
STR_NETWORK_DISCONNECT :{BLACK}Trennen
|
||||
|
||||
STR_NETWORK_CHAT_QUERY_CAPTION :{WHITE}Gib deine Nachricht ein
|
||||
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gib an wieviel Geld du geben m<>chtest
|
||||
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Gib an, wieviel Geld du geben m<>chtest
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server ist gesch<63>tzt. Gib das Passwort ein
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Firma ist gesch<63>tzt! Passwort eingeben
|
||||
STR_NETWORK_CLIENT_LIST :{WHITE}Teilnehmerliste
|
||||
@@ -1486,7 +1486,7 @@ STR_2005 :{WHITE}{TOWN}
|
||||
STR_2006_POPULATION :{BLACK}Bev<65>lkerung: {ORANGE}{COMMA}{BLACK} H<>user: {ORANGE}{COMMA}
|
||||
STR_2007_RENAME_TOWN :Stadt umbenennen
|
||||
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Die Stadt kann nicht umbenannt werden...
|
||||
STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} Die Stadtverwaltung erteilt keine Genehmigung
|
||||
STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}Die Stadtverwaltung von {TOWN} erteilt keine Genehmigung
|
||||
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}St<53>dtenamen - klicke auf den Namen, um die Stadt anzuzeigen
|
||||
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Ansicht auf Stadt zentrieren
|
||||
STR_200C_CHANGE_TOWN_NAME :{BLACK}Stadt umbenennen
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Rafhl
|
||||
STR_004C_PLASTIC :Plast
|
||||
STR_004D_FIZZY_DRINK :Gosdrykkja
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} far<61>egi
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} far<61>eg{P i ar}
|
||||
STR_QUANTITY_COAL :{COMMA} tonn af kolum
|
||||
STR_QUANTITY_MAIL :{COMMA} pokar af p<>sti
|
||||
STR_QUANTITY_OIL :{VOLUME} af ol<6F>u
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} nautgripur
|
||||
STR_QUANTITY_GOODS :{COMMA} kassi af v<>rum
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} nautgrip{P u i}r
|
||||
STR_QUANTITY_GOODS :{COMMA} kass{P i ar} af v<>rum
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonn af korni
|
||||
STR_QUANTITY_WOOD :{COMMA} tonn af timbri
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonn af j<>rngr<67>ti
|
||||
STR_QUANTITY_STEEL :{COMMA} tonn af st<73>li
|
||||
STR_QUANTITY_VALUABLES :{COMMA} poki af ver<65>m<EFBFBD>tum
|
||||
STR_QUANTITY_VALUABLES :{COMMA} pok{P i ar} af ver<65>m<EFBFBD>tum
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonn af kopar
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonn af ma<6D>s
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonn af <20>v<EFBFBD>xtum
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} poki af dem<65>ntum
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} pok{P i ar} af dem<65>ntum
|
||||
STR_QUANTITY_FOOD :{COMMA} tonn af matv<74>lum
|
||||
STR_QUANTITY_PAPER :{COMMA} tonn af papp<70>r
|
||||
STR_QUANTITY_GOLD :{COMMA} poki af gulli
|
||||
STR_QUANTITY_GOLD :{COMMA} pok{P i ar} af gulli
|
||||
STR_QUANTITY_WATER :{VOLUME} af vatni
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonn af hveiti
|
||||
STR_QUANTITY_RUBBER :{VOLUME} af g<>mm<6D>i
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonn af sykri
|
||||
STR_QUANTITY_TOYS :{COMMA} leikfang
|
||||
STR_QUANTITY_SWEETS :{COMMA} poki af s<>lg<6C>ti
|
||||
STR_QUANTITY_TOYS :{COMMA} leikf{P a <20>}ng
|
||||
STR_QUANTITY_SWEETS :{COMMA} pok{P i ar} af s<>lg<6C>ti
|
||||
STR_QUANTITY_COLA :{VOLUME} af k<>ladrykk
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonn af sykurfrau<61>i
|
||||
STR_QUANTITY_BUBBLES :{COMMA} k<>la
|
||||
STR_QUANTITY_BUBBLES :{COMMA} k<>l{P a ur}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonn af toff<66>
|
||||
STR_QUANTITY_BATTERIES :{COMMA} rafhla<EFBFBD>a
|
||||
STR_QUANTITY_BATTERIES :{COMMA} rafhl{P a<>a <20><>ur}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} af plasti
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} gosdrykkur
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} gosdrykk{P u i}r
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CL
|
||||
|
@@ -83,35 +83,35 @@ STR_004B_BATTERY :Batterie
|
||||
STR_004C_PLASTIC :Plastica
|
||||
STR_004D_FIZZY_DRINK :Bevande Frizzanti
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passeggero
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passegger{P o i}
|
||||
STR_QUANTITY_COAL :{COMMA} ton. di carbone
|
||||
STR_QUANTITY_MAIL :{COMMA} sacco postale
|
||||
STR_QUANTITY_MAIL :{COMMA} sacc{P o i} postal{P e i}
|
||||
STR_QUANTITY_OIL :{VOLUME} di petrolio
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} capo di bestiame
|
||||
STR_QUANTITY_GOODS :{COMMA} cassa di beni
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} cap{P o i} di bestiame
|
||||
STR_QUANTITY_GOODS :{COMMA} cass{P a e} di beni
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton. di grano
|
||||
STR_QUANTITY_WOOD :{COMMA} ton. di legna
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton. di ferro grezzo
|
||||
STR_QUANTITY_STEEL :{COMMA} ton. di acciaio
|
||||
STR_QUANTITY_VALUABLES :{COMMA} borsa di valori
|
||||
STR_QUANTITY_VALUABLES :{COMMA} bors{P a e} di valori
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton. di rame grezzo
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton. di mais
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton. di frutta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} borsa di diamanti
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} bors{P a e} di diamanti
|
||||
STR_QUANTITY_FOOD :{COMMA} ton. di cibo
|
||||
STR_QUANTITY_PAPER :{COMMA} ton. di carta
|
||||
STR_QUANTITY_GOLD :{COMMA} borsa d'oro
|
||||
STR_QUANTITY_GOLD :{COMMA} bors{P a e} d'oro
|
||||
STR_QUANTITY_WATER :{VOLUME} di acqua
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton. di frumento
|
||||
STR_QUANTITY_RUBBER :{VOLUME} di gomma
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton. di zucchero
|
||||
STR_QUANTITY_TOYS :{COMMA} giocattolo
|
||||
STR_QUANTITY_SWEETS :{COMMA} busta di caramelle
|
||||
STR_QUANTITY_TOYS :{COMMA} giocattol{P o i}
|
||||
STR_QUANTITY_SWEETS :{COMMA} bust{P a e} di caramelle
|
||||
STR_QUANTITY_COLA :{VOLUME} di cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton. di cotone candito
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bolla
|
||||
STR_QUANTITY_BUBBLES :{COMMA} boll{P a e}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton. di toffee
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batteria
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batteri{P a e}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} di plastica
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bibite frizzanti
|
||||
STR_ABBREV_NOTHING :
|
||||
|
@@ -83,35 +83,35 @@ STR_004B_BATTERY :Batteri
|
||||
STR_004C_PLASTIC :Plastikk
|
||||
STR_004D_FIZZY_DRINK :Brus
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passasjer
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passasjer{P "" er}
|
||||
STR_QUANTITY_COAL :{COMMA} tonn kull
|
||||
STR_QUANTITY_MAIL :{COMMA} postsekk
|
||||
STR_QUANTITY_MAIL :{COMMA} postsekk{P "" er}
|
||||
STR_QUANTITY_OIL :{VOLUME} olje
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} enhet buskap
|
||||
STR_QUANTITY_GOODS :{COMMA} kasse gods
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} enhet{P "" er} buskap
|
||||
STR_QUANTITY_GOODS :{COMMA} kasse{P "" r} gods
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonn korn
|
||||
STR_QUANTITY_WOOD :{COMMA} tonn t<>mmer
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonn jernmalm
|
||||
STR_QUANTITY_STEEL :{COMMA} tonn st<73>l
|
||||
STR_QUANTITY_VALUABLES :{COMMA} sekk med verdisaker
|
||||
STR_QUANTITY_VALUABLES :{COMMA} sekk{P "" er} med verdisaker
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonn kobbermalm
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonn mais
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonn frukt
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} sekk med diamanter
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} sekk{P "" er} med diamanter
|
||||
STR_QUANTITY_FOOD :{COMMA} tonn mat
|
||||
STR_QUANTITY_PAPER :{COMMA} tonn papir
|
||||
STR_QUANTITY_GOLD :{COMMA} sekk med gull
|
||||
STR_QUANTITY_GOLD :{COMMA} sekk{P "" er} med gull
|
||||
STR_QUANTITY_WATER :{VOLUME} vann
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonn hvete
|
||||
STR_QUANTITY_RUBBER :{VOLUME} gummi
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonn sukker
|
||||
STR_QUANTITY_TOYS :{COMMA} leke
|
||||
STR_QUANTITY_SWEETS :{COMMA} sekk med s<>tsaker
|
||||
STR_QUANTITY_TOYS :{COMMA} leke{P "" r}
|
||||
STR_QUANTITY_SWEETS :{COMMA} sekk{P "" er} med s<>tsaker
|
||||
STR_QUANTITY_COLA :{VOLUME} cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonn sukkerspinn
|
||||
STR_QUANTITY_BUBBLES :{COMMA} boble
|
||||
STR_QUANTITY_BUBBLES :{COMMA} boble{P "" r}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonn karamell
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batteri
|
||||
STR_QUANTITY_BATTERIES :{COMMA} batteri{P "" er}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} plastikk
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} brus
|
||||
STR_ABBREV_NOTHING :
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Baterias
|
||||
STR_004C_PLASTIC :Pl<50>stico
|
||||
STR_004D_FIZZY_DRINK :Bebidas Gasosas
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passageiro
|
||||
STR_QUANTITY_COAL :{COMMA} tonelada de carv<72>o
|
||||
STR_QUANTITY_MAIL :{COMMA} saco de correio
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} passageiro{P "" s}
|
||||
STR_QUANTITY_COAL :{COMMA} tonelada{P "" s} de carv<72>o
|
||||
STR_QUANTITY_MAIL :{COMMA} saco{P "" s} de correio
|
||||
STR_QUANTITY_OIL :{VOLUME} de petr<74>leo
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} item de gado
|
||||
STR_QUANTITY_GOODS :{COMMA} caixa de bens
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonelada de cereais
|
||||
STR_QUANTITY_WOOD :{COMMA} tonelada de madeira
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonelada de min<69>rio de ferro
|
||||
STR_QUANTITY_STEEL :{COMMA} tonelada de a<>o
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saco de valores
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonelada de min<69>rio de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonelada de milho
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonelada de fruta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} saco de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} tonelada de comida
|
||||
STR_QUANTITY_PAPER :{COMMA} tonelada de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} saco de ouro
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} ite{P m ns} de gado
|
||||
STR_QUANTITY_GOODS :{COMMA} caixa{P "" s} de bens
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonelada{P "" s} de cereais
|
||||
STR_QUANTITY_WOOD :{COMMA} tonelada{P "" s} de madeira
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonelada{P "" s} de min<69>rio de ferro
|
||||
STR_QUANTITY_STEEL :{COMMA} tonelada{P "" s} de a<>o
|
||||
STR_QUANTITY_VALUABLES :{COMMA} saco{P "" s} de valores
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonelada{P "" s} de min<69>rio de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonelada{P "" s} de milho
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonelada{P "" s} de fruta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} saco{P "" s} de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} tonelada{P "" s} de comida
|
||||
STR_QUANTITY_PAPER :{COMMA} tonelada{P "" s} de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} saco{P "" s} de ouro
|
||||
STR_QUANTITY_WATER :{VOLUME} de <20>gua
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonelada de trigo
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonelada{P "" s} de trigo
|
||||
STR_QUANTITY_RUBBER :{VOLUME} de borracha
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonelada de a<><61>car
|
||||
STR_QUANTITY_TOYS :{COMMA} brinquedo
|
||||
STR_QUANTITY_SWEETS :{COMMA} saco de doces
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonelada{P "" s} de a<><61>car
|
||||
STR_QUANTITY_TOYS :{COMMA} brinquedo{P "" s}
|
||||
STR_QUANTITY_SWEETS :{COMMA} saco{P "" s} de doces
|
||||
STR_QUANTITY_COLA :{VOLUME} de cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonelada de algod<6F>o doce
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bolha
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonelada de caramelo
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonelada{P "" s} de algod<6F>o doce
|
||||
STR_QUANTITY_BUBBLES :{COMMA} bolha{P "" s}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonelada{P "" s} de caramelo
|
||||
STR_QUANTITY_BATTERIES :{COMMA} pilh{P y as}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} de pl<70>stico
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} Bebida Gasosa
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bebida{P "" s} gasosa{P "" s}
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CL
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :baterii
|
||||
STR_004C_PLASTIC :plastic
|
||||
STR_004D_FIZZY_DRINK :suc
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} c<>l<EFBFBD>tor
|
||||
STR_QUANTITY_COAL :{COMMA} ton<EFBFBD> de c<>rbune
|
||||
STR_QUANTITY_MAIL :{COMMA} sac cu colete postale
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} c<>l<EFBFBD>tor{P "" i}
|
||||
STR_QUANTITY_COAL :{COMMA} ton{P <20> e} de c<>rbune
|
||||
STR_QUANTITY_MAIL :{COMMA} sac{P "" i} cu colete postale
|
||||
STR_QUANTITY_OIL :{VOLUME} de petrol
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} animal
|
||||
STR_QUANTITY_GOODS :{COMMA} pachet de bunuri
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton<EFBFBD> de cereale
|
||||
STR_QUANTITY_WOOD :{COMMA} ton<EFBFBD> de lemne
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton<EFBFBD> de minereu de fier
|
||||
STR_QUANTITY_STEEL :{COMMA} ton<EFBFBD> de otel
|
||||
STR_QUANTITY_VALUABLES :{COMMA} cutie de valori
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton<EFBFBD> de minereu de cupru
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton<EFBFBD> de porumb
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton<EFBFBD> de fructe
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} sac cu diamante
|
||||
STR_QUANTITY_FOOD :{COMMA} ton<EFBFBD> de alimente
|
||||
STR_QUANTITY_PAPER :{COMMA} ton<EFBFBD> de h<>rtie
|
||||
STR_QUANTITY_GOLD :{COMMA} sac cu aur
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} animal{P "" e}
|
||||
STR_QUANTITY_GOODS :{COMMA} pachet{P "" e} de bunuri
|
||||
STR_QUANTITY_GRAIN :{COMMA} ton{P <20> e} de cereale
|
||||
STR_QUANTITY_WOOD :{COMMA} ton{P <20> e} de lemne
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} ton{P <20> e} de minereu de fier
|
||||
STR_QUANTITY_STEEL :{COMMA} ton{P <20> e} de otel
|
||||
STR_QUANTITY_VALUABLES :{COMMA} cuti{P e i} de valori
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} ton{P <20> e} de minereu de cupru
|
||||
STR_QUANTITY_MAIZE :{COMMA} ton{P <20> e} de porumb
|
||||
STR_QUANTITY_FRUIT :{COMMA} ton{P <20> e} de fructe
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} sac{P "" i} cu diamante
|
||||
STR_QUANTITY_FOOD :{COMMA} ton{P <20> e} de alimente
|
||||
STR_QUANTITY_PAPER :{COMMA} ton{P <20> e} de h<>rtie
|
||||
STR_QUANTITY_GOLD :{COMMA} sac{P "" i} cu aur
|
||||
STR_QUANTITY_WATER :{VOLUME} de ap<61>
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton<EFBFBD> de gr<67>u
|
||||
STR_QUANTITY_WHEAT :{COMMA} ton{P <20> e} de gr<67>u
|
||||
STR_QUANTITY_RUBBER :{VOLUME} de cauciuc
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton<EFBFBD> de zah<61>r
|
||||
STR_QUANTITY_TOYS :{COMMA} sac cu juc<75>rii
|
||||
STR_QUANTITY_SWEETS :{COMMA} sac cu bomboane
|
||||
STR_QUANTITY_SUGAR :{COMMA} ton{P <20> e} de zah<61>r
|
||||
STR_QUANTITY_TOYS :{COMMA} sac{P "" i} cu juc<75>rii
|
||||
STR_QUANTITY_SWEETS :{COMMA} sac{P "" i} cu bomboane
|
||||
STR_QUANTITY_COLA :{VOLUME} de cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton<EFBFBD> de vat<61> de zah<61>r
|
||||
STR_QUANTITY_BUBBLES :{COMMA} balonas
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton<EFBFBD> de caramel
|
||||
STR_QUANTITY_BATTERIES :{COMMA} baterie
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} ton{P <20> e} de vat<61> de zah<61>r
|
||||
STR_QUANTITY_BUBBLES :{COMMA} balonas{P "" e}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} ton{P <20> e} de caramel
|
||||
STR_QUANTITY_BATTERIES :{COMMA} bateri{P e i}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} de plastic
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bidon cu suc
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} bido{P n ane} cu suc
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}CL
|
||||
STR_ABBREV_COAL :{TINYFONT}CB
|
||||
|
@@ -83,37 +83,37 @@ STR_004B_BATTERY :Pilas
|
||||
STR_004C_PLASTIC :Pl<50>stico
|
||||
STR_004D_FIZZY_DRINK :Refresco
|
||||
STR_QUANTITY_NOTHING :
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} pasajero
|
||||
STR_QUANTITY_COAL :{COMMA} tonelada de carb<72>n
|
||||
STR_QUANTITY_MAIL :{COMMA} saca de correo
|
||||
STR_QUANTITY_PASSENGERS :{COMMA} pasajero{P "" s}
|
||||
STR_QUANTITY_COAL :{COMMA} tonelada{P "" s} de carb<72>n
|
||||
STR_QUANTITY_MAIL :{COMMA} saca{P "" s} de correo
|
||||
STR_QUANTITY_OIL :{VOLUME} de petr<74>leo
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} cabeza de ganado
|
||||
STR_QUANTITY_GOODS :{COMMA} caja de mercanc<6E>a
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonelada de grano
|
||||
STR_QUANTITY_WOOD :{COMMA} tonelada de madera
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonelada de mineral de hierro
|
||||
STR_QUANTITY_STEEL :{COMMA} tonelada de acero
|
||||
STR_QUANTITY_VALUABLES :{COMMA} bolsa de objetos de valor
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonelada de mineral de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonelada de ma<6D>z
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonelada de fruta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} bolsa de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} tonelada de alimento
|
||||
STR_QUANTITY_PAPER :{COMMA} tonelada de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} bolsa de oro
|
||||
STR_QUANTITY_LIVESTOCK :{COMMA} cabeza{P "" s} de ganado
|
||||
STR_QUANTITY_GOODS :{COMMA} caja{P "" s} de mercanc<6E>a{P "" s}
|
||||
STR_QUANTITY_GRAIN :{COMMA} tonelada{P "" s} de grano
|
||||
STR_QUANTITY_WOOD :{COMMA} tonelada{P "" s} de madera
|
||||
STR_QUANTITY_IRON_ORE :{COMMA} tonelada{P "" s} de mineral de hierro
|
||||
STR_QUANTITY_STEEL :{COMMA} tonelada{P "" s} de acero
|
||||
STR_QUANTITY_VALUABLES :{COMMA} bolsa{P "" s} de objetos de valor
|
||||
STR_QUANTITY_COPPER_ORE :{COMMA} tonelada{P "" s} de mineral de cobre
|
||||
STR_QUANTITY_MAIZE :{COMMA} tonelada{P "" s} de ma<6D>z
|
||||
STR_QUANTITY_FRUIT :{COMMA} tonelada{P "" s} de fruta
|
||||
STR_QUANTITY_DIAMONDS :{COMMA} bolsa{P "" s} de diamantes
|
||||
STR_QUANTITY_FOOD :{COMMA} tonelada{P "" s} de alimento
|
||||
STR_QUANTITY_PAPER :{COMMA} tonelada{P "" s} de papel
|
||||
STR_QUANTITY_GOLD :{COMMA} bolsa{P "" s} de oro
|
||||
STR_QUANTITY_WATER :{VOLUME} de agua
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonelada de trigo
|
||||
STR_QUANTITY_WHEAT :{COMMA} tonelada{P "" s} de trigo
|
||||
STR_QUANTITY_RUBBER :{VOLUME} de caucho
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonelada de azucar
|
||||
STR_QUANTITY_TOYS :{COMMA} juguete
|
||||
STR_QUANTITY_SWEETS :{COMMA} bolsa de dulces
|
||||
STR_QUANTITY_SUGAR :{COMMA} tonelada{P "" s} de azucar
|
||||
STR_QUANTITY_TOYS :{COMMA} juguete{P "" s}
|
||||
STR_QUANTITY_SWEETS :{COMMA} bolsa{P "" s} de dulces
|
||||
STR_QUANTITY_COLA :{VOLUME} de cola
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonelada de algod<6F>n de az<61>car
|
||||
STR_QUANTITY_BUBBLES :{COMMA} burbuja
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonelada de caramelo
|
||||
STR_QUANTITY_BATTERIES :{COMMA} pila
|
||||
STR_QUANTITY_CANDYFLOSS :{COMMA} tonelada{P "" s} de algod<6F>n de az<61>car
|
||||
STR_QUANTITY_BUBBLES :{COMMA} burbuja{P "" s}
|
||||
STR_QUANTITY_TOFFEE :{COMMA} tonelada{P "" s} de caramelo{P "" s}
|
||||
STR_QUANTITY_BATTERIES :{COMMA} pila{P "" s}
|
||||
STR_QUANTITY_PLASTIC :{VOLUME} de pl<70>stico
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} refresco
|
||||
STR_QUANTITY_FIZZY_DRINKS :{COMMA} refresco{P "" s}
|
||||
STR_ABBREV_NOTHING :
|
||||
STR_ABBREV_PASSENGERS :{TINYFONT}PS
|
||||
STR_ABBREV_COAL :{TINYFONT}CL
|
||||
|
20
macros.h
20
macros.h
@@ -57,7 +57,7 @@ static inline int64 BIGMULS(int32 a, int32 b) {
|
||||
#define IS_INSIDE_1D(x, base, size) ( (uint)((x) - (base)) < ((uint)(size)) )
|
||||
|
||||
|
||||
#define HASBIT(x,y) ((x) & (1 << (y)))
|
||||
#define HASBIT(x,y) (((x) & (1 << (y))) != 0)
|
||||
#define SETBIT(x,y) ((x) |= (1 << (y)))
|
||||
#define CLRBIT(x,y) ((x) &= ~(1 << (y)))
|
||||
#define TOGGLEBIT(x,y) ((x) ^= (1 << (y)))
|
||||
@@ -142,14 +142,20 @@ static inline void swap_int32(int32 *a, int32 *b) { int32 t = *a; *a = *b; *b =
|
||||
static inline void swap_tile(TileIndex *a, TileIndex *b) { TileIndex t = *a; *a = *b; *b = t; }
|
||||
|
||||
|
||||
static inline uint16 ReadLE16Aligned(const void* x)
|
||||
{
|
||||
return FROM_LE16(*(const uint16*)x);
|
||||
}
|
||||
|
||||
#if defined(TTD_LITTLE_ENDIAN)
|
||||
# define READ_LE_UINT16(b) (*(const uint16*)(b))
|
||||
#elif defined(TTD_BIG_ENDIAN)
|
||||
static inline uint16 READ_LE_UINT16(const void *b) {
|
||||
return ((const byte*)b)[0] + (((const byte*)b)[1] << 8);
|
||||
}
|
||||
static inline uint16 ReadLE16Unaligned(const void* x)
|
||||
{
|
||||
#ifdef OTTD_ALIGNMENT
|
||||
return ((const byte*)x)[0] | ((const byte*)x)[1] << 8;
|
||||
#else
|
||||
return FROM_LE16(*(const uint16*)x);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ROtate x Left/Right by n (must be >= 0)
|
||||
|
@@ -1237,8 +1237,8 @@ static const Widget _scen_edit_land_gen_widgets[] = {
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 181, 14, 101, STR_NULL, STR_NULL},
|
||||
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 2, 23, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 24, 45, 14, 35, SPR_IMG_TERRAFORM_DOWN, STR_018F_RAISE_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 46, 67, 14, 35, SPR_IMG_TERRAFORM_UP, STR_018E_LOWER_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 24, 45, 14, 35, SPR_IMG_TERRAFORM_DOWN, STR_018E_LOWER_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 46, 67, 14, 35, SPR_IMG_TERRAFORM_UP, STR_018F_RAISE_A_CORNER_OF_LAND},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 68, 89, 14, 35, SPR_IMG_LEVEL_LAND, STR_LEVEL_LAND_TOOLTIP},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 90, 111, 14, 35, SPR_IMG_BUILD_CANAL, STR_CREATE_LAKE},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 112, 134, 14, 35, SPR_IMG_ROCKS, STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE},
|
||||
|
@@ -87,25 +87,13 @@ $(MAKE_CONFIG):
|
||||
|
||||
$(call CONFIG_LINE,\# Universal binary setup)
|
||||
$(call CONFIG_LINE,\# use these settings for building universal binaries. Most systems should work with the default settings)
|
||||
$(call CONFIG_LINE,SDL_PPC_CONFIG:=$(SDL_PPC_CONFIG))
|
||||
$(call CONFIG_LINE,SDL_x86_CONFIG:=$(SDL_x86_CONFIG))
|
||||
$(call CONFIG_LINE,CFLAGS_UNIVERSAL:=$(CFLAGS_UNIVERSAL))
|
||||
$(call CONFIG_LINE,LDFLAGS_UNIVERSAL:=$(LDFLAGS_UNIVERSAL))
|
||||
|
||||
$(call CONFIG_LINE,\# if you got a fat libpng you should not need to change this. It is recommended to get a fat libpng lib)
|
||||
$(call CONFIG_LINE,LIBPNG_PPC_CONFIG:=$(LIBPNG_PPC_CONFIG))
|
||||
$(call CONFIG_LINE,LIBPNG_x86_CONFIG:=$(LIBPNG_x86_CONFIG))
|
||||
|
||||
$(call CONFIG_LINE,\# autodetected SDL lib path, but it is not detected in a reliable way, so verify it. It needs to be the x86 lib)
|
||||
$(call CONFIG_LINE,x86_SDL_LIB:=$(x86_SDL_LIB))
|
||||
|
||||
$(call CONFIG_LINE,\# default values should be good enough for the rest of the universal binary flags, but check them anyway)
|
||||
$(call CONFIG_LINE,SKIP_LIB_TEST:=$(SKIP_LIB_TEST))
|
||||
$(call CONFIG_LINE,PPC_CC:=$(PPC_CC))
|
||||
$(call CONFIG_LINE,CFLAGS_PPC:=$(CFLAGS_PPC))
|
||||
$(call CONFIG_LINE,LDFLAGS_PPC:=$(LDFLAGS_PPC))
|
||||
|
||||
$(call CONFIG_LINE,x86_CC:=$(x86_CC))
|
||||
$(call CONFIG_LINE,CFLAGS_x86:=$(CFLAGS_x86))
|
||||
$(call CONFIG_LINE,LDFLAGS_x86:=$(LDFLAGS_x86))
|
||||
$(call CONFIG_LINE,CFLAGS_JAGUAR:=$(CFLAGS_JAGUAR))
|
||||
$(call CONFIG_LINE,LDFLAGS_JAGUAR:=$(LDFLAGS_JAGUAR))
|
||||
$(call CONFIG_LINE,)
|
||||
$(call CONFIG_LINE,G5_FLAGS:=$(G5_FLAGS))
|
||||
$(call CONFIG_LINE,)
|
||||
|
||||
$(call CONFIG_LINE,\# For cross-compiling)
|
||||
|
15
misc_gui.c
15
misc_gui.c
@@ -1325,7 +1325,7 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
DeleteWindow(w);
|
||||
} else {
|
||||
// SLD_SAVE_GAME, SLD_SAVE_SCENARIO copy clicked name to editbox
|
||||
ttd_strlcpy(WP(w, querystr_d).text.buf, file->name, WP(w, querystr_d).text.maxlength);
|
||||
ttd_strlcpy(WP(w, querystr_d).text.buf, file->title, WP(w, querystr_d).text.maxlength);
|
||||
UpdateTextBufferSize(&WP(w, querystr_d).text);
|
||||
InvalidateWidget(w, 10);
|
||||
}
|
||||
@@ -1359,16 +1359,17 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
if (HASBIT(w->click_state, 11)) { /* Delete button clicked */
|
||||
if (!FiosDelete(WP(w,querystr_d).text.buf)) {
|
||||
ShowErrorMessage(INVALID_STRING_ID, STR_4008_UNABLE_TO_DELETE_FILE, 0, 0);
|
||||
} else {
|
||||
BuildFileList();
|
||||
/* Reset file name to current date on successfull delete */
|
||||
if (_saveload_mode == SLD_SAVE_GAME) GenerateFileName();
|
||||
}
|
||||
|
||||
UpdateTextBufferSize(&WP(w, querystr_d).text);
|
||||
SetWindowDirty(w);
|
||||
BuildFileList();
|
||||
if (_saveload_mode == SLD_SAVE_GAME) {
|
||||
GenerateFileName(); /* Reset file name to current date */
|
||||
UpdateTextBufferSize(&WP(w, querystr_d).text);
|
||||
}
|
||||
} else if (HASBIT(w->click_state, 12)) { /* Save button clicked */
|
||||
_switch_mode = SM_SAVE;
|
||||
FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).text.buf);
|
||||
FiosMakeSavegameName(_file_to_saveload.name, WP(w,querystr_d).text.buf, sizeof(_file_to_saveload.name));
|
||||
|
||||
/* In the editor set up the vehicle engines correctly (date might have changed) */
|
||||
if (_game_mode == GM_EDITOR) StartupEngines();
|
||||
|
@@ -15,7 +15,7 @@
|
||||
extern const char _openttd_revision[];
|
||||
#elif defined(WITH_REV_HACK)
|
||||
#define WITH_REV
|
||||
const char _openttd_revision[] = WITH_REV_HACK;
|
||||
const char _openttd_revision[] = "0.4.7";
|
||||
#else
|
||||
const char _openttd_revision[] = NOREV_STRING;
|
||||
#endif
|
||||
|
@@ -3,7 +3,7 @@
|
||||
#ifndef NETWORK_H
|
||||
#define NETWORK_H
|
||||
|
||||
#define NOREV_STRING "norev000"
|
||||
#define NOREV_STRING "0.4.7-norev000"
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
|
@@ -11,13 +11,10 @@
|
||||
|
||||
#ifdef ENABLE_NETWORK
|
||||
|
||||
#ifdef __APPLE__
|
||||
#include <AvailabilityMacros.h>
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_2)
|
||||
#if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED == MAC_OS_X_VERSION_10_2)
|
||||
// OSX 10.2 don't have socklen_t defined, so we will define it here
|
||||
typedef int socklen_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Windows stuff
|
||||
#if defined(WIN32) || defined(WIN64)
|
||||
|
@@ -1225,8 +1225,9 @@ static Window *PopupClientList(Window *w, int client_no, int x, int y)
|
||||
h = ClientListPopupHeigth();
|
||||
|
||||
// Allocate the popup
|
||||
w = AllocateWindow(x, y, 100, h + 1, ClientListPopupWndProc, WC_TOOLBAR_MENU, _client_list_popup_widgets);
|
||||
w = AllocateWindow(x, y, 150, h + 1, ClientListPopupWndProc, WC_TOOLBAR_MENU, _client_list_popup_widgets);
|
||||
w->widget[0].bottom = w->widget[0].top + h;
|
||||
w->widget[0].right = w->widget[0].left + 150;
|
||||
|
||||
w->flags4 &= ~WF_WHITE_BORDER_MASK;
|
||||
WP(w,menu_d).item_count = 0;
|
||||
@@ -1257,7 +1258,7 @@ static void ClientListPopupWndProc(Window *w, WindowEvent *e)
|
||||
if (_clientlist_proc[i] == NULL) continue;
|
||||
|
||||
if (sel-- == 0) { // Selected item, highlight it
|
||||
GfxFillRect(1, y, 98, y + CLNWND_ROWSIZE - 1, 0);
|
||||
GfxFillRect(1, y, 150 - 2, y + CLNWND_ROWSIZE - 1, 0);
|
||||
colour = 0xC;
|
||||
} else colour = 0x10;
|
||||
|
||||
@@ -1328,9 +1329,9 @@ static void ClientListWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
// Filter out spectators
|
||||
if (ci->client_playas > 0 && ci->client_playas <= MAX_PLAYERS)
|
||||
DrawPlayerIcon(ci->client_playas - 1, 44, y + 1);
|
||||
DrawPlayerIcon(ci->client_playas - 1, 64, y + 1);
|
||||
|
||||
DoDrawString(ci->client_name, 61, y, colour);
|
||||
DoDrawString(ci->client_name, 81, y, colour);
|
||||
|
||||
y += CLNWND_ROWSIZE;
|
||||
}
|
||||
|
@@ -961,7 +961,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_ACK)
|
||||
|
||||
if (_network_pause_on_join) {
|
||||
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
|
||||
NetworkServer_HandleChat(NETWORK_ACTION_CHAT, DESTTYPE_BROADCAST, 0, "Game unpaused", NETWORK_SERVER_INDEX);
|
||||
NetworkServer_HandleChat(NETWORK_ACTION_CHAT, DESTTYPE_BROADCAST, 0, "Game unpaused (client connected)", NETWORK_SERVER_INDEX);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -7,6 +7,7 @@
|
||||
#include "table/sprites.h"
|
||||
#include "table/strings.h"
|
||||
#include "window.h"
|
||||
#include "gui.h"
|
||||
#include "viewport.h"
|
||||
#include "gfx.h"
|
||||
#include "news.h"
|
||||
@@ -595,6 +596,7 @@ static void MessageHistoryWndProc(Window *w, WindowEvent *e)
|
||||
int y = 19;
|
||||
byte p, show;
|
||||
|
||||
SetVScrollCount(w, _total_news);
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
if (_total_news == 0) break;
|
||||
|
70
npf.c
70
npf.c
@@ -501,7 +501,7 @@ static void NPFFollowTrack(AyStar* aystar, OpenListNode* current)
|
||||
TileIndex src_tile = current->path.node.tile;
|
||||
DiagDirection src_exitdir = TrackdirToExitdir(src_trackdir);
|
||||
FindLengthOfTunnelResult flotr;
|
||||
TileIndex dst_tile;
|
||||
TileIndex dst_tile = INVALID_TILE;
|
||||
int i;
|
||||
TrackdirBits trackdirbits, ts;
|
||||
TransportType type = aystar->user_data[NPF_TYPE];
|
||||
@@ -517,40 +517,48 @@ static void NPFFollowTrack(AyStar* aystar, OpenListNode* current)
|
||||
* so we should skip it's body */
|
||||
flotr = FindLengthOfTunnel(src_tile, src_exitdir);
|
||||
dst_tile = flotr.tile;
|
||||
} else {
|
||||
if (type != TRANSPORT_WATER && (IsRoadStationTile(src_tile) || IsTileDepotType(src_tile, type))){
|
||||
/* This is a road station or a train or road depot. We can enter and exit
|
||||
* those from one side only. Trackdirs don't support that (yet), so we'll
|
||||
* do this here. */
|
||||
} else if (type != TRANSPORT_WATER && (IsRoadStationTile(src_tile) || IsTileDepotType(src_tile, type))) {
|
||||
/* This is a road station or a train or road depot. We can enter and exit
|
||||
* those from one side only. Trackdirs don't support that (yet), so we'll
|
||||
* do this here. */
|
||||
|
||||
DiagDirection exitdir;
|
||||
/* Find out the exit direction first */
|
||||
if (IsRoadStationTile(src_tile))
|
||||
exitdir = GetRoadStationDir(src_tile);
|
||||
else /* Train or road depot. Direction is stored the same for both, in map5 */
|
||||
exitdir = GetDepotDirection(src_tile, type);
|
||||
|
||||
/* Let's see if were headed the right way into the depot, and reverse
|
||||
* otherwise (only for trains, since only with trains you can
|
||||
* (sometimes) reach tiles after reversing that you couldn't reach
|
||||
* without reversing. */
|
||||
if (src_trackdir == DiagdirToDiagTrackdir(ReverseDiagdir(exitdir)) && type == TRANSPORT_RAIL)
|
||||
/* We are headed inwards. We can only reverse here, so we'll not
|
||||
* consider this direction, but jump ahead to the reverse direction.
|
||||
* It would be nicer to return one neighbour here (the reverse
|
||||
* trackdir of the one we are considering now) and then considering
|
||||
* that one to return the tracks outside of the depot. But, because
|
||||
* the code layout is cleaner this way, we will just pretend we are
|
||||
* reversed already */
|
||||
src_trackdir = ReverseTrackdir(src_trackdir);
|
||||
DiagDirection exitdir;
|
||||
/* Find out the exit direction first */
|
||||
if (IsRoadStationTile(src_tile)) {
|
||||
exitdir = GetRoadStationDir(src_tile);
|
||||
} else { /* Train or road depot. Direction is stored the same for both, in map5 */
|
||||
exitdir = GetDepotDirection(src_tile, type);
|
||||
}
|
||||
|
||||
/* Let's see if were headed the right way into the depot */
|
||||
if (src_trackdir == DiagdirToDiagTrackdir(ReverseDiagdir(exitdir))) {
|
||||
/* We are headed inwards. We cannot go through the back of the depot.
|
||||
* For rail, we can now reverse. Reversing for road vehicles is never
|
||||
* useful, since you cannot take paths you couldn't take before
|
||||
* reversing (as with rail). */
|
||||
if (type == TRANSPORT_RAIL) {
|
||||
/* We can only reverse here, so we'll not consider this direction, but
|
||||
* jump ahead to the reverse direction. It would be nicer to return
|
||||
* one neighbour here (the reverse trackdir of the one we are
|
||||
* considering now) and then considering that one to return the tracks
|
||||
* outside of the depot. But, because the code layout is cleaner this
|
||||
* way, we will just pretend we are reversed already */
|
||||
src_trackdir = ReverseTrackdir(src_trackdir);
|
||||
dst_tile = AddTileIndexDiffCWrap(src_tile, TileIndexDiffCByDir(exitdir));
|
||||
} else {
|
||||
dst_tile = INVALID_TILE; /* Road vehicle heading inwards: dead end */
|
||||
}
|
||||
} else {
|
||||
dst_tile = AddTileIndexDiffCWrap(src_tile, TileIndexDiffCByDir(exitdir));
|
||||
}
|
||||
} else {
|
||||
/* This a normal tile, a bridge, a tunnel exit, etc. */
|
||||
dst_tile = AddTileIndexDiffCWrap(src_tile, TileIndexDiffCByDir(TrackdirToExitdir(src_trackdir)));
|
||||
if (dst_tile == INVALID_TILE) {
|
||||
/* We reached the border of the map */
|
||||
/* TODO Nicer control flow for this */
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (dst_tile == INVALID_TILE) {
|
||||
/* We reached the border of the map */
|
||||
/* TODO Nicer control flow for this */
|
||||
return;
|
||||
}
|
||||
|
||||
/* I can't enter a tunnel entry/exit tile from a tile above the tunnel. Note
|
||||
|
@@ -42,7 +42,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# 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 /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
|
||||
# ADD BASE RSC /l 0x809 /d "NDEBUG"
|
||||
# ADD RSC /l 0x809 /d "NDEBUG"
|
||||
@@ -68,7 +68,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# 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 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
|
||||
# ADD BASE RSC /l 0x809 /d "_DEBUG"
|
||||
# ADD RSC /l 0x809 /d "_DEBUG"
|
||||
|
@@ -23,15 +23,15 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
GlobalOptimizations="TRUE"
|
||||
InlineFunctionExpansion="1"
|
||||
InlineFunctionExpansion="2"
|
||||
EnableIntrinsicFunctions="TRUE"
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="TRUE"
|
||||
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"
|
||||
ExceptionHandling="FALSE"
|
||||
RuntimeLibrary="4"
|
||||
RuntimeLibrary="0"
|
||||
StructMemberAlignment="3"
|
||||
BufferSecurityCheck="FALSE"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@@ -58,9 +58,8 @@
|
||||
OutputFile=".\Release/openttd.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile=".\Release/openttd.pdb"
|
||||
GenerateMapFile="TRUE"
|
||||
MapFileName=".\Release/openttd.map"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
OptimizeForWindows98="1"
|
||||
@@ -101,9 +100,9 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
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"
|
||||
RuntimeLibrary="5"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderThrough="stdafx.h"
|
||||
PrecompiledHeaderFile=".\Debug/openttd.pch"
|
||||
|
@@ -3,12 +3,18 @@ openttd for Debian
|
||||
|
||||
To properly play this game, original data files are needed.
|
||||
You should copy the data files from the original TTD into the data directory
|
||||
(/usr/share/games/openttd/data). You should copy all .grf files there.
|
||||
(/usr/share/games/openttd/data). You should copy these files:
|
||||
* trg1r.grf
|
||||
* trgcr.grf
|
||||
* trghr.grf
|
||||
* trgir.grf
|
||||
* trgtr.grf
|
||||
* sample.cat
|
||||
|
||||
-Music
|
||||
For in game music (optional), you should copy all files in the data/gm
|
||||
folder of your ttd installation to /usr/share/games/openttd/gm. You
|
||||
should also install timdity and a soundfont (freepats is packaged in
|
||||
For in game music (optional), you should copy all files in the gm/
|
||||
subdir of your ttd installation to /usr/share/games/openttd/gm. You
|
||||
should also install timidity and a soundfont (freepats is packaged in
|
||||
debian and works out of the box).
|
||||
|
||||
Don't forget to use -m extmidi if you want music, and if you have
|
||||
|
@@ -1,8 +1,46 @@
|
||||
openttd (0.4.7-1) unstable; urgency=low
|
||||
|
||||
* Remove old terminal messages and make sure that debconf is always called.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Thu, 9 Mar 2006 00:04:33 +0100
|
||||
|
||||
openttd (0.4.5-1) unstable; urgency=low
|
||||
|
||||
* New upstream release
|
||||
* Bump Standards-Version to 3.6.2
|
||||
* s/timdity/timidity/ in README.Debian.
|
||||
* Use debconf for prompting instead of terminal.
|
||||
* Fix makefile to create icon dir if necessary.
|
||||
* Fix syntax error in manpage.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Wed, 1 Feb 2006 01:56:39 +0100
|
||||
|
||||
openttd (0.4.0.1-5) unstable; urgency=low
|
||||
|
||||
* Fixed capitalization of menu item.
|
||||
* Install xpm icon to /usr/share/pixmaps and don't install png icon, since
|
||||
it is not used.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Thu, 22 Sep 2005 10:35:09 +0200
|
||||
|
||||
openttd (0.4.0.1-4) unstable; urgency=low
|
||||
|
||||
* Changelog was distributed twice.
|
||||
* Put openttd in contrib.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 19 Sep 2005 23:49:18 +0200
|
||||
|
||||
openttd (0.4.0.1-3) unstable; urgency=low
|
||||
|
||||
* Clarified installing instructions in README.Debian
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Thu, 16 Jun 2005 03:51:13 +0200
|
||||
|
||||
openttd (0.4.0.1-2) unstable; urgency=low
|
||||
|
||||
* Added Suggests: timidity, freepats
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 27 May 2005 02:19:24 +0200
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Thu, 16 Jun 2005 03:34:03 +0200
|
||||
|
||||
openttd (0.4.0.1-1) unstable; urgency=low
|
||||
|
||||
|
21
os/debian/config
Executable file
21
os/debian/config
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Source debconf library.
|
||||
. /usr/share/debconf/confmodule
|
||||
|
||||
FILES="trg1r.grf trgcr.grf trghr.grf trgir.grf trgtr.grf sample.cat"
|
||||
DATADIR=/usr/share/games/openttd/data
|
||||
|
||||
MISSING="No";
|
||||
for FILE in $FILES; do
|
||||
# Check if all the files needed are here.
|
||||
if [ ! -e $DATADIR/$FILE ]; then
|
||||
MISSING="Yes";
|
||||
break;
|
||||
fi;
|
||||
done;
|
||||
|
||||
if [ $MISSING = "Yes" ]; then
|
||||
db_input high openttd/datafiles || true
|
||||
db_go
|
||||
fi;
|
@@ -1,16 +1,19 @@
|
||||
Source: openttd
|
||||
Section: games
|
||||
Section: contrib/games
|
||||
Priority: optional
|
||||
Maintainer: Matthijs Kooijman <m.kooijman@student.utwente.nl>
|
||||
Build-Depends: debhelper (>= 4.0.0), libsdl-dev, zlib1g-dev, libpng-dev
|
||||
Standards-Version: 3.6.0
|
||||
Standards-Version: 3.6.2
|
||||
|
||||
Package: openttd
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}
|
||||
Depends: ${shlibs:Depends}, debconf
|
||||
Suggests: timidity, freepats
|
||||
Description: open source clone of the Microprose game "Transport Tycoon Deluxe"
|
||||
An enhanced open source clone of the Microprose game "Transport Tycoon Deluxe".
|
||||
Description: reimplementation of Transport Tycoon Deluxe with enhancements
|
||||
A reimplementation of the Microprose game "Transport Tycoon Deluxe" with lots
|
||||
of new features and enhancements.
|
||||
You require the data files of the original Transport Tycoon Deluxe
|
||||
for Windows to play the game. You have to MANUALLY copy them to the
|
||||
game data directory! (see README.Debian for details)
|
||||
.
|
||||
Homepage: http://www.openttd.org/
|
||||
|
@@ -5,21 +5,21 @@ It was downloaded from http://sourceforge.net/projects/openttd
|
||||
|
||||
Upstream Author: Ludvig Strigeus (ludde) and many others
|
||||
|
||||
Copyright:
|
||||
License:
|
||||
|
||||
This package is free software; you can redistribute it and/or modify
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 dated June, 1991.
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This package is distributed in the hope that it will be useful,
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this package; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL'.
|
||||
|
@@ -1,4 +1,3 @@
|
||||
changelog.txt
|
||||
readme.txt
|
||||
docs/Manual.txt
|
||||
docs/multiplayer.txt
|
||||
|
@@ -1,2 +1,2 @@
|
||||
?package(openttd):needs="X11" section="Games/Simulation" title="Openttd"\
|
||||
command="/usr/games/openttd" icon="/usr/share/games/openttd/openttd.32.xpm"
|
||||
?package(openttd):needs="X11" section="Games/Simulation" title="OpenTTD"\
|
||||
command="/usr/games/openttd" icon="/usr/share/pixmaps/openttd.32.xpm"
|
||||
|
0
os/debian/patches/00list
Normal file
0
os/debian/patches/00list
Normal file
@@ -5,6 +5,7 @@
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postinst> `configure' <most-recently-configured-version>
|
||||
# * <old-postinst> `abort-upgrade' <new version>
|
||||
@@ -17,12 +18,10 @@ set -e
|
||||
# the debian-policy package
|
||||
#
|
||||
|
||||
. /usr/share/debconf/confmodule
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
cat <<EOF
|
||||
Before running the game, you should copy the data files from the
|
||||
original TTD. See README.Debian for more details.
|
||||
EOF
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
@@ -20,10 +20,6 @@ set -e
|
||||
|
||||
case "$1" in
|
||||
purge|remove)
|
||||
cat <<EOF
|
||||
Don't forget to remove any existing data files from
|
||||
/usr/share/games/openttd!
|
||||
EOF
|
||||
;;
|
||||
|
||||
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
|
@@ -6,20 +6,9 @@
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
include /usr/share/dpatch/dpatch.make
|
||||
|
||||
#not supported by openttd makefile
|
||||
#CFLAGS = -Wall -g
|
||||
#
|
||||
#ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
||||
# CFLAGS += -O0
|
||||
#else
|
||||
# CFLAGS += -O2
|
||||
#endif
|
||||
#ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
# INSTALL_PROGRAM += -s
|
||||
#endif
|
||||
|
||||
configure: configure-stamp
|
||||
configure: patch configure-stamp
|
||||
configure-stamp:
|
||||
dh_testdir
|
||||
# Add here commands to configure the package.
|
||||
@@ -28,20 +17,19 @@ configure-stamp:
|
||||
|
||||
|
||||
build: build-stamp
|
||||
|
||||
build-stamp: configure-stamp
|
||||
build-stamp: configure-stamp
|
||||
dh_testdir
|
||||
|
||||
# Add here commands to compile the package.
|
||||
|
||||
rm Makefile.config || true
|
||||
$(MAKE) PREFIX=/usr MIDI=/usr/bin/timidity INSTALL=1 BINARY_DIR=games DATA_DIR=share/games/openttd PERSONAL_DIR=.openttd USE_HOMEDIR=1
|
||||
$(MAKE) PREFIX=/usr MIDI=/usr/bin/timidity INSTALL=1 BINARY_DIR=games DATA_DIR=share/games/openttd ICON_DIR=share/pixmaps PERSONAL_DIR=.openttd USE_HOMEDIR=1
|
||||
|
||||
#/usr/bin/docbook-to-man debian/openttd.sgml > openttd.1
|
||||
|
||||
touch build-stamp
|
||||
|
||||
clean:
|
||||
clean: unpatch
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-stamp configure-stamp
|
||||
@@ -74,7 +62,7 @@ binary-arch: build install
|
||||
dh_installexamples
|
||||
# dh_install
|
||||
dh_installmenu
|
||||
# dh_installdebconf
|
||||
dh_installdebconf
|
||||
# dh_installlogrotate
|
||||
# dh_installemacsen
|
||||
# dh_installpam
|
||||
|
6
os/debian/templates
Normal file
6
os/debian/templates
Normal file
@@ -0,0 +1,6 @@
|
||||
Template: openttd/datafiles
|
||||
Type: note
|
||||
Description: You need to install data files.
|
||||
OpenTTD needs the datafiles from the original TTD game to run. You should
|
||||
install these datafiles before you can play the game. See README.Debian for
|
||||
more details on which files need to be copied where.
|
@@ -5,7 +5,7 @@
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
%define name openttd
|
||||
%define version 0.3.6
|
||||
%define version 0.4.7
|
||||
%define release 1mdk
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
29
os/macosx/G5_detector.c
Normal file
29
os/macosx/G5_detector.c
Normal file
@@ -0,0 +1,29 @@
|
||||
/* $Id$ */
|
||||
|
||||
#include <mach/mach.h>
|
||||
#include <mach/mach_host.h>
|
||||
#include <mach/host_info.h>
|
||||
#include <mach/machine.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#ifndef CPU_SUBTYPE_POWERPC_970
|
||||
#define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
|
||||
#endif
|
||||
|
||||
// this function is a lightly modified version of some code from Apple's developer homepage to detect G5 CPUs at runtime
|
||||
main()
|
||||
{
|
||||
host_basic_info_data_t hostInfo;
|
||||
mach_msg_type_number_t infoCount;
|
||||
boolean_t is_G5;
|
||||
|
||||
infoCount = HOST_BASIC_INFO_COUNT;
|
||||
host_info(mach_host_self(), HOST_BASIC_INFO,
|
||||
(host_info_t)&hostInfo, &infoCount);
|
||||
|
||||
is_G5 = ((hostInfo.cpu_type == CPU_TYPE_POWERPC) &&
|
||||
(hostInfo.cpu_subtype == CPU_SUBTYPE_POWERPC_970));
|
||||
if (is_G5)
|
||||
printf("1");
|
||||
}
|
@@ -2,36 +2,47 @@
|
||||
# This makefile is not a standalone makefile, but is called from the general one
|
||||
# it contains targets specific to MacOS X
|
||||
|
||||
ifdef FAT_BINARY
|
||||
FAT_BINARY:=build_universal_binary
|
||||
ifdef TRIPLE_BINARY
|
||||
# this is to add G5_FLAGS to ppc970 builds only. If the ability to add flags to a single arch only shows up in the future
|
||||
# we can get rid of this. Xcode supports arch dependant flags, but we can't do it in the makefile (yet?)
|
||||
%.o: %.c $(MAKE_CONFIG)
|
||||
@echo '===> Compiling $<'
|
||||
$(Q)$(CC) $(CFLAGS) $(CDEFS) -arch ppc -c -arch i386 -o $@.uni $<
|
||||
$(Q)$(CC) $(CFLAGS) $(CDEFS) $(G5_FLAGS) -arch ppc970 -c -o $@.ppc970 $<
|
||||
$(Q)lipo -create -output $@ $@.uni $@.ppc970
|
||||
$(Q)rm $@.uni $@.ppc970
|
||||
|
||||
%.o: %.cpp $(MAKE_CONFIG)
|
||||
@echo '===> Compiling $<'
|
||||
$(Q)$(CXX) $(CFLAGS) $(CDEFS) -arch ppc -arch i386 -c -o $@.uni $<
|
||||
$(Q)$(CXX) $(CFLAGS) $(CDEFS) $(G5_FLAGS) -arch ppc970 -c -o $@.ppc970 $<
|
||||
$(Q)lipo -create -output $@ $@.uni $@.ppc970
|
||||
$(Q)rm $@.uni $@.ppc970
|
||||
|
||||
%.o: %.m $(MAKE_CONFIG)
|
||||
@echo '===> Compiling $<'
|
||||
$(Q)$(CC) $(CFLAGS) $(CDEFS) -arch ppc -arch i386 -c -o $@.uni $<
|
||||
$(Q)$(CC) $(CFLAGS) $(CDEFS) -arch ppc970 $(G5_FLAGS) -c -o $@.ppc970 $<
|
||||
$(Q)lipo -create -output $@ $@.uni $@.ppc970
|
||||
$(Q)rm $@.uni $@.ppc970
|
||||
endif
|
||||
|
||||
ifdef UNIVERSAL_x86_PART
|
||||
ifdef UNIVERSAL_PPC_PART
|
||||
# the bundle is build by the PPC compile when making universal binaries
|
||||
BUILD_OSX_BUNDLE:=
|
||||
else
|
||||
BUILD_OSX_BUNDLE:=build_OSX_bundle
|
||||
endif
|
||||
|
||||
# building an universal binary
|
||||
# since we can only compile for PPC or x86 at any one time, we compile one and then
|
||||
# we make clean and compile the other one. In the end we use lipo to join them together
|
||||
# when this is done, we can continue with the targets from the first run, which is build_OSX_bundle
|
||||
|
||||
$(FAT_BINARY): $(TTD)
|
||||
$(Q)mkdir -p temp_binary_dir
|
||||
$(Q)cp $(TTD) temp_binary_dir/$(TTD)_a
|
||||
$(Q)rm -rf $(TTD) $(OBJS) # delete all .o files so we can compile for a new endian
|
||||
$(Q)make UNIVERSAL_x86_PART:=1
|
||||
$(Q)cp $(TTD) temp_binary_dir/$(TTD)_b
|
||||
@echo '===> Joining the PPC and x86 binaries into one universal one'
|
||||
$(Q)lipo temp_binary_dir/$(TTD)_a temp_binary_dir/$(TTD)_b -create -output $(TTD)
|
||||
$(Q)rm -rf temp_binary_dir
|
||||
ifdef JAGUAR
|
||||
JAGUAR_POSTFIX := -jaguar
|
||||
endif
|
||||
|
||||
# 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
|
||||
|
||||
$(BUILD_OSX_BUNDLE): $(TTD) $(FAT_BINARY)
|
||||
$(BUILD_OSX_BUNDLE): $(TTD)
|
||||
@echo '===> Building application bundle'
|
||||
$(Q)rm -fr "$(OSXAPP)"
|
||||
$(Q)mkdir -p "$(OSXAPP)"/Contents/MacOS
|
||||
@@ -48,23 +59,23 @@ $(BUILD_OSX_BUNDLE): $(TTD) $(FAT_BINARY)
|
||||
|
||||
# make the release disk image. Should only be used with releases and is a good and fast way to make sure to remember all the needed files
|
||||
release: all
|
||||
$(Q)mkdir -p "OpenTTD $(RELEASE)"
|
||||
$(Q)mkdir -p "OpenTTD $(RELEASE)"/docs
|
||||
$(Q)mkdir -p "OpenTTD $(RELEASE)"/scenario
|
||||
$(Q)cp -R $(OSXAPP) "OpenTTD $(RELEASE)"/
|
||||
$(Q)cp docs/OSX_where_did_the_package_go.txt "OpenTTD $(RELEASE)"/Where\ did\ the\ package\ go.txt
|
||||
$(Q)cp readme.txt "OpenTTD $(RELEASE)"/docs/
|
||||
$(Q)cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/readme\ if\ crashed\ on\ OSX.txt
|
||||
$(Q)cp docs/console.txt "OpenTTD $(RELEASE)"/docs/
|
||||
$(Q)cp COPYING "OpenTTD $(RELEASE)"/docs/
|
||||
$(Q)cp changelog.txt "OpenTTD $(RELEASE)"/docs/
|
||||
$(Q)cp docs/README_if_game_crashed_on_OSX.txt "OpenTTD $(RELEASE)"/docs/
|
||||
$(Q)cp os/macosx/*.webloc "OpenTTD $(RELEASE)"
|
||||
$(Q)cp known-bugs.txt "OpenTTD $(RELEASE)"/known-bugs.txt
|
||||
$(Q)cp scenario/* "OpenTTD $(RELEASE)"/scenario/
|
||||
$(Q)/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(RELEASE)" openttd-"$(RELEASE)"-osx.dmg
|
||||
$(Q)rm -fr "OpenTTD $(RELEASE)"
|
||||
@echo '===> Building release disk image'
|
||||
$(Q)mkdir -p "OpenTTD $(REV)"
|
||||
$(Q)mkdir -p "OpenTTD $(REV)/docs"
|
||||
$(Q)mkdir -p "OpenTTD $(REV)/scenario"
|
||||
$(Q)cp -R $(OSXAPP) "OpenTTD $(REV)/"
|
||||
$(Q)cp docs/OSX_install_instructions.txt "OpenTTD $(REV)/How to install (please read).txt"
|
||||
$(Q)cp docs/OSX_why_multiple_applications.txt "OpenTTD $(REV)/why a special Jaguar download.txt"
|
||||
$(Q)cp readme.txt "OpenTTD $(REV)/docs/"
|
||||
$(Q)cp docs/console.txt "OpenTTD $(REV)/docs/"
|
||||
$(Q)cp COPYING "OpenTTD $(REV)/docs/"
|
||||
$(Q)cp changelog.txt "OpenTTD $(REV)/docs/"
|
||||
$(Q)cp os/macosx/*.webloc "OpenTTD $(REV)"
|
||||
$(Q)cp known-bugs.txt "OpenTTD $(REV)/known-bugs.txt"
|
||||
$(Q)cp scenario/* "OpenTTD $(REV)/scenario/"
|
||||
$(Q)/usr/bin/hdiutil create -ov -format UDZO -srcfolder "OpenTTD $(REV)" openttd-"$(REV)"-osx"$(JAGUAR_POSTFIX)".dmg
|
||||
$(Q)rm -fr "OpenTTD $(REV)"
|
||||
|
||||
$(OSX): $(TTD) $(BUILD_OSX_BUNDLE)
|
||||
|
||||
.PHONY: release $(BUILD_OSX_BUNDLE) $(FAT_BINARY)
|
||||
.PHONY: release $(BUILD_OSX_BUNDLE) $(UNIVERSAL_BINARY)
|
||||
|
@@ -11,12 +11,29 @@ endif
|
||||
endif
|
||||
|
||||
ifdef RELEASE
|
||||
ifndef FAT_BINARY
|
||||
ifndef UNIVERSAL_BINARY
|
||||
$(warning Compiling a release build, that is not a universal binary)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef FAT_BINARY
|
||||
ifdef TRIPLE_BINARY
|
||||
ifdef DEBUG
|
||||
$(error no G5 optimisation is made in debug builds, so tripple binaries aren't possible. Use UNIVERSAL_BINARY instead if you really want a universal debug build)
|
||||
endif
|
||||
UNIVERSAL_BINARY:=1
|
||||
endif
|
||||
|
||||
ifndef UNIVERSAL_BINARY
|
||||
ifndef JAGUAR
|
||||
ifeq ($(shell uname), Darwin)
|
||||
# it's a hardware mac, not crosscompiling
|
||||
$(shell $(CC) os/macosx/G5_detector.c -o os/macosx/G5_detector)
|
||||
IS_G5:=$(shell os/macosx/G5_detector)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef UNIVERSAL_BINARY
|
||||
ifndef STATIC
|
||||
$(warning Compiling a universal binary, that is not static. Adding static flag)
|
||||
STATIC:=1
|
||||
@@ -30,81 +47,47 @@ endif
|
||||
endif
|
||||
|
||||
# setup flags if none are defined
|
||||
ifndef CFLAGS_PPC
|
||||
CFLAGS_PPC:= -isysroot /Developer/SDKs/MacOSX10.2.8.sdk
|
||||
ifndef CFLAGS_JAGUAR
|
||||
CFLAGS_JAGUAR:= -isysroot /Developer/SDKs/MacOSX10.2.8.sdk
|
||||
endif
|
||||
ifndef LDFLAGS_PPC
|
||||
LDFLAGS_PPC:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk
|
||||
ifndef LDFLAGS_JAGUAR
|
||||
LDFLAGS_JAGUAR:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.2.8.sdk
|
||||
endif
|
||||
ifndef PPC_CC
|
||||
PPC_CC:=powerpc-apple-darwin8-gcc-4.0.0
|
||||
|
||||
ifndef CFLAGS_UNIVERSAL
|
||||
CFLAGS_UNIVERSAL:= -isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
||||
endif
|
||||
ifndef CFLAGS_x86
|
||||
CFLAGS_x86:= -isysroot /Developer/SDKs/MacOSX10.4u.sdk
|
||||
endif
|
||||
ifndef LDFLAGS_x86
|
||||
LDFLAGS_x86:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk
|
||||
endif
|
||||
ifndef x86_CC
|
||||
x86_CC:=i686-apple-darwin8-gcc-4.0.0
|
||||
endif
|
||||
ifdef WITH_PNG
|
||||
ifndef LIBPNG_PPC_CONFIG
|
||||
LIBPNG_PPC_CONFIG:=$(LIBPNG-CONFIG)
|
||||
endif
|
||||
ifndef LIBPNG_x86_CONFIG
|
||||
LIBPNG_x86_CONFIG:=$(LIBPNG-CONFIG)
|
||||
endif
|
||||
endif
|
||||
ifdef WITH_SDL
|
||||
ifndef SDL_PPC_CONFIG
|
||||
SDL_PPC_CONFIG:=$(SDL-CONFIG)
|
||||
endif
|
||||
ifndef SDL_x86_CONFIG
|
||||
SDL_x86_CONFIG:=$(SDL-CONFIG)
|
||||
endif
|
||||
ifndef x86_SDL_LIB
|
||||
x86_SDL_LIB:=$(shell echo "`$(SDL_x86_CONFIG) --prefix`/lib/libSDL-1.2.0.dylib")
|
||||
endif
|
||||
ifndef LDFLAGS_UNIVERSAL
|
||||
LDFLAGS_UNIVERSAL:= -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk
|
||||
endif
|
||||
|
||||
ifdef JAGUAR
|
||||
LIBPNG-CONFIG:=$(LIBPNG_PPC_CONFIG)
|
||||
SDL-CONFIG:=$(SDL_PPC_CONFIG)
|
||||
CC_TARGET:=$(PPC_CC)
|
||||
CFLAGS:= $(CFLAGS_PPC) -arch ppc
|
||||
LDFLAGS:= $(LDFLAGS_PPC)
|
||||
CFLAGS:= $(CFLAGS_JAGUAR) -arch ppc
|
||||
LDFLAGS:= $(LDFLAGS_JAGUAR)
|
||||
endif
|
||||
|
||||
ifdef FAT_BINARY
|
||||
# set up config files
|
||||
ifndef SKIP_LIB_TEST
|
||||
ifdef WITH_PNG
|
||||
TEST:=$(shell lipo -info `$(LIBPNG_PPC_CONFIG) --prefix`/lib/libpng.a | xargs -n 1 | grep "ppc"))
|
||||
ifndef TEST
|
||||
$(error no PPC libpng found)
|
||||
endif
|
||||
TEST:=$(shell lipo -info `$(LIBPNG_x86_CONFIG) --prefix`/lib/libpng.a | xargs -n 1 | grep "i386"))
|
||||
ifndef TEST
|
||||
$(error no x86 libpng found)
|
||||
ifndef G5_FLAGS
|
||||
G5_FLAGS := -mtune=970 -mcpu=970 -mpowerpc-gpopt
|
||||
endif
|
||||
|
||||
ifdef UNIVERSAL_BINARY
|
||||
TARGET_CPU_FLAGS:= -arch ppc -arch i386
|
||||
LDFLAGS := $(LDFLAGS_UNIVERSAL) -arch ppc -arch i386
|
||||
CFLAGS += $(CFLAGS_UNIVERSAL)
|
||||
ifdef TRIPLE_BINARY
|
||||
LDFLAGS += -arch ppc970
|
||||
endif
|
||||
endif
|
||||
|
||||
# setting up flags to make a binary, that fits the system it builds on
|
||||
ifndef FAT_BINARY
|
||||
ifndef JAGUAR
|
||||
ifeq ($(shell uname), Darwin)
|
||||
# it's a hardware mac, not crosscompiling
|
||||
ifeq ($(shell uname -r), 6.8)
|
||||
# OSX 10.2.8 uses Darwin 6.8, so we better set JAGUAR so we avoid the stuff that was added in 10.3 or later
|
||||
JAGUAR:=1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef UNIVERSAL_x86_PART
|
||||
LIBPNG-CONFIG:=$(LIBPNG_x86_CONFIG)
|
||||
SDL-CONFIG:=$(SDL_x86_CONFIG)
|
||||
CC_TARGET:=$(x86_CC)
|
||||
# clear the cached list of PPC libs
|
||||
LIBS:=
|
||||
OBJS:=
|
||||
CFLAGS:= $(CFLAGS_x86) -arch i386
|
||||
LDFLAGS:= $(LDFLAGS_x86)
|
||||
else
|
||||
LIBPNG-CONFIG:=$(LIBPNG_PPC_CONFIG)
|
||||
SDL-CONFIG:=$(SDL_PPC_CONFIG)
|
||||
CC_TARGET:=$(PPC_CC)
|
||||
CFLAGS:= $(CFLAGS_PPC) -arch ppc
|
||||
LDFLAGS:= $(LDFLAGS_PPC)
|
||||
endif
|
||||
endif
|
||||
|
@@ -1,8 +1,8 @@
|
||||
; Define your application name
|
||||
!define APPNAME "OpenTTD"
|
||||
!define APPNAMEANDVERSION "OpenTTD 0.4.5.0"
|
||||
!define APPVERSION "0.4.5.0"
|
||||
!define INSTALLERVERSION 17 ;NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
!define APPNAMEANDVERSION "OpenTTD 0.4.7.0"
|
||||
!define APPVERSION "0.4.7.0"
|
||||
!define INSTALLERVERSION 19 ;NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
!define MUI_ICON "..\..\..\openttd.ico"
|
||||
!define MUI_UNICON "..\..\..\openttd.ico"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp"
|
||||
|
6
os2.c
6
os2.c
@@ -401,7 +401,7 @@ StringID FiosGetDescText(const char **path, uint32 *tot)
|
||||
return STR_4006_UNABLE_TO_READ_DRIVE;
|
||||
}
|
||||
|
||||
void FiosMakeSavegameName(char *buf, const char *name)
|
||||
void FiosMakeSavegameName(char *buf, const char *name, size_t size)
|
||||
{
|
||||
const char* extension;
|
||||
const char* period;
|
||||
@@ -415,14 +415,14 @@ void FiosMakeSavegameName(char *buf, const char *name)
|
||||
period = strrchr(name, '.');
|
||||
if (period != NULL && strcasecmp(period, extension) == 0) extension = "";
|
||||
|
||||
sprintf(buf, "%s\\%s%s", _fios_path, name, extension);
|
||||
snprintf(buf, size, "%s\\%s%s", _fios_path, name, extension);
|
||||
}
|
||||
|
||||
bool FiosDelete(const char *name)
|
||||
{
|
||||
char path[512];
|
||||
|
||||
snprintf(path, lengthof(path), "%s\\%s", _fios_path, name);
|
||||
FiosMakeSavegameName(path, name, sizeof(path));
|
||||
return unlink(path) == 0;
|
||||
}
|
||||
|
||||
|
@@ -46,7 +46,7 @@ BEGIN
|
||||
PUSHBUTTON "&Close",12,7,49,50,14
|
||||
PUSHBUTTON "&Submit report",14,81,49,68,14,WS_DISABLED
|
||||
PUSHBUTTON "&Emergency save",13,155,49,68,14
|
||||
PUSHBUTTON "",15,243,49,55,14,WS_DISABLED
|
||||
PUSHBUTTON "",15,243,49,55,14
|
||||
EDITTEXT 11,7,70,291,118,ES_MULTILINE | ES_READONLY | WS_VSCROLL |
|
||||
WS_HSCROLL | NOT WS_TABSTOP
|
||||
LTEXT "",10,36,7,262,34
|
||||
@@ -61,8 +61,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,4,5,0
|
||||
PRODUCTVERSION 0,4,5,0
|
||||
FILEVERSION 0,4,7,0
|
||||
PRODUCTVERSION 0,4,7,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@@ -80,7 +80,7 @@ BEGIN
|
||||
VALUE "Comments", "This program is licensed under the GNU General Public License.\0"
|
||||
VALUE "CompanyName", "OpenTTD Development Team\0"
|
||||
VALUE "FileDescription", "OpenTTD\0"
|
||||
VALUE "FileVersion", "0.4.5.0\0"
|
||||
VALUE "FileVersion", "0.4.7.0\0"
|
||||
VALUE "InternalName", "openttd\0"
|
||||
VALUE "LegalCopyright", "Copyright <20> OpenTTD Developers 2002-2006. All Rights Reserved.\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
|
@@ -388,8 +388,8 @@ void FollowTrack(TileIndex tile, uint16 flags, byte direction, TPFEnumProc *enum
|
||||
|
||||
tpf.var2 = HASBIT(flags, 15) ? 0x43 : 0xFF; /* 0x8000 */
|
||||
|
||||
tpf.disable_tile_hash = HASBIT(flags, 12) != 0; /* 0x1000 */
|
||||
tpf.hasbit_13 = HASBIT(flags, 13) != 0; /* 0x2000 */
|
||||
tpf.disable_tile_hash = HASBIT(flags, 12); /* 0x1000 */
|
||||
tpf.hasbit_13 = HASBIT(flags, 13); /* 0x2000 */
|
||||
|
||||
|
||||
tpf.tracktype = (byte)flags;
|
||||
|
@@ -629,7 +629,7 @@ byte GetPlayerRailtypes(PlayerID p)
|
||||
const EngineInfo *ei = &_engine_info[i];
|
||||
|
||||
if (e->type == VEH_Train && HASBIT(ei->climates, _opt.landscape) &&
|
||||
(HASBIT(e->player_avail, p) || e->intro_date <= _date) &&
|
||||
(HASBIT(e->player_avail, p) || _date >= (e->intro_date + 365)) &&
|
||||
!(RailVehInfo(i)->flags & RVI_WAGON)) {
|
||||
assert(e->railtype < RAILTYPE_END);
|
||||
SETBIT(rt, e->railtype);
|
||||
|
2
rail.h
2
rail.h
@@ -552,7 +552,7 @@ static inline SignalType GetSignalType(TileIndex tile, Track track)
|
||||
static inline bool HasSemaphores(TileIndex tile, Track track)
|
||||
{
|
||||
assert(IsValidTrack(track));
|
||||
return (_m[tile].m4 & SIG_SEMAPHORE_MASK);
|
||||
return (_m[tile].m4 & SIG_SEMAPHORE_MASK) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
27
rail_cmd.c
27
rail_cmd.c
@@ -128,7 +128,7 @@ static bool CheckTrackCombination(TileIndex tile, TrackBits to_build, uint flags
|
||||
}
|
||||
|
||||
|
||||
static const byte _valid_tileh_slopes[4][15] = {
|
||||
const TrackBits _valid_tileh_slopes[4][15] = {
|
||||
|
||||
// set of normal ones
|
||||
{
|
||||
@@ -395,6 +395,7 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
TileIndex tile;
|
||||
byte m5;
|
||||
int32 cost = _price.remove_rail;
|
||||
bool crossing = false;
|
||||
|
||||
if (!ValParamTrackOrientation(p2)) return CMD_ERROR;
|
||||
trackbit = TrackToTrackBits(track);
|
||||
@@ -451,10 +452,11 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
|
||||
_m[tile].m5 = m5;
|
||||
SetTileOwner(tile, _m[tile].m3);
|
||||
_m[tile].m2 = 0;
|
||||
break;
|
||||
|
||||
case MP_RAILWAY:
|
||||
case MP_RAILWAY: {
|
||||
TrackBits present;
|
||||
|
||||
if (!IsPlainRailTile(tile))
|
||||
return CMD_ERROR;
|
||||
|
||||
@@ -462,6 +464,10 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (!(GetTrackBits(tile) & trackbit))
|
||||
return CMD_ERROR;
|
||||
|
||||
present = GetTrackBits(tile);
|
||||
if ((present & trackbit) == 0) return CMD_ERROR;
|
||||
if (present == (TRACK_BIT_DIAG1 | TRACK_BIT_DIAG2)) crossing = true;
|
||||
|
||||
/* Charge extra to remove signals on the track, if they are there */
|
||||
if (HasSignalOnTrack(tile, track))
|
||||
cost += DoCommand(x, y, track, 0, flags, CMD_REMOVE_SIGNALS);
|
||||
@@ -479,13 +485,26 @@ int32 CmdRemoveSingleRail(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||
goto skip_mark_dirty;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
|
||||
/* mark_dirty */
|
||||
MarkTileDirtyByTile(tile);
|
||||
if (flags & DC_EXEC) {
|
||||
MarkTileDirtyByTile(tile);
|
||||
if (crossing) {
|
||||
/* crossing is set when only TRACK_BIT_X and TRACK_BIT_Y are set. As we
|
||||
* are removing one of these pieces, we'll need to update signals for
|
||||
* both directions explicitly, as after the track is removed it won't
|
||||
* 'connect' with the other piece. */
|
||||
SetSignalsOnBothDir(tile, TRACK_DIAG1);
|
||||
SetSignalsOnBothDir(tile, TRACK_DIAG2);
|
||||
} else {
|
||||
SetSignalsOnBothDir(tile, track);
|
||||
}
|
||||
}
|
||||
|
||||
skip_mark_dirty:;
|
||||
|
||||
|
@@ -291,8 +291,8 @@ static void BuildRailClick_Remove(Window *w)
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
|
||||
TOGGLEBIT(w->click_state, 16);
|
||||
_remove_button_clicked = HASBIT(w->click_state, 16) != 0;
|
||||
SetSelectionRed(HASBIT(w->click_state, 16) != 0);
|
||||
_remove_button_clicked = HASBIT(w->click_state, 16);
|
||||
SetSelectionRed(HASBIT(w->click_state, 16));
|
||||
|
||||
// handle station builder
|
||||
if (HASBIT(w->click_state, 16)) {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
OpenTTD README
|
||||
Last updated: 2006-01-31
|
||||
Release version: 0.4.5
|
||||
Last updated: 2006-03-26
|
||||
Release version: 0.4.7
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
@@ -1009,7 +1009,7 @@ static void TileLoop_Road(TileIndex tile)
|
||||
!(DistanceManhattan(t->xy, tile) >= 8 && grp == 0) &&
|
||||
(_m[tile].m5==5 || _m[tile].m5==10)) {
|
||||
if (GetTileSlope(tile, NULL) == 0 && EnsureNoVehicle(tile) && CHANCE16(1,20)) {
|
||||
_m[tile].m4 |= (GB(_m[tile].m4, 4, 3) <= 2 ? 7 : 6) << 4;
|
||||
SB(_m[tile].m4, 4, 3, (GB(_m[tile].m4, 4, 3) <= 1 ? 6 : 7));
|
||||
|
||||
SndPlayTileFx(SND_21_JACKHAMMER, tile);
|
||||
CreateEffectVehicleAbove(
|
||||
|
@@ -158,7 +158,7 @@ static void BuildRoadClick_Remove(Window *w)
|
||||
SetWindowDirty(w);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
TOGGLEBIT(w->click_state, 11);
|
||||
SetSelectionRed(HASBIT(w->click_state, 11) != 0);
|
||||
SetSelectionRed(HASBIT(w->click_state, 11));
|
||||
}
|
||||
|
||||
static void BuildRoadClick_Landscaping(Window *w)
|
||||
|
@@ -634,7 +634,8 @@ static void ProcessRoadVehOrder(Vehicle *v)
|
||||
st = GetStation(order->station);
|
||||
|
||||
{
|
||||
uint mindist = 0xFFFFFFFF;
|
||||
TileIndex dest;
|
||||
uint mindist;
|
||||
RoadStopType type;
|
||||
RoadStop *rs;
|
||||
|
||||
@@ -649,12 +650,17 @@ static void ProcessRoadVehOrder(Vehicle *v)
|
||||
return;
|
||||
}
|
||||
|
||||
for (rs = GetPrimaryRoadStop(st, type); rs != NULL; rs = rs->next) {
|
||||
if (DistanceManhattan(v->tile, rs->xy) < mindist) {
|
||||
v->dest_tile = rs->xy;
|
||||
dest = rs->xy;
|
||||
mindist = DistanceManhattan(v->tile, rs->xy);
|
||||
for (rs = rs->next; rs != NULL; rs = rs->next) {
|
||||
uint dist = DistanceManhattan(v->tile, rs->xy);
|
||||
|
||||
if (dist < mindist) {
|
||||
mindist = dist;
|
||||
dest = rs->xy;
|
||||
}
|
||||
}
|
||||
|
||||
v->dest_tile = dest;
|
||||
}
|
||||
} else if (order->type == OT_GOTO_DEPOT) {
|
||||
v->dest_tile = GetDepot(order->station)->xy;
|
||||
@@ -1006,17 +1012,15 @@ static int RoadFindPathToDest(Vehicle *v, TileIndex tile, int enterdir)
|
||||
/* Road depot */
|
||||
bitmask |= _road_veh_fp_ax_or[GB(_m[tile].m5, 0, 2)];
|
||||
}
|
||||
} else if (IsTileType(tile, MP_STATION)) {
|
||||
if (IsTileOwner(tile, OWNER_NONE) || IsTileOwner(tile, v->owner)) {
|
||||
} else if (IsTileType(tile, MP_STATION) && IsRoadStationTile(tile)) {
|
||||
if (IsTileOwner(tile, v->owner)) {
|
||||
/* Our station */
|
||||
const Station* st = GetStation(_m[tile].m2);
|
||||
byte val = _m[tile].m5;
|
||||
if (v->cargo_type != CT_PASSENGERS) {
|
||||
if (IS_BYTE_INSIDE(val, 0x43, 0x47) && (_patches.roadveh_queue || st->truck_stops->status&3))
|
||||
bitmask |= _road_veh_fp_ax_or[(val-0x43)&3];
|
||||
} else {
|
||||
if (IS_BYTE_INSIDE(val, 0x47, 0x4B) && (_patches.roadveh_queue || st->bus_stops->status&3))
|
||||
bitmask |= _road_veh_fp_ax_or[(val-0x47)&3];
|
||||
RoadStopType rstype = (v->cargo_type == CT_PASSENGERS) ? RS_BUS : RS_TRUCK;
|
||||
if (GetRoadStopType(tile) == rstype) {
|
||||
const RoadStop *rs = GetRoadStopByTile(tile, rstype);
|
||||
if (rs != NULL && (_patches.roadveh_queue || GB(rs->status, 0, 2) != 0)) {
|
||||
bitmask |= _road_veh_fp_ax_or[GetRoadStationDir(tile)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
13
saveload.c
13
saveload.c
@@ -1243,6 +1243,12 @@ extern bool AfterLoadGame(void);
|
||||
extern void BeforeSaveGame(void);
|
||||
extern bool LoadOldSaveGame(const char *file);
|
||||
|
||||
#if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
|
||||
extern const char *convert_to_fs_charset(const char *filename);
|
||||
#else
|
||||
#define convert_to_fs_charset(str) (str)
|
||||
#endif
|
||||
|
||||
/** Small helper function to close the to be loaded savegame an signal error */
|
||||
static inline SaveOrLoadResult AbortSaveLoad(void)
|
||||
{
|
||||
@@ -1347,7 +1353,6 @@ void WaitTillSaved(void)
|
||||
save_thread = NULL;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Main Save or Load function where the high-level saveload functions are
|
||||
* handled. It opens the savegame, selects format and checks versions
|
||||
@@ -1378,7 +1383,11 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode)
|
||||
return SL_OK;
|
||||
}
|
||||
|
||||
_sl.fh = fopen(filename, (mode == SL_SAVE) ? "wb" : "rb");
|
||||
if(mode == SL_SAVE) {
|
||||
_sl.fh = fopen(convert_to_fs_charset(filename), "wb");
|
||||
} else {
|
||||
_sl.fh = fopen(filename, "rb");
|
||||
}
|
||||
if (_sl.fh == NULL) {
|
||||
DEBUG(misc, 0) ("Cannot open savegame for saving/loading.");
|
||||
return SL_ERROR;
|
||||
|
12
screenshot.c
12
screenshot.c
@@ -12,6 +12,12 @@
|
||||
#include "screenshot.h"
|
||||
#include "variables.h"
|
||||
|
||||
#if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
|
||||
extern const char *convert_to_fs_charset(const char *filename);
|
||||
#else
|
||||
#define convert_to_fs_charset(str) (str)
|
||||
#endif
|
||||
|
||||
char _screenshot_format_name[8];
|
||||
uint _num_screenshot_formats;
|
||||
uint _cur_screenshot_format;
|
||||
@@ -73,7 +79,7 @@ static bool MakeBmpImage(const char *name, ScreenshotCallback *callb, void *user
|
||||
if (pixelformat != 8)
|
||||
return false;
|
||||
|
||||
f = fopen(name, "wb");
|
||||
f = fopen(convert_to_fs_charset(name), "wb");
|
||||
if (f == NULL) return false;
|
||||
|
||||
// each scanline must be aligned on a 32bit boundary
|
||||
@@ -177,7 +183,7 @@ static bool MakePNGImage(const char *name, ScreenshotCallback *callb, void *user
|
||||
if (pixelformat != 8)
|
||||
return false;
|
||||
|
||||
f = fopen(name, "wb");
|
||||
f = fopen(convert_to_fs_charset(name), "wb");
|
||||
if (f == NULL) return false;
|
||||
|
||||
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, (char *)name, png_my_error, png_my_warning);
|
||||
@@ -288,7 +294,7 @@ static bool MakePCXImage(const char *name, ScreenshotCallback *callb, void *user
|
||||
if (pixelformat != 8 || w == 0)
|
||||
return false;
|
||||
|
||||
f = fopen(name, "wb");
|
||||
f = fopen(convert_to_fs_charset(name), "wb");
|
||||
if (f == NULL) return false;
|
||||
|
||||
memset(&pcx, 0, sizeof(pcx));
|
||||
|
@@ -777,7 +777,7 @@ static const SettingDesc network_settings[] = {
|
||||
{"sync_freq", SDT_UINT16 | SDT_NOSAVE, (void*)100, &_network_sync_freq, NULL},
|
||||
{"frame_freq", SDT_UINT8 | SDT_NOSAVE, (void*)0, &_network_frame_freq, NULL},
|
||||
{"max_join_time", SDT_UINT16, (void*)500, &_network_max_join_time, NULL},
|
||||
{"pause_on_join", SDT_BOOL, (void*)false, &_network_pause_on_join, NULL},
|
||||
{"pause_on_join", SDT_BOOL, (void*)true, &_network_pause_on_join, NULL},
|
||||
{"server_bind_ip", SDT_STRINGBUF | (lengthof(_network_server_bind_ip_host) << 16), "0.0.0.0", &_network_server_bind_ip_host, NULL},
|
||||
{"server_port", SDT_UINT, (void*)NETWORK_DEFAULT_PORT, &_network_server_port, NULL},
|
||||
{"server_advertise",SDT_BOOL, (void*)false, &_network_advertise, NULL},
|
||||
|
@@ -193,7 +193,7 @@ static const uint16 * const _legend_table[] = {
|
||||
_legend_industries_candy,
|
||||
};
|
||||
|
||||
#if defined(TTD_ALIGNMENT_4)
|
||||
#if defined(OTTD_ALIGNMENT)
|
||||
static inline void WRITE_PIXELS(Pixel* d, uint32 val)
|
||||
{
|
||||
# if defined(TTD_BIG_ENDIAN)
|
||||
|
@@ -202,7 +202,7 @@ void StationPickerDrawSprite(int x, int y, RailType railtype, int image);
|
||||
uint32 GetCustomStationRelocation(const StationSpec *spec, const Station *st, byte ctype);
|
||||
|
||||
RoadStop * GetRoadStopByTile(TileIndex tile, RoadStopType type);
|
||||
static inline int GetRoadStopType(TileIndex tile)
|
||||
static inline RoadStopType GetRoadStopType(TileIndex tile)
|
||||
{
|
||||
return (_m[tile].m5 < 0x47) ? RS_TRUCK : RS_BUS;
|
||||
}
|
||||
|
@@ -2111,7 +2111,7 @@ void StationPickerDrawSprite(int x, int y, RailType railtype, int image)
|
||||
|
||||
static uint GetSlopeZ_Station(const TileInfo* ti)
|
||||
{
|
||||
return (ti->tileh != 0) ? ti->z + 8 : ti->z;
|
||||
return ti->z + (ti->tileh == 0 ? 0 : 8);
|
||||
}
|
||||
|
||||
static uint GetSlopeTileh_Station(const TileInfo *ti)
|
||||
|
20
stdafx.h
20
stdafx.h
@@ -82,8 +82,6 @@
|
||||
# define CDECL
|
||||
# define NOT_REACHED() assert(0)
|
||||
# define GCC_PACK
|
||||
# undef TTD_ALIGNMENT_4
|
||||
# undef TTD_ALIGNMENT_2
|
||||
# include <malloc.h>
|
||||
#endif /* __WATCOMC__ */
|
||||
|
||||
@@ -101,6 +99,12 @@
|
||||
# pragma warning(disable: 4018) // 'expression' : signed/unsigned mismatch
|
||||
# pragma warning(disable: 4305) // 'identifier' : truncation from 'type1' to 'type2'
|
||||
# endif /* _MSC_VER < 1300 */
|
||||
# if _MSC_VER >= 1400 // MSVC 2005 safety checks
|
||||
# pragma warning(disable: 4996) // 'strdup' was declared deprecated
|
||||
# define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
|
||||
# pragma comment(linker, "/NODEFAULTLIB:LIBC.LIB")
|
||||
// allow linking to non-recompiled libs
|
||||
# endif /* _MSC_VER >= 1400 */
|
||||
|
||||
# include <malloc.h> // alloca()
|
||||
# define NORETURN __declspec(noreturn)
|
||||
@@ -133,8 +137,6 @@
|
||||
# endif
|
||||
# endif /* _MSC_VER < 1300 */
|
||||
|
||||
# undef TTD_ALIGNMENT_4
|
||||
# undef TTD_ALIGNMENT_2
|
||||
# define GCC_PACK
|
||||
|
||||
// This is needed to zlib uses the stdcall calling convention on visual studio, also used with libpng (VS6 warning)
|
||||
@@ -193,10 +195,13 @@ typedef unsigned char byte;
|
||||
typedef unsigned __int64 uint64;
|
||||
#endif /* __BEOS__ */
|
||||
|
||||
#if defined(ARM) || defined(__arm__) || defined(__alpha__)
|
||||
# define OTTD_ALIGNMENT
|
||||
#endif
|
||||
|
||||
// Setup alignment and conversion macros
|
||||
#if defined(TTD_BIG_ENDIAN)
|
||||
# define TTD_ALIGNMENT_2
|
||||
# define TTD_ALIGNMENT_4
|
||||
# define OTTD_ALIGNMENT
|
||||
static inline uint32 TO_LE32(uint32 x) { return BSWAP32(x); }
|
||||
static inline uint16 TO_LE16(uint16 x) { return BSWAP16(x); }
|
||||
static inline uint32 FROM_LE32(uint32 x) { return BSWAP32(x); }
|
||||
@@ -260,6 +265,9 @@ assert_compile(sizeof(uint8) == 1);
|
||||
# define DrawString OTTD_DrawString
|
||||
# define Random OTTD_Random
|
||||
# define CloseConnection OTTD_CloseConnection
|
||||
|
||||
// enable the preprocessor to tell the difference between different OSX versions
|
||||
# include <AvailabilityMacros.h>
|
||||
#endif /* __APPLE */
|
||||
|
||||
#ifdef __AMIGA__
|
||||
|
@@ -499,8 +499,8 @@ static char *FormatString(char *buff, const char *str, const int32 *argv, uint c
|
||||
break;
|
||||
|
||||
case 0x81: // {STRINL}
|
||||
buff = GetStringWithArgs(buff, ReadLE16Unaligned(str), argv);
|
||||
str += 2;
|
||||
buff = GetStringWithArgs(buff, READ_LE_UINT16(str-2), argv);
|
||||
break;
|
||||
case 0x82: // {DATE_LONG}
|
||||
buff = FormatYmdString(buff, GetInt32(&argv));
|
||||
@@ -1013,7 +1013,7 @@ bool ReadLanguagePack(int lang_index)
|
||||
|
||||
#if defined(TTD_BIG_ENDIAN)
|
||||
for (i = 0; i != 32; i++) {
|
||||
lang_pack->offsets[i] = READ_LE_UINT16(&lang_pack->offsets[i]);
|
||||
lang_pack->offsets[i] = ReadLE16Aligned(&lang_pack->offsets[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
42
tile.c
42
tile.c
@@ -15,6 +15,30 @@ uint GetMapExtraBits(TileIndex tile)
|
||||
return GB(_m[tile].extra, 0, 2);
|
||||
}
|
||||
|
||||
/** Converts the heights of 4 corners into a tileh, and returns the minimum height of the tile
|
||||
* @param n,w,e,s the four corners
|
||||
* @param h uint pointer to write the height to
|
||||
* @return the tileh
|
||||
*/
|
||||
uint GetTileh(uint n, uint w, uint e, uint s, uint *h)
|
||||
{
|
||||
uint min = n;
|
||||
uint r;
|
||||
|
||||
if (min >= w) min = w;
|
||||
if (min >= e) min = e;
|
||||
if (min >= s) min = s;
|
||||
|
||||
r = 0;
|
||||
if ((n -= min) != 0) r += (--n << 4) + 8;
|
||||
if ((e -= min) != 0) r += (--e << 4) + 4;
|
||||
if ((s -= min) != 0) r += (--s << 4) + 2;
|
||||
if ((w -= min) != 0) r += (--w << 4) + 1;
|
||||
|
||||
if (h != NULL) *h = min * 8;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
uint GetTileSlope(TileIndex tile, uint *h)
|
||||
{
|
||||
@@ -22,8 +46,6 @@ uint GetTileSlope(TileIndex tile, uint *h)
|
||||
uint b;
|
||||
uint c;
|
||||
uint d;
|
||||
uint min;
|
||||
uint r;
|
||||
|
||||
assert(tile < MapSize());
|
||||
|
||||
@@ -32,24 +54,12 @@ uint GetTileSlope(TileIndex tile, uint *h)
|
||||
return 0;
|
||||
}
|
||||
|
||||
min = a = TileHeight(tile);
|
||||
a = TileHeight(tile);
|
||||
b = TileHeight(tile + TileDiffXY(1, 0));
|
||||
if (min >= b) min = b;
|
||||
c = TileHeight(tile + TileDiffXY(0, 1));
|
||||
if (min >= c) min = c;
|
||||
d = TileHeight(tile + TileDiffXY(1, 1));
|
||||
if (min >= d) min = d;
|
||||
|
||||
r = 0;
|
||||
if ((a -= min) != 0) r += (--a << 4) + 8;
|
||||
if ((c -= min) != 0) r += (--c << 4) + 4;
|
||||
if ((d -= min) != 0) r += (--d << 4) + 2;
|
||||
if ((b -= min) != 0) r += (--b << 4) + 1;
|
||||
|
||||
if (h != NULL)
|
||||
*h = min * 8;
|
||||
|
||||
return r;
|
||||
return GetTileh(a, b, c, d, h);
|
||||
}
|
||||
|
||||
uint GetTileZ(TileIndex tile)
|
||||
|
1
tile.h
1
tile.h
@@ -47,6 +47,7 @@ typedef enum DiagonalDirections {
|
||||
void SetMapExtraBits(TileIndex tile, byte flags);
|
||||
uint GetMapExtraBits(TileIndex tile);
|
||||
|
||||
uint GetTileh(uint n, uint w, uint e, uint s, uint *h);
|
||||
uint GetTileSlope(TileIndex tile, uint *h);
|
||||
uint GetTileZ(TileIndex tile);
|
||||
|
||||
|
@@ -143,14 +143,12 @@ static void DrawTile_Town(TileInfo *ti)
|
||||
|
||||
static uint GetSlopeZ_Town(const TileInfo* ti)
|
||||
{
|
||||
uint z = GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
|
||||
if (ti->tileh != 0) z = (z & ~7) + 4;
|
||||
return (uint16) z;
|
||||
return ti->z + (ti->tileh == 0 ? 0 : 8);
|
||||
}
|
||||
|
||||
static uint GetSlopeTileh_Town(const TileInfo *ti)
|
||||
{
|
||||
return ti->tileh;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void AnimateTile_Town(TileIndex tile)
|
||||
|
@@ -93,6 +93,9 @@ void TrainConsistChanged(Vehicle* v)
|
||||
const RailVehicleInfo *rvi_u = RailVehInfo(u->engine_type);
|
||||
uint16 veh_len;
|
||||
|
||||
// Update the v->first cache. This is faster than having to brute force it later.
|
||||
if (u->first == NULL) u->first = v;
|
||||
|
||||
// update the 'first engine'
|
||||
u->u.rail.first_engine = (v == u) ? INVALID_VEHICLE : first_engine;
|
||||
|
||||
|
@@ -500,6 +500,8 @@ static void TileLoop_Trees(TileIndex tile)
|
||||
/* fall through */
|
||||
|
||||
case 2: { /* add a neighbouring tree */
|
||||
byte m3 = _m[tile].m3;
|
||||
|
||||
tile += ToTileIndexDiff(_tileloop_trees_dir[Random() & 7]);
|
||||
|
||||
if (!IsTileType(tile, MP_CLEAR)) return;
|
||||
@@ -513,6 +515,7 @@ static void TileLoop_Trees(TileIndex tile)
|
||||
_m[tile].m2 = 0;
|
||||
}
|
||||
|
||||
_m[tile].m3 = m3;
|
||||
_m[tile].m4 = 0;
|
||||
SetTileType(tile, MP_TREES);
|
||||
|
||||
|
@@ -803,6 +803,8 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags)
|
||||
m5 = _m[c].m5;
|
||||
|
||||
if (m5 & 0x40) {
|
||||
uint town = IsTileOwner(c, OWNER_TOWN) ? ClosestTownFromTile(c, (uint)-1)->index : 0;
|
||||
|
||||
if (m5 & 0x20) {
|
||||
static const uint16 _new_data_table[] = {0x1002, 0x1001, 0x2005, 0x200A, 0, 0, 0, 0};
|
||||
new_data = _new_data_table[((m5 & 0x18) >> 2) | (m5 & 1)];
|
||||
@@ -813,7 +815,7 @@ static int32 DoClearBridge(TileIndex tile, uint32 flags)
|
||||
|
||||
SetTileType(c, new_data >> 12);
|
||||
_m[c].m5 = (byte)new_data;
|
||||
_m[c].m2 = 0;
|
||||
_m[c].m2 = town;
|
||||
_m[c].m4 &= 0x0F;
|
||||
|
||||
MarkTileDirtyByTile(c);
|
||||
|
47
unix.c
47
unix.c
@@ -48,7 +48,6 @@ ULONG __stack = (1024*1024)*2; // maybe not that much is needed actually ;)
|
||||
#include <SDL.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static char *_fios_path;
|
||||
static char *_fios_save_path;
|
||||
static char *_fios_scn_path;
|
||||
@@ -361,7 +360,7 @@ StringID FiosGetDescText(const char **path, uint32 *tot)
|
||||
return STR_4005_BYTES_FREE;
|
||||
}
|
||||
|
||||
void FiosMakeSavegameName(char *buf, const char *name)
|
||||
void FiosMakeSavegameName(char *buf, const char *name, size_t size)
|
||||
{
|
||||
const char* extension;
|
||||
const char* period;
|
||||
@@ -375,14 +374,14 @@ void FiosMakeSavegameName(char *buf, const char *name)
|
||||
period = strrchr(name, '.');
|
||||
if (period != NULL && strcasecmp(period, extension) == 0) extension = "";
|
||||
|
||||
sprintf(buf, "%s/%s%s", _fios_path, name, extension);
|
||||
snprintf(buf, size, "%s/%s%s", _fios_path, name, extension);
|
||||
}
|
||||
|
||||
bool FiosDelete(const char *name)
|
||||
{
|
||||
char path[512];
|
||||
|
||||
snprintf(path, lengthof(path), "%s/%s", _fios_path, name);
|
||||
FiosMakeSavegameName(path, name, sizeof(path));
|
||||
return unlink(path) == 0;
|
||||
}
|
||||
|
||||
@@ -604,3 +603,43 @@ void CSleep(int milliseconds)
|
||||
}
|
||||
#endif // __AMIGA__
|
||||
}
|
||||
|
||||
#if defined(__APPLE__) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
|
||||
/* FYI: This is not thread-safe.
|
||||
Assumptions:
|
||||
- the 'from' charset is ISO-8859-15
|
||||
- the 'to' charset is either the same, or UTF-8
|
||||
NOTE: iconv was added in OSX 10.3. 10.2.x will still have the invalid char issues. There aren't any easy fix for this
|
||||
*/
|
||||
#include <iconv.h>
|
||||
#include <locale.h>
|
||||
const char *convert_to_fs_charset(const char *filename)
|
||||
{
|
||||
static char statout[1024], statin[1024];
|
||||
static iconv_t convd;
|
||||
static bool alreadyInited;
|
||||
char *outbuf = statout;
|
||||
const char *inbuf = statin;
|
||||
size_t inlen = strlen(filename), outlen = 1023;
|
||||
size_t retval = 0;
|
||||
if(inbuf == NULL)
|
||||
inbuf = statin;
|
||||
|
||||
setlocale(LC_ALL, "C-UTF-8");
|
||||
strcpy(statout, filename);
|
||||
strcpy(statin, filename);
|
||||
inbuf = strrchr(statin, '/');
|
||||
outbuf = strrchr(statout, '/');
|
||||
if(alreadyInited == false)
|
||||
{
|
||||
convd = iconv_open("UTF-8", "ISO-8859-15");
|
||||
if(convd == (iconv_t)(-1))
|
||||
return filename;
|
||||
alreadyInited = true;
|
||||
}
|
||||
retval = iconv(convd, NULL, NULL, NULL, NULL);
|
||||
inlen = iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
|
||||
// FIX: invalid characters will abort conversion, but they shouldn't occur?
|
||||
return statout;
|
||||
}
|
||||
#endif
|
||||
|
@@ -182,12 +182,16 @@ static void DrawTile_Unmovable(TileInfo *ti)
|
||||
|
||||
static uint GetSlopeZ_Unmovable(const TileInfo* ti)
|
||||
{
|
||||
return GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh) + ti->z;
|
||||
if (_m[ti->tile].m5 == 3) {
|
||||
return ti->z + GetPartialZ(ti->x & 0xF, ti->y & 0xF, ti->tileh);
|
||||
} else {
|
||||
return ti->z + (ti->tileh == 0 ? 0 : 8);
|
||||
}
|
||||
}
|
||||
|
||||
static uint GetSlopeTileh_Unmovable(const TileInfo *ti)
|
||||
{
|
||||
return 0;
|
||||
return _m[ti->tile].m5 == 3 ? ti->tileh : 0;
|
||||
}
|
||||
|
||||
static int32 ClearTile_Unmovable(TileIndex tile, byte flags)
|
||||
|
63
vehicle.c
63
vehicle.c
@@ -218,6 +218,11 @@ void AfterLoadVehicles(void)
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
v->first = NULL;
|
||||
if (v->type == VEH_Train && (IsFrontEngine(v) || IsFreeWagon(v)))
|
||||
TrainConsistChanged(v);
|
||||
}
|
||||
|
||||
FOR_ALL_VEHICLES(v) {
|
||||
if (v->type != 0) {
|
||||
switch (v->type) {
|
||||
case VEH_Train: v->cur_image = GetTrainImage(v, v->direction); break;
|
||||
@@ -234,9 +239,6 @@ void AfterLoadVehicles(void)
|
||||
|
||||
v->left_coord = INVALID_COORD;
|
||||
VehiclePositionChanged(v);
|
||||
|
||||
if (v->type == VEH_Train && (IsFrontEngine(v) || IsFreeWagon(v)))
|
||||
TrainConsistChanged(v);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -503,7 +505,7 @@ Vehicle *GetFirstVehicleInChain(const Vehicle *v)
|
||||
assert(v != NULL);
|
||||
|
||||
if (v->first != NULL) {
|
||||
if (IsFrontEngine(v->first)) return v->first;
|
||||
if (IsFrontEngine(v->first) || IsFreeWagon(v->first)) return v->first;
|
||||
|
||||
DEBUG(misc, 0) ("v->first cache faulty. We shouldn't be here, rebuilding cache!");
|
||||
}
|
||||
@@ -517,7 +519,7 @@ Vehicle *GetFirstVehicleInChain(const Vehicle *v)
|
||||
while ((u = GetPrevVehicleInChain_bruteforce(v)) != NULL) v = u;
|
||||
|
||||
/* Set the first pointer of all vehicles in that chain to the first wagon */
|
||||
if (IsFrontEngine(v))
|
||||
if (IsFrontEngine(v) || IsFreeWagon(v))
|
||||
for (u = (Vehicle *)v; u != NULL; u = u->next) u->first = (Vehicle *)v;
|
||||
|
||||
return (Vehicle*)v;
|
||||
@@ -687,7 +689,7 @@ bool CanFillVehicle(Vehicle *v)
|
||||
bool CanRefitTo(EngineID engine_type, CargoID cid_to)
|
||||
{
|
||||
CargoID cid = _global_cargo_id[_opt_ptr->landscape][cid_to];
|
||||
return HASBIT(_engine_info[engine_type].refit_mask, cid) != 0;
|
||||
return HASBIT(_engine_info[engine_type].refit_mask, cid);
|
||||
}
|
||||
|
||||
static void DoDrawVehicle(const Vehicle *v)
|
||||
@@ -1711,8 +1713,11 @@ static void MaybeReplaceVehicle(Vehicle *v)
|
||||
bool stopped = false;
|
||||
|
||||
/* Remember the length in case we need to trim train later on
|
||||
* If it's not a train, the value is unused */
|
||||
uint16 old_total_length = (v->type == VEH_Train) ? v->u.rail.cached_total_length : -1;
|
||||
* If it's not a train, the value is unused
|
||||
* round up to the length of the tiles used for the train instead of the train length instead
|
||||
* Useful when newGRF uses custom length */
|
||||
uint16 old_total_length = (v->type == VEH_Train) ? ((v->u.rail.cached_total_length + 15 )/ 16)* 16 : -1;
|
||||
|
||||
|
||||
_current_player = v->owner;
|
||||
|
||||
@@ -1999,19 +2004,41 @@ uint32 VehicleEnterTile(Vehicle *v, TileIndex tile, int x, int y)
|
||||
|
||||
UnitID GetFreeUnitNumber(byte type)
|
||||
{
|
||||
UnitID unit_num = 0;
|
||||
Vehicle *u;
|
||||
UnitID unit, max;
|
||||
const Vehicle *u;
|
||||
static bool *cache = NULL;
|
||||
static UnitID gmax = 0;
|
||||
|
||||
restart:
|
||||
unit_num++;
|
||||
FOR_ALL_VEHICLES(u) {
|
||||
if (u->type == type && u->owner == _current_player &&
|
||||
unit_num == u->unitnumber)
|
||||
goto restart;
|
||||
switch (type) {
|
||||
case VEH_Train: max = _patches.max_trains; break;
|
||||
case VEH_Road: max = _patches.max_roadveh; break;
|
||||
case VEH_Ship: max = _patches.max_ships; break;
|
||||
case VEH_Aircraft: max = _patches.max_aircraft; break;
|
||||
default: assert(0);
|
||||
}
|
||||
return unit_num;
|
||||
}
|
||||
|
||||
if (max > gmax) {
|
||||
gmax = max;
|
||||
free(cache);
|
||||
cache = malloc((max + 1) * sizeof(*cache));
|
||||
}
|
||||
|
||||
// Clear the cache
|
||||
memset(cache, 0, (max + 1) * sizeof(*cache));
|
||||
|
||||
// Fill the cache
|
||||
FOR_ALL_VEHICLES(u) {
|
||||
if (u->type == type && u->owner == _current_player && u->unitnumber != 0 && u->unitnumber <= max)
|
||||
cache[u->unitnumber] = true;
|
||||
}
|
||||
|
||||
// Find the first unused unit number
|
||||
for (unit = 1; unit <= max; unit++) {
|
||||
if (!cache[unit]) break;
|
||||
}
|
||||
|
||||
return unit;
|
||||
}
|
||||
|
||||
// Save and load of vehicles
|
||||
const SaveLoad _common_veh_desc[] = {
|
||||
|
@@ -903,7 +903,6 @@ static void QZ_SetPortAlphaOpaque (void) {
|
||||
- (void)appDidHide:(NSNotification*)note
|
||||
{
|
||||
_cocoa_video_data.active = false;
|
||||
// DEBUG(driver, 1)("cocoa_v: appDidHide");
|
||||
}
|
||||
|
||||
|
||||
@@ -921,7 +920,6 @@ static void QZ_SetPortAlphaOpaque (void) {
|
||||
[ self restoreCachedImage ];
|
||||
|
||||
_cocoa_video_data.active = true;
|
||||
// DEBUG(driver, 1)("cocoa_v: appDidUnhide");
|
||||
}
|
||||
|
||||
|
||||
@@ -953,25 +951,21 @@ static void QZ_SetPortAlphaOpaque (void) {
|
||||
- (void)windowDidBecomeKey:(NSNotification *)aNotification
|
||||
{
|
||||
_cocoa_video_data.active = true;
|
||||
// DEBUG(driver, 1)("cocoa_v: windowDidBecomeKey");
|
||||
}
|
||||
|
||||
- (void)windowDidResignKey:(NSNotification *)aNotification
|
||||
{
|
||||
_cocoa_video_data.active = false;
|
||||
// DEBUG(driver, 1)("cocoa_v: windowDidResignKey");
|
||||
}
|
||||
|
||||
- (void)windowDidBecomeMain:(NSNotification *)aNotification
|
||||
{
|
||||
_cocoa_video_data.active = true;
|
||||
// DEBUG(driver, 1)("cocoa_v: windowDidBecomeMain");
|
||||
}
|
||||
|
||||
- (void)windowDidResignMain:(NSNotification *)aNotification
|
||||
{
|
||||
_cocoa_video_data.active = false;
|
||||
// DEBUG(driver, 1)("cocoa_v: windowDidResignMain");
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1507,17 +1501,47 @@ static void QZ_WaitForVerticalBlank(void)
|
||||
|
||||
static void QZ_DrawScreen(void)
|
||||
{
|
||||
const uint8* src;
|
||||
uint8* dst;
|
||||
uint height;
|
||||
uint width;
|
||||
uint pitch;
|
||||
uint y;
|
||||
uint8 *src, *dst;
|
||||
uint num_dirty_rects;
|
||||
uint length_drawn;
|
||||
uint left;
|
||||
uint i;
|
||||
|
||||
src = _cocoa_video_data.pixels;
|
||||
dst = (uint8*)_cocoa_video_data.realpixels;
|
||||
width = _cocoa_video_data.width;
|
||||
pitch = _cocoa_video_data.pitch;
|
||||
num_dirty_rects = _cocoa_video_data.num_dirty_rects;
|
||||
|
||||
/* Check if we need to do anything */
|
||||
if (num_dirty_rects == 0 ) return;
|
||||
|
||||
if (num_dirty_rects >= MAX_DIRTY_RECTS) {
|
||||
num_dirty_rects = 1;
|
||||
_cocoa_video_data.dirty_rects[0].left = 0;
|
||||
_cocoa_video_data.dirty_rects[0].top = 0;
|
||||
_cocoa_video_data.dirty_rects[0].right = _cocoa_video_data.width;
|
||||
_cocoa_video_data.dirty_rects[0].bottom = _cocoa_video_data.height;
|
||||
}
|
||||
|
||||
QZ_WaitForVerticalBlank();
|
||||
/* Build the region of dirty rectangles */
|
||||
for (i = 0; i < num_dirty_rects; i++) {
|
||||
|
||||
for(y = 0; y < _cocoa_video_data.height; y++) {
|
||||
src = _cocoa_video_data.pixels + y * _cocoa_video_data.width;
|
||||
dst = ((uint8 *) _cocoa_video_data.realpixels) + y * _cocoa_video_data.pitch;
|
||||
|
||||
memcpy(dst, src, _cocoa_video_data.width);
|
||||
y = _cocoa_video_data.dirty_rects[i].top;
|
||||
left = _cocoa_video_data.dirty_rects[i].left;
|
||||
length_drawn = _cocoa_video_data.dirty_rects[i].right - left;
|
||||
height = _cocoa_video_data.dirty_rects[i].bottom;
|
||||
for (; y < height; y++) memcpy(dst + y * pitch + left, src + y * width +left, length_drawn);
|
||||
}
|
||||
|
||||
_cocoa_video_data.num_dirty_rects = 0;
|
||||
|
||||
}
|
||||
|
||||
static int QZ_ListFullscreenModes (OTTDPoint *mode_list, int max_modes) {
|
||||
@@ -1664,9 +1688,11 @@ static void QZ_UpdateVideoModes(void)
|
||||
current_modes = _default_resolutions;
|
||||
}
|
||||
|
||||
for(i = 0, j = 0; j < lengthof(_resolutions) && i < count; i++) {
|
||||
if (_cocoa_video_data.fullscreen || ((uint) current_modes[i].x <= _cocoa_video_data.device_width &&
|
||||
(uint) current_modes[i].y <= _cocoa_video_data.device_height)) {
|
||||
for (i = 0, j = 0; j < lengthof(_resolutions) && i < count; i++) {
|
||||
if (_cocoa_video_data.fullscreen || (
|
||||
(uint)current_modes[i].x < _cocoa_video_data.device_width &&
|
||||
(uint)current_modes[i].y < _cocoa_video_data.device_height)
|
||||
) {
|
||||
_resolutions[j][0] = current_modes[i].x;
|
||||
_resolutions[j][1] = current_modes[i].y;
|
||||
j++;
|
||||
@@ -1830,7 +1856,6 @@ static void QZ_WarpCursor (int x, int y) {
|
||||
CGWarpMouseCursorPosition (cgp);
|
||||
|
||||
/* Generate the mouse moved event */
|
||||
// SDL_PrivateMouseMotion (0, 0, x, y);
|
||||
}
|
||||
|
||||
void QZ_ShowMouse (void) {
|
||||
@@ -1885,7 +1910,6 @@ void QZ_HideMouse (void) {
|
||||
/* Display the in game quit confirmation dialog */
|
||||
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *) sender
|
||||
{
|
||||
// DEBUG(driver, 1)("cocoa_v: applicationShouldTerminate");
|
||||
|
||||
QZ_AskQuit();
|
||||
|
||||
|
@@ -651,6 +651,10 @@ static const char *Win32GdiStart(const char * const *parm)
|
||||
|
||||
static void Win32GdiStop(void)
|
||||
{
|
||||
DeleteObject(_wnd.gdi_palette);
|
||||
DeleteObject(_wnd.dib_sect);
|
||||
DestroyWindow(_wnd.main_wnd);
|
||||
|
||||
if (_wnd.fullscreen) ChangeDisplaySettings(NULL, 0);
|
||||
if (_double_size) {
|
||||
_cur_resolution[0] *= 2;
|
||||
@@ -658,9 +662,6 @@ static void Win32GdiStop(void)
|
||||
}
|
||||
|
||||
MyShowCursor(true);
|
||||
DeleteObject(_wnd.gdi_palette);
|
||||
DeleteObject(_wnd.dib_sect);
|
||||
DestroyWindow(_wnd.main_wnd);
|
||||
}
|
||||
|
||||
// simple upscaler by 2
|
||||
|
@@ -544,7 +544,7 @@ static void TileLoopWaterHelper(TileIndex tile, const TileIndexDiffC *offs)
|
||||
// Middle part of bridge with clear land below?
|
||||
if ((_m[target].m5 & 0xF8) == 0xC0) {
|
||||
_m[target].m5 |= 0x08;
|
||||
MarkTileDirtyByTile(tile);
|
||||
MarkTileDirtyByTile(target);
|
||||
}
|
||||
break;
|
||||
|
||||
|
9
win32.c
9
win32.c
@@ -427,6 +427,7 @@ extern bool CloseConsoleLogIfActive(void);
|
||||
|
||||
static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
|
||||
{
|
||||
extern const char _openttd_revision[];
|
||||
char *output;
|
||||
static bool had_exception;
|
||||
|
||||
@@ -451,7 +452,7 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
|
||||
time.wHour,
|
||||
time.wMinute,
|
||||
time.wSecond,
|
||||
"???"
|
||||
_openttd_revision
|
||||
);
|
||||
}
|
||||
|
||||
@@ -962,7 +963,7 @@ StringID FiosGetDescText(const char **path, uint32 *tot)
|
||||
return sid;
|
||||
}
|
||||
|
||||
void FiosMakeSavegameName(char *buf, const char *name)
|
||||
void FiosMakeSavegameName(char *buf, const char *name, size_t size)
|
||||
{
|
||||
const char* extension;
|
||||
const char* period;
|
||||
@@ -976,14 +977,14 @@ void FiosMakeSavegameName(char *buf, const char *name)
|
||||
period = strrchr(name, '.');
|
||||
if (period != NULL && strcasecmp(period, extension) == 0) extension = "";
|
||||
|
||||
sprintf(buf, "%s\\%s%s", _fios_path, name, extension);
|
||||
snprintf(buf, size, "%s\\%s%s", _fios_path, name, extension);
|
||||
}
|
||||
|
||||
bool FiosDelete(const char *name)
|
||||
{
|
||||
char path[512];
|
||||
|
||||
snprintf(path, lengthof(path), "%s\\%s", _fios_path, name);
|
||||
FiosMakeSavegameName(path, name, sizeof(path));
|
||||
return DeleteFile(path) != 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user