1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-13 17:49:10 +00:00

Compare commits

..

1 Commits

Author SHA1 Message Date
glx
8db90283f0 (svn r12182) -Release 0.6.0-beta4 2008-02-18 21:49:21 +00:00
936 changed files with 89986 additions and 171611 deletions

1
.gitignore vendored
View File

@@ -1,6 +1,5 @@
Makefile*
bin/*
bundle/*
!bin/data/chars.grf
!bin/data/openttdd.grf
!bin/data/openttdw.grf

View File

@@ -1,11 +0,0 @@
bin/lang/*
bin/opentd*
bundle/*
config.cache.*
config.log
config.pwd
Makefile
Makefile.am
media/openttd.desktop*
objs/*
src/rev.cpp

View File

@@ -76,7 +76,7 @@ WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ./src/
INPUT = ./
FILE_PATTERNS = *.c \
*.cc \
*.cxx \
@@ -158,7 +158,7 @@ RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
GENERATE_MAN = YES
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO

View File

@@ -1,192 +0,0 @@
#
# Creation of bundles
#
# The revision is needed for the bundle name and creating an OSX application bundle.
ifdef REVISION
REV := $(REVISION)
else
# Detect the revision
VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh")
REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
endif
# Make sure we have something in REV
ifeq ($(REV),)
REV := norev000
endif
ifndef BUNDLE_NAME
BUNDLE_NAME = openttd-custom-$(REV)-$(OS)
endif
# An OSX application bundle needs the data files, lang files and openttd executable in a different location.
ifdef OSXAPP
DATA_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/data
LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang
TTD_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS
else
DATA_DIR = $(BUNDLE_DIR)/data
LANG_DIR = $(BUNDLE_DIR)/lang
TTD_DIR = $(BUNDLE_DIR)
endif
bundle: all
@echo '[BUNDLE] Constructing bundle'
$(Q)rm -rf "$(BUNDLE_DIR)"
$(Q)mkdir -p "$(BUNDLE_DIR)"
$(Q)mkdir -p "$(BUNDLE_DIR)/docs"
$(Q)mkdir -p "$(BUNDLE_DIR)/scenario"
$(Q)mkdir -p "$(BUNDLE_DIR)/scenario/heightmap"
$(Q)mkdir -p "$(BUNDLE_DIR)/media"
$(Q)mkdir -p "$(BUNDLE_DIR)/scripts"
$(Q)mkdir -p "$(TTD_DIR)"
$(Q)mkdir -p "$(DATA_DIR)"
$(Q)mkdir -p "$(LANG_DIR)"
ifdef OSXAPP
$(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources"
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "$(BUNDLE_DIR)/$(OSXAPP)" "$(REV)"
$(Q)cp "$(ROOT_DIR)/docs/OSX_install_instructions.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(DATA_DIR)"
endif
$(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/"
$(Q)cp "$(BIN_DIR)/data/"*.grf "$(DATA_DIR)/"
$(Q)cp "$(BIN_DIR)/data/"*.obg "$(DATA_DIR)/"
$(Q)cp "$(BIN_DIR)/data/opntitle.dat" "$(DATA_DIR)/"
$(Q)cp "$(BIN_DIR)/lang/"*.lng "$(LANG_DIR)/"
$(Q)cp "$(ROOT_DIR)/readme.txt" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/COPYING" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/known-bugs.txt" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/docs/obg_format.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/32bpp.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/changelog.txt" "$(BUNDLE_DIR)/"
ifdef MAN_DIR
$(Q)mkdir -p "$(BUNDLE_DIR)/man/"
$(Q)cp "$(ROOT_DIR)/docs/openttd.6" "$(BUNDLE_DIR)/man/"
$(Q)gzip -9 "$(BUNDLE_DIR)/man/openttd.6"
endif
$(Q)cp "$(ROOT_DIR)/media/openttd.32.xpm" "$(BUNDLE_DIR)/media/"
$(Q)cp "$(ROOT_DIR)/media/openttd."*.png "$(BUNDLE_DIR)/media/"
$(Q)cp "$(BIN_DIR)/scripts/"* "$(BUNDLE_DIR)/scripts/"
ifdef MENU_DIR
$(Q)cp "$(ROOT_DIR)/media/openttd.desktop" "$(BUNDLE_DIR)/media/"
$(Q)cat "$(ROOT_DIR)/media/openttd.desktop" | sed s/=openttd/=$(BINARY_NAME)/g > "$(ROOT_DIR)/media/openttd.desktop.install"
endif
ifeq ($(shell if test -n "`ls -l \"$(BIN_DIR)/scenario/\"*.scn 2> /dev/null`"; then echo 1; fi), 1)
$(Q)cp "$(BIN_DIR)/scenario/"*.scn "$(BUNDLE_DIR)/scenario/"
endif
ifeq ($(shell if test -n "`ls -l \"$(BIN_DIR)/scenario/heightmaps/\"* 2>/dev/null`"; then echo 1; fi), 1)
$(Q)cp "$(BIN_DIR)/scenario/heightmaps/"* "$(BUNDLE_DIR)/scenario/heightmap/"
endif
ifeq ($(TTD), openttd.exe)
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
ifeq ($(OS), DOS)
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/"
ifndef STRIP
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.exe" "$(TTD_DIR)/"
endif
endif
endif
### Packing the current bundle into several compressed file formats ###
#
# Zips & dmgs do not contain a root folder, i.e. they have files in the root of the zip/dmg.
# gzip, bzip2 and lha archives have a root folder, with the same name as the bundle.
#
# One can supply a custom name by adding BUNDLE_NAME:=<name> to the make command.
#
bundle_zip: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).zip'
$(Q)mkdir -p "$(BUNDLES_DIR)"
$(Q)cd "$(BUNDLE_DIR)" && zip -r $(shell if test -z "$(VERBOSE)"; then echo '-q'; fi) "$(BUNDLES_DIR)/$(BUNDLE_NAME).zip" .
bundle_gzip: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.gz'
$(Q)mkdir -p "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)"
$(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)/"
$(Q)cd "$(BUNDLES_DIR)/.gzip" && tar -zc$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.gz" "$(BUNDLE_NAME)"
$(Q)rm -rf "$(BUNDLES_DIR)/.gzip"
bundle_bzip2: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.bz2'
$(Q)mkdir -p "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)"
$(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)/"
$(Q)cd "$(BUNDLES_DIR)/.bzip2" && tar -jc$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.bz2" "$(BUNDLE_NAME)"
$(Q)rm -rf "$(BUNDLES_DIR)/.bzip2"
bundle_lha: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).lha'
$(Q)mkdir -p "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)"
$(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)/"
$(Q)cd "$(BUNDLES_DIR)/.lha" && lha ao6 "$(BUNDLES_DIR)/$(BUNDLE_NAME).lha" "$(BUNDLE_NAME)"
$(Q)rm -rf "$(BUNDLES_DIR)/.lha"
bundle_dmg: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg'
$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(REV)"
$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(REV)"
$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(REV)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(REV)"
bundle_exe: all
@echo '[BUNDLE] Creating $(BUNDLE_NAME).exe'
$(Q)mkdir -p "$(BUNDLES_DIR)"
$(Q)unix2dos "$(ROOT_DIR)/docs/"* "$(ROOT_DIR)/readme.txt" "$(ROOT_DIR)/COPYING" "$(ROOT_DIR)/changelog.txt" "$(ROOT_DIR)/known-bugs.txt"
$(Q)cd $(ROOT_DIR)/os/win32/installer && makensis.exe //DVERSION_INCLUDE=version_$(PLATFORM).txt install.nsi
$(Q)mv $(ROOT_DIR)/os/win32/installer/*$(PLATFORM).exe "$(BUNDLES_DIR)/$(BUNDLE_NAME).exe"
ifdef OSXAPP
install:
@echo '[INSTALL] Cannot install the OSX Application Bundle'
else
install: bundle
@echo '[INSTALL] Installing OpenTTD'
$(Q)install -d "$(INSTALL_BINARY_DIR)"
$(Q)install -d "$(INSTALL_ICON_DIR)"
$(Q)install -d "$(INSTALL_DATA_DIR)/gm"
$(Q)install -d "$(INSTALL_DATA_DIR)/data"
$(Q)install -d "$(INSTALL_DATA_DIR)/lang"
$(Q)install -d "$(INSTALL_DATA_DIR)/scripts"
$(Q)install -d "$(INSTALL_DOC_DIR)"
ifeq ($(TTD), openttd.exe)
$(Q)install -m 755 "$(BUNDLE_DIR)/$(TTD)" "$(INSTALL_BINARY_DIR)/${BINARY_NAME}.exe"
else
$(Q)install -m 755 "$(BUNDLE_DIR)/$(TTD)" "$(INSTALL_BINARY_DIR)/${BINARY_NAME}"
endif
$(Q)install -m 644 "$(BUNDLE_DIR)/lang/"* "$(INSTALL_DATA_DIR)/lang"
$(Q)install -m 644 "$(BUNDLE_DIR)/data/"* "$(INSTALL_DATA_DIR)/data"
$(Q)install -m 644 "$(BUNDLE_DIR)/scripts/"* "$(INSTALL_DATA_DIR)/scripts"
$(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(INSTALL_DOC_DIR)"
$(Q)install -m 644 "$(BUNDLE_DIR)/"*.txt "$(INSTALL_DOC_DIR)"
$(Q)install -m 644 "$(BUNDLE_DIR)/COPYING" "$(INSTALL_DOC_DIR)"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.32.xpm" "$(INSTALL_ICON_DIR)/${BINARY_NAME}.32.xpm"
ifdef ICON_THEME_DIR
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)"
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/16x16/apps"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.16.png" "$(INSTALL_ICON_THEME_DIR)/16x16/apps/${BINARY_NAME}.png"
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/32x32/apps"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.32.png" "$(INSTALL_ICON_THEME_DIR)/32x32/apps/${BINARY_NAME}.png"
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/48x48/apps"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.48.png" "$(INSTALL_ICON_THEME_DIR)/48x48/apps/${BINARY_NAME}.png"
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/64x64/apps"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.64.png" "$(INSTALL_ICON_THEME_DIR)/64x64/apps/${BINARY_NAME}.png"
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/128x128/apps"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.128.png" "$(INSTALL_ICON_THEME_DIR)/128x128/apps/${BINARY_NAME}.png"
$(Q)install -d "$(INSTALL_ICON_THEME_DIR)/256x256/apps"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/openttd.256.png" "$(INSTALL_ICON_THEME_DIR)/256x256/apps/${BINARY_NAME}.png"
else
$(Q)install -m 644 "$(BUNDLE_DIR)/media/"*.png "$(INSTALL_ICON_DIR)"
endif
ifdef MAN_DIR
$(Q)install -d "$(INSTALL_MAN_DIR)"
$(Q)install -m 644 "$(BUNDLE_DIR)/man/openttd.6.gz" "$(INSTALL_MAN_DIR)/${BINARY_NAME}.6.gz"
endif
ifdef MENU_DIR
$(Q)install -d "$(INSTALL_MENU_DIR)"
$(Q)install -m 644 "$(ROOT_DIR)/media/openttd.desktop.install" "$(INSTALL_MENU_DIR)/${BINARY_NAME}.desktop"
endif
$(Q)cp -R "$(BUNDLE_DIR)/scenario" "$(INSTALL_DATA_DIR)"
endif # OSXAPP

View File

@@ -1,3 +1,5 @@
# Auto-generated file -- DO NOT EDIT
# Check if we want to show what we are doing
ifdef VERBOSE
Q =
@@ -9,27 +11,18 @@ include Makefile.am
SOURCE_LIST = !!SOURCE_LIST!!
CONFIG_CACHE_SOURCE_LIST = !!CONFIG_CACHE_SOURCE_LIST!!
CONFIG_CACHE_PWD = !!CONFIG_CACHE_PWD!!
CONFIGURE_FILES = !!CONFIGURE_FILES!!
LIPO = !!LIPO!!
BIN_DIR = !!BIN_DIR!!
ICON_THEME_DIR = !!ICON_THEME_DIR!!
MAN_DIR = !!MAN_DIR!!
MENU_DIR = !!MENU_DIR!!
SRC_DIR = !!SRC_DIR!!
ROOT_DIR = !!ROOT_DIR!!
BUNDLE_DIR = "$(ROOT_DIR)/bundle"
BUNDLES_DIR = "$(ROOT_DIR)/bundles"
INSTALL_DIR = !!INSTALL_DIR!!
INSTALL_BINARY_DIR = "$(INSTALL_DIR)/"!!BINARY_DIR!!
INSTALL_MAN_DIR = "$(INSTALL_DIR)/$(MAN_DIR)"
INSTALL_MENU_DIR = "$(INSTALL_DIR)/$(MENU_DIR)"
INSTALL_ICON_DIR = "$(INSTALL_DIR)/"!!ICON_DIR!!
INSTALL_ICON_THEME_DIR = "$(INSTALL_DIR)/$(ICON_THEME_DIR)"
INSTALL_DATA_DIR = "$(INSTALL_DIR)/"!!DATA_DIR!!
INSTALL_DOC_DIR = "$(INSTALL_DIR)/"!!DOC_DIR!!
BINARY_NAME = !!BINARY_NAME!!
STRIP = !!STRIP!!
INSTALL_PERSONAL_DIR = !!PERSONAL_DIR!!
TTD = !!TTD!!
TTDS = $(SRC_DIRS:%=%/$(TTD))
OS = !!OS!!
@@ -38,10 +31,9 @@ REVISION = !!REVISION!!
AWK = !!AWK!!
DISTCC = !!DISTCC!!
RES := $(shell if [ ! -f $(CONFIG_CACHE_PWD) ] || [ "`pwd`" != "`cat $(CONFIG_CACHE_PWD)`" ]; then echo "`pwd`" > $(CONFIG_CACHE_PWD); fi )
RES := $(shell if [ ! -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST) 2>/dev/null`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi )
RES := $(shell if ! [ -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST)`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi )
all: config.pwd config.cache
all: config.cache
ifdef DISTCC
@if [ -z "`echo '$(MFLAGS)' | grep '\-j'`" ]; then echo; echo "WARNING: you enabled distcc support, but you don't seem to be using the -jN paramter"; echo; fi
endif
@@ -80,22 +72,16 @@ help:
@echo " bundle_lha create the lha installation bundle"
@echo " bundle_dmg create the dmg installation bundle"
config.pwd: $(CONFIG_CACHE_PWD)
$(MAKE) reconfigure
config.cache: $(CONFIG_CACHE_SOURCE_LIST) $(CONFIGURE_FILES)
$(MAKE) reconfigure
reconfigure:
ifeq ($(shell if test -f config.cache; then echo 1; fi), 1)
@echo "----------------"
@echo "The system detected that source.list or any configure file is altered."
@echo " Going to reconfigure with last known settings..."
@echo "----------------"
# Make sure we don't lock config.cache
@$(shell cat config.cache | sed 's~\\ ~\\\\ ~g') || exit 1
@$(shell cat config.cache | sed 's/\\ /\\\\ /g') || exit 1
@echo "----------------"
@echo "Reconfig done. Please re-execute make."
@echo "Reconfig done. Now compiling..."
@echo "----------------"
else
@echo "----------------"
@@ -121,9 +107,8 @@ mrproper:
rm -f $$dir/Makefile; \
done
$(Q)rm -rf objs
$(Q)rm -f Makefile Makefile.am Makefile.bundle
$(Q)rm -f media/openttd.desktop
$(Q)rm -f $(CONFIG_CACHE_SOURCE_LIST) config.cache config.pwd config.log $(CONFIG_CACHE_PWD)
$(Q)rm -f Makefile Makefile.am
$(Q)rm -f $(CONFIG_CACHE_SOURCE_LIST) config.cache config.log
$(Q)rm -rf $(BUNDLE_DIR)
$(Q)rm -rf $(BUNDLES_DIR)
@@ -141,9 +126,6 @@ run-gdb: all
run-prof: all
$(Q)cd !!BIN_DIR!! && ./!!TTD!! $(OPENTTD_ARGS) && gprof !!TTD!! | less
regression: all
$(Q)cd !!BIN_DIR!! && sh ai/regression/run.sh
%.o:
@for dir in $(SRC_DIRS); do \
$(MAKE) -C $$dir $(@:src/%=%); \
@@ -154,4 +136,145 @@ regression: all
$(MAKE) -C $$dir $@; \
done
include Makefile.bundle
#
# Creation of bundles
#
# The revision is needed for the bundle name and creating an OSX application bundle.
ifdef REVISION
REV := $(REVISION)
else
# Are we a SVN dir?
ifeq ($(shell if test -d $(SRC_DIR)/.svn; then echo 1; fi), 1)
# Find if the local source if modified
REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
# Find the revision like: rXXXX-branch
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branches/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
endif
endif
# Make sure we have something in REV
ifeq ($(REV),)
REV := norev000
endif
ifndef BUNDLE_NAME
BUNDLE_NAME = OTTD-$(OS)-custom-$(REV)
endif
# An OSX application bundle needs the data files, lang files and openttd executable in a different location.
ifdef OSXAPP
DATA_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/data
LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang
TTD_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS
else
DATA_DIR = $(BUNDLE_DIR)/data
LANG_DIR = $(BUNDLE_DIR)/lang
TTD_DIR = $(BUNDLE_DIR)
endif
bundle: all
@echo '[BUNDLE] Constructing bundle'
$(Q)rm -rf "${BUNDLE_DIR}"
$(Q)mkdir -p "${BUNDLE_DIR}"
$(Q)mkdir -p "$(BUNDLE_DIR)/docs"
$(Q)mkdir -p "$(BUNDLE_DIR)/scenario"
$(Q)mkdir -p "$(BUNDLE_DIR)/scenario/heightmap"
$(Q)mkdir -p "$(BUNDLE_DIR)/media"
$(Q)mkdir -p "$(TTD_DIR)"
$(Q)mkdir -p "$(DATA_DIR)"
$(Q)mkdir -p "$(LANG_DIR)"
ifdef OSXAPP
$(Q)mkdir -p "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources"
$(Q)echo "APPL????" > "$(BUNDLE_DIR)/$(OSXAPP)/Contents/PkgInfo"
$(Q)cp "$(ROOT_DIR)/os/macosx/openttd.icns" "$(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/openttd.icns"
$(Q)$(ROOT_DIR)/os/macosx/plistgen.sh "${BUNDLE_DIR}/$(OSXAPP)" "$(REV)"
$(Q)cp "$(ROOT_DIR)/docs/OSX_install_instructions.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/os/macosx/splash.png" "$(DATA_DIR)"
endif
$(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/"
$(Q)cp "$(BIN_DIR)/data/"*.grf "$(DATA_DIR)/"
$(Q)cp "$(BIN_DIR)/data/opntitle.dat" "$(DATA_DIR)/"
$(Q)cp "$(BIN_DIR)/lang/"*.lng "$(LANG_DIR)/"
$(Q)cp "$(ROOT_DIR)/readme.txt" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/COPYING" "$(BUNDLE_DIR)/"
$(Q)cp "$(ROOT_DIR)/known-bugs.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/multiplayer.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/docs/32bpp.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/changelog.txt" "$(BUNDLE_DIR)/docs/"
$(Q)cp "$(ROOT_DIR)/media/openttd.64.png" "$(BUNDLE_DIR)/media/"
$(Q)cp "$(ROOT_DIR)/media/openttd.32.xpm" "$(BUNDLE_DIR)/media/"
$(Q)cp "$(ROOT_DIR)/media/openttd.32.bmp" "$(BUNDLE_DIR)/media/"
ifeq ($(shell if test -n "`ls -l \"$(BIN_DIR)/scenario/\"*.scn 2> /dev/null`"; then echo 1; fi), 1)
$(Q)cp "$(BIN_DIR)/scenario/"*.scn "$(BUNDLE_DIR)/scenario/"
endif
ifeq ($(shell if test -n "`ls -l \"$(BIN_DIR)/scenario/heightmaps/\"* 2>/dev/null`"; then echo 1; fi), 1)
$(Q)cp "$(BIN_DIR)/scenario/heightmaps/"* "$(BUNDLE_DIR)/scenario/heightmap/"
endif
ifeq ($(TTD), openttd.exe)
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING"
endif
### Packing the current bundle into several compressed file formats ###
#
# Zips & dmgs do not contain a root folder, i.e. they have files in the root of the zip/dmg.
# gzip, bzip2 and lha archives have a root folder, with the same name as the bundle.
#
# One can supply a custom name by adding BUNDLE_NAME:=<name> to the make command.
#
bundle_zip: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).zip'
$(Q)mkdir -p "$(BUNDLES_DIR)"
$(Q)cd "$(BUNDLE_DIR)" && zip -r $(shell if test -z "$(VERBOSE)"; then echo '-q'; fi) "$(BUNDLES_DIR)/$(BUNDLE_NAME).zip" .
bundle_gzip: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.gz'
$(Q)mkdir -p "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)"
$(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.gzip/$(BUNDLE_NAME)/"
$(Q)cd "$(BUNDLES_DIR)/.gzip" && tar -zc$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.gz" "$(BUNDLE_NAME)"
$(Q)rm -rf "$(BUNDLES_DIR)/.gzip"
bundle_bzip2: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).tar.bz2'
$(Q)mkdir -p "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)"
$(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.bzip2/$(BUNDLE_NAME)/"
$(Q)cd "$(BUNDLES_DIR)/.bzip2" && tar -jc$(shell if test -n "$(VERBOSE)"; then echo 'v'; fi)f "$(BUNDLES_DIR)/$(BUNDLE_NAME).tar.bz2" "$(BUNDLE_NAME)"
$(Q)rm -rf "$(BUNDLES_DIR)/.bzip2"
bundle_lha: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).lha'
$(Q)mkdir -p "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)"
$(Q)cp -R "$(BUNDLE_DIR)/"* "$(BUNDLES_DIR)/.lha/$(BUNDLE_NAME)/"
$(Q)cd "$(BUNDLES_DIR)/.lha" && lha ao6 "$(BUNDLES_DIR)/$(BUNDLE_NAME).lha" "$(BUNDLE_NAME)"
$(Q)rm -rf "$(BUNDLES_DIR)/.lha"
bundle_dmg: bundle
@echo '[BUNDLE] Creating $(BUNDLE_NAME).dmg'
$(Q)mkdir -p "$(BUNDLES_DIR)/OpenTTD $(REV)"
$(Q)cp -R "$(BUNDLE_DIR)/" "$(BUNDLES_DIR)/OpenTTD $(REV)"
$(Q)hdiutil create -ov -format UDZO -srcfolder "$(BUNDLES_DIR)/OpenTTD $(REV)" "$(BUNDLES_DIR)/$(BUNDLE_NAME).dmg"
$(Q)rm -fr "$(BUNDLES_DIR)/OpenTTD $(REV)"
ifdef OSXAPP
install:
@echo '[INSTALL] Cannot install the OSX Application Bundle'
else
install: bundle
@echo '[INSTALL] Installing OpenTTD'
$(Q)install -d "$(INSTALL_BINARY_DIR)"
$(Q)install -d "$(INSTALL_ICON_DIR)"
$(Q)install -d "$(INSTALL_DATA_DIR)/gm"
$(Q)install -d "$(INSTALL_DATA_DIR)/data"
$(Q)install -d "$(INSTALL_DATA_DIR)/lang"
$(Q)install -d "$(INSTALL_DATA_DIR)/docs"
$(Q)install -m 755 "$(BUNDLE_DIR)/$(TTD)" "$(INSTALL_BINARY_DIR)"
$(Q)install -m 644 "$(BUNDLE_DIR)/lang/"* "$(INSTALL_DATA_DIR)/lang"
$(Q)install -m 644 "$(BUNDLE_DIR)/data/"* "$(INSTALL_DATA_DIR)/data"
$(Q)install -m 644 "$(BUNDLE_DIR)/docs/"* "$(INSTALL_DATA_DIR)/docs"
$(Q)install -m 644 "$(BUNDLE_DIR)/media/"* "$(INSTALL_ICON_DIR)"
ifdef INSTALL_PERSONAL_DIR
$(Q)mkdir -p ~/"$(INSTALL_PERSONAL_DIR)"
$(Q)cp -R "$(BUNDLE_DIR)/scenario" ~/"$(INSTALL_PERSONAL_DIR)"
else
$(Q)cp -R "$(BUNDLE_DIR)/scenario" "$(INSTALL_DATA_DIR)"
endif # INSTALL_PERSONAL_DIR
endif # OSXAPP

View File

@@ -1,3 +1,5 @@
# Auto-generated file -- DO NOT EDIT
STRGEN = !!STRGEN!!
ENDIAN_CHECK = !!ENDIAN_CHECK!!
SRC_DIR = !!SRC_DIR!!

View File

@@ -1,28 +0,0 @@
#
# Makefile for creating bundles of MSVC's binaries in the same way as we make
# the zip bundles for ALL other OSes.
#
# Usage: make -f Makefile.msvc PLATFORM=[Win32|x64] BUNDLE_NAME=openttd-<version>-win[32|64]
# or make -f Makefile.msvc PLATFORM=[Win32|x64] BUNDLE_NAME=OTTD-win[32|64]-nightly-<revision>
#
# Check if we want to show what we are doing
ifdef VERBOSE
Q =
else
Q = @
endif
AWK = "awk"
ROOT_DIR := $(shell pwd)
BIN_DIR = "$(ROOT_DIR)/bin"
SRC_DIR = "$(ROOT_DIR)/src"
BUNDLE_DIR = "$(ROOT_DIR)/bundle"
BUNDLES_DIR = "$(ROOT_DIR)/bundles"
TTD = "openttd.exe"
TARGET := $(shell echo $(PLATFORM) | sed "s~win64~x64~;s~win32~Win32~")
all:
$(Q)cp objs/$(TARGET)/Release/$(TTD) $(BIN_DIR)/$(TTD)
include Makefile.bundle.in

View File

@@ -1,3 +1,5 @@
# Auto-generated file -- DO NOT EDIT
CC_HOST = !!CC_HOST!!
CXX_HOST = !!CXX_HOST!!
CC_BUILD = !!CC_BUILD!!
@@ -9,13 +11,11 @@ CFLAGS = !!CFLAGS!!
CFLAGS_BUILD = !!CFLAGS_BUILD!!
LIBS = !!LIBS!!
LDFLAGS = !!LDFLAGS!!
ROOT_DIR = !!ROOT_DIR!!
BIN_DIR = !!BIN_DIR!!
LANG_DIR = !!LANG_DIR!!
SRC_OBJS_DIR = !!SRC_OBJS_DIR!!
LANG_OBJS_DIR= !!LANG_OBJS_DIR!!
SRC_DIR = !!SRC_DIR!!
SCRIPT_SRC_DIR=!!SCRIPT_SRC_DIR!!
MEDIA_DIR = !!MEDIA_DIR!!
TTD = !!TTD!!
STRGEN = !!STRGEN!!
@@ -43,13 +43,12 @@ OBJS := $(OBJS_C) $(OBJS_CPP) $(OBJS_MM) $(OBJS_RC)
SRCS := !!SRCS!!
# All C-files depend on those 3 files
FILE_DEP := $(CONFIG_CACHE_COMPILER) endian_target.h
FILE_DEP := $(CONFIG_CACHE_COMPILER) $(LANG_OBJS_DIR)/table/strings.h endian_target.h
# Create all dirs and subdirs
RES := $(shell mkdir -p $(BIN_DIR) $(sort $(dir $(OBJS))))
# Make sure endian_target.h is reasable as if it was in the src/ dir
CFLAGS += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR)
CFLAGS_MAKEDEP += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR) -I $(SCRIPT_SRC_DIR)
ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
@@ -57,7 +56,7 @@ ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
# For more information, please check:
# http://maillist.openttd.org/pipermail/devs/2007-April/000284.html
# http://maillist.openttd.org/pipermail/devs/2007-February/000248.html
GCC295_FIX=sed -r 's~^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;))(.*)$$~\1\2 \4\6\8\9~g'
GCC295_FIX=sed -r 's/^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;))(.*)$$/\1\2 \4\6\8\9/g'
# This 'sed' removes the 3rd '4' in the # lines of the -E output of
# gcc 2.95.3 and lower, as it should indicate that it is a C-linkage, but the
# compiler can't handle that information (just don't ask). So we remove it
@@ -65,7 +64,7 @@ GCC295_FIX=sed -r 's~^(\t*)(.*)( const )([A-Za-z0-9_ ]+(\[.*\]){2,})(( = \{)|(;)
# Furthermore gcc 2.95 has some trouble with protected and private when
# accessing the protected/private stuff of the enclosing class (or the
# super class of the enclosing class).
GCC295_FIX_2=sed -e 's~\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$~\1~g;s~private:~public:~g;s~protected:~public:~g'
GCC295_FIX_2=sed -e 's|\(^\# [0-9][0-9]* "[^"]*"[ 0-9]*\) 4$$|\1|g;s|private:|public:|g;s|protected:|public:|g'
# Check if we want to show what we are doing
ifdef VERBOSE
@@ -90,26 +89,38 @@ $(LANG_OBJS_DIR)/$(STRGEN):
$(LANG_OBJS_DIR)/table/strings.h: $(LANG_DIR)/english.txt $(LANG_OBJS_DIR)/$(STRGEN)
$(MAKE) -C $(LANG_OBJS_DIR) table/strings.h
# Always run version detection, so we always have an accurate modified
# flag
VERSIONS := $(shell AWK="$(AWK)" "$(ROOT_DIR)/findversion.sh")
MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ')
# Make the revision number
ifdef REVISION
# Use specified revision (which should be of the form "r000").
REV := $(REVISION)
REV_NR := $(shell echo $(REVISION) | sed "s~[^0-9]~~g")
REV_NR := $(shell echo $(REVISION) | sed "s/[^0-9]//g")
else
# Use autodetected revisions
REV := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ')
REV_NR := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ')
# Are we a SVN dir?
ifeq ($(shell if test -d $(SRC_DIR)/.svn; then echo 1; fi), 1)
# Find if the local source if modified
REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
# Find the revision like: rXXXX-branch
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branch/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
REV_NR := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^Last Changed Rev:/ { print $$4 }')
else
# Are we a git dir?
ifeq ($(shell if test -d $(SRC_DIR)/../.git; then echo 1; fi), 1)
# Find the revision like: gXXXXM-branch
REV := g$(shell if head=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`; then echo "$$head" | cut -c1-8; fi)$(shell if cd "$(SRC_DIR)/.." && git diff-index HEAD src | read dummy; then echo M; fi)$(shell git branch|grep '[*]' | sed 's/\* /-/;s/^-master$$//')
REV_NR := $(shell LC_ALL=C cd "$(SRC_DIR)/.." && git log --pretty=format:%s src | grep -m 1 "^(svn r[0-9]*)" | sed "s/.*(svn r\([0-9]*\)).*/\1/" )
else
# Are we a hg (Mercurial) dir?
ifeq ($(shell if test -d $(SRC_DIR)/../.hg; then echo 1; fi), 1)
# Find the revision like: hXXXXM-branch
REV := h$(shell if head=`LC_ALL=C hg tip 2>/dev/null`; then echo "$$head" | head -n 1 | cut -c19-26; fi)$(shell if hg status $(SRC_DIR) | grep -v '^?' | read dummy; then echo M; fi)$(shell hg branch | sed 's/^/-/;s/^-default$$//')
REV_NR := $(shell LC_ALL=C hg log -k "svn" -l 1 --template "{desc}\n" $(SRC_DIR) | grep -m 1 "^(svn r[0-9]*)" | sed "s/.*(svn r\([0-9]*\)).*/\1/" )
endif
endif
endif
endif
# Make sure we have something in REV and REV_NR
# Make sure we have something in REV
ifeq ($(REV),)
REV := norev000
endif
ifeq ($(REV_NR),)
REV_NR := 0
endif
@@ -121,7 +132,7 @@ RES := $(shell if [ "`cat $(CONFIG_CACHE_ENDIAN) 2>/dev/null`" != "$(ENDIAN_FORC
# If there is a change in the source-file-list, make sure we recheck the deps
RES := $(shell if [ "`cat $(CONFIG_CACHE_SOURCE) 2>/dev/null`" != "$(SRCS)" ]; then echo "$(SRCS)" > $(CONFIG_CACHE_SOURCE); fi )
# If there is a change in the revision, make sure we recompile rev.cpp
RES := $(shell if [ "`cat $(CONFIG_CACHE_VERSION) 2>/dev/null`" != "$(REV) $(MODIFIED)" ]; then echo "$(REV) $(MODIFIED)" > $(CONFIG_CACHE_VERSION); fi )
RES := $(shell if [ "`cat $(CONFIG_CACHE_VERSION) 2>/dev/null`" != "$(REV)" ]; then echo "$(REV)" > $(CONFIG_CACHE_VERSION); fi )
ifndef MAKEDEPEND
# The slow, but always correct, dep-check
@@ -143,15 +154,15 @@ endif
$(OBJS_C:%.o=%.d): %.d: $(SRC_DIR)/%.c $(FILE_DEP)
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.c=%.c)'
$(Q)$(CC_HOST) $(CC_CFLAGS) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@
$(Q)$(CC_HOST) $(CC_CFLAGS) $(CFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:%.d=%.o):#' > $@
$(OBJS_CPP:%.o=%.d): %.d: $(SRC_DIR)/%.cpp $(FILE_DEP)
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@
$(Q)$(CXX_HOST) $(CFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:%.d=%.o):#' > $@
$(OBJS_MM:%.o=%.d): %.d: $(SRC_DIR)/%.mm $(FILE_DEP)
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
$(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's~^$(@F:%.d=%.o):~$@ $(@:%.d=%.o):~' > $@
$(Q)$(CC_HOST) $(CFLAGS) -MM $< | sed 's#^$(@F:%.d=%.o):#$@ $(@:%.d=%.o):#' > $@
$(OBJS_RC:%.o=%.d): %.d: $(SRC_DIR)/%.rc $(FILE_DEP)
$(E) '$(STAGE) DEP $(<:$(SRC_DIR)/%.mm=%.mm)'
@@ -182,7 +193,7 @@ endif
# Convert x:/... paths to /x/... for mingw
ifeq ($(OS), MINGW)
@cat Makefile.dep.tmp | sed 's~\([a-zA-Z]\):\/~\/\1\/~g' > Makefile.dep.tmp.mingw
@cat Makefile.dep.tmp | sed 's@\([a-zA-Z]\):\/@\/\1\/@g' > Makefile.dep.tmp.mingw
@cp Makefile.dep.tmp.mingw Makefile.dep.tmp
@rm -f Makefile.dep.tmp.mingw
endif
@@ -195,7 +206,7 @@ endif
/:/ { \
left = NF - 1; \
for (n = 2; n <= NF; n++) { \
if (match($$n, "^$(ROOT_DIR)") == 0) { \
if (match($$n, "^$(SRC_DIR)") == 0) { \
$$n = ""; \
left--; \
} \
@@ -211,16 +222,16 @@ endif
{ \
print $$0 \
} \
' < Makefile.dep.tmp | sed 's~ *~ ~g;s~ $$~~' | $(SORT) > Makefile.dep
' < Makefile.dep.tmp | sed 's/ */ /g;s/ $$//' | $(SORT) > Makefile.dep
$(Q)rm -f Makefile.dep.tmp Makefile.dep.tmp.bak
endif
# Avoid problems with deps if a .h/.hpp/.hpp.sq file is deleted without the deps
# Avoid problems with deps if a .h/.hpp file is deleted without the deps
# being updated. Now the Makefile continues, the deps are recreated
# and all will be fine.
%.h %.hpp %.hpp.sq:
%.h %.hpp:
@true
@@ -261,10 +272,6 @@ else
endif
ifdef STRIP
$(Q)$(STRIP) $@
ifeq ($(OS), DOS)
$(E) '$(STAGE) Adding CWSDPMI stub to $@'
$(Q)$(ROOT_DIR)/os/dos/make_dos_binary_selfcontained.sh $(SRC_OBJS_DIR)/$@
endif
endif
# The targets to compile the endian-code
@@ -280,10 +287,10 @@ $(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
# Revision files
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s~@@REVISION@@~$(REV_NR)~g;s~@@VERSION@@~$(REV)~g;s~@@MODIFIED@@~$(MODIFIED)~g;s~@@DATE@@~`date +%d.%m.%y`~g" > $(SRC_DIR)/rev.cpp
$(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s#@@REVISION@@#$(REV_NR)#g;s#@@VERSION@@#$(REV)#g;s#@@DATE@@#`date +%d.%m.%y`#g" > $(SRC_DIR)/rev.cpp
$(SRC_DIR)/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/ottdres.rc.in
$(Q)cat $(SRC_DIR)/ottdres.rc.in | sed "s~@@REVISION@@~$(REV_NR)~g;s~@@VERSION@@~$(REV)~g;s~@@DATE@@~`date +%d.%m.%y`~g" > $(SRC_DIR)/ottdres.rc
$(Q)cat $(SRC_DIR)/ottdres.rc.in | sed "s#@@REVISION@@#$(REV_NR)#g;s#@@VERSION@@#$(REV)#g;s#@@DATE@@#`date +%d.%m.%y`#g" > $(SRC_DIR)/ottdres.rc
FORCE:

View File

@@ -1,69 +0,0 @@
#!/bin/sh
# $Id$
if ! [ -f ai/regression/regression.nut ]; then
echo "Make sure you are in the root of OpenTTD before starting this script."
exit 1
fi
cat ai/regression/regression.nut | tr ';' '\n' | awk '
/^function/ {
for (local in locals) {
delete locals[local]
}
if (match($0, "function Regression::Start") || match($0, "function Regression::Stop")) next
locals["this"] = "AIControllerSquirrel"
}
/local/ {
gsub(".*local", "local")
if (match($4, "^AI")) {
sub("\\(.*", "", $4)
locals[$2] = $4
}
}
/Valuate/ {
gsub(".*Valuate\\(", "")
gsub("\\).*", "")
gsub(",.*", "")
gsub("\\.", "::")
print $0
}
/\./ {
for (local in locals) {
if (match($0, local ".")) {
fname = substr($0, index($0, local "."))
sub("\\(.*", "", fname)
sub("\\.", "::", fname)
sub(local, locals[local], fname)
print fname
if (match(locals[local], "List")) {
sub(locals[local], "AIAbstractList", fname)
print fname
}
}
}
# We want to remove everything before the FIRST occurence of AI.
# If we do not remove any other occurences of AI from the string
# we will remove everything before the LAST occurence of AI, so
# do some little magic to make it work the way we want.
sub("AI", "AXXXXY")
gsub("AI", "AXXXXX")
sub(".*AXXXXY", "AI")
if (match($0, "^AI") && match($0, ".")) {
sub("\\(.*", "", $0)
sub("\\.", "::", $0)
print $0
}
}
' | sed 's/ //g' | sort | uniq > tmp.in_regression
grep 'DefSQ.*Method' ../src/ai/api/*.hpp.sq | grep -v 'AIError::' | grep -v 'AIAbstractList::Valuate' | grep -v '::GetClassName' | sed 's/^[^,]*, &//g;s/,[^,]*//g' | sort > tmp.in_api
diff -u tmp.in_regression tmp.in_api | grep -v '^+++' | grep '^+' | sed 's/^+//'
rm -f tmp.in_regression tmp.in_api

View File

@@ -1,17 +0,0 @@
[misc]
display_opt = SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|WAYPOINTS
language = english.lng
[gui]
autosave = off
[game_creation]
town_name = english
[ai_players]
none =
regression =
[vehicle]
road_side = right
plane_speed = 2

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +0,0 @@
/* $Id$ */
class Regression extends AIInfo {
function GetAuthor() { return "OpenTTD NoAI Developers Team"; }
function GetName() { return "Regression"; }
function GetShortName() { return "REGR"; }
function GetDescription() { return "This runs regression-tests on all commands. On the same map the result should always be the same."; }
function GetVersion() { return 1; }
function GetDate() { return "2007-03-18"; }
function CreateInstance() { return "Regression"; }
}
RegisterAI(Regression());

View File

@@ -1,4 +0,0 @@
/* $Id$ */
print(" Required this file");

View File

@@ -1,51 +0,0 @@
#!/bin/sh
# $Id$
if ! [ -f ai/regression/regression.nut ]; then
echo "Make sure you are in the root of OpenTTD before starting this script."
exit 1
fi
cp ai/regression/regression.nut ai/regression/main.nut
cp ai/regression/regression_info.nut ai/regression/info.nut
if [ -f scripts/game_start.scr ]; then
mv scripts/game_start.scr scripts/game_start.scr.regression
fi
params=""
gdb=""
if [ "$1" != "-r" ]; then
params="-snull -mnull -vnull:ticks=30000"
fi
if [ "$1" = "-g" ]; then
gdb="gdb --ex run --args "
fi
if [ -n "$gdb" ]; then
$gdb ./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav
else
./openttd -x -c ai/regression/regression.cfg $params -g ai/regression/regression.sav -d ai=2 2>&1 | awk '{ gsub("0x(\\(nil\\)|0+)", "0x00000000", $0); gsub("^dbg: \\[ai\\]", "", $0); gsub("^ ", "ERROR: ", $0); gsub("ERROR: \\[1\\] ", "", $0); gsub("\\[P\\] ", "", $0); print $0; }' > tmp.regression
fi
if [ -z "$gdb" ]; then
res="`diff -ub ai/regression/regression.txt tmp.regression`"
if [ -z "$res" ]; then
echo "Regression test passed!"
else
echo "Regression test failed! Difference:"
echo "$res"
fi
echo ""
echo "Regression test done"
fi
rm -f ai/regression/main.nut ai/regression/info.nut
if [ -f scripts/game_start.scr.regression ]; then
mv scripts/game_start.scr.regression scripts/game_start.scr
fi
if [ "$1" != "-k" ]; then
rm -f tmp.regression
fi

Binary file not shown.

Binary file not shown.

View File

@@ -1,31 +0,0 @@
; $Id$
;
; This represents the original graphics as on the non-German Transport
; Tycoon Deluxe DOS CD.
;
[metadata]
name = original_dos
shortname = TTDD
version = 1
description = Original Transport Tycoon Deluxe DOS edition graphics
palette = DOS
[files]
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = OPENTTDD.GRF
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
OPENTTDD.GRF = c886c7d5b38a93f2cb1cdc0d33472eb8
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTDD.GRF = This file was part of your installation.

View File

@@ -1,31 +0,0 @@
; $Id$
;
; This represents the original graphics as on the German Transport
; Tycoon Deluxe DOS CD. It contains one broken sprite.
;
[metadata]
name = original_dos_de
shortname = TTDD
version = 0
description = Original Transport Tycoon Deluxe DOS (German) edition graphics
palette = DOS
[files]
base = TRG1.GRF
logos = TRGI.GRF
arctic = TRGC.GRF
tropical = TRGH.GRF
toyland = TRGT.GRF
extra = OPENTTDD.GRF
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTDD.GRF = c886c7d5b38a93f2cb1cdc0d33472eb8
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTDD.GRF = This file was part of your installation.

View File

@@ -1,31 +0,0 @@
; $Id$
;
; This represents the original graphics as on the Transport
; Tycoon Deluxe for Windows.
;
[metadata]
name = original_windows
shortname = TTDW
version = 0
description = Original Transport Tycoon Deluxe Windows edition graphics
palette = Windows
[files]
base = TRG1R.GRF
logos = TRGIR.GRF
arctic = TRGCR.GRF
tropical = TRGHR.GRF
toyland = TRGTR.GRF
extra = OPENTTDW.GRF
[md5s]
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
OPENTTDW.GRF = b6689105405fa3ea34cb8a5543633d29
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTDW.GRF = This file was part of your installation.

View File

@@ -1,2 +0,0 @@
start_ai MyAI

View File

@@ -1,2 +0,0 @@
# Show a MOTD
say "Welcome..."

View File

@@ -10,8 +10,6 @@ local scripts:
should be used to set client optimization settings:
- 'on_client.scr' is executed when you join a server [all clients]
- 'on_server_connect.scr' is executed on the server when a client has joined (MOTD)
should be used to set the servers port/ip and/or server optimization settings/patches:
- 'pre_server.scr' is executed before the servers tcp stack is started [in-game only]
- 'pre_dedicated.scr' is executed before the servers tcp stack is started [dedicated only]

View File

@@ -1,584 +1,173 @@
0.7.0-beta1 (2009-02-16)
------------------------------------------------------------------------
- Feature: Make it possible to have multiple windows with edit box open simultaniously (r15424)
- Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues (r15389)
- Feature: Do not draw superfluous catenary wires [FS#1761] (r15347)
- Feature: Add option to group and subtotal expenses list in the company finance window (r15301)
- Feature: Allow moving clients between companies/spectators by the server and the clients themselves (r15242)
- Feature: Native support for Transport Tycoon (Original) savegames (r15216)
- Feature: Allow terraforming of the tiles at the edges of the map (r15190)
- Feature: [NewGRF] Allow a grf to customize house name via callback 0x14D, during Tile Inquiry process (r15172)
- Feature: Downloading content from a central server (content.openttd.org) where authors can upload their NewGRFS/AI etc. This should make joining servers that use only NewGRFs that are distributed via this system easier as the players can download the NewGRFs from within the game. It should also make it easier to see whether there are updates for NewGRFs and make the necessary updates (r15126)
- Feature: Add support for IP range bans using CIDR notation (r15094)
- Feature: An AI framework so people can write their own AIs. This also removes the old cheating and heavily broken AI (r15027)
- Feature: [NewGRF] Support var 0x45 (curvature info) also for road vehicles (r14945)
- Feature: [NewGRF] Automatically set last engine ageing year to the last 'introduction year plus half model life', to allow engines later than 2050 to appear (r14926)
- Feature: Distant joining of stations (r14919)
- Feature: Advanced setting to keep various building tools active, which are usually closed after placing an object (r14902)
- Feature: Remove the window limit, but leave a configurable limit on the number of non-sticky non-vital windows (r14899)
- Feature: Allow road vehicles to move multiple steps in a tick (code based on train movement code) and add support for RV prop 15. This gives RVs a maximum speed of 318mph instead 79mph. This only implements higher speeds, not 'realistic acceleration' (r14869)
- Feature: Automatic reversing in front of block signals can now be disabled by setting pf.wait_oneway_signal respectively pf.wait_twoway_signal to 255 (r14852)
- Feature: Few (optional) optimisations to making (initial) orders; like keeping goto selected [FS#1984] (r14827)
- Feature: Make the road grids of town match, when all are using the same road layout ofcourse [FS#2390] (r14821)
- Feature: Pressing CTRL while dragging to build a bridge builds the last built bridge type if possible [FS#2238] (r14805)
- Feature: Make the date format for default savegame/screenshot names configurable (r14792)
- Feature: Allow scrolling with the left mouse button pressed (if enabled). Primarily useful for systems with touch screen (r14789)
- Feature: Allow up to 15 companies (r14735)
- Feature: Allow up to 255 clients in multiplayer games (r14730)
- Feature: When the chosen language is not supported by the current font, try to find a font that does and use that instead (r14618)
- Feature: [NewGRF] Action0Industries property 24 (industry supplies default name for nearby station) (r14598)
- Feature: Non-destructive autofill with option to keep waiting times [FS#1124] (r14592)
- Feature: Stop-in-depot order; after this order you have to manually start the vehicle again (or sell it) (r14524)
- Feature: Arrow key scrolling in the server list (r14517)
- Feature: Initial support for handling bidirectional scripts and connecting Arabic characters (r14479)
- Feature: Allow sorting vehicles by remaining life time (r14352)
- Feature: Ability to reset name to default/automatic value (for vehicles, engines, towns, groups, stations, waypoints, managers and companies) (r14334)
- Feature: [NewGRF] Add Variational Action 2 Variable 0x47 for houses, Coordinates of the house tile (r14294)
- Feature: Allow overriding the palette of the base GRFs. This way you can play with NewGRFs made for the Windows palette with the DOS palettes base GRFs (and vice versa). Note that for this to work correctly ALL NewGRFs must use the same palette; mix and match is not yet supported (r14229)
- Feature: Double click to join selected server/company (r14209)
- Feature: Allow both the German as well as non-German toyland graphics as "correct" and official graphics (r14197)
- Feature: Allow people to create their own base graphics easily and without requiring code changes (r14197)
- Feature: [NewGRF]: Add support for property 0x13 for Bridges. In other words, one can now specifies a 16 bits cost multiplier (r14172)
- Feature: Make it possible to choose between the DOS and Windows graphics packs while retaining the possibility to override the palette (r14151)
- Feature: Increase the size of the console backlog. Now it'll only remove backlog items when there are more than a threshold and when they are there longer than (another) threshold (r14056)
- Feature: Make it possible to filter list_patches output like it's done for other list_* console commands (r14041)
- Feature: Path based signalling (r13926-13967)
- Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle (r13923)
- Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file (r13781)
- Feature: Add a few extra columns with information to the server list (r13732)
- Feature: [NewGRF] Add var 65 in Variational Action 2 Variables for Houses (r13603)
- Feature: [NewGRF] Implement var 63, variational action2 variable for Houses. Or, in more simple terms, the check for the animation frame of nearby house (r13519)
- Feature: Aqueducts (r13464)
- Feature: [NewGRF] Add var 0x69 for industries, long format construction date (r13443)
- Feature: [NewGRF] Add long format introduction and maximum construction year for house (r13437)
- Feature: [NewGRF] Add access to current long year and date from Action 7/9/D and VarAction2 (23/24 or A3/A4), and add access to (long format) building year, in Variational Action2 Variable 49 for Vehicles (r13376)
- Feature: Splitting of the main toolbar when the resolution becomes very low so the buttons are still visible and useable (r13339)
- Feature: Make news messages use a linked list instead of a moving circular buffer. This makes it possible to store more news messages in the history (r13317)
- Feature: The number of news messages is reduced by removing every news message that is a configurable amount older than when it would not be shown in the newspaper popup/ticker, which is e.g. a month for industry production changes and half a year for subsidy offers. As a result the more important messages will stay longer in the message history (if longer than 30 messages) (r13317)
- Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is (13226)
- Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist (r12924)
- Feature: [NewGRF] The ability to play NewGRF sounds for industries and stations (r12817)
- Feature: [NewGRF] Add some support for NewGRF station animation (r12798)
- Feature: Sorting vehicle lists by road vehicle/train length (r12766)
- Feature: Conditional 'skip/jump' orders (r12667)
- Feature: Ability to send a vehicle (using default orders) to the nearest depot (r12661)
- Feature: Ability to force a vehicle to not load or to not unload at a station (r12650)
- Feature: Four different non-stop types, individually selectable per order. Replaces "TTDP compatible order" setting (r12648)
- Feature: Three different load type in a single game instead of two. One can choose full load all and full load any instead of full load being governed by the "full load any" patch setting (r12648)
- Feature: Financial and Player Selection Face windows are now remembering their position when toggling sizes (r12634)
- Feature: Show what cargos a station could be supplied with (r12596)
- Feature: [NewGRF] Add random action 2 type 84. For vehicles only (r12452)
- Feature: [NewGRF] Add support for var A2/22 for action 7/9/D: Difficulty level (r12449)
- Feature: Add +/- toggle buttons to station cargo waiting list to show/hide the detailed transferred cargo information (r12446)
- Feature: Open the time table when pressing the order button while pressing the CTRL key (r12441)
- Feature: On Screen Keyboard for input fields so someone without a keyboard can enter text too [FS#1846] (r12425)
- Change: When checking for unique names, compare only with manually set names [FS#1923] (r14958)
- Change: Apply the 'warn if train's income is negative' setting to other vehicle types, too (r14835)
- Change: When loading games in "network" mode use the start date of the save game for the server and all clients when loading the NewGRFs instead of the current date. Prevents desyncs caused by action 7/9s skipping parts of the GRF based on the date or some other variables that can differ at NewGRF load time (r14769)
- Change: Only say a engine/vehicle is refittable when it can be refitted to at least two cargo type or when it has subcargos (r14683)
- Change: [NewGRF] Since our NewGRF handling is better than it used to be, disable a NewGRF if unexpected sprites are reached (r14184)
- Fix: A town could build a statue under a bridge [FS#2618] (r15397)
- Fix: Multiple vehicles could be filling the timetable and only the data from one vehicle would be taken. Now only allow one to be filling at a time [FS#2466] (r15382)
- Fix: When testing for parallel road two tiles away, do not move more than one tile along the road (r15381)
- Fix: [NewGRF] The subcargo returned by vehicle variable 0x42 should be the most-common-subcargo of the most-common-cargo. If nothing is transported 0x..FFFF00 should be returned (r15378)
- Fix: A tram circling around in a depot did never actually 'enter' the depot [FS#2605] (r15375)
- Fix: Changing town road layout in-game caused ugly road networks [FS#2121] (r15340)
- Fix: Company could never have auto-assigned colour 0 (dark blue) (r15281)
- Fix: Deadlock (with wide fonts) or desync when generating manager name (r15279)
- Fix: Close all windows *before* starting a new game/loading a game instead of doing that as one of the latest steps of loading the game. This caused, in some cases, the NewGRF settings to be reset when the game was already loaded resulting in instant desyncs when joining a network game [FS#2577] (r15256)
- Fix: Aircraft could be 'loading in the air' or have zero speed while in air after converting old savegames [FS#2571] (r15230, r15227)
- Fix: Tile error location not reset when leveling land causing a tile to be highlighted when there was nothing to flatten [FS#2542] (r15138)
- Fix: Signs with sign 'Sign' were lost when converting from TTD savegames (r15137)
- Fix: [NewGRF] Add support for 8 byte action7/9 data, used as a mask for GRFID checks (r15114)
- Fix: [NewGRF] Keep industry variables 8E and 8F in sync with 93, when changing production using results 0D, 0E or 0F of callback 29 or 35 (r15103)
- Fix: [NewGRF] Disable a NewGRF from loading if it contains multiple Action 8s (r14979)
- Fix: Wrong defaults for service interval when switching between service interval in days and service interval in percentages [FS#2508] (r14959)
- Fix: [NewGRF] Building new station parts did not allocate a new station spec effectively breaking variable 41. This was due to the limited number of station specs that we can have per station. This fix makes newly build station parts create a new spec until one cannot allocate new station specs anymore and it'll revert to the old behaviour (sharing station specs) [FS#1832] (r14956)
- Fix: [NewGRF] Station specs did not get deallocated when building a new station part over them (r14955)
- Fix: Sharing/cloning/inserting of orders that the/a vehicle (in the shared list) cannot go to (wrong station type etc) [FS#1890] (r14954)
- Fix: The "animation state" of the bubbles was stored in a variable that was not stored in the savegame. Using a variable that gets saved in the savegame solves the desync and makes it a bit clearer [FS#2512] (r14931)
- Fix: Abort dragging of vehicles in the group window when they are deleted [FS#2500] (r14925)
- Fix: Do not unnecessarily reset the cursor, when a different vehicle is dragged (r14924)
- Fix: [NewGRF] First create all articulated parts of roadvehicles, then call callback 36 capacity, also call it for all articulated parts (r14903)
- Fix: Overflow of number of orders per vehicle [FS#2495] (r14830)
- Fix: Off-by-one causing possible out-of-bounds reads (r14811)
- Fix: In an MP game in SP mode no company would go bankrupt. Furthermore companies that passed the "bankrupt" period (4 quarters) would not go bankrupt when loading the game back in MP. Now any company that is in MP or not "currently controlled by the player" in SP will bankrupt [FS#1993] (r14750)
- Fix: Do not let any disaster vehicle (Helicopter or Airplane) target invalid industry (r14746)
- Fix: Memory leak in Action 0x0F (new town names) (r14737)
- Fix: Writing a single char to the config file caused reading outside a buffer (r14729)
- Fix: First transfer the whole load of a vehicle chain to industries before triggering any processing. This reduces callback usage and resolves critical rounding errors when using input-cargo-multipliers instead of production callbacks [FS#2460] (r14705)
- Fix: Zeppeliner (disaster) should target st->airport_tile, not st->xy (r14694)
- Fix: [NewGRF] Gradual filling graphics were not chosen according to the NewGRF spec [FS#2435] (r14678)
- Fix: [NewGRF] Check sprite size when executing action 6 (r14674)
- Fix: [NewGRF] Property 7 and callback 12 were broken for aircraft. Now callback 12 is properly called also for 'mail'. If the callback is not used, 'mail' uses 1/4 of property 7 (rounded up) [FS#2444] (r14672)
- Fix: Possible stack corruption when reading corrupted sprites [FS#2415] (r14610)
- Fix: [NewGRF] Return the current year as construction year for unfinished houses (r14608)
- Fix: [NewGRF] When callback 1E fails, use the standard random colour (r14605)
- Fix: The company ID is off-by-one with respect to the rest of the GUI in the cheat window [FS#2422] (r14603)
- Fix: The range for kicking/banning clients is based on the maximum number of clients, not the maximum number of companies [FS#2414] (r14588)
- Fix: Allow capacity callbacks (15, 36) to return zero capacity (r14578)
- Fix: Crashes when a NewGRF sends an invalid string [FS#2395] (r14563)
- Fix: Order pool seemed to look full when it was not as it only checked whether it was possible to allocate a new block of pool items instead of checking for free pool items (r14547)
- Fix: Do not deliver cargo to industries not inside station catchment area [FS#2138] (r14530)
- Fix: Allocate stub (empty) sound entries when loading an empty/corrupt/incorrectly sized sample.cat instead of making valid NewGRFs fail to load (r14527)
- Fix: Make sure trains stop at the end of a station; a 3/8th length train did stop 2/8th of it's length too early causing a 63/8th long train not to fit in a 4 tile station [FS#2379] (r14526)
- Fix: Small possible chance of desync due to sorting on pointer instead of by (station) index [FS#2348] (r14463)
- Fix: When a road stop gets moved make sure to update the destination of RVs going to that road stop [FS#2330] (r14446)
- Fix: Support for spaces in directories passed to ./configure [FS#1802] (r14440)
- Fix: Trains would sometimes move one time too often/little when moving from diagonal<->non-diagonal tracks [FS#1793] (r14436)
- Fix: Balance the monthly random industry changes, by introducing a daily random industry change [FS#1885] (r14332)
- Fix: Save the palette of the loaded NewGRFs in the savegame, so joining with a server using Windows palette will make a client with the DOS palette do palette conversion and (thus) not cause a desync (r14233)
- Fix: Glitches (alignment issues/inconsistent vehicle graphics) in original graphics (r14214, r14211)
- Fix: One could not get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though [FS#2085] (r14097)
- Fix: Various assorted autoreplace issues/malbehaviours [FS#1264, FS#2037, FS#2038, FS#2110] (r14083)
- Fix: The autoreplace gui showed vehicle types for replacement which CmdSetAutoReplace() did not accept (r14037)
- Fix: Automatically recalculate inflation if NewGRFs are changed and cargo types are added, so that cargo payment rates are correct [FS#2074] (r13836)
0.6.3 (2008-10-01)
------------------------------------------------------------------------
- Fix: NewGRF VarAction 2 variable 43 for industries saw MP_VOID tiles as land tiles and was inefficient (r14417, r14416, r14415)
- Fix: Possible buffer overrun/wrong parameter type passed to printf (r14414, r14397)
- Fix: Generation seed set using -G was always overwritten by -g (r14408)
- Fix: Do not allow extending signals by dragging in any direction other than the track direction [FS#2202] (r14013)
0.6.3-RC1 (2008-09-22)
------------------------------------------------------------------------
- Fix: Invalid v->u.air.targetairport could cause crashes at several places [FS#2300] (r14383, r14344, r14343)
- Fix: Moving the first vehicle of a train elsewhere might require a new unitnumber for the remaining chain which might not be available (r14384)
- Fix: Trams jumping when reversing on a single trambit (like caused during road construction reworks) or when (manually) reversing in a corner [FS#1852] (r14371)
- Fix: Multiheaded parts in free wagon chains weren't connected (could cause desyncs) (r14366, r14362)
- Fix: [Win32] Some keypress combinations could be handled twice [FS#2206] (r14363)
- Fix: The ownership of roadtiles was not properly set for very old savegames (including TTD's) making it impossible to remove some pieces of road [FS#2311] (r14359)
- Fix: Desync due to randomly ordered vehicle hash by flooding and road vehicle overtake/following (r14356, r14258)
- Fix: Signs were not updated on company bankrupcy/sell, and thus could have the colour of invalid player (r14348)
- Fix: Delete the RenameSignWindow when 'its' sign is deleted (r14345)
- Fix: Signs from old savegames were lost (causing little memory leaks) (r14340)
- Fix: When a company was renamed and then manager was renamed before building anything, company name changed (r14328)
- Fix: When you rename a town before building something and build something near that town your company would be called "<old townname> Transport" [FS#2251] (r14327)
- Fix: Free any blocks that a helicopter may have on an oilrig when the helicopter gets forcefully removed (bankruptcy). For other airports this isn't needed as they can't be used by multiple companies [FS#2241] (r14324)
- Fix: Possible assert when renaming removed waypoint (r14322)
- Fix: Properly delete orders so the pool doesn't fill up (r14319)
- Fix: Do not allow building road over level crossings and drive-through road stops in the wrong direction; do not allow adding roadtypes to non-drive through road stops; pay for all added road bits [FS#2268] (r14316, r14315, r14314, r14308)
- Fix: Aircraft frozen above oil rig when the next order is invalid [FS#2244] (r14309)
- Fix: [YAPF] Only reserve road slots for multistop when they are really reachable [FS#2294] (r14305)
- Fix: One could be trying to get the station name of a station that is outside of the pool (r14297)
- Fix: Default for sound effects and music volume should be in the valid range for that setting [FS#2286] (r14289)
- Fix: Make small UFO aware of articulated RVs so they crash the complete vehicle instead of a small part of it (r14270)
- Fix: Desyncs after deleting a waypoint because of explicit destructor call instead of using operator delete (r14265)
- Fix: Merge keycode for "normal" 0-9 keys and keypad 0-9 keys so people do not get confused that the keypad does not work as expected [FS#2277] (r14260)
- Fix: Clicking on the smallmap didn't break the "follow vehicle in main viewport" [FS#2269] (r14243)
- Fix: The engine-purchase-list-sorter doubled running-cost and halfed capacity of double-headed engines [FS#2267] (r14239)
- Fix: Feeder share was computed wrong when splitting cargo packet (r14234)
- Fix: Signs (town name, station name, ...) could be too long for 8bit width in pixels (r14221)
- Fix: 10 days != 6*2.5 days, effectively causing the payment graph to show the wrong data (r14219)
- Fix: When determining length of a string with limited size, first check if we are not out of bounds already (r14204)
- Fix: Properly update the current timetable's travel/wait times instead of only doing it for one vehicle in the shared order chain and only when some bit has not been set [FS#2236] (r14192)
- Fix: Sprite payload skipping would not skip enough bytes in a very small subset of compressed sprites (r14191)
- Fix: After applying NewGRF settings, all rail and road types were available as the engine availability check was performed too early (r14182)
- Fix: Close all related vehicle lists when closing a station window (and not only the train list) (r14180)
- Fix: RemoveOrderFromAllVehicles() did not mark enough windows dirty (r14179)
- Fix: Incorrect cargo weights (r14144)
- Fix: GetSlopeZ() gets a virtual coordinate, not a tile (r14139)
- Fix: Close the 'manage vehicles' dropdown once the number of vehicles in the list reaches 0 [FS#2249] (r14133)
- Fix: [strgen] Changing order of parameters {X:...} did not work for strings including some {StringY} (r14111)
- Fix: Desync due to bubbles in toyland (r14110)
- Fix: Make NewGRF action 0x06's changes persistent over the several loading stages [FS#1986] (r14102)
- Fix: Make the 'Transfer Credit' display aware of the entire consist, not only the first vehicle (r14098)
- Fix: Do not flood a NewGRF industry when it implicitly tells that it wants to be build on water (land shape flags bit 5) [FS#2230] (r14093)
- Fix: The vehicle window of articulated road vehicles would show the clone/refit button when the vehicle was not completely stopped in the depot (r14090)
- Fix: Flawed parsing of words (as in 2 bytes) in GRF strings due to sign extension [FS#2228] (r14087)
- Fix: Division by 0 in NewAI [FS#2226] (r14062)
- Fix: NewGRF callback 23 did not use the NewGRF compatible text stack [FS#2224] (r14058)
- Fix: NewGRF text stack's "push word" didn't move the data around properly (r14057)
- Fix: Long strings in the edit box would cause OpenTTD to stop drawing the string. This is especially noticable with low resolutions and the chat input box (r14054)
- Fix: [OSX] changed the condition for selecting 8 or 32 bpp blitter by default. Now we will pick 32 bpp if no 8 bpp fullscreen resolutions are available on the main display (the one with the dock) (r14032)
- Fix: Crash when the AI tries to find the depot of an airport that doesn't have a depot [FS#2190] (r13999)
- Fix: MSVC cannot handle changed files in the prebuild event, so make the version determination a separate subproject [FS#2004] (r13998)
- Fix: The dedicated console removed any character that was not a printable ASCII character instead. Now it allows UTF8 formated strings too [FS#2189] (r13992)
- Fix: Resetting construction stage counter reset more than it should (r13981)
- Fix: Wrong tooltip for the industry directory's list [FS#2178] (r13917)
0.6.2 (2008-08-01)
------------------------------------------------------------------------
- Fix: Custom vehicle names from TTD(Patch) games were lost (r13884)
- Fix: NewGRF Callback 10 (visual effect and powered wagons setting) and powered wagons operation were not performed for articulated wagons [FS#2167] (r13870)
- Fix: In some cases the sprite cache could be filled with unremovable items [FS#2153] (r13869)
- Fix: Return of wrong parent scope of (NewGRF) industry variables (r13868)
- Fix: Loading of TTD(Patch) savegames from the command line did not work (r13859)
- Fix: Buffer overflow for too long filename supplied as '-g' parameter (r13858)
- Fix: Cargo type lookup was incorrect for NewGRF version 7 files without a translation table [FS#2157] (r13855)
- Fix: GetTownByTile() is only valid for houses and roads (r13851)
- Fix: Power, running cost and capacity of multiheaded engines were (too often) doubled in newspaper resp. offer window (r13844)
- Fix: FreeType may return a bitmap glyph even if a grey-scale glyph was requested [FS#2152] (r13832)
0.6.2-RC2 (2008-07-25)
------------------------------------------------------------------------
- Fix: Building through the wrong side of a drive through station was allowed [FS#2166] (r13822)
- Fix: Check for vehicle length changes outside a depot (callback 0x11) and give a warning about that [FS#2150] (r13816)
- Fix: Several minor memory leaks. They only happened once per game (r13809, 13810)
- Fix: Checking for train waiting at other side of two-way signal was broken [FS#2162] (r13806)
- Fix: Some revision checking code was unintentionally disabled (r13776)
- Fix: Enforce the validity of a NetworkAction (chat packet) issued by a client (r13775)
- Fix: Selecting non-full length vehicles in the depot gui would place the "mouse pointer" out of the center of the vehicle making it hard to "aim" [FS#2147] (r13759)
- Fix: NewGRF rail continuation would always mark a tunnel on the same axis as connected, even when the tunnel faces the wrong direction (r13734)
- Fix: Assumption that non-north tiles of a house do not have the 1x1 building bit set was flawed with some NewGRFs. This caused the amount of houses to differ, which causes the town radii to differ, which causes desyncs when towns are expanded (r13729)
- Fix: Possible desync on the autorenew settings 20+ game years (i.e. 4.5+ hours) after a company was started (r13718)
- Fix: Any player could construct new companies [FS#2144] (r13716)
- Fix: Remove the unique_id from the message that a client has joined as it is only exposes the unique_id more than needed (r13714)
- Fix: Possible crash on creating a network packet (r13713)
- Fix: Enforce the length restrictions of company and president name in the commands too (r13712)
0.6.2-RC1 (2008-07-16)
------------------------------------------------------------------------
- Fix: Possible buffer overflow in string truncation code (r13700)
- Fix: Handle SETX(Y) properly when truncating a string instead of ignoring it and returning a too long string (r13699)
- Fix: In some cases the (sound) mixer could overflow causing artefacts in the sound [FS#2120] (r13695)
- Fix: Do not rely on .tar files always ending with a block of zeros (r13693)
- Fix: Make sure a command is ran in the context of autoreplace or not (r13691)
- Fix: In the case that elrails and 'realistic' acceleration are disabled all electrified engines would have no power on load, until the vehicle got turned around, loaded or got into a depot [FS#2102]- Fix: Saving TTD imported games in recession failed due to wrong (and unneeded) type conversions in the saveload code [FS#2131] (r13679)
- Fix: Inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such [FS#2126] (r13676)
- Fix: Memory leak when NewGRFs got forcefully disabled and they defined GOTO labels (r13675)
- Fix: Crash when drawing a non-real sprite caused by NewGRF interference [FS#2127] (r13674)
- Fix: Desync when building electrified trains on a dedicated server that was started with electrification disabled [FS#2122] (r13673)
- Fix: Bus/truck forgetting go-to-depot order when entering a non-drivethrough road stop [FS#2117] (r13664)
- Fix: Server crashing when banning the rconning client (r13661)
- Fix: Signals were not updated correctly when a player removed a non-existing track piece (r13626)
- Fix: Crash when one tries to raise the nothern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor [FS#2106] (r13624)
- Fix: Only the front of a RV would be considered when determining to what cargos a vehicle can be refitted instead of all cargos [FS#2109] (r13622)
- Fix: If the first bridge can not be build for a given length, then none of the other bridges can. Effectively meaning that if someone replaces the first bridge with a bridge that can be only 3 tiles longs then only other bridges that can be 3 tiles long will be buildable, but only if they are 3 tiles long [FS#2100] (r13611)
- Fix: Signal states could be propagated through waypoints built in orthogonal axis (r13589)
- Fix: [OSX] 10.5 failed to switch to fullscreen (r13584)
- Fix: RVs continueing onto next DT station when they are build adjacent to them [FS#2040] (r13581)
- Fix: Disable static NewGRFs when non-static NewGRFs query them in the context of network games. This makes it impossible for static NewGRFs to disable non-static NewGRFs and 'bad' things happening because the non-static NewGRF doesn't know about the static NewGRF (r13576)
- Fix: Properly count number of non-north housetiles [FS#2083] (r13518)
- Fix: Incorrect usage of strtoul (r13508)
- Fix: Clear the memory for the new AI during the loading of a savegame so it does not try to execute commands generated in a different savegame, which could be resulting in the AI trying to give orders to stations that do not exist (r13505)
- Fix: Drawing of zoomed out partial sprites could cause deadlocks or crashes (r13502)
- Fix: First determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good (r13489)
- Fix: Track was not removed on company bankrupcy when there was a ship on lower halftile (r13488)
- Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485)
- Fix: Division by zero when one would press 'd' (skip order) when there's no order (r13409)
- Fix: Do not crash when resolving vehicle sprite groups with zero sprites (r13397)
- Fix: In the purchase list, CB36 for capacity was not called for the first part of rail and road vehicles (r13385)
- Fix: Loading of very old OpenTTD savegames was broken (r13373)
0.6.1 (2008-06-01)
------------------------------------------------------------------------
- Fix: Industry tiles would sometimes tell they need a 'level' slope when they do not want the slope (r13348)
- Fix: Attempts to make the old AI perform better (r13217, r13221, r13222)
0.6.1-RC2 (2008-05-21)
------------------------------------------------------------------------
- Fix: Do not send rcon commands of the server to the first client but do directly execute those on the server (r13137)
- Fix: For multiheaded engines, halve power and running cost when used instead of when loading, to allow callback values to work properly (r13074)
- Fix: Loading of TTDP savegames with rivers in them [FS#2005] (r13066)
- Fix: Update build industry window when raw_industry_construction setting is modified (r13060)
- Fix: Revert changes to multihead engine weight -- the original values were correct (r13023)
- Fix: Debugging was not possible with MSVC 2008 (r12996)
- Fix: List used for sorting GRFs was not freed (r12993)
- Fix: Default difficulty settings were different to TTD's original settings [FS#1977] (r12951)
- Fix: All vehicles would be available when an original scenario would be played [FS#1982] (r12948)
- Fix: Keep only first 15 bits for non failed callback results (r12947)
- Fix: Reading/modifying invalid data under some circumstances (r12943)
- Fix: Minor errors related to industries accepted/produced cargo (r12933)
- Fix: Town rating was affected even after the test run (r12920)
- Fix: Flood road tiles even when there are road works in progress [FS#1965] (r12919)
- Fix: Do not initialize Station struct with tile=0, buoys will never change that value [FS#1960] (r12915)
- Fix: Game crash when a spectator/server tried to show an engine with no owner when a NewGRF requested a specific variable (r12914)
- Fix: Report reverse sprite status (FD/FE) to NewGRF for manually toggled vehicles (r12910)
- Fix: Vehicles going twice to a depot when the automatic service interfered with the current order [FS#1985] (r12629)
0.6.1-RC1 (2008-04-26)
------------------------------------------------------------------------
- Fix: Vehicle groups, engine replacement rules and player/company names were not properly reset/freed after bankrupt (r12906)
- Fix: Remove trams from savegames saved in OTTD without tram support, it is better than to simply crash [FS#1953] (r12904)
- Fix: GCC on FreeBSD does not support -dumpmachine causing configure to fail. Use g++ instead [FS#1928] (r12876)
- Fix: Make the town rating tests use less memory and much quicker (r12859)
- Fix: Usage of AutoPtr made (trying to) build stuff very (time) expensive (r12857, r12855)
- Fix: Ensure that prop 25 is set for all vehicles in the consist before other properties as it could cause desyncs (r12856)
- Fix: Too much catenary was drawn about tunnel entrances, middle bridge pieces and non-rail station tiles (r12853, r12852)
- Fix: Use YAPF for fairly old savegames from before YAPF was introduced (r12845)
- Fix: The industry tick trigger should only be triggered once every 256 ticks, not every tick... Also bail out of the triggers a little earlier if you know they are not going to happen anyway (r12844)
- Fix: Inconsistent use of 8/15-bitness of NewGRF callback results with respect to TTDP's implementation of the specification (r12819, r12818, r12759)
- Fix: Possible out of bounds array access (r12809)
- Fix: Enforce autorenew values range in command (r12808)
- Fix: Vehicles could break down during loading and keep loading. The intention of the break down code is not to break down when having zero speed, therefor break downs now do not happen when loading [FS#1938] (r12795)
- Fix: [OSX] In some rare cases when using an uncalibrated monitor the system colour space could not be retrieved. Show an error when this happens instead of just trying an assertion (r12776)
- Fix: Slope checking for NewGRFs failed (r12759)
- Fix: Check the TILE_NOT_SLOPED flag of the _north_ tile of multi-tile houses to decide if autoslope is allowed (r12717)
- Fix: Do not move windows below the toolbar on resizes unless they would go behind the toolbar [FS#1904] (r12714)
- Fix: Increase default sound buffer size only for Vista [FS#1914] (r12708)
- Fix: Do not crash very hard on unrecognised savegames, just go back to the intro menu instead (r12707)
- Fix: In some cases a news messages would not be shown [FS#1906] (r12683)
- Fix: Removing road pieces from a town gave you twice the intended penalty [FS#1920] (r12682)
- Fix: When a road vehicle has a tram only stop multiple times in a row in it's orders, only the first one would be skipped [FS#1918] (r12678)
- Fix: Colour remaps on station sprites only worked for company colours [FS#1902] (r12674)
- Fix: Remove buggy buoys at tile 0 from old TTDP savegames (r12642)
- Fix: Possible NULL pointer dereference when reading some NewGRF data [FS#1913] (r12637)
- Fix: Infinite loop in case your compiler decides that enums are unsigned by default (r12622)
- Fix: The convert signal button disallowed signal dragging when the signal GUI was closed (r12577)
- Fix: Binding to a specific IP could cause OpenTTD to not register properly with the masterserver if one has multiple external interfaces (r12574)
- Fix: min() has 32bit arguments, clamping of 64bit values did not work (r12572)
- Fix: Towns could not terraform when inflation rised terraform prices enough (r12564)
- Fix: Do not affect town rating change by the order in which we examine stations (r12561)
- Fix: Redraw the signal GUI when the signal drag density changes in the patch settings and vice versa (r12553)
- Fix: Do not install scenarios into the current user's homedir when running 'make install', that is silly. Simply always install scenarios system wide instead (r12542)
0.6.0 (2008-04-01)
------------------------------------------------------------------------
- Fix: Final formatting of some string codes from NewGRFs was not done correctly [FS#1889] (r12488)
- Fix: Timetable times for aircraft were always doubled [FS#1883] (r12477)
- Fix: Remove broken endian-dependent code and unnecessary rgb to bgr swapping [FS#1880] (r12453)
- Fix: Do not 'disable' the drawing of autorail overlays when the tile is 'error'-marked (red pulsating selection) [FS#1871] (r12439)
- Fix: Plural rule for Icelandic was wrong (r12417)
0.6.0-RC1 (2008-03-26)
------------------------------------------------------------------------
- Feature: Show whether a town is a "city" in the town description title bar (r12391)
- Feature: Increase house animation frame number from 32 to 128 (r12347)
- Fix: Loading of TTD savegames (r12399, r12401)
- Fix: Vehicle lists related to stations not closed when the station is deleted [FS#1872] (r12393)
- Fix: Trams failing to turn on bridge heads/tunnel entrances [FS#1851] (r123890)
- Fix: Train could break apart when reversed while partially in a depot [FS#1841] (r12386, r12384)
- Fix: Non-breaking spaces should not be broken (r12385)
- Fix: Check return of AfterLoadGame for success or failure when loading TTD games [FS#1860] (r12383)
- Fix: Use 'items' unit for batteries, fizzy drinks, toys and bubbles in total cargo tab [FS#1864] (r12382)
- Fix: The number of houses wasn't computed right [FS#1835, FS#1535] (r12381)
- Fix: Update train acceleration and max speed after setting cached value to ensure the correct max speed is used with disabled real acceleration (r12380)
- Fix: Refresh vehicle details window when cached values are updated (r12378)
- Fix: Set cached value for vehicle property 25 before other cached values [FS#1854] (r12377)
- Fix: Don't close a dropmenu when clicking on a dropdown widget (r12374)
- Fix: win32 music driver fails if path is too long or if containing non-latin chars [FS#1849] (r12373, r12372)
- Fix: Do not let window hide behind the main toolbar after resizing the screen [FS#1823] (r12371)
- Fix: Close language drop down when parent window is clicked/closed [FS#1853] (r12370)
- Fix: Reset train speed limits when _patches.realistic_acceleration changes (r12369)
- Fix: Commands were sent to clients waiting for map download causing 'executing command from the past' error [FS#1650] (r12367)
- Fix: Do not allow building 'zero' road bits (r12363)
- Fix: Randomize variable 8F only once per callback 28 (r12362)
- Fix: openttdd.grf was using the wrong colours for glyphs due to a grfcodec bug (fixed in grfcodec 0.9.10 r1837) (r12360)
- Fix: Some callback-results were treated as 8 bit, when they were 15 bit, and vice versa (r12352, r12358)
- Fix: Do not try to flood water tile [FS#1836] (r12350)
- Fix: NTP skipped junction just after bridge end (r12348)
- Fix: Remove duplicated and inconsistent code wrt. autoreplace with rules in both vehicles' group and ALL_GROUP [FS#1748, FS#1825] (r12346)
- Fix: Don't try to restore backupped timetable when timetabling is disabled [FS#1828] (r12345)
- Fix: Slow helicopters never got the 'chance' to finish the landing routine (r12343)
- Fix: GRM buffer for cargos was incorrect size [FS#1827] (r12341)
- Fix: Recalculate cached train data after clearing reversing flag when entering depot (r12339)
0.6.0-beta5 (2008-03-04)
------------------------------------------------------------------------
- Feature: Vehicle variable FE bit 5, 6 and 8 [FS#1812] (r12331, r12330)
- Feature: Support loading full range of 0xD0xx NewGRF strings which includes 0xD000 to 0xD3FF (r12316)
- Feature: Ability to change aircraft speed factor, from so called 'realistic' (matching other vehicles) (1/1) to original TTD speed (1/4) (r12293, r12294)
- Change: Update readme about where openttd looks for files (r12321)
- Fix: Don't pause/unpause the game when showing load/save windows when the game is paused due to missing GRFs [FS#1733] (r12336)
- Fix: Disallow building level crossings over one-way roads as this allowed competitors to remove the one-way state [FS#1819] (r12329)
- Fix: Wrong Y pillar specified for girder with arch bridge (r12328)
- Fix: Vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated (r12324)
- Fix: Vehicle sorting by name was broken, it was comparing the same string (when caching was not used) [FS#1821] (r12323)
- Fix: Endian issue when saving/loading group owner (r12322)
- Fix: Wrong transparency options could be saved after toggling all [FS#1817] (r12320)
- Fix: Map string IDs that are embedded from other strings [FS#1815] (r12317)
- Fix: Include prop 25 data for all train parts, not just those that carry cargo (r12314)
- Fix: YAPF and NTP did not apply penalty for uphill tracks on steep slopes (r12313)
- Fix: Restore timetable from backupped orders and add group ID to the backup [FS#1549] (r12296)
- Fix: Do not draw trees nor lamps between tram tracks (r12290) [FS#1807]
- Fix: [Win32] Do not create save dir on install (r12269)
- Fix: Autoreplace did not update vehicle index for timetable window [FS#1805] (r12261)
- Fix: GetProductionAroundTiles() may fail if only the second production slot exists (r12258)
- Fix: Town variables 0x9E to 0xAD (company ratings) returned wrong values (r12247)
- Fix: Typo resulting in no players are given the engine preview offer (r12244)
- Fix: Mac OSX bundle display name should be 'OpenTTD' [FS#1798] (r12234)
- Fix: [NewGRF] Support using any base price for rail and road vehicles' running cost, show running cost of wagons if available (r12209)
- Fix: When loading a savegame fails, do not start creating a new game, just go straight back to the intro screen (r12202)
- Fix: Force AI to build rail or road instead of bridges if possible, so it doesn't build bridges everywhere (r12200)
- Fix: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
- Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
- Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195)
- Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191)
- Fix: Assert when trying to play tile sound at NW border of map (placing buyos, leveling land) [FS#1784] (r12186)
- Fix: Take into account possible loan when AI is deciding which bridge to build, so it won't build wooden bridges everytime (r12184)
0.6.0-beta4 (2008-02-18)
------------------------------------------------------------------------
- Feature: Allow buttons to resize in NewGRF settings window (r12172)
- Feature: Change colour of autorail and autoroad selection when Ctrl is pressed (r12167)
- Feature: Separate catenary transparency settings from building transparency settings (r12103)
- Feature: Allow locking individual transparency settings so they will not be changed by pressing 'x' (r12102)
- Feature: Add some missing VarAction2 variables (r12124)
- Feature: Make snow appear on rail tiles dependant on track height, not on height of the lowest part of the tile (r12098)
- Feature: [NewGRF] Specify the purchase, rail and road description of a bridge (r12069)
- Feature: [NewGRF] Add support for var 12, Variational Action 2 (r12045)
- Feature: Allow trees on shore (r12029)
- Feature: Invisible trees are now separate from the building concept (r12022)
- Feature: Add support for passenger engine designation for AI-use, NewGRF property 0x08 for trains (r12019)
- Feature: Show all cargo sources (en-route from) in the station view cargo waiting list instead of just one (r11990)
- Feature: [NewGRF] Resizable industry view window on callback 3A (r11987)
- Feature: [NewGRF] Implement var 8F (random bits) during callback 28 [FS#1697] (r11985)
- Feature: [NewGRF] Add support for Action 0D, var 13: informations about current map size (r11961)
- Feature: Support Action5 type 0D (newwater) (r11947)
- Feature: Allow building bridge heads on more slopes (r11937)
- Feature: [NewGRF] Add support for Rivers. Rivers can currently only be placed with-in the scenario editor (r11926,r11938,r11949,r12071)
- Feature: Generate.vbs script to allow project files generation for users unable to run generate bash script (r12123)
- Feature: Sort the strings in languages dropdown (r11886)
- Codechange: Drop MSVC 2003 support (r11979)
- Fix: Test purchase list loading/loaded sprites instead of unconditionally returning a possibly non-existant sprite (r12180)
- Fix: Return correct bridge price for AI when DC_QUERY_COST is set [FS#609] (r12171)
- Fix: When drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated [FS#337] (r12166)
- Fix: Buffer overflow when drawing scrolling news [FS#1652, FS#1773] (r12165)
- Fix: If a train is 'stopping' when entering a depot, do not let it leave again [FS#1705] (r12163)
- Fix: Towns shouldn't build over houses owned by another town [FS#1757] (r12162)
- Fix: Towns will no longer build houses > 1x1 there where should be road (with 2x2, 3x3 grid town layouts) (r12161)
- Fix: Remove the arbitrary limit of 64 waypoints per town [FS#1744] (r12160)
- Fix: Chance16I was now biased towards zero - round to nearest now (r12156)
- Fix: Adjust aircraft slowing algorithm (r12144)
- Fix: Callback 0x3D always gets a cargobit in var 0x18, independent of grf version [FS#1766] (r12142)
- Fix: Do not allow adding tram to rail-road crossing when there is a vehicle on it (r12138)
- Fix: Show cargo capacity for articulated vehicles correctly in the purchase list. Multiple cargo types can also now been shown [FS#1769] (r12137)
- Fix: With mammoth trains disabled, maximum train length was limited to 9 (r12131)
- Fix: Use tile index 0 for planes in the air, so it cannot have an invalid tile index [FS#1745] (r12109)
- Fix: X/Y axis swap for station tiles in GetNearbyTile() was wrong way around [FS#1753]( r12108)
- Fix: Loading older savegames fixes (r12096,r12097)
- Fix: When a company bankrupts, remove drive-through road stops, ship depots and buoys too. Update owners of water and road [FS#1703] (r12095)
- Fix: Do not set station owner for buoys when merging company (r12093)
- Fix: Keep production level within delimited boundaries, while using var result 0D/0E and than multiplying/dividing it [FS#1755] (r12092)
- Fix: Assert when loading savegame with wrong tiletype at south map borders (r12088)
- Fix: Check overrides only for industries when mapping newgrf entities to 'real' entities [FS#1747] (r12086)
- Fix: Update waypoint signs when changing language (r12080)
- Fix: Use search paths when opening console scripts (r12079)
- Fix: When reusing a renamed deleted waypoint, keep the new name (r12076)
- Fix: Make docks at sea flood neighboured tiles (r12072)
- Fix: Possible deadlock when there are no houses available to build at given tile (r12062)
- Fix: Houses with zero probability could be built (r12062)
- Fix: Do not clear tiles when the town won't be able to build any buildings anyway (r12060)
- Fix: Allow building 2x2 building on slopes if not explicitly forbidden (r12060)
- Fix: It was possible to build 2x1 and 1x2 buildings on slopes even if it was not allowed (r12060)
- Fix: Teach NPF where road vehicles and trams can reverse (r12058)
- Fix: Ships can drive through opponents' ship depots (r12058)
- Fix: Slowdown train when approaching 90deg turn when 90deg turns are forbidden (r12057)
- Fix: Enable YAPF to start searching inside a wormhole [FS#1704] (r12056)
- Fix: Another way to fix AI trying to build road through depots (r12055)
- Fix: The cargo translation table was loaded at the right time, but all the other global variables were now loaded too early [FS#1737] (r12052)
- Fix: Random_func broke for desync debug (r12050)
- Fix: Memset on multibyte array with wrong byte count (r12049)
- Fix: Crash when centering on a vehicle (aircraft) that is outside of the map [FS#1741] (r12044)
- Fix: Allow building transmitters and lighthouses on tree tiles [FS#1736] (r12043)
- Fix: Reimplement how rivers and canals are stored in the map, allowing the sea/river/canal status to also be stored for buoys, docks, locks and depots. All these are now allowed on rivers and removal of them will revert to the original water type [FS#1676] (r12042)
- Fix: Change ownership of or remove statues when merging/bankrupting companies (r12038)
- Fix: For station tiles, only get road types for road stops (r12036)
- Fix: Teach YAPF where trams can reverse, and where not [FS#1702] (r12035)
- Fix: Do not show train speed as zero after loading paused game (r12033)
- Fix: When removing a statue, remove town statue flag for the statue owner, not current player (r12032)
- Fix: Prevent towns from removing or claiming ownership of player owned tiles when growing [FS#1689,FS#1719] (r12031)
- Fix: In one case trees could spread under bridges (r12024)
- Fix: Put a better suited text in the quit-dialog [FS#1690] (r12023)
- Fix: Restore initial intent on the invisible tree while transparent building patch setting [FS#1721] (r12018)
- Fix: When you have more than 9 network interfaces you'll enter the wonderfull world of overflows (r12017)
- Fix: Better work on strings in regard to gender [FS#1716] (r12015)
- Fix: Lighthouses and transmitters were never supposed to be build on a slope (r12014)
- Fix: When modifying watered tiles, mark neighboured canals and rivers dirty in more cases (r12013)
- Fix: Enable TownRatingTestMode during cost estimation with 'shift'-key (r12012)
- Fix: Do not consider one-corner-raised-shores to be watered tiles from all sides [FS#1701] (r12011)
- Fix: Avoid loading sample.cat if it 'looks' incorrect, and avoid later null pointer dereferences by moving volume lookup deeper [FS#1707] (r12009)
- Fix: Possible reading from an invalid pointer [FS#1717] (r12005)
- Fix: When skipping Action 11 or 12, also skip belonging sprites (r12001)
- Fix: Do entrance-slope-check for every tile of railstations (r11999)
- Fix: Possible remote assert by setting bit 6 of p1 for CMD_REMOVE_ROAD [FS#1692] (r11998)
- Fix: Update train statusbar when stopping from zero speed [FS#1706] (r11996)
- Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long (r11993)
- Fix: When building two rail stations close to each other (with control) so they looked like one long track trains would see them as one (r11992)
- Fix: Resize autoreplace window to fit purchase information text if it is too large (r11989)
- Fix: Build system ignored changes to table/control_codes.h which require strgen to be rebuilt (r11986)
- Fix: Also draw corner shores under rail tracks (r11984)
- Fix: Use unicode glyph mapping to fix up missing/shuffled sprites in original data files instead of shuffling or skipping sprites directly [FS#1698] (r11981)
- Fix: Industries using results 0D/0E on callback cb29/35 were a bit too eager to close down (r11976)
- Fix: Shore and sea tiles under bridges were converted to canals in old savegames [FS#1684] (r11974)
- Fix: Use grass tiles for corner shores, if shores got replaced by ActionA [FS#1683] (r11973)
- Fix: Old AI shouldn't build fast planes with a small airport in orders(r11972)
- Fix: MP_ROAD can have railbits too - OPF searching over rail of diffen t owner behind crossing (r11967)
- Fix: OPF was searching through depots and normal road stops [FS#1403, FS#1506] (r11966)
- Fix: Tropic zone data was returned incorrectly [FS#1685] (r11964)
- Fix: NewAI couldn't build any road vehicles when there were any tram grfs loaded (r11958)
- Fix: Disallow building locks and docks on rapids [FS#1675] (r11956)
- Fix: Do not allow modifying roadbits when other roadtypes would need different foundation (r11953)
- Fix: Loading of very old savegames was broken (r11951)
- Fix: Slope detection of bridge ramps. Helps YAPF and Trolly (r11946)
- Fix: FileExists() failed for non latin paths (win32) (r11945)
- Fix: Allow building drive-through road/tram stops at road/tram track that has no owner (r11944)
- Fix: 'BRIDGE_TOO_LOW_FOR_TERRAIN'-check was wrong for steep slopes (r11936)
- Fix: [Autoreplace] Single to dualhead locomotive replacefailed when player had enough money to replace and refit one but not enough to refit the last one as well [FS#1624] (r11929)
- Fix: [Autoreplace] Autoreplace could refit train engines to the wrong cargo type if the old engine had no cargo capacity and the new one had (r11928)
- Fix: Loading old, pre savegame version 2, savegames (r11925)
- Fix: AI was reading wrong tile slope while building road bridge (r11917)
- Fix: set correctly crossing state after train reversal, train leaving crossing, train crash (r11900)
- Fix: Segmentation faults/wrong frees due uninitialized memory in the AI [FS#1658] (r11887)
- Fix: Assert when trying to remove rail from a house or industry tile [FS#1663,FS#1665-6-7-8,FS#1680,FS#1686-7-8 FS#1715 FS#1742 FS#1771 FS#1776](r11883)
- Fix: Crash in MP in vehicle group window if the currently selected group is deleted by another player (r11878)
- Fix: Another way to crash competitors' train in a station (r11877)
- Fix: Automatically sending aircraft to depot for autoreplace/renew is now triggered by the correct conditions (r11875)
- Fix: EngineHasReplacementForPlayer() didn't look in ALL_GROUP (r11872)
- Fix: Do not update signals after each tile when building/removing a large block of track/signals/station [FS#1074] (r11871)
- Fix: Slow down train when approaching tile we can't enter in more cases (r11870)
- Fix: Do not make crossing red when we can't enter it in any case (r11870)
-Feature: Allow buttons to resize in NewGRF settings window (r12172)
-Feature: Change colour of autorail and autoroad selection when Ctrl is pressed (r12167)
-Feature: Separate catenary transparency settings from building transparency settings (r12103)
-Feature: Allow locking individual transparency settings so they will not be changed by pressing 'x' (r12102)
-Feature: Add some missing VarAction2 variables (r12124)
-Feature: Make snow appear on rail tiles dependant on track height, not on height of the lowest part of the tile (r12098)
-Feature[newGRF]: Specify the purchase, rail and road description of a bridge (r12069)
-Feature[newGRF]: Add support for var 12, Variational Action 2 (r12045)
-Feature: Allow trees on shore (r12029)
-Feature: Invisible trees are now separate from the building concept (r12022)
-Feature: Add support for passenger engine designation for AI-use, NewGRF property 0x08 for trains (r12019)
-Feature: Show all cargo sources (en-route from) in the station view cargo waiting list instead of just one (r11990)
-Feature[newGRF]: Resizable industry view window on callback 3A (r11987)
-Feature[newGRF]: Implement var 8F(random bits) during callback 28 [FS#1697] (r11985)
-Feature[newGRF]: Add support for Action 0D, var 13: informations about current map size (r11961)
-Feature: Make use of new sprites added by Action5 type 0D (r11947)
-Feature: Allow building bridge heads on more slopes (r11937)
-Feature[newGRF]: Add support for Rivers. Rivers can currently only be placed with-in the scenario editor (r11926,r11938,r11949,r12071)
-Feature: Generate.vbs script to allow project files generation for users unable to run generate bash script (r12123)
-Feature: Sort the strings in languages dropdown (r11886)
-Codechange: Drop MSVC 2003 support (r11979)
-Fix: Test purchase list loading/loaded sprites instead of unconditionally returning a possibly non-existant sprite (r12180)
-Fix: Return correct bridge price for AI when DC_QUERY_COST is set [FS#609] (r12171)
-Fix: When drag&drop mode was cancelled by keyboard input, depot/group window wasn't updated [FS#337] (r12166)
-Fix: Buffer overflow when drawing scrolling news [FS#1652, FS#1773] (r12165)
-Fix: If a train is 'stopping' when entering a depot, do not let it leave again [FS#1705] (r12163)
-Fix: Towns shouldn't build over houses owned by another town [FS#1757] (r12162)
-Fix: Towns will no longer build houses > 1x1 there where should be road (with 2x2, 3x3 grid town layouts) (r12161)
-Fix: Remove the arbitrary limit of 64 waypoints per town [FS#1744] (r12160)
-Fix: Chance16I was now biased towards zero - round to nearest now (r12156)
-Fix: Adjust aircraft slowing algorithm (r12144)
-Fix: Callback 0x3D always gets a cargobit in var 0x18, independent of grf version [FS#1766] (r12142)
-Fix: Do not allow adding tram to rail-road crossing when there is a vehicle on it (r12138)
-Fix: Show cargo capacity for articulated vehicles correctly in the purchase list. Multiple cargo types can also now been shown [FS#1769] (r12137)
-Fix: With mammoth trains disabled, maximum train length was limited to 9 (r12131)
-Fix: Use tile index 0 for planes in the air, so it cannot have an invalid tile index [FS#1745] (r12109)
-Fix: X/Y axis swap for station tiles in GetNearbyTile() was wrong way around [FS#1753]( r12108)
-Fix: Loading older savegames fixes (r12096,r12097)
-Fix: When a company bankrupts, remove drive-through road stops, ship depots and buoys too. Update owners of water and road [FS#1703] (r12095)
-Fix: Do not set station owner for buoys when merging company (r12093)
-Fix: Keep production level within delimited boundaries, while using var result 0D/0E and than multiplying/dividing it [FS#1755] (r12092)
-Fix: Assert when loading savegame with wrong tiletype at south map borders (r12088)
-Fix: Check overrides only for industries when mapping newgrf entities to 'real' entities [FS#1747] (r12086)
-Fix: Update waypoint signs when changing language (r12080)
-Fix: Use search paths when opening console scripts (r12079)
-Fix: When reusing a renamed deleted waypoint, keep the new name (r12076)
-Fix: Make docks at sea flood neighboured tiles (r12072)
-Fix: Possible deadlock when there are no houses available to build at given tile (r12062)
-Fix: Houses with zero probability could be built (r12062)
-Fix: Do not clear tiles when the town won't be able to build any buildings anyway (r12060)
-Fix: Allow building 2x2 building on slopes if not explicitly forbidden (r12060)
-Fix: It was possible to build 2x1 and 1x2 buildings on slopes even if it was not allowed (r12060)
-Fix: Teach NPF where road vehicles and trams can reverse (r12058)
-Fix: Ships can drive through opponents' ship depots (r12058)
-Fix: Slowdown train when approaching 90deg turn when 90deg turns are forbidden (r12057)
-Fix: Enable YAPF to start searching inside a wormhole [FS#1704] (r12056)
-Fix: Another way to fix AI trying to build road through depots (r12055)
-Fix: The cargo translation table was loaded at the right time, but all the other global variables were now loaded too early [FS#1737] (r12052)
-Fix: Random_func broke for desync debug (r12050)
-Fix: Memset on multibyte array with wrong byte count (r12049)
-Fix: Crash when centering on a vehicle (aircraft) that is outside of the map [FS#1741] (r12044)
-Fix: Allow building transmitters and lighthouses on tree tiles [FS#1736] (r12043)
-Fix: Reimplement how rivers and canals are stored in the map, allowing the sea/river/canal status to also be
stored for buoys, docks, locks and depots. All these are now allowed on rivers and removal of them will revert to the
original water type [FS#1676] (r12042)
-Fix: Change ownership of or remove statues when merging/bankrupting companies (r12038)
-Fix: For station tiles, only get road types for road stops (r12036)
-Fix: Teach YAPF where trams can reverse, and where not [FS#1702] (r12035)
-Fix: Do not show train speed as zero after loading paused game (r12033)
-Fix: When removing a statue, remove town statue flag for the statue owner, not current player (r12032)
-Fix: Prevent towns from removing or claiming ownership of player owned tiles when growing [FS#1689,FS#1719] (r12031)
-Fix: In one case trees could spread under bridges (r12024)
-Fix: Put a better suited text in the quit-dialog [FS#1690] (r12023)
-Fix: Restore initial intent on the invisible tree while transparent building patch setting [FS#1721] (r12018)
-Fix: When you have more than 9 network interfaces you'll enter the wonderfull world of overflows (r12017)
-Fix: Better work on strings in regard to gender [FS#1716] (r12015)
-Fix: Lighthouses and transmitters were never supposed to be build on a slope (r12014)
-Fix: When modifying watered tiles, mark neighboured canals and rivers dirty in more cases (r12013)
-Fix: Enable TownRatingTestMode during cost estimation with 'shift'-key (r12012)
-Fix: Do not consider one-corner-raised-shores to be watered tiles from all sides [FS#1701] (r12011)
-Fix: Avoid loading sample.cat if it 'looks' incorrect, and avoid later null pointer dereferences by moving volume lookup deeper [FS#1707] (r12009)
-Fix: Possible reading from an invalid pointer [FS#1717] (r12005)
-Fix: When skipping Action 11 or 12, also skip belonging sprites (r12001)
-Fix: Do entrance-slope-check for every tile of railstations (r11999)
-Fix: Possible remote assert by setting bit 6 of p1 for CMD_REMOVE_ROAD [FS#1692] (r11998)
-Fix: Update train statusbar when stopping from zero speed [FS#1706] (r11996)
-Fix: Resize station/roadstop/dock/airport construction windows if cargo acceptance list is too long (r11993)
-Fix: When building two rail stations close to each other (with control) so they looked like one long track trains would see them as one (r11992)
-Fix: Resize autoreplace window to fit purchase information text if it is too large (r11989)
-Fix: Build system ignored changes to table/control_codes.h which require strgen to be rebuilt (r11986)
-Fix: Also draw corner shores under rail tracks (r11984)
-Revert(r8738): Now we have shores in corners. No need to remove them from TTDP games (r11982)
-Fix: Use unicode glyph mapping to fix up missing/shuffled sprites in original data files instead of shuffling or skipping sprites directly [FS#1698] (r11981)
-Fix: Industries using results 0D/0E on callback cb29/35 were a bit too eager to close down (r11976)
-Fix: Shore and sea tiles under bridges were converted to canals in old savegames [FS#1684] (r11974)
-Fix: Use grass tiles for corner shores, if shores got replaced by ActionA [FS#1683] (r11973)
-Fix: Old AI shouldn't build fast planes with a small airport in orders(r11972)
-Fix: MP_ROAD can have railbits too - OPF searching over rail of diffen t owner behind crossing (r11967)
-Fix: OPF was searching through depots and normal road stops [FS#1403, FS#1506] (r11966)
-Fix: Tropic zone data was returned incorrectly [FS#1685] (r11964)
-Fix: NewAI couldn't build any road vehicles when there were any tram grfs loaded (r11958)
-Fix: Disallow building locks and docks on rapids [FS#1675] (r11956)
-Fix: Do not allow modifying roadbits when other roadtypes would need different foundation (r11953)
-Fix: Loading of very old savegames was broken (r11951)
-Fix: Slope detection of bridge ramps.Helps YAPF and Trolly (r11946)
-Fix: FileExists() failed for non latin paths (win32) (r11945)
-Fix: Allow building drive-through road/tram stops at road/tram track that has no owner (r11944)
-Fix: 'BRIDGE_TOO_LOW_FOR_TERRAIN'-check was wrong for steep slopes (r11936)
-Fix[autoreplace]: Single to dualhead locomotive replacefailed when player had enough money to replace and refit one but not enough to refit the last one as well [FS#1624] (r11929)
-Fix[autoreplace]: Autoreplace could refit train engines to the wrong cargo type if the old engine had no cargo capacity and the new one had (r11928)
-Fix: Loading old, pre savegame version 2, savegames (r11925)
-Fix: AI was reading wrong tile slope while building road bridge (r11917)
-Fix: set correctly crossing state after train reversal, train leaving crossing, train crash (r11900)
-Fix: Segmentation faults/wrong frees due uninitialized memory in the AI [FS#1658] (r11887)
-Fix: Assert when trying to remove rail from a house or industry tile [FS#1663,FS#1665-6-7-8,FS#1680,FS#1686-7-8 FS#1715 FS#1742 FS#1771 FS#1776](r11883)
-Fix: Crash in MP in vehicle group window if the currently selected group is deleted by another player (r11878)
-Fix: Another way to crash competitors' train in a station (r11877)
-Fix: Automatically sending aircraft to depot for autoreplace/renew is now triggered by the correct conditions (r11875)
-Fix: EngineHasReplacementForPlayer() didn't look in ALL_GROUP (r11872)
-Fix: Do not update signals after each tile when building/removing a large block of track/signals/station [FS#1074] (r11871)
-Fix: Slow down train when approaching tile we can't enter in more cases (r11870)
-Fix: Do not make crossing red when we can't enter it in any case (r11870)
0.6.0-beta3 (2008-01-16)
------------------------------------------------------------------------
- Feature: Replaced fixed size custom name array. Names are now attached to their object directly and there is no limit to the amount of names (r11822)
- Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match (r11759)
- Feature: Add support for NewGRF's train 'tilt' flag. Trains with tilt capability (specific details are per NewGRF set) will be given a 20% speed limit bonus on curves (r11741)
- Feature: Added sorting for cost, running costs and speed to road vehicles and ships build windows (r11710)
- Feature: List neutral stations where the player has service in the station list too (r11670)
- Feature: Check whether (some) characters are missing in the current 'font' for the 'currently' chosen language and give a warning when that does happen (r11646)
- Feature: Support shore replacement via Action 5 (r11726)
- Fix: When two NewGRFs 'fight' to define the same cargo it could happen that the strings are defined by one cargo and the 'action2' by another and when one assumes that both come from the same NewGRF [FS#1559] (r11862)
- Fix: Recompute town population when removing a 'newhouses' grf, or when loading a game with missing 'newhouses' grfs [FS#1335] (r11855)
- Fix: Road vehicle count was incorrect in network lobby window (r11844)
- Fix: Mark dirty canal tile even in diagonal direction from flooded tile, draw correctly canal next to half flooded rail tile (r11843, r11838)
- Fix: At least one instance of dmusic driver is needed for it to be registered and usable (r11826)
- Fix: An articulated road vehicle could split up when it turned around at a corner and then would enter a drive through station at the next tile [FS#1627] (r11825)
- Fix: Switch _screen to the output buffer and disable usage of 32bpp-anim animation buffer during giant screenshots [FS#1602] (r11813)
- Fix: Do not crash trains when leaving depot to a very long track [FS#716] (r11802)
- Fix: Take town rating into account when testing if a command can be executed [FS#1616] (r11795)
- Fix: Reversing a train when loading at a station with an adjacent station in the same axis crashed [FS#1632] (r11794)
- Fix: Group names got not deallocated in the command test run [FS#1614] (r11743)
- Fix: Run window tick events when paused, so that news pop-ups and the about window still progress. For other windows the events are ignored when paused [FS#1319] (r11742)
- Fix: Modify and possibly discard key events for code points in the unicode private use area [FS#1610] (r11740)
- Fix: Set the new scroll position after zooming in instead of before, as the zoom will cancel it out [FS#1609] (r11739)
- Fix: Do not reset loading indicator IDs when only reloading NewGRFs [FS#1574] (r11735)
- Fix: Elrail merge gave elrail, monorail & maglev unintended speed bonuses for curves, as the bonus was based on the railtype index. The bonus is now specified by a property of the railtype (r11732)
- Fix: Clear sprite override data before performing NewGRF wagon attach callback. This stopped the callback working for autoreplace and when moving wagons from train to train in a depot [FS#1582] ( r11731)
- Fix: If there are no houses that can be build in a specific year yet, force the houses with the earliest introduction year to be available [FS#1577] (r11727)
- Fix: Make it impossible (for users) to circumvent the length checking of the NewGRF 'allow wagon attach' callback by moving several wagons at a time (r11724)
- Fix: Do not put more than one Random() in function calls because parameter evaluation order is not guaranteed in the C++ standard [FS#1561] (r11716)
- Fix: Do not allow player inauguration date on scenarios to be bigger than current year [FS#1569] (r11714)
- Fix: Add more house string id ranges to MapGRFStringID so NewGRFs use the proper string ids (r11712)
- Fix: Do not allow refitting flooded (destroyed) vehicles (r11707)
- Fix: Trains could have sprites with wrong direction when reversing, also was inconsistent with save/load process [FS#1557] (r11705)
- Fix: When removing buoys, return to water or canal depending on their owner (r11666)
- Fix: Animation informations should not be copied from original industry tile spec, while doing an action 00, industry tile, prop 08 (r11665)
- Fix: Do not allow modifying non-uniform stations when non-uniform stations are disabled [FS#1563] (r11659)
- Fix: 'Initialised' NewGRFs could still be deactivated in the later 'activation' pass (r11650)
- Fix: Vehicles were still followed when sold [FS#1541] (r11632)
- Fix: Many viewports could crash the scenario editor [FS#1527] (r11629)
- Fix: Popping from text reference stack must be done in a precise order. But some compiler (MSVC) over optimised it and inverted this order [FS#1532] (r11627)
- Fix: There were still some cases where one could not build a tram track, but the tram could become blocked [FS#1525] (r11621)
- Fix: Do not make crossing red behind depot the train is entering [FS#1531] (r11619)
- Fix: Buoys are just waypoints, so don't allow load/unload/transfert for them (r11618)
- Fix: Sometimes large values could go off the chart [FS#1526] (r11616)
- Fix: Temperate banks can only be built in towns (over a house) (r11615)
-Feature: Replaced fixed size custom name array. Names are now attached to their object directly and there is no limit to the amount of names (r11822)
-Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match (r11759)
-Feature: Add support for NewGRF's train 'tilt' flag. Trains with tilt capability (specific details are per NewGRF set) will be given a 20% speed limit bonus on curves (r11741)
-Feature: Added sorting for cost, running costs and speed to road vehicles and ships build windows (r11710)
-Feature: List neutral stations where the player has service in the station list too (r11670)
-Feature: Check whether (some) characters are missing in the current 'font' for the 'currently' chosen language and give a warning when that does happen (r11646)
-Feature: Support shore replacement via Action 5 (r11726)
-Fix: When two NewGRFs 'fight' to define the same cargo it could happen that the strings are defined by one cargo and the 'action2' by another and when one assumes that both come from the same NewGRF [FS#1559] (r11862)
-Fix: Recompute town population when removing a 'newhouses' grf, or when loading a game with missing 'newhouses' grfs [FS#1335] (r11855)
-Fix: Road vehicle count was incorrect in network lobby window (r11844)
-Fix: Mark dirty canal tile even in diagonal direction from flooded tile, draw correctly canal next to half flooded rail tile (r11843, r11838)
-Fix: At least one instance of dmusic driver is needed for it to be registered and usable (r11826)
-Fix: An articulated road vehicle could split up when it turned around at a corner and then would enter a drive through station at the next tile [FS#1627] (r11825)
-Fix: Switch _screen to the output buffer and disable usage of 32bpp-anim animation buffer during giant screenshots [FS#1602] (r11813)
-Fix: Do not crash trains when leaving depot to a very long track [FS#716] (r11802)
-Fix: Take town rating into account when testing if a command can be executed [FS#1616] (r11795)
-Fix: Reversing a train when loading at a station with an adjacent station in the same axis crashed [FS#1632] (r11794)
-Fix: Group names got not deallocated in the command test run [FS#1614] (r11743)
-Fix: Run window tick events when paused, so that news pop-ups and the about window still progress. For other windows the events are ignored when paused [FS#1319] (r11742)
-Fix: Modify and possibly discard key events for code points in the unicode private use area [FS#1610] (r11740)
-Fix: Set the new scroll position after zooming in instead of before, as the zoom will cancel it out [FS#1609] (r11739)
-Fix: Do not reset loading indicator IDs when only reloading NewGRFs [FS#1574] (r11735)
-Fix: Elrail merge gave elrail, monorail & maglev unintended speed bonuses for curves, as the bonus was based on the railtype index. The bonus is now specified by a property of the railtype (r11732)
-Fix: Clear sprite override data before performing NewGRF wagon attach callback. This stopped the callback working for autoreplace and when moving wagons from train to train in a depot [FS#1582] (r11731)
-Fix: If there are no houses that can be build in a specific year yet, force the houses with the earliest introduction year to be available [FS#1577] (r11727)
-Fix: Make it impossible (for users) to circumvent the length checking of the NewGRF 'allow wagon attach' callback by moving several wagons at a time (r11724)
-Fix: Do not put more than one Random() in function calls because parameter evaluation order is not guaranteed in the c++ standard [FS#1561] (r11716)
-Fix: Do not allow player inauguration date on scenarios to be bigger than current year [FS#1569] (r11714)
-Fix: Add more house string id ranges to MapGRFStringID so NewGRFs use the proper string ids (r11712)
-Fix: Do not allow refitting flooded (destroyed) vehicles (r11707)
-Fix: Trains could have sprites with wrong direction when reversing, also was inconsistent with save/load process [FS#1557] (r11705)
-Fix: When removing buoys, return to water or canal depending on their owner (r11666)
-Fix: Animation informations should not be copied from original industry tile spec, while doing an action 00, industry tile, prop 08 (r11665)
-Fix: Do not allow modifying non-uniform stations when non-uniform stations are disabled [FS#1563] (r11659)
-Fix: 'Initialised' NewGRFs could still be deactivated in the later 'activation' pass (r11650)
-Fix: Vehicles were still followed when sold [FS#1541] (r11632)
-Fix: Many viewports could crash the scenario editor [FS#1527] (r11629)
-Fix: Popping from text reference stack must be done in a precise order. But some compiler (MSVC) over optimised it and inverted this order [FS#1532] (r11627)
-Fix: There were still some cases where one could not build a tram track, but the tram could become blocked [FS#1525] (r11621)
-Fix: Do not make crossing red behind depot the train is entering [FS#1531] (r11619)
-Fix: Buoys are just waypoints, so don't allow load/unload/transfert for them (r11618)
-Fix: Sometimes large values could go off the chart [FS#1526] (r11616)
-Fix: Temperate banks can only be built in towns (over a house) (r11615)
0.6.0-beta2 (2007-12-09)
@@ -2395,43 +1984,43 @@
0.1.3 (2004-03-18)
------------------------------------------------------------------------
- Fix: message options window
- Fix: company takeover/purchase
- Fixed message options window
- Fixed company takeover/purchase
- Feature: Improved mouse scroll zooming
- Fix: station code so it's not possible to steal another player's temporarily deleted station
- Fix: subsidy owner bug when deleting station
- Fix: crash when deleting a bridge with a train on it
- Fixed station code so it's not possible to steal another player's temporarily deleted station
- Fixed subsidy owner bug when deleting station
- Fixed crash when deleting a bridge with a train on it
- Feature: Larger stations and possibility to join stations
- Fix: missing candy initial cargo payment values
- Fix: goods and Food/FizzyDrinks subsidies
- Fix: graphical glitch in subsidies window
- Fix: take over company dialog was not shown properly
- Fix: crash if player windows were open while the company went bankrupt
- Fix: train slowness on hills
- Fixed missing candy initial cargo payment values
- Fixed Goods and Food/FizzyDrinks subsidies
- Fixed graphical glitch in subsidies window
- Take over company dialog was not shown properly
- Fixed crash if player windows were open while the company went bankrupt
- Fixed train slowness on hills
- Feature: swedish town names (patch by glottis)
- Feature: more currencies
- Feature: better window resizing/zooming
- Feature: added goto road vehicle depot for road vehicle orders
- Feature: possibility to use either semaphores or signals (Ctrl key)
- Feature: limited the scrolling rate for year selector in scenario editor
- Better window resizing/zooming
- Added goto road vehicle depot for road vehicle orders
- Possibility to use either semaphores or signals (Ctrl key)
- Limited the scrolling rate for year selector in scenario editor
0.1.2 (2004-03-15)
------------------------------------------------------------------------
- Feature: mouse wheel can be used to zoom in out on win32
- Feature: implemented some support for resizing the window dynamically in win32
- Fix: tunnel mouse icon for maglev and monorail
- Mouse wheel can be used to zoom in out on win32 (ludde)
- Implemented some support for resizing the window dynamically in win32 (ludde)
- Fixed tunnel mouse icon for maglev and monorail
0.1.1 (2004-03-14)
------------------------------------------------------------------------
- Feature: Preliminary presignal support
- Add: external MIDI driver for unix version (by robertnorris)
- Add: DirectMusic driver for Win32 version
- Fix: problem where directories weren't displayed under Linux (by Markus)
- Feature: Center windows properly in higher resolutions
- Add: "build tracks on slopes" feature
- Fix: colors in map window for routes
- Feature: Command line -g flag now optionally takes a game to load
- Fix: road drive side
- Fix: "Fund road construction" not clickable when unavailable
- Preliminary presignal support
- Added external MIDI driver for unix version (by robertnorris)
- Added DirectMusic driver for Win32 version
- Fixed problem where directories weren't displayed under Linux (by Markus)
- Center windows properly in higher resolutions
- Added "build tracks on slopes" feature
- Fixed colors in map window for routes
- Command line -g flag now optionally takes a game to load
- Fixed road drive side
- Fixed "Fund road construction" not clickable when unavailable

File diff suppressed because it is too large Load Diff

21
configure vendored
View File

@@ -17,7 +17,7 @@ ROOT_DIR="`dirname $0`"
ROOT_DIR="`cd $ROOT_DIR && pwd`"
PWD="`pwd`"
PREFIX="$PWD/bin"
PREFIX="`pwd`/bin"
. $ROOT_DIR/config.lib
@@ -32,12 +32,12 @@ MEDIA_DIR="$ROOT_DIR/media"
SOURCE_LIST="$ROOT_DIR/source.list"
if [ "$1" = "--reconfig" ] || [ "$1" = "--reconfigure" ]; then
if [ ! -f "config.cache" ]; then
if ! [ -f "config.cache" ]; then
echo "can't reconfigure, because never configured before"
exit 1
fi
# Make sure we don't lock config.cache
cat config.cache | sed 's~\\ ~\\\\ ~g' > cache.tmp
cat config.cache | sed 's/\\ /\\\\ /g' > cache.tmp
sh cache.tmp
rm -f cache.tmp
exit $?
@@ -50,7 +50,7 @@ save_params
make_cflags_and_ldflags
EXE=""
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ] || [ "$os" = "WINCE" ]; then
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "WINCE" ]; then
EXE=".exe"
fi
@@ -59,12 +59,12 @@ STRGEN="strgen$EXE"
ENDIAN_CHECK="endian_check$EXE"
if [ -z "$sort" ]; then
PIPE_SORT="sed s~a~a~"
PIPE_SORT="sed s/a/a/"
else
PIPE_SORT="$sort"
fi
if [ ! -f "$LANG_DIR/english.txt" ]; then
if ! [ -f "$LANG_DIR/english.txt" ]; then
echo "Languages not found in $LANG_DIR. Can't continue without it."
echo "Please make sure the dir exists and contains at least english.txt"
fi
@@ -82,7 +82,6 @@ SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
deep += 1;
if ($0 == "ALLEGRO" && "'$allegro_config'" == "") { next; }
if ($0 == "SDL" && "'$sdl_config'" == "") { next; }
if ($0 == "PNG" && "'$png_config'" == "") { next; }
if ($0 == "OSX" && "'$os'" != "OSX") { next; }
@@ -90,16 +89,14 @@ SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk '
if ($0 == "PSP" && "'$os'" != "PSP") { next; }
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
if ($0 == "DOS" && "'$os'" != "DOS") { next; }
if ($0 == "BEOS" && "'$os'" != "BEOS") { next; }
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
"'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
if ($0 == "MORPHOS" && "'$os'" != "MORPHOS") { next; }
if ($0 == "WINCE" && "'$os'" != "WINCE") { next; }
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
if ($0 == "NO_THREADS" && "'$with_threads'" == "0") { next; }
skip += 1;
@@ -125,12 +122,12 @@ SRCS="` echo \"$SRCS\" | $awk ' { ORS = " " } { print $0; }'`"
# In makefiles, we always use -u for sort
if [ -z "$sort" ]; then
sort="sed s~a~a~"
sort="sed s/a/a/"
else
sort="$sort -u"
fi
CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in $ROOT_DIR/Makefile.bundle.in"
CONFIGURE_FILES="$ROOT_DIR/configure $ROOT_DIR/config.lib $ROOT_DIR/Makefile.in $ROOT_DIR/Makefile.lang.in $ROOT_DIR/Makefile.src.in"
generate_main
generate_lang

View File

@@ -7,9 +7,8 @@ you have downloaded english.txt, the master language file, for. While this is
not always true, namely when changes in the code have not touched language
files, your safest bet is to assume this 'limitation'.
As a first step you need to compile strgen. This is as easy as typing
'make strgen'. You can download the precompile strgen from:
http://www.openttd.org/download-strgen
'make strgen'. You can also download a precompiled binary from a release,
nightly, etc.
strgen takes as argument a txt file and translates it to a lng file, allowing
it to be used inside OpenTTD. strgen needs the master language file
english.txt to work. Below are some examples of strgen usage.

View File

@@ -20,7 +20,7 @@ downloading; mostly because the DirectX SDK and Platform SDK are about
500MB each.
Download the following files:
* openttd-useful.zip (http://binaries.openttd.org/extra/openttd-useful/)
* openttd-useful.zip (http://sf.net/project/showfiles.php?group_id=103924&package_id=114307)
* DirectX 8.1 SDK (http://neuron.tuke.sk/~mizanin/eng/Dx81sdk-include-lib.rar) (or alternatively the latest DirectX SDK from Microsoft)
* MS Windows Platform SDK (http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en)
* afxres.h (http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H)
@@ -29,8 +29,8 @@ Download the following files:
You need an SVN-client to download the source from subversion:
* CLI Subversion (http://subversion.tigris.org/)
* GUI TortoiseSVN (http://tortoisesvn.tigris.org/)
* CLI Subversion (http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91)
* GUI TortoiseSVN (http://tortoisesvn.tigris.org/download.html)
2) INCLUDES AND LIBRARIES

View File

@@ -376,40 +376,30 @@
</tr>
</table>
<ul>
<li>m2 bit 7: Signal 0 and 1: set = semaphore signals, clear = light signals</li>
<li>m2 bit 3: Signal 2 and 3: set = semaphore signals, clear = light signals</li>
<li>m2 bits 6..4: type of signal 0 and 1 (same values as m2 bits 2..0)</li>
<li>m2 bits 2..0: type of signal 2 and 3
<li>m2 bit 6: Signal 0 and 1: set = semaphore signals, clear = light signals</li>
<li>m2 bit 2: Signal 2 and 3: set = semaphore signals, clear = light signals</li>
<li>m2 bits 5..4: type of signal 0 and 1 (same values as m2 bits 1..0)</li>
<li>m2 bits 1..0: type of signal 2 and 3
<table>
<tr>
<td nowrap="nowrap" valign="top"><tt>000</tt>: </td>
<td nowrap="nowrap" valign="top"><tt>00</tt>: </td>
<td align="left">normal signals</td>
</tr>
<tr>
<td nowrap="nowrap" valign="top"><tt>001</tt>: </td>
<td nowrap="nowrap" valign="top"><tt>01</tt>: </td>
<td align="left">pre-signals</td>
</tr>
<tr>
<td nowrap="nowrap" valign="top"><tt>010</tt>: </td>
<td nowrap="nowrap" valign="top"><tt>10</tt>: </td>
<td align="left">exit-signals</td>
</tr>
<tr>
<td nowrap="nowrap" valign="top"><tt>011</tt>: </td>
<td nowrap="nowrap" valign="top"><tt>11</tt>: </td>
<td align="left">combo-signals</td>
</tr>
<tr>
<td nowrap="nowrap" valign="top"><tt>100</tt>: </td>
<td align="left">pbs signals</td>
</tr>
<tr>
<td nowrap="nowrap" valign="top"><tt>101</tt>: </td>
<td align="left">no-entry signals</td>
</tr>
</table>
</li>
@@ -417,39 +407,6 @@
<li>m4 bits 7..4: bit clear = signal 3..0 shows red</li>
</ul>
</li>
<li>m2 bits 8..10: track reserved for pbs
<table>
<tr>
<td><tt>0</tt>&nbsp; </td>
<td>not reserved</td>
</tr>
<tr>
<td><tt>1</tt>&nbsp; </td>
<td>X direction</td>
</tr>
<tr>
<td><tt>2</tt>&nbsp; </td>
<td>Y direction</td>
</tr>
<tr>
<td><tt>3</tt>&nbsp; </td>
<td>north corner (W-E)</td>
</tr>
<tr>
<td><tt>4</tt>&nbsp; </td>
<td>south corner (W-E)</td>
</tr>
<tr>
<td><tt>5</tt>&nbsp; </td>
<td>west corner (N-S)</td>
</tr>
<tr>
<td><tt>6</tt>&nbsp; </td>
<td>east corner (N-S)</td>
</tr>
</table>
</li>
<li>m2 bit 11: opposite track is reserved, too</li>
</ul>
</li>
<li>m5 bit 7 set, bit 6 clear: checkpoint
@@ -468,7 +425,6 @@
</tr>
</table>
</li>
<li>m5 bit 4: pbs reservation state</li>
</ul>
</li>
<li>m5 bit 7 set, bit 6 set: railway depot
@@ -496,7 +452,6 @@
</tr>
</table>
</li>
<li>m5 bit 4: pbs reservation state</li>
</ul>
</li>
<li>m6 bits 7..6 : Possibility of a bridge above, in the <a href="#bridge_direction">direction specified</a></li>
@@ -513,7 +468,6 @@
<td valign=top nowrap>&nbsp;</td>
<td>
<ul>
<li>m2: Index into the array of towns (owning town for town roads; closest town otherwise, INVALID_TOWN if there is no town or we are creating a town)</li>
<li>m3 bit 7 set = on snow or desert</li>
<li>m7 bits 7..5: present road types
<table>
@@ -535,6 +489,7 @@
</li>
<li>m5 bits 7 clear: road or level-crossing
<ul>
<li>m2: Index into the array of towns, 0 for non-town roads</li>
<li>m3 bits 6..4:
<table>
<tr>
@@ -627,7 +582,6 @@
</li>
<li>m4 bit 5: set if crossing lights are on</li>
<li>m4 bits 4..0: <a href="#OwnershipInfo">owner</a> of the road type 0 (normal road)</li>
<li>m5 bit 4: pbs reservation state</li>
</ul>
</li>
</ul>
@@ -680,7 +634,7 @@
<ul>
<li> set : House is complete
<ul>
<li>m5 : Age of house in years, clamped at 255</li>
<li>m5 : year of house construction (relative to 1920); clamped to 0..255 (1920..2175)</li>
</ul>
</li>
<li> clear : House is in construction
@@ -692,7 +646,6 @@
</li>
</ul>
<li>m3 bit 6 : bit 8 of house type (m4), allowing 512 different types.</li>
<li>m3 bit 5 : bit 6 of current animation frame (see m6)</li>
<li>m3 bits 4..0 : triggers activated <a href="#newhouses">(newhouses)</a></li>
<li>m4 : <a href="landscape_externals.html">town building type</a> (with m3[6] bit)</li>
<li>m5 : see m3 bit 7</li>
@@ -700,7 +653,8 @@
<ul>
<li>If <a href="#newhouses">newhouses</a> is activated
<ul>
<li>bits 7..2 : Current animation frame (bits 5..0); bit 6 in m3</li>
<li>bits 7..3 : Current animation frame</li>
<li>bit 2 : free</li>
</ul>
</li>
<li>Standard behaviour
@@ -944,9 +898,7 @@
</li>
<li>m6 bits 5..3: the station type (rail, airport, truck, bus, oilrig, dock, buoy)</li>
<li>m6 bit 2: 1 when a drive through road stop is built over a town owned road, otherwise 0</li>
<li>m6 bit 2: pbs reservation state for railway stations</li>
<li>m6 bits 1..0 : <a href="#tropic_zone">Tropic zone definition</a></li>
<li>m7: animation frame</li>
</ul>
</td>
</tr>
@@ -1082,7 +1034,6 @@
<ul>
<li>m1 bit 7: clear = under construction
<ul>
<li>m1 bits 6..5 : Water class (sea, canal, river or land)
<li>m1 bits 3..2: construction counter, for buildings under construction incremented on every periodic tile processing</li>
<li>m1 bits 1..0: stage of construction (<tt>3</tt> = completed), incremented when the construction counter wraps around<br>
the meaning is different for some animated tiles which are never under construction (types <tt>01</tt>, <tt>1E</tt>..<tt>20</tt>, <tt>30</tt>, <tt>58</tt>; see above)</li>
@@ -1417,7 +1368,6 @@
<li>m3 bits 3..0: <a href="#TrackType">track type</a> for railway</li>
<li>m3 bits 2..0: present road types for road</li>
<li>m4 bit 7 set = on snow or desert</li>
<li>m5 bit 4: pbs reservation state for railway</li>
<li>m5 bits 7 clear: tunnel entrance/exit</li>
<li>m5 bit 7 set: bridge ramp
<ul>
@@ -1521,11 +1471,6 @@
<td><tt>1</tt>&nbsp;</td>
<td>road</td>
</tr>
<tr>
<td><tt>2</tt>&nbsp;</td>
<td>water</td>
</tr>
</li>
<li>m5 bits 1..0: direction onto the bridge / out of the tunnel
<table>
@@ -1566,8 +1511,6 @@
<ul>
<li>m1: <a href="#OwnershipInfo">owner</a> of the object (for lighthouses and transmitters normally <tt>10</tt>)</li>
<li>m2: see company statue
<li>m3 bits 4..2: size of HQ
<li>m3 bits 1..0: section identification of the HQ
<li>m5: tile type:
<table>
<tr>
@@ -1595,8 +1538,8 @@
</tr>
<tr>
<td nowrap valign=top><tt>04</tt><tt></tt>&nbsp; </td>
<td align=left>company headquarters</td>
<td nowrap valign=top><tt>80</tt>..<tt>93</tt>&nbsp; </td>
<td align=left>company headquarters (5 sets of 4 tiles each, updated quarterly depending on the company performance)</td>
</tr>
</table>
</li>

View File

@@ -90,7 +90,7 @@ the array so you can quickly see what is used and what is not.
<td class="caption">rail</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td>
<td class="bits"><span class="free">OOOO</span> XXXX <span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits">XXXX XXXX</td>
@@ -101,7 +101,7 @@ the array so you can quickly see what is used and what is not.
<td class="caption">rail with signals</td>
<td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO</span> XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO O</span>XXX <span class="free">O</span>XXX</td>
<td class="bits">XXXX <span class="option">~~</span>XX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">-inherit-</td>
@@ -115,7 +115,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits">XX<span class="free">O</span>X <span class="free">O</span>XXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
</tr>
@@ -126,7 +126,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits"><span class="free">OOOO</span> <span class="option">~~</span>XX</td>
<td class="bits"><span class="free">OOOO</span> XXXX</td>
<td class="bits">XX<span class="free">O</span>X <span class="free">OOO</span>X</td>
<td class="bits">XX<span class="free">OO OOO</span>X</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
</tr>
@@ -149,7 +149,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits">-inherit-</td>
<td class="bits">XXXX <span class="option">~~</span>XX</td>
<td class="bits"><span class="free">O</span>XXX XXXX</td>
<td class="bits">XX<span class="free">O</span>X XXXX</td>
<td class="bits">XX<span class="free">OO</span> XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits">-inherit-</td>
</tr>
@@ -157,7 +157,7 @@ the array so you can quickly see what is used and what is not.
<td class="caption">road depot</td>
<td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits">-inherit-</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits">X<span class="free">OOO OOOO</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
@@ -170,10 +170,10 @@ the array so you can quickly see what is used and what is not.
<td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXX<span class="option">~ ~~</span>XX</td>
<td class="bits">XX<span class="free">O</span><span class="option">~ ~~</span>XX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXX<span class="abuse">X XXXX</span></td>
<td class="bits"><span class="abuse">XXXX XX</span>XX</td>
<td class="bits"><span class="abuse">XXXX X</span>XXX</td>
<td class="bits">XXXX <span class="abuse">XXXX</span></td>
</tr>
<tr>
@@ -197,8 +197,8 @@ the array so you can quickly see what is used and what is not.
<td class="bits">XXXX <span class="option">~~</span>XX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OO</span>XX XXXX</td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OO</span>XX X<span class="free">O</span>XX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
</tr>
<tr>
<td class="caption">road stop</td>
@@ -293,7 +293,7 @@ the array so you can quickly see what is used and what is not.
<td>8</td>
<td class="caption">industry</td>
<td class="bits">XXXX XXXX</td>
<td class="bits">XXX<span class="free">O</span> <span class="abuse">
<td class="bits">X<span class="free">OOO</span> <span class="abuse">
XXXX</span></td>
<td class="bits">XXXX XXXX XXXX XXXX</td>
<td class="bits">XXXX XXXX</td>
@@ -310,7 +310,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> <span class="option">~</span><span class="abuse">XXX</span></td>
<td class="bits">X<span class="free">OOO OOOO</span></td>
<td class="bits">X<span class="free">OO</span>X <span class="option">~</span>XXX</td>
<td class="bits">X<span class="free">OOO</span> <span class="option">~</span>XXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
</tr>
@@ -321,7 +321,7 @@ the array so you can quickly see what is used and what is not.
<td class="bits"><span class="free">OOOO OOOO</span> XXXX <span class="free">OOOO</span></td>
<td class="bits"><span class="free">OOOO</span> <span class="option">~</span><span class="abuse">XXX</span></td>
<td class="bits">X<span class="free">OOO OOOO</span></td>
<td class="bits">X<span class="free">OO</span>X XXXX</td>
<td class="bits">X<span class="free">OOO</span> <span class="option">~</span>XXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
</tr>
@@ -331,9 +331,9 @@ the array so you can quickly see what is used and what is not.
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="option">~~~</span>X XXXX</td>
<td class="bits"><span class="free">OOOO OOOO OOOO OOOO</span></td>
<td class="bits"><span class="free">OOO</span>X XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">XXXX XXXX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits">X<span class="option">~~</span>X XXXX</td>
<td class="bits">XX<span class="free">OO OO</span>XX</td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
</tr>

View File

@@ -1,73 +0,0 @@
;
; Example file for the OpenTTD Base Graphics replacement sets.
; This file consists of basically two different parts:
; * metadata
; * information about the files
;
; Metadata contains information about the name, version and palette
; of the graphics set.
;
; == Getting started ==
; - you can't add comments after values
; - you have to fill the MD5 checksum for each file
; - you may not miss any of the metadata or files items
; - `openttd -h` lists all graphics replacements sets it found to be correct
; - `openttd -d grf=1` shows warnings/errors when parsing an .obg file
; - `openttd -I <name>` starts OpenTTD with the given set (case sensitive)
; - adding `graphicsset = <name>` to the misc section of openttd.cfg makes
; OpenTTD start with that graphics set by default
; - there is a command line tool for all platforms called md5sum that can
; create the MD5 checksum you need.
; - all files specified in this file are search relatively to the path where
; this file is found, i.e. if the graphics files are in a subdir you have
; to add that subdir to the names in this file to! It will NOT search for
; a file named like specified in here.
[metadata]
; the name of the pack, preferably less than 16 characters
name = example
; the short name (4 characters), used to identify this set within NewGRFs
shortname = XMPL
; the version of this graphics set (read as single integer)
version = 0
; a fairly short description of the set
description = foo
; palette used by the set; either DOS or Windows
palette = DOS
; The files section lists the files that replace sprites.
; The file names are case sensitive.
[files]
; GRF file with the base sprites
base = TRG1.GRF
; GRF file with logos, original terrain generator sprites
logos = TRGI.GRF
; GRF file with extra arctic sprites
arctic = TRGC.GRF
; GRF file with extra tropical sprites
tropical = TRGH.GRF
; GRF file with extra toyland sprites
toyland = TRGT.GRF
; NewGRF file using Actions 5, 7, 9 and A to replace sprites
extra = OPENTTDD.GRF
; The md5s section lists the MD5 checksum for the files that replace them.
; Note that the list of files is case sensitive. Each GRF listed in the
; files section must be listed here with it's MD5 checksum, otherwise you
; will get a lot of warnings when starting OpenTTD.
[md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTDD.GRF = f829f62c137d6d7c6e272c481b796dd5
; The origin section provides the possibility to put and extra line into
; the warning that a file is missing/corrupt. This can be used to tell
; them where to find it. It works on the filename specified in the
; files section and if that is not found it will fall back to the default
; as shown below here.
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
OPENTTDD.GRF = This file was part of your installation.

View File

@@ -1,49 +1,34 @@
.\" Hey, EMACS: -*- nroff -*-
.\" Please adjust this date whenever revising the manpage.
.Dd Feb 05, 2009
.Dd Sep 15, 2007
.Dt OPENTTD 6
.Sh NAME
.Nm openttd
.Nd An open source clone of the Microprose game "Transport Tycoon Deluxe"
.Sh SYNOPSIS
.Nm
.Op Fl efhx
.Op Fl a Ar ai
.Op Fl b Ar blitter
.Op Fl c Ar config_file
.Op Fl d Ar [level | cat=lvl[, ...]]
.Op Fl D Ar [host][:port]
.Op Fl g Ar [savegame]
.Op Fl Defhi
.Op Fl G Ar seed
.Op Fl i Ar palette
.Op Fl I Ar graphicsset
.Op Fl l Ar host[:port]
.Op Fl m Ar driver
.Op Fl d Ar [level | cat=lvl[, ...]]
.Op Fl g Ar [savegame]
.Op Fl n Ar host[:port][#player]
.Op Fl r Ar widthxheight
.Op Fl t Ar date
.Op Fl m Ar driver
.Op Fl s Ar driver
.Op Fl t Ar year
.Op Fl v Ar driver
.Sh OPTIONS
.Bl -tag -width ".Fl n Ar host[:port][#player]"
.It Fl a Ar ai
Set the AI, see
.Fl h
.It Fl b Ar blitter
Set the blitter, see
.Fl h
.It Fl c Ar config_file
Use 'config_file' instead of 'openttd.cfg'
.It Fl D
Start a dedicated server
.It Fl G Ar seed
Seed the pseudo random number generator
.It Fl d Ar [level]
Set debug verbosity for all categories to
.Ar level
or 1 if omitted
.It Fl d Ar cat=level[, ...]
Set debug verbosity for a specific category
.It Fl D Ar [host][:port]
Start a dedicated server
.It Fl G Ar seed
Seed the pseudo random number generator
.It Fl e
Start in world editor mode
.It Fl f
@@ -54,16 +39,9 @@ Load
.Ar savegame
at start or start a new game if omitted
.It Fl h
Display a summary of all options and available AIs, blitters, drivers and graphic sets
.It Fl i Ar palette
Set the palette, see
.Fl h
.It Fl I Ar graphicsset
Set the graphics set, see
.Fl h
.It Fl l Ar host[:port]
Redirect DEBUG(), See
.Fl D
Display a summary of all options and available drivers
.It Fl i
Force to use the DOS palette (use this if you see a lot of magenta)
.It Fl m Ar driver
Set the music driver, see
.Fl h
@@ -74,13 +52,11 @@ Set the resolution
.It Fl s Ar driver
Set the sound driver, see
.Fl h
.It Fl t Ar year
Set the starting year
.It Fl t Ar date
Set the starting date
.It Fl v Ar driver
Set the video driver, see
.Fl h
.It Fl x
Do not automatically save to config file on exit
.El
.Sh SEE ALSO
http://wiki.openttd.org/, http://www.openttd.org

View File

@@ -1,118 +0,0 @@
#!/bin/sh
# $Id$
# Arguments given? Show help text.
if [ "$#" != "0" ]; then
cat <<EOF
Usage: ./findversion.sh
Finds the current revision and if the code is modified.
Output: <REV>\t<REV_NR>\t<MODIFIED>\t<CLEAN_REV>
REV
a string describing what version of the code the current checkout is
based on. The exact format of this string depends on the version
control system in use, but it tries to identify the revision used as
close as possible (using the svn revision number or hg/git hash).
This also includes an indication of whether the checkout was
modified and which branch was checked out. This value is not
guaranteed to be sortable, but is mainly meant for identifying the
revision and user display.
If no revision identifier could be found, this is left empty.
REV_NR
the revision number of the svn revision this checkout is based on.
This can be used to determine which functionality is present in this
checkout. For trunk svn checkouts and hg/git branches based upon it,
this number should be accurate. For svn branch checkouts, this
number is mostly meaningless, at least when comparing with the
REV_NR from other branches or trunk.
This number should be sortable. Within a given branch or trunk, a
higher number means a newer version. However, when using git or hg,
this number will not increase on new commits.
If no revision number could be found, this is left empty.
MODIFIED
Whether (the src directory of) this checkout is modified or not. A
value of 0 means not modified, a value of 2 means it was modified.
Modification is determined in relation to the commit identified by
REV, so not in relation to the svn revision identified by REV_NR.
A value of 1 means that the modified status is unknown, because this
is not an svn/git/hg checkout for example.
CLEAN_REV
the same as REV but without branch name
By setting the AWK environment variable, a caller can determine which
version of "awk" is used. If nothing is set, this script defaults to
"awk".
EOF
exit 1;
fi
# Allow awk to be provided by the caller.
if [ -z "$AWK" ]; then
AWK=awk
fi
# Find out some dirs
cd `dirname "$0"`
ROOT_DIR=`pwd`
SRC_DIR=src
# Determine if we are using a modified version
# Assume the dir is not modified
MODIFIED="0"
if [ -d "$ROOT_DIR/.svn" ]; then
# We are an svn checkout
if [ -n "`svnversion \"$SRC_DIR\" | grep 'M'`" ]; then
MODIFIED="2"
fi
# Find the revision like: rXXXXM-branch
BRANCH=`LC_ALL=C svn info "$SRC_DIR" | "$AWK" '/^URL:.*branches/ { split($2, a, "/"); for(i in a) if (a[i]=="branches") { print a[i+1]; break } }'`
TAG=`LC_ALL=C svn info "$SRC_DIR" | "$AWK" '/^URL:.*tags/ { split($2, a, "/"); for(i in a) if (a[i]=="tags") { print a[i+1]; break } }'`
REV_NR=`LC_ALL=C svn info "$SRC_DIR" | "$AWK" '/^Last Changed Rev:/ { print $4 }'`
if [ -n "$TAG" ]; then
REV=$TAG
else
REV="r$REV_NR"
fi
elif [ -d "$ROOT_DIR/.git" ]; then
# We are a git checkout
if [ -n "`git diff-index HEAD \"$SRC_DIR\"`" ]; then
MODIFIED="2"
fi
HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null`
REV="g`echo $HASH | cut -c1-8`"
BRANCH=`git branch|grep '[*]' | sed 's~\* ~~;s~^master$~~'`
REV_NR=`LC_ALL=C git log --pretty=format:%s "$SRC_DIR" | grep "^(svn r[0-9]*)" | head -n 1 | sed "s~.*(svn r\([0-9]*\)).*~\1~"`
elif [ -d "$ROOT_DIR/.hg" ]; then
# We are a hg checkout
if [ -n "`hg status \"$SRC_DIR\" | grep -v '^?'`" ]; then
MODIFIED="2"
fi
HASH=`LC_ALL=C hg parents 2>/dev/null | head -n 1 | cut -d: -f3`
REV="h`echo $HASH | cut -c1-8`"
BRANCH=`hg branch | sed 's~^default$~~'`
REV_NR=`LC_ALL=C hg log -r $HASH:0 -k "svn" -l 1 --template "{desc}\n" "$SRC_DIR" | grep "^(svn r[0-9]*)" | head -n 1 | sed "s~.*(svn r\([0-9]*\)).*~\1~"`
else
# We don't know
MODIFIED="1"
BRANCH=""
REV=""
REV_NR=""
fi
if [ "$MODIFIED" -eq "2" ]; then
REV="${REV}M"
fi
CLEAN_REV=${REV}
if [ -n "$BRANCH" ]; then
REV="${REV}-$BRANCH"
fi
echo "$REV $REV_NR $MODIFIED $CLEAN_REV"

View File

@@ -11,19 +11,19 @@ by the number below on http://bugs.openttd.org.
If the bug report is closed, it has been fixed, which then can be verified
in the latest SVN version of /trunk.
Bugs for 0.7.0-beta1
Bugs for 0.6.0-beta3
------------------------------------------------------------------------
URL: http://bugs.openttd.org
- 2631 Trains not chosing closest platform on large station
- 2616 Cloning creates vehicles with invalid subcargos
- 2585 [OSX] OS' mouse pointer showing
- 2427 Vehicle owner gets paid for whole cargo feeder share
- 1944 Road vehicles not picking empty drivethrough platform
- 1762 Strange Autoreplace behaviour
- 1495 Long vehicles might block multistop drivethrough stations
- 1711 Gravel and Clay have no worth
- 1693 Removing road does not reset owner
- 1549 Timetable + group ID are not backed up with orders
- 1495 Long vehicles block multistop station
- 1487 Ending_year is never written to
- 1473 Train not going to available platform
- 1404 Spinner widget interprets one click as many
- 1473 Lost trains ignore exit signals
- 1264 Autoreplace for multiple NewGRF DMU sets fails
- 1140 [OSX] Not smooth moving map with touchpad
- 1072 Text overflows in several windows
- 119 Clipping problems with vehicles on slopes

BIN
media/mainicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -1,12 +0,0 @@
# $Id$
# http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html
[Desktop Entry]
Encoding=UTF-8
Type=Application
Version=1.1
Name=!!MENU_NAME!!
Comment=A clone of Transport Tycoon Deluxe
Icon=openttd
Exec=!!TTD!!
Terminal=false
Categories=!!MENU_GROUP!!

BIN
media/palette.act Normal file

Binary file not shown.

View File

@@ -15,7 +15,7 @@ You should copy the data files from the original TTD into the data directory
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).
debian and works out of the box).
Don't forget to use -m extmidi if you want music, and if you have
problems, remember that not all audio devices support multiple
@@ -23,9 +23,12 @@ You should copy the data files from the original TTD into the data directory
mixing. My VIA AC97 device cannot do hardware mixing, for example.
-Scenarios
There are no scenarios included in this release. Scenarios can be
downloaded separately from the OpenTTD website and all over the
internet. Place scenarios in your ~/.openttd/scenario directory to
use them.
There are a few scenarios included in this release. When you start
openttd it will look for scenarios in ~/.openttd/scenario, while the
premade scenarios are in /usr/share/games/openttd/data/scenario. You
have two options to use the scenarios.
* Navigate to /usr/share/games/openttd/data/scenario within openttd.
* Copy scenarios from /usr/share/games/openttd/data/scenario to
~/.openttd/scenario. We are looking into a better solution for this.
-- Matthijs Kooijman <matthijs@stdin.nl>, Tue, 25 Jan 2004 14:11:01 +0200
-- Matthijs Kooijman <m.kooijman@student.utwente.nl>, Tue, 25 Jan 2004 14:11:01 +0200

View File

@@ -1,143 +1,92 @@
openttd (0.7.0-beta1) unstable; urgency=low
openttd (0.6.0~beta4) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 16 Feb 2009 23:07:05 +0100
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 18 Feb 2008 20:09:29 +0100
openttd (0.6.3-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release.
[ Jordi Mallach ]
* Add Spanish Debconf template translation, after fixing its corrupted
encoding.
-- Jordi Mallach <jordi@debian.org> Thu, 02 Oct 2008 16:59:03 +0200
openttd (0.6.2-1) unstable; urgency=low
openttd (0.6.0~beta3-1) unstable; urgency=low
* New upstream release.
- Fixes remote crash vulnerability CVE-2008-3547. Closes: #493714
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 08 Aug 2008 11:07:05 +0200
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Tue, 16 Jan 2008 21:40:07 +0100
openttd (0.6.2~rc2-1) experimental; urgency=low
openttd (0.6.0~beta2-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release.
[ Jordi Mallach ]
* Fix typo in README.Debian (lintian).
* Remove dpatch build-dep and the empty debian/patches dir.
* Don't ignore possible "make distclean" errors.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Sun, 09 Dec 2007 22:05:05 +0100
-- Jordi Mallach <jordi@debian.org> Sat, 26 Jul 2008 01:35:30 +0200
openttd (0.6.0~beta1-1) unstable; urgency=low
openttd (0.6.2~rc1-1) experimental; urgency=low
[ Matthijs Kooijman ]
* New upstream release.
-- Jordi Mallach <jordi@debian.org> Thu, 24 Jul 2008 16:09:57 +0200
openttd (0.6.1-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release.
* Remove no_install_personal.dpatch, it is included upstream now.
-- Jordi Mallach <jordi@debian.org> Thu, 05 Jun 2008 00:47:36 +0200
openttd (0.6.0-2) unstable; urgency=low
[ Jordi Mallach ]
* Rename XS-Vcs-* to the official Vcs-* fields.
[ Matthijs Kooijman ]
* Don't install anything into ~ during make install, this prevented
successful builds on some architectures. Fix imported from upstream.
* Put the homepage in it's own Homepage field instead of in the description.
* Bump Standards-Version to 3.7.3
-- Jordi Mallach <jordi@debian.org> Thu, 03 Apr 2008 00:07:10 +0200
openttd (0.6.0-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release:
- Adds note about font-configuration for non-latin languages.
Closes: #462604
* Add .desktop file, provided by Andrea Colangelo.
Closes: #460073
* Add Finnish Debconf translation, provided by Esko Arajärvi.
Closes: #456956
[ Jordi Mallach ]
* Fixes and improvements for the .desktop file according to the spec.
-- Jordi Mallach <jordi@debian.org> Wed, 02 Apr 2008 14:04:40 +0200
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Sun, 18 Nov 2007 16:05:05 +0100
openttd (0.5.3-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release
* New upstream release.
-- Jordi Mallach <jordi@debian.org> Tue, 18 Sep 2007 12:05:28 +0200
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Sat, 15 Sep 2007 13:30:00 +0100
openttd (0.5.3~rc3-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Thu, 30 Aug 2007 23:30:00 +0100
openttd (0.5.3~rc2-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Sat, 7 Jul 2007 20:05:00 +0100
openttd (0.5.3~rc1-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Thu, 28 Jun 2007 18:00:00 +0100
openttd (0.5.2-1) unstable; urgency=low
[ Jordi Mallach ]
* New upstream release.
* Debconf translation updates:
- Catalan.
[ Christian Perrier ]
* Debconf templates and debian/control reviewed by the debian-l10n-
english team as part of the Smith review project.
Closes: #422183, #419096.
* Debconf translation updates:
- Swedish. Closes: #422780
- Basque. Closes: #422786
- Czech. Closes: #422809
- Galician. Closes: #422831
- German. Closes: #422908
- Tamil. Closes: #423079
- Russian. Closes: #423224
- Portuguese. Closes: #423413
- French. Closes: #424436
- Brazilian Portuguese. Closes: #425585
- Dutch. Closes: #425707
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Tue, 29 May 2007 20:00:00 +0100
-- Jordi Mallach <jordi@debian.org> Sat, 02 Jun 2007 06:24:34 +0200
openttd (0.5.2~rc1-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Wed, 16 May 2007 23:35:39 +0100
openttd (0.5.1-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release
* Add German and Swedish translations (Closes: #420258, #419097)
* Remove bogus fuzzy mark from the Catalan translation
* New upstream release.
[ Jordi Mallach ]
* debian/control: add XS-Vcs-Svn and XS-Vcs-Browser fields.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 20 Apr 2007 21:45:32 +0100
-- Jordi Mallach <jordi@debian.org> Mon, 23 Apr 2007 21:03:06 +0200
openttd (0.5.1~rc3-1) unstable; urgency=low
openttd (0.5.0-2) unstable; urgency=low
* New upstream release.
* Upload to Debian.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Tue, 17 Apr 2007 22:00:46 +0100
-- Jordi Mallach <jordi@debian.org> Sun, 11 Mar 2007 14:12:37 +0100
openttd (0.5.1~rc2-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 23 Mar 2007 23:45:46 +0100
openttd (0.5.1~rc1-1) unstable; urgency=low
* New upstream release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Wed, 20 Mar 2007 22:03:46 +0100
openttd (0.5.0-1) unstable; urgency=low
[ Matthijs Kooijman ]
* New upstream release
[ Jordi Mallach ]
* Depend on ${misc:Depends}, not debconf directly.
-- Jordi Mallach <jordi@debian.org> Thu, 8 Mar 2007 15:34:54 +0100
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 26 Feb 2007 21:07:05 +0100
openttd (0.5.0~rc5-1) unstable; urgency=low
@@ -240,13 +189,13 @@ openttd (0.4.0.1-1) unstable; urgency=low
* New upstream release
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 23 May 2005 13:04:24 +0200
-- Matthijs Kooijman <matthijs@katherina.student.utwente.nl> Mon, 23 May 2005 13:04:24 +0200
openttd (0.4.0-1) unstable; urgency=low
* New upstream release
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 16 May 2005 00:16:17 +0200
-- Matthijs Kooijman <matthijs@katherina.student.utwente.nl> Mon, 16 May 2005 00:16:17 +0200
openttd (0.3.6-1) unstable; urgency=low
@@ -254,18 +203,18 @@ openttd (0.3.6-1) unstable; urgency=low
* Modifed Makefile to install xpm icon and scenarios in /usr/share/games/openttd/
* Added openttd.32.xpm, openttd.64.xpm was too big
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Tue, 25 Jan 2005 19:21:08 +0100
-- root <root@katherina.student.utwente.nl> Tue, 25 Jan 2005 19:21:08 +0100
openttd (0.3.5-2) unstable; urgency=low
* Fixed some lintian warnings.
* Added openttd.64.xpm (icon for menu).
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 27 Dec 2004 01:51:36 +0100
-- Matthijs Kooijman <matthijs@katherina.student.utwente.nl> Mon, 27 Dec 2004 01:51:36 +0100
openttd (0.3.5-1) unstable; urgency=low
* Initial Release.
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Fri, 24 Dec 2004 02:58:47 +0100
-- Matthijs Kooijman <matthijs@katherina.student.utwente.nl> Fri, 24 Dec 2004 02:58:47 +0100

View File

@@ -6,16 +6,16 @@
FILES="trg1r.grf trgcr.grf trghr.grf trgir.grf trgtr.grf sample.cat"
DATADIR=/usr/share/games/openttd/data
MISSING="No"
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
MISSING="Yes";
break;
fi;
done;
if [ $MISSING = "Yes" ]; then
db_input high openttd/datafiles || true
db_go
fi
fi;

View File

@@ -1,21 +1,20 @@
Source: openttd
Section: contrib/games
Priority: optional
Maintainer: Matthijs Kooijman <matthijs@stdin.nl>
Maintainer: Matthijs Kooijman <m.kooijman@student.utwente.nl>
Uploaders: Jordi Mallach <jordi@debian.org>
Build-Depends: debhelper (>= 4.0.0), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev
Standards-Version: 3.7.3
Vcs-Browser: http://svn.debian.org/wsvn/collab-maint/deb-maint/openttd/trunk/
Vcs-Svn: svn://svn.debian.org/svn/collab-maint/deb-maint/openttd/trunk
Homepage: http://www.openttd.org/
Build-Depends: debhelper (>= 4.0.0), dpatch, libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev
Standards-Version: 3.7.2
Package: openttd
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Depends: ${shlibs:Depends}, debconf
Suggests: timidity, freepats
Description: reimplementation of Transport Tycoon Deluxe with enhancements
OpenTTD is a reimplementation of the Microprose game "Transport
Tycoon Deluxe" with lots of new features and enhancements. The data
files of the original Transport Tycoon Deluxe for Windows are
mandatory to play the game. They must be manually copied to the game
data directory (see README.Debian for details).
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/

0
os/debian/patches/00list Normal file
View File

View File

@@ -1,40 +1,35 @@
# Catalan translation of openttd's Debconf templates.
# Copyright © 2007 Software in the Public Interest, Inc.
# Copyright <EFBFBD> 2007 Software in the Public Interest
# This file is distributed under the same license as the openttd package.
# Jordi Mallach <jordi@debian.org>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd 0.5.2-1\n"
"Project-Id-Version: openttd 0.5.0-1\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-06-01 00:45+0200\n"
"POT-Creation-Date: 2007-02-01 12:25+0100\n"
"PO-Revision-Date: 2007-02-01 12:16+0100\n"
"Last-Translator: Jordi Mallach <jordi@debian.org>\n"
"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Type: note
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Es necessiten els fitxers de dades"
#: ../templates:1001
msgid "You need to install data files"
msgstr "Heu d'instal<61>lar els fitxers de dades"
#. Type: error
#. Type: note
#. Description
#: ../templates:2001
#: ../templates:1001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
"OpenTTD needs the data files from the original TTD game to run. You should "
"install these data files before you can play the game. See README.Debian for "
"more details on which files need to be copied where."
msgstr ""
"Per a funcionar, OpenTTD necessita els fitxers de dades del joc "
"Transport Tycoon Deluxe original."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr "Vegeu el fitxer /usr/share/doc/openttd/README.Debian per a obtenir-ne més detalls sobre els fitxers necessaris i la seua ubicació."
"OpenTTD necessita els fitxers de dades del joc TTD original per a funcionar. "
"Haureu d'instal<61>lar aquests fitxers de dades abans de poder jugar al joc. "
"Llegiu el document README.Debian per a obtindre m<>s detalls sobre quins "
"fitxers s'han de copiar i a quina ubicaci<63>."

View File

@@ -1,42 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 10:52+0200\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Vyžadovány datové soubory"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Pro svůj běh vyžaduje OpenTTD datové soubory z původní hry Transport Tycoon "
"Deluxe."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Podrobnosti o vyžadovaných souborech a jejich umístění naleznete v souboru /"
"usr/share/doc/openttd/README.Debian."

View File

@@ -1,55 +0,0 @@
# Translation of openttd debconf templates to German
# Copyright (C) Helge Kreutzmann <debian@helgefjell.de>, 2007.
# This file is distributed under the same license as the openttd package.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd 0.5.0-2\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 21:21+0200\n"
"Last-Translator: Helge Kreutzmann <debian@helgefjell.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Ben<65>tigte Datendateien"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Zum Betrieb ben<65>tigt OpenTTD Datendateien aus dem Originalspiel Transport "
"Tycoon Deluxe."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Lesen Sie die Datei /usr/share/doc/openttd/README.Debian f<>r weitere Details "
"<22>ber die ben<65>tigten Dateien und ihren Ort."
#~ msgid "You need to install data files"
#~ msgstr "Sie m<>ssen Daten-Dateien installieren"
#~ msgid ""
#~ "OpenTTD needs the data files from the original Transport Tycoon Deluxe "
#~ "game to run. You should install these data files before you can play the "
#~ "game. See README.Debian for more details on which files need to be copied "
#~ "where."
#~ msgstr ""
#~ "OpenTTD ben<65>tigt zur Ausf<73>hrung Daten-Dateien aus dem Originalspiel "
#~ "<22>Transport Tycoon Deluxe<78>. Sie sollten diese Daten-Dateien installieren, "
#~ "bevor Sie das Spiel spielen k<>nnen. Lesen Sie README.Debian f<>r weitere "
#~ "Details dar<61>ber, welche Dateien wohin kopiert werden m<>ssen."

View File

@@ -1,42 +0,0 @@
# OpenTTD debconf template basque translation
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Piarres eobide <pi@beobide.net>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: OpenTTD Debconf\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 09:55+0200\n"
"Last-Translator: Piarres eobide <pi@beobide.net>\n"
"Language-Team: Euskara <Librezale@librezale.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Datu fitxategiak behar dira"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Funtziona dezan, OpenTTD-ek jatorrizko 'Transport Tycoon Deluxe' jokoaren "
"datu fitxategiak behar ditu."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"/usr/share/doc/openttd/README.Debian fitxategia begiratu beharrezko "
"fitategien eta bere kokapenari buruz xehetasun gehiago ikusteko."

View File

@@ -1,32 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: openttd_0.5.3-1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-09-19 04:33+0200\n"
"PO-Revision-Date: 2007-12-18 20:01+0200\n"
"Last-Translator: Esko Arajärvi <edu@iki.fi>\n"
"Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Finnish\n"
"X-Poedit-Country: Finland\n"
#. Type: error
#. Description
#: ../templates:1001
msgid "Data files needed"
msgstr "Datatiedostoja puuttuu"
#. Type: error
#. Description
#: ../templates:1001
msgid "For its operation, OpenTTD needs the data files from the original Transport Tycoon Deluxe game."
msgstr "OpenTTD tarvitsee toimiakseen datatiedostoja alkuperäisestä Transport Tycoon Deluxe -pelistä."
#. Type: error
#. Description
#: ../templates:1001
msgid "See the /usr/share/doc/openttd/README.Debian file for more details about the needed files and their location."
msgstr "Tiedostossa /usr/share/doc/openttd/README.Debian on (englanniksi) lisätietoja tarvittavista tiedostoista ja niiden sijainnista."

View File

@@ -1,42 +0,0 @@
# debian-l10n-french translation of 0.5.1-1.
# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Ivan Buresi <err747@free.fr>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: 0.5.1-1\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 11:41+0200\n"
"Last-Translator: Ivan Buresi <err747@free.fr>\n"
"Language-Team: debian-l10n-french <debian-l10n-french@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Fichiers de données indispensables"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Pour fonctionner correctement, OpenTTD a besoin des fichiers de données du "
"jeu « Transport Tycoon Deluxe » original."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Veuillez lire le fichier /usr/share/doc/openttd/README.Debian pour plus "
"d'informations sur les fichiers requis et leur emplacement."

View File

@@ -1,41 +0,0 @@
# Galician translation of openttd's debconf templates
# This file is distributed under the same license as the openttd package.
# Jacobo Tarrio <jtarrio@debian.org>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 13:12+0200\n"
"Last-Translator: Jacobo Tarrio <jtarrio@debian.org>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Precísase de ficheiros de datos"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Para o seu funcionamento, OpenTTD precisa dos ficheiros de datos do xogo "
"Transport Tycoon Deluxe orixinal."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Consulte o ficheiro /usr/share/doc/openttd/README.Debian para máis "
"información sobre os ficheiros necesarios e as súas ubicacións."

View File

@@ -1,43 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-16 19:25+0100\n"
"Last-Translator: Bart Cornelis <cobaco@skolelinux.no>\n"
"Language-Team: debian-l10n-dutch <debian-l10n-dutch@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Dutch\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Databestanden zijn vereist"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Om te werken heeft OpenTTD de databestanden van het oorspronkelijkee "
"'Transport Tycoon Deluxe'-spel nodig."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Meer informatie over de vereiste bestanden en hun locatie vindt u in /usr/"
"share/doc/openttd/README.Debian . "

View File

@@ -1,42 +0,0 @@
# Portuguese translation of openttd's debconf messages.
# Copyright (C) 2007
# This file is distributed under the same license as the openttd package.
# Ricardo Silva <ardoric@gmail.com>, 2007
#
msgid ""
msgstr ""
"Project-Id-Version: openttd\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-09 09:37+0100\n"
"Last-Translator: Ricardo Silva <ardoric@gmail.com>\n"
"Language-Team: Portuguese <traduz@debianpt.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "São necessários ficheiros de dados"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Para esta operação o OpenTTD precisa dos ficheiros de dados do jogo original "
"Transport Tycool Deluxe."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Veja o ficheiro /usr/share/doc/openttd/README.Debian para mais detalhes "
"sobre os ficheiros que são necessários e a sua localização."

View File

@@ -1,43 +0,0 @@
# openttd Brazilian Portuguese translation
# Copyright (C) 2007, Eder L. Marques
# This file is distributed under the same license as the openttd package.
# Eder L. Marques <frolic@debian-ce.org>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd 0.5.0-2\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 11:00-0300\n"
"Last-Translator: Eder L. Marques <frolic@debian-ce.org>\n"
"Language-Team: l10n Portuguese <debian-l10n-portuguese@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"pt_BR utf-8\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Arquivos de dados necessários"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Para sua operação, o OpenTTD necessita dos arquivos de dados do jogo "
"Transport Tycoon Deluxe original."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Veja o arquivo /usr/share/doc/openttd/README.Debian para maiores detalhes "
"sobre os arquivos necessários e suas localizações."

View File

@@ -1,45 +0,0 @@
# translation of openttd_debconf_ru.po to Russian
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Yuri Kozlov <kozlov.y@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: 0.5.1-1\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-10 21:45+0400\n"
"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Необходимы файлы данных"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"Для работы OpenTTD требуются файлы данных от оригинальной игры Transport "
"Tycoon Deluxe."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"В файле /usr/share/doc/openttd/README.Debian приведена информация о том, "
"какие файлы нужны и где они лежат."

View File

@@ -1,56 +0,0 @@
# Swedish translation for openttd debconf template.
# Copyright (C) 2007 Free Software Foundation, Inc.
# This file is distributed under the same license as the openttd package.
# Daniel Nylander <po@danielnylander.se>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: openttd\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 09:47+0100\n"
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "Datafiler behövs"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"För att fungera behöva OpenTTD datafilerna från det ursprungliga spelet "
"Transport Tycoon Deluxe."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"Se filen /usr/share/doc/openttd/README.Debian för mer information om de "
"nödvändiga filera och var de finns någonstans."
#~ msgid "You need to install data files"
#~ msgstr "Du behöver installera datafilerna"
#~ msgid ""
#~ "OpenTTD needs the data files from the original Transport Tycoon Deluxe "
#~ "game to run. You should install these data files before you can play the "
#~ "game. See README.Debian for more details on which files need to be copied "
#~ "where."
#~ msgstr ""
#~ "OpenTTD behöver datafilerna från det ursprungliga spelet Transport Tycoon "
#~ "Deluxe för att kunna köras. Du måste installera dessa datafiler innan du "
#~ "kan spela spelet. Se README.Debian för fler detaljer om vilka filer som "
#~ "behöver kopieras."

View File

@@ -1,43 +0,0 @@
# translation of openttd.po to TAMIL
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Dr.T.Vasudevan <agnihot3@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: openttd\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"PO-Revision-Date: 2007-05-08 15:04+0530\n"
"Last-Translator: Dr.T.Vasudevan <agnihot3@gmail.com>\n"
"Language-Team: TAMIL <ubuntu-l10n-tam@lists.ubuntu.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
#. Type: error
#. Description
#: ../templates:2001
msgid "Data files needed"
msgstr "தேவையான தரவு கோப்புகள்"
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
"இயங்குவதற்கு ஓபன் டிடிடி(OpenTTD) க்கு ட்ரான்ஸ்போர்ட் டைகூன் டீலக்ஸ் விளையாட்டிலிருந்து "
"தரவு கோப்புகள் தேவை."
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
msgstr ""
"தேவையான கோப்புகள் அவற்றின் இடம் ஆகியவற்றை அறிய /usr/share/doc/openttd/README "
"டெபியன் கோப்பை பார்க்கவும்."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: m.kooijman@student.utwente.nl\n"
"POT-Creation-Date: 2007-05-08 09:39+0200\n"
"POT-Creation-Date: 2007-02-01 12:25+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,24 +16,17 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: error
#. Type: note
#. Description
#: ../templates:2001
msgid "Data files needed"
#: ../templates:1001
msgid "You need to install data files"
msgstr ""
#. Type: error
#. Type: note
#. Description
#: ../templates:2001
#: ../templates:1001
msgid ""
"For its operation, OpenTTD needs the data files from the original Transport "
"Tycoon Deluxe game."
msgstr ""
#. Type: error
#. Description
#: ../templates:2001
msgid ""
"See the /usr/share/doc/openttd/README.Debian file for more details about the "
"needed files and their location."
"OpenTTD needs the data files from the original TTD game to run. You should "
"install these data files before you can play the game. See README.Debian for "
"more details on which files need to be copied where."
msgstr ""

View File

@@ -6,7 +6,9 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
configure: configure-stamp
include /usr/share/dpatch/dpatch.make
configure: patch configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.
@@ -27,16 +29,13 @@ build-stamp:
touch build-stamp
clean:
clean: unpatch
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
# We check for Makefile presence, because clean is called at the
# start of the build process (before configure) where we don't
# have a Makefile yet.
[ ! -f Makefile ] || $(MAKE) mrproper
-$(MAKE) clean
dh_clean
@@ -85,4 +84,4 @@ binary-arch: build install
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure
.PHONY: build clean binary-indep binary-arch binary install configure patch

View File

@@ -1,16 +1,6 @@
# These templates have been reviewed by the debian-l10n-english
# team
#
# If modifications/additions/rewording are needed, please ask
# for an advice to debian-l10n-english@lists.debian.org
#
# Even minor modifications require translation updates and such
# changes should be coordinated with translators and reviewers.
Template: openttd/datafiles
Type: error
_Description: Data files needed
For its operation, OpenTTD needs the data files from the original
Transport Tycoon Deluxe game.
.
See the /usr/share/doc/openttd/README.Debian file for more details
about the needed files and their location.
Type: note
_Description: You need to install data files
OpenTTD needs the data files from the original TTD game to run. You should
install these data files before you can play the game. See README.Debian
for more details on which files need to be copied where.

View File

@@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
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; either version 2 of the License, or
(at your option) any later version.
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 program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -1,48 +0,0 @@
This is the file "copying.dj". It does NOT apply to any sources or
binaries copyrighted by UCB Berkeley, the Free Software Foundation, or
any other agency besides DJ Delorie and others who have agreed to
allow their sources to be distributed under these terms.
Copyright Information for sources and executables that are marked
Copyright (C) DJ Delorie
7 Kim Lane
Rochester NH 03867-2954
This document is Copyright (C) DJ Delorie and may be distributed
verbatim, but changing it is not allowed.
Source code copyright DJ Delorie is distributed under the terms of the
GNU General Public Licence, with the following exceptions:
* Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and
libemu.a are distributed under the terms of the GNU Library General
Public License, rather than the GNU GPL.
* Any existing copyright or authorship information in any given source
file must remain intact. If you modify a source file, a notice to that
effect must be added to the authorship information in the source file.
* Runtime binaries, as provided by DJ in DJGPP, may be distributed
without sources ONLY if the recipient is given sufficient information
to obtain a copy of djgpp themselves. This primarily applies to
go32-v2.exe, emu387.dxe, and stubedit.exe.
* Runtime objects and libraries, as provided by DJ in DJGPP, when
linked into an application, may be distributed without sources ONLY
if the recipient is given sufficient information to obtain a copy of
djgpp themselves. This primarily applies to crt0.o and libc.a.
-----
Changes to source code copyright BSD, FSF, or others, by DJ Delorie
fall under the terms of the original copyright. Such files usually
have multiple copyright notices in them.
A copy of the files "COPYING" and "COPYING.LIB" are included with this
document. If you did not receive a copy of these files, you may
obtain one from whence this document was obtained, or by writing:
Free Software Foundation
59 Temple Place - Suite 330
Boston, MA 02111-1307
USA

View File

@@ -1,481 +0,0 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

Binary file not shown.

View File

@@ -1,173 +0,0 @@
CWSDPMI is Copyright (C) 1995-2000 Charles W Sandmann (sandmann@clio.rice.edu)
1206 Braelinn, Sugar Land, TX 77479
This is release 5. The files in this binary distribution may be redistributed
under the GPL (with source) or without the source code provided:
* CWSDPMI.EXE or CWSDPR0.EXE are not modified in any way except via CWSPARAM.
* CWSDSTUB.EXE internal contents are not modified in any way except via
CWSPARAM or STUBEDIT. It may have a COFF image plus data appended to it.
* Notice to users that they have the right to receive the source code and/or
binary updates for CWSDPMI. Distributors should indicate a site for the
source in their documentation.
-------------------------------------------------------------------------------
CWSDPMI was written to provide DPMI services for V2 of DJGPP. It currently
does not support 16-bit DPMI applications, or DPMI applications requiring a
built in extender. It does support virtual memory and hardware interrupt
reflection from real mode to protected mode. DJGPP V1.1x and RSX applications
will also run using this server, which can be used to provide enhanced control
over hardware interrupts. Some DPMI 1.0 extensions (0x506, 0x507, 0x508) have
been implemented.
CWSDPR0.EXE is an alternate version which runs at ring 0 with virtual memory
disabled. It may be used if access to ring-0 features are desired. It
currently does not switch stacks on HW interrupts, so some DJGPP features
such as SIGINT and SIGFPE are not supported and will generate a double fault
or stack fault error (to be fixed someday).
CWSDSTUB.EXE is a stub loader image for DJGPP which includes CWSDPMI. This
allows single executable image distributions. You can use the EXE2COFF
program and COPY /B CWSDSTUB.EXE+yourimage yourimage.exe to create a
standalone executable image.
Some of the internal tuning and configuration parameters may be modified
in the image using CWSPARAM.EXE (see CWSPARAM.DOC).
If you want to use CWSDPMI with DJGPP, you expand the distribution into the
DJGPP directory tree. CWSDPMI.EXE will be put in the BIN directory with your
DJGPP images and it will automatically be loaded when they run.
Directions for use (server can be used in either of two different ways):
1) "cwsdpmi" alone with no parameters will terminate and stay resident
FOR A SINGLE DPMI PROCESS. This means it unloads itself when your
DPMI application exits. This mode is useful in software which needs
DPMI services, since CWSDPMI can be exec'ed and then will unload on exit.
2) "cwsdpmi -p" will terminate and stay resident until you remove it.
It can be loaded into UMBs with LH. "cwsdpmi -u" will unload the TSR.
3) The file used for virtual memory swapping, if desired, is controlled
by the "-sc:\cwsdpmi.swp" syntax on the command line. You must specify
either a file with full disk/directory syntax, or "-s-" which disables
virtual memory.
4) The default swap file name is c:\cwsdpmi.swp, but this can be changed
with the CWSPARAM image, as can some other parameters.
5) You can disable the DPMI 1.0 extensions by starting the image with the
"cwsdpmi -x" syntax. This feature allows you to run programs developed
under other DPMI providers which do not behave properly with these
extensions enabled (typically use of NULL pointers).
I would like to give special thanks to DJ Delorie who wrote the original
GO32 code on which CWSDPMI is based. Morten Welinder also provided and
improved much of the code in this program.
-------------------------------------------------------------------------------
This section contains a list of the error messages you might see out of
CWSDPMI and some details on what they mean.
Exceptions are only handled by CWSDPMI if the application does not establish
an exception handler, exceptions nest 5 deep, or the error is particularly bad:
"Page fault" -
1) an illegal page fault happens in a RMCB or HW interrupt, (lock all pages!)
2) all available pages have been locked,
3) the application is using non-committed pages for null pointer protection.
"Double Fault" - multiple exceptions occurred
"Invalid TSS" - typically due to RMCB or HW interrupt being called after the
selectors/memory have been deallocated (remember to reset the mouse)
"General Protection Fault" - bad parameter sent to a DPMI call
"80386 required."
Since 80286 and lesser processors don't have the hardware necessary to
run CWSDPMI. No workaround, upgrade.
"DOS 3 required."
A few interrupts are used which need DOS 3.0 or higher. I don't expect to
ever see this message, since 80386 machines were introduced after DOS 3.0
and that check is made first.
"CWSDPMI V0.90+ (r5) Copyright (C) 2000 CW Sandmann ABSOLUTELY NO WARRANTY"
An informational message displayed if the program is not run in one-pass mode.
"Protected mode not accessible."
This message should only be displayed if running CWSDPMI in a protected
environment with no access to protected mode. In this case, DPMI should
already be available and CWSDPMI would not be needed. This might happen if
a 16-bit DPMI client is loaded and a DJGPP image attempts to load CWSDPMI
to provide 32-bit DPMI services under Windows.
"Warning: cannot open swap file c:\cwsdpmi.swp"
Maybe you are out of file handles, or the swap file name is incorrectly
specified in the image (change the name with cwsparam).
"No swap space!"
This message means you tried to use more paging file than CWSDPMI was
configured to handle. Since this is protected against in the memory
allocation code, you should never see this message.
"Swap disk full!"
This means the paging file could not be expanded when trying to page
memory out to disk. This would normally not be seen, unless you are
writing output to the same disk which holds the paging file. Decrease
the amount of memory your DPMI application is using or free up disk space.
"Interrupt 0x??"
Your application tried to call an interrupt from protected mode which
normally shouldn't be called (something like a data pointer). If the
request was allowed to continue it would likely hang your machine. If you
see this message and think the interrupt should be allowed to continue, let
me know.
"Error: Using XMS switched CPU into V86 mode."
This message might be seen if you have your memory manager in AUTO mode. The
only workaround in this case is to stop using AUTO mode.
"Error: could not allocate page table memory"
The page table memory (a minimum of 16Kb) is allocated from conventional
memory (either in the 640Kb region or UMBs). If CWSDPMI cannot allocate the
minimum necessary memory, you would see this message. Free up some
conventional memory. You may also see this message if a page directory needs
to be faulted in, and there are no available pages. This means too many pages
have been locked for the allocated page tables available. While CWSDPMI
tries to dynamically allocate these if needed, this effort failed. You need
to increase the number of page tables with CWSPARAM, or increase the amount
of free conventional memory if it is low. If the application which calls
CWSDPMI internally manages all the DOS memory, the page tables may need to
be pre-allocated at DPMI startup time (if this is needed, try using the
run option flag 2 in cwsparam).
"16-bit DPMI unsupported."
CWSDPMI is a 32-bit only DPMI server. Ideally, on the request to enter DPMI's
PM with a 16-bit request, we would just fail the call setting the carry bit
like the DPMI specification describes. Some buggy 16-bit compiler tools don't
check the return status and will hang the machine in this case. So, I issue
an error message and exit the image instead.
"Descriptors exhausted."
An attempt to nest a DPMI client failed in the setup phase due to insufficient
free selectors in the LDT.
"CWSDPMI not removed"
When the -u parameter is specified, if DPMI is not detected this message is
printed. Informational.

Binary file not shown.

View File

@@ -1,94 +0,0 @@
/* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
/* Updated 2008 to use fread/fopen and friends instead of read/open so it compiles with GCC on Unix (Rubidium) */
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
static void
exe2aout(char *fname)
{
unsigned short header[3];
FILE *ifile;
FILE *ofile;
char buf[4096];
int rbytes;
char *dot = strrchr(fname, '.');
if (!dot || strlen(dot) != 4
|| tolower(dot[1]) != 'e'
|| tolower(dot[2]) != 'x'
|| tolower(dot[3]) != 'e')
{
fprintf(stderr, "%s: Arguments MUST end with a .exe extension\n", fname);
return;
}
ifile = fopen(fname, "rb");
if (!ifile)
{
perror(fname);
return;
}
fread(header, sizeof(header), 1, ifile);
if (header[0] == 0x5a4d)
{
long header_offset = (long)header[2]*512L;
if (header[1])
header_offset += (long)header[1] - 512L;
fseek(ifile, header_offset, SEEK_SET);
header[0] = 0;
fread(header, sizeof(header), 1, ifile);
if ((header[0] != 0x010b) && (header[0] != 0x014c))
{
fprintf(stderr, "`%s' does not have a COFF/AOUT program appended to it\n", fname);
return;
}
fseek(ifile, header_offset, SEEK_SET);
}
else
{
fprintf(stderr, "`%s' is not an .EXE file\n", fname);
return;
}
*dot = 0;
ofile = fopen(fname, "w+b");
if (!ofile)
{
perror(fname);
return;
}
while ((rbytes=fread(buf, 1, 4096, ifile)) > 0)
{
int wb = fwrite(buf, 1, rbytes, ofile);
if (wb < 0)
{
perror(fname);
break;
}
if (wb < rbytes)
{
fprintf(stderr, "`%s': disk full\n", fname);
exit(1);
}
}
fclose(ifile);
fclose(ofile);
}
int
main(int argc, char **argv)
{
int i;
if (argc == 1) printf("Usage: %s <exename>", argv[0]);
for (i=1; i<argc; i++)
exe2aout(argv[i]);
return 0;
}

View File

@@ -1,11 +0,0 @@
#!/bin/sh
# $Id$
cd `dirname $0`
cc -o exe2coff exe2coff.c || exit
cp $1 binary.exe || exit
./exe2coff binary.exe || exit
cat cwsdstub.exe binary > binary.exe || exit
mv binary.exe $1
rm binary exe2coff

View File

@@ -1,7 +1,5 @@
#!/bin/sh
# $Id$
# sets VERSION to the value if RELEASE if there are any,
# otherwise it sets VERSION to revision number
if [ "$3" ]; then
@@ -21,7 +19,7 @@ echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>OpenTTD</string>
<string>Open Transport Tycoon</string>
<key>CFBundleExecutable</key>
<string>openttd</string>
<key>CFBundleGetInfoString</key>

9
os/mandrake/README.urpmi Normal file
View File

@@ -0,0 +1,9 @@
You require the data files of the original Transport Tycoon Deluxe
for Windows to play the game. You have to manually copy the following
files to %{_gamesdatadir}/openttd/data/
sample.cat
trg1r.grf
trgcr.grf
trghr.grf
trgir.grf
trgtr.grf

146
os/mandrake/openttd.spec Normal file
View File

@@ -0,0 +1,146 @@
#------------------------------------------------------------------------------
# openttd.spec
# This SPEC file controls the building of custom OpenTTD RPM
# packages.
#------------------------------------------------------------------------------
%define name openttd
%define version 0.5.0
%define release 1mdk
#------------------------------------------------------------------------------
# Prologue information
#------------------------------------------------------------------------------
Name: %{name}
Version: %{version}
Release: %{release}
Summary: An open source clone of the Microprose game "Transport Tycoon Deluxe"
Group: Games/Strategy
License: GPL
URL: http://www.openttd.org
Source: %{name}-%{version}.tar.gz
Packager: Dominik Scherer <dominik@openttd.com>
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
BuildRequires: libSDL1.2-devel >= 1.2.7
BuildRequires: libpng3-devel >= 1.2.5
BuildRequires: zlib1-devel >= 1.2.1
#------------------------------------------------------------------------------
# Description
#------------------------------------------------------------------------------
%description
An enhanced open source clone of the Microprose game "Transport Tycoon Deluxe".
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!
#------------------------------------------------------------------------------
# install scripts
#------------------------------------------------------------------------------
%prep
rm -rf $RPM_BUILD_ROOT
%setup
%build
make BINARY_DIR=%{_gamesbindir} PREFIX=%{_gamesdatadir} DATA_DIR=openttd INSTALL_DIR=%{_gamesdatadir}/openttd/ USE_HOMEDIR=1 PERSONAL_DIR=.openttd INSTALL=1 RELEASE=%{version}
%install
mkdir -p $RPM_BUILD_ROOT%{_gamesbindir}
mkdir -p $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/lang
mkdir -p $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/data
mkdir -p $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/scenario
cp ./openttd $RPM_BUILD_ROOT%{_gamesbindir}/
cp -r ./lang/*.lng $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/lang/
cp -r ./data/*.grf $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/data/
cp -r ./scenario/*.scn $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/scenario/
cp -r ./data/opntitle.dat $RPM_BUILD_ROOT%{_gamesdatadir}/openttd/data/
# icon
install -m644 media/openttd.32.png -D $RPM_BUILD_ROOT%{_miconsdir}/%{name}.png
install -m644 media/openttd.64.png -D $RPM_BUILD_ROOT%{_iconsdir}/%{name}.png
install -m644 media/openttd.128.png -D $RPM_BUILD_ROOT%{_liconsdir}/%{name}.png
# menu entry
mkdir -p $RPM_BUILD_ROOT/%{_menudir}
cat << EOF > $RPM_BUILD_ROOT/%{_menudir}/%{name}
?package(%{name}):command="%{_gamesbindir}/openttd" icon="%{name}.png" \
needs="X11" section="Amusement/Strategy" title="OpenTTD" \
longtitle="%{Summary}"
EOF
%clean
rm -rf $RPM_BUILD_ROOT
%post
%{update_menus}
%postun
%{clean_menus}
#------------------------------------------------------------------------------
# Files listing.
#------------------------------------------------------------------------------
%files
%defattr(-,root,root,0755)
%{_gamesbindir}/openttd
%{_gamesdatadir}/openttd/lang/american.lng
%{_gamesdatadir}/openttd/lang/catalan.lng
%{_gamesdatadir}/openttd/lang/czech.lng
%{_gamesdatadir}/openttd/lang/danish.lng
%{_gamesdatadir}/openttd/lang/dutch.lng
%{_gamesdatadir}/openttd/lang/english.lng
%{_gamesdatadir}/openttd/lang/finnish.lng
%{_gamesdatadir}/openttd/lang/french.lng
%{_gamesdatadir}/openttd/lang/galician.lng
%{_gamesdatadir}/openttd/lang/german.lng
%{_gamesdatadir}/openttd/lang/hungarian.lng
%{_gamesdatadir}/openttd/lang/icelandic.lng
%{_gamesdatadir}/openttd/lang/italian.lng
%{_gamesdatadir}/openttd/lang/norwegian.lng
%{_gamesdatadir}/openttd/lang/origveh.lng
%{_gamesdatadir}/openttd/lang/polish.lng
%{_gamesdatadir}/openttd/lang/portuguese.lng
%{_gamesdatadir}/openttd/lang/romanian.lng
%{_gamesdatadir}/openttd/lang/slovak.lng
%{_gamesdatadir}/openttd/lang/spanish.lng
%{_gamesdatadir}/openttd/lang/swedish.lng
%{_gamesdatadir}/openttd/data/autorail.grf
%{_gamesdatadir}/openttd/data/canalsw.grf
%{_gamesdatadir}/openttd/data/openttd.grf
%{_gamesdatadir}/openttd/data/opntitle.dat
%{_gamesdatadir}/openttd/data/signalsw.grf
%{_gamesdatadir}/openttd/data/trkfoundw.grf
"%{_gamesdatadir}/openttd/scenario/Linkgame Islands 2004.scn"
"%{_gamesdatadir}/openttd/scenario/Mountain Pass.scn"
"%{_gamesdatadir}/openttd/scenario/Volcano City.scn"
%{_menudir}/%{name}
%{_iconsdir}/*.png
%{_miconsdir}/*.png
%{_liconsdir}/*.png
%doc changelog.txt readme.txt COPYING os/linux/README.urpmi
#------------------------------------------------------------------------------
# Change Log
#------------------------------------------------------------------------------
%changelog
* Sun Jan 23 2005 Dominik Scherer <dominik@openttd.com> 0.3.6-1mdk
- Upgraded to 0.3.6
- Structured and commented the spec file a bit (inspired by ScummVM)
* Fri Dec 24 2004 Dominik Scherer <dominik@openttd.com> 0.3.5-1mdk
- Upgraded to 0.3.5
- Added a warning message about the additional required files (only displayed when installing via urpmi)
* Wed Sep 15 2004 Dominik Scherer <> 0.3.4-1mdk
- Upgraded to 0.3.4
* Wed Jul 31 2004 Dominik Scherer <> 0.3.3-1mdk
- Initial release

View File

@@ -1,176 +0,0 @@
# $Id$
#-------------------------------------------------------------------------------
# spec file for the openttd rpm package
#
# Copyright (c) 2007-2009 The OpenTTD developers
#
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself
#
#-------------------------------------------------------------------------------
Name: openttd
Version: 0.7.0
Release: 1%{?dist}
Group: Amusements/Games
License: GPLv2
URL: http://www.openttd.org
Summary: OpenTTD is an Open Source clone of Chris Sawyer's Transport Tycoon Deluxe
Source: %{name}-%{version}.tar.bz2
Requires: fontconfig
Requires: libicu
Requires: libpng
Requires: SDL
Requires: zlib
BuildRequires: fontconfig-devel
BuildRequires: libpng-devel
BuildRequires: libicu-devel
BuildRequires: SDL-devel
BuildRequires: zlib-devel
# vendor specific dependencies
%if %{_vendor}=="alt"
Requires: freetype
BuildRequires: freetype-devel
%endif
%if %{_vendor}=="MandrakeSoft" || %{_vendor}=="mandriva"
Requires: freetype2
BuildRequires: libfreetype6-devel
%endif
%if %{_vendor}=="redhat" || %{_vendor}=="fedora"
Requires: freetype
BuildRequires: freetype-devel
BuildRequires: desktop-file-utils
%endif
%if %{_vendor}=="suse"
Requires: freetype2
BuildRequires: freetype2-devel
%endif
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
%description
OpenTTD is a reimplementation of the Microprose game "Transport Tycoon Deluxe"
with lots of new features and enhancements. To play the game you need to copy
the following 6 data files from your Transport Tycoon Deluxe CD to the game
data directory in %{_datadir}/games/%{name}/data:
From the Windows version of TTD you need:
sample.cat trg1r.grf trgcr.grf trghr.grf trgir.grf trgtr.grf
Or if you have the DOS version you need:
sample.cat TRG1.GRF TRGC.GRF TRGH.GRF TRGI.GRF TRGT.GRF
OpenTTD is licensed under the GNU General Public License version 2.0. For more
information, see the file 'COPYING' included with every release and source
download of the game.
%prep
%setup -q
%build
./configure \
--revision=%{version} \
--prefix-dir="%{_prefix}" \
--binary-dir="bin" \
--binary-name="%{name}" \
# --menu-name="OpenTTD" \
# --data-dir="share\games\%{name}" \
# --doc-dir="share\doc\%{name}" \
# --icon-dir="share/pixmaps" \
# --icon-theme-dir="share/icons/hicolor" \
# --man-dir="share/man/man6" \
# --menu-dir="share/applications" \
--enable-debug=0 \
# --menu_group="Game;" \
--with-sdl \
--with-zlib \
--with-png \
--with-freetype \
--with-fontconfig \
--with-icu \
--enable-strip
make %{?_smp_mflags}
%install
rm -rf "%{buildroot}"
make install INSTALL_DIR="%{buildroot}"
# Validate menu entrys (vendor specific)
%if %{_vendor} == "redhat" || %{_vendor}=="fedora"
desktop-file-install \
# --delete-original \
--vendor="%{_vendor}" \
--remove-key Version \
--dir="%{buildroot}/%{_datadir}/applications/" \
"%{buildroot}/%{_datadir}/applications/%{name}.desktop"
%endif
%clean
rm -rf "%{buildroot}"
%post
# Update the icon cache (vendor specific)
%if %{_vendor}=="MandrakeSoft" || %{_vendor}=="mandriva"
%update_icon_cache hicolor
%endif
%if %{_vendor} == "redhat" || %{_vendor}=="fedora"
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
fi
%endif
%postun
# Update the icon cache (vendor specific)
%if %{_vendor}=="MandrakeSoft" || %{_vendor}=="mandriva"
%update_icon_cache hicolor
%endif
%if %{_vendor} == "redhat" || %{_vendor}=="fedora"
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
fi
%endif
%files
%defattr(-, root, games, -)
%dir %{_datadir}/doc/%{name}
%dir %{_datadir}/games/%{name}
%dir %{_datadir}/games/%{name}/lang
%dir %{_datadir}/games/%{name}/data
%dir %{_datadir}/games/%{name}/gm
%attr(755, root, games) %{_bindir}/%{name}
%{_datadir}/doc/%{name}/*
%{_datadir}/games/%{name}/lang/*
%{_datadir}/games/%{name}/data/*
%{_datadir}/applications/%{name}.desktop
%{_datadir}/pixmaps/*
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%doc %{_mandir}/man6/%{name}.6.gz
%changelog
* Mon Oct 20 2008 Benedikt Brüggemeier <skidd13@openttd.org>
- Added libicu dependency
* Thu Sep 23 2008 Benedikt Brüggemeier <skidd13@openttd.org>
- Merged both versions of the spec file
* Fri Aug 29 2008 Jonathan Coome <maedhros@openttd.org>
- Rewrite spec file from scratch.
* Sat Aug 02 2008 Benedikt Brüggemeier <skidd13@openttd.org>
- Updated spec file
* Thu Mar 27 2008 Denis Burlaka <burlaka@yandex.ru>
- Universal spec file

BIN
os/suse/openttd.spec Normal file

Binary file not shown.

View File

@@ -1,4 +0,0 @@
@echo off
"c:\Program Files\NSIS\makensis.exe" /DVERSION_INCLUDE=version_win9x.txt install.nsi > win9x.log
"c:\Program Files\NSIS\makensis.exe" /DVERSION_INCLUDE=version_win32.txt install.nsi > win32.log
"c:\Program Files\NSIS\makensis.exe" /DVERSION_INCLUDE=version_win64.txt install.nsi > win64.log

View File

@@ -1,10 +1,9 @@
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "0.7.0" ; Define application version
!define INSTALLERVERSION 54 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!include ${VERSION_INCLUDE}
!define APPVERSION "0.6.0" ; Define application version
!define INSTALLERVERSION 42 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
!define APPURLLINK "http://www.openttd.org"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta1"
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta4"
!define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X
!define MUI_ICON "..\..\..\media\openttd.ico"
@@ -19,20 +18,21 @@ SetCompressor LZMA
; Version Info
Var AddWinPrePopulate
VIProductVersion "${APPVERSIONINTERNAL}"
VIAddVersionKey "ProductName" "OpenTTD Installer ${APPBITS} bits version ${EXTRA_VERSION}"
VIAddVersionKey "ProductName" "OpenTTD Installer"
VIAddVersionKey "Comments" "Installs ${APPNAMEANDVERSION}"
VIAddVersionKey "CompanyName" "OpenTTD Developers"
VIAddVersionKey "FileDescription" "Installs ${APPNAMEANDVERSION}"
VIAddVersionKey "ProductVersion" "${APPVERSION}"
VIAddVersionKey "InternalName" "InstOpenTTD-${APPARCH}"
VIAddVersionKey "FileVersion" "${APPVERSION}-${APPARCH}"
VIAddVersionKey "InternalName" "InstOpenTTD"
VIAddVersionKey "FileVersion" "${APPVERSION}"
VIAddVersionKey "LegalCopyright" " "
; Main Install settings
Name "${APPNAMEANDVERSION} ${APPBITS} bits version ${EXTRA_VERSION}"
Name "${APPNAMEANDVERSION}"
; NOTE: Keep trailing backslash!
InstallDir "$PROGRAMFILES\OpenTTD\"
InstallDirRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenTTD" "Install Folder"
OutFile "openttd-${APPVERSION}-${APPARCH}.exe"
OutFile "openttd-${APPVERSION}-win32.exe"
CRCCheck force
ShowInstDetails show
@@ -45,7 +45,7 @@ Var CDDRIVE
!include "MUI.nsh"
!define MUI_ABORTWARNING
!define MUI_WELCOMEPAGE_TITLE_3LINES
!insertmacro MUI_PAGE_WELCOME
!define MUI_LICENSEPAGE_RADIOBUTTONS
@@ -75,8 +75,6 @@ Page custom SelectCDEnter SelectCDExit ": TTD folder"
; New custom page to show UNICODE and MSLU information
Page custom ShowWarningsPage
!define MUI_FINISHPAGE_TITLE_3LINES
!define MUI_FINISHPAGE_RUN_TEXT "Run ${APPNAMEANDVERSION} now!"
!define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe"
!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for latest news, FAQs and downloads"
!define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}"
@@ -86,7 +84,6 @@ Page custom ShowWarningsPage
!define MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT DisableBack
!insertmacro MUI_PAGE_FINISH
!define MUI_PAGE_HEADER_TEXT "Uninstall ${APPNAMEANDVERSION}"
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
@@ -100,17 +97,19 @@ Section "!OpenTTD" Section1
; Overwrite files by default, but don't complain on failure
SetOverwrite try
; Make savegame folder
SetOutPath "$INSTDIR\save"
; Define root variable relative to installer
!define PATH_ROOT "..\..\..\"
; Copy language files
SetOutPath "$INSTDIR\lang\"
File ${PATH_ROOT}bin\lang\*.lng
File ${PATH_ROOT}src\lang\english.txt
; Copy data files
SetOutPath "$INSTDIR\data\"
File ${PATH_ROOT}bin\data\*.grf
File ${PATH_ROOT}bin\data\*.obg
File ${PATH_ROOT}bin\data\opntitle.dat
; Copy scenario files (don't choke if they don't exist)
SetOutPath "$INSTDIR\scenario\"
@@ -120,10 +119,6 @@ Section "!OpenTTD" Section1
SetOutPath "$INSTDIR\scenario\heightmap\"
File /nonfatal ${PATH_ROOT}bin\scenario\heightmap\*.*
; Copy the scripts
SetOutPath "$INSTDIR\scripts\"
File ${PATH_ROOT}bin\scripts\*.*
; Copy the rest of the stuff
SetOutPath "$INSTDIR\"
@@ -134,13 +129,13 @@ Section "!OpenTTD" Section1
File ${PATH_ROOT}known-bugs.txt
; Copy executable
File /oname=openttd.exe ${BINARY_DIR}\openttd.exe
File /oname=openttd.exe ${PATH_ROOT}objs\Win32\Release\openttd.exe
File ${PATH_ROOT}objs\strgen\strgen.exe
; Delete old files from the main dir. they are now placed in data/ and lang/
Delete "$INSTDIR\*.lng"
Delete "$INSTDIR\*.grf"
Delete "$INSTDIR\*.obg"
Delete "$INSTDIR\sample.cat"
Delete "$INSTDIR\ttd.exe"
@@ -252,10 +247,10 @@ Section "Uninstall"
Delete "$INSTDIR\readme.txt"
Delete "$INSTDIR\known-bugs.txt"
Delete "$INSTDIR\openttd.exe"
Delete "$INSTDIR\strgen.exe"
Delete "$INSTDIR\COPYING"
Delete "$INSTDIR\INSTALL.LOG"
Delete "$INSTDIR\crash.log"
Delete "$INSTDIR\crash.dmp"
Delete "$INSTDIR\openttd.cfg"
Delete "$INSTDIR\hs.dat"
Delete "$INSTDIR\cached_sprites.*"
@@ -274,11 +269,6 @@ Section "Uninstall"
Delete "$INSTDIR\data\openttd.grf"
Delete "$INSTDIR\data\roadstops.grf"
Delete "$INSTDIR\data\trkfoundw.grf"
Delete "$INSTDIR\data\openttdd.grf"
Delete "$INSTDIR\data\openttdw.grf"
Delete "$INSTDIR\data\orig_win.obg"
Delete "$INSTDIR\data\orig_dos.obg"
Delete "$INSTDIR\data\orig_dos_de.obg"
Delete "$INSTDIR\data\sample.cat"
; Windows Data files
@@ -299,9 +289,7 @@ Section "Uninstall"
; Language files
Delete "$INSTDIR\lang\*.lng"
; Scripts
Delete "$INSTDIR\scripts\*.*"
Delete "$INSTDIR\lang\english.txt"
; Remove remaining directories
RMDir "$SMPROGRAMS\$SHORTCUTS\Extras\"
@@ -402,55 +390,14 @@ Function GetWindowsVersion
ClearErrors
StrCpy $R0 "winnt"
GetVersion::WindowsPlatformId
Pop $R0
IntCmp $R0 2 WinNT 0
ReadRegStr $R1 HKLM "SOFTWARE\MICROSOFT\WINDOWS NT\CurrentVersion" CurrentVersion
IfErrors 0 WinNT
StrCpy $R0 "win9x"
WinNT:
ClearErrors
Push $R0
FunctionEnd
;-------------------------------------------------------------------------------
; Check whether we're not running an installer for 64 bits on 32 bits and vice versa
Function CheckProcessorArchitecture
GetVersion::WindowsPlatformArchitecture
Pop $R0
IntCmp $R0 64 Win64 0
ClearErrors
IntCmp ${APPBITS} 64 0 Done
MessageBox MB_OKCANCEL|MB_ICONSTOP "You want to install the 64 bits OpenTTD on a 32 bits Operating System. This is not going to work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
GoTo Done
Win64:
ClearErrors
IntCmp ${APPBITS} 64 Done 0
MessageBox MB_OKCANCEL|MB_ICONINFORMATION "You want to install the 32 bits OpenTTD on a 64 bits Operating System. This is not adviced, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
GoTo Done
Abort:
Quit
Done:
FunctionEnd
;-------------------------------------------------------------------------------
; Check whether we're not running an installer for NT on 9x and vice versa
Function CheckWindowsVersion
Call GetWindowsVersion
Pop $R0
StrCmp $R0 "win9x" 0 WinNT
ClearErrors
StrCmp ${APPARCH} "win9x" Done 0
MessageBox MB_OKCANCEL|MB_ICONSTOP "You want to install the Windows 2000, XP and Vista version on Windows 95, 98 or ME. This is will not work. Please download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
GoTo Done
WinNT:
ClearErrors
StrCmp ${APPARCH} "win9x" 0 Done
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "You want to install the Windows 95, 98 and ME version on Windows 2000, XP or Vista. This is not adviced, but will work with reduced capabilities. We suggest that you download the correct version. Do you really want to continue?" IDOK Done IDCANCEL Abort
Abort:
Quit
Done:
FunctionEnd
Var OLDVERSION
Var UninstallString
@@ -501,8 +448,6 @@ InstallerIsOlder:
FinishCallback:
ClearErrors
Call CheckProcessorArchitecture
Call CheckWindowsVersion
FunctionEnd
; eof

View File

@@ -1,5 +0,0 @@
!define APPBITS 32 ; Define number of bits for the architecture
!define EXTRA_VERSION "for Windows 2000, XP and Vista"
!define APPARCH "win32" ; Define the application architecture
!define BINARY_DIR "${PATH_ROOT}objs\win32\Release"
InstallDir "$PROGRAMFILES32\OpenTTD\"

View File

@@ -1,5 +0,0 @@
!define APPBITS 64 ; Define number of bits for the architecture
!define EXTRA_VERSION "for Windows XP and Vista"
!define APPARCH "win64" ; Define the application architecture
!define BINARY_DIR "${PATH_ROOT}objs\x64\Release"
InstallDir "$PROGRAMFILES64\OpenTTD\"

View File

@@ -1,5 +0,0 @@
!define APPBITS 32 ; Define number of bits for the architecture
!define EXTRA_VERSION "for Windows 95, 98 and ME"
!define APPARCH "win9x" ; Define the application architecture
!define BINARY_DIR "${PATH_ROOT}bin"
InstallDir "$PROGRAMFILES32\OpenTTD\"

326
projects/determineversion.vbs Executable file → Normal file
View File

@@ -9,247 +9,172 @@ Sub FindReplaceInFile(filename, to_find, replacement)
data = file.ReadAll
file.Close
data = Replace(data, to_find, replacement)
Set file = FSO.CreateTextFile(filename, -1, 0)
Set file = FSO.CreateTextFile(FileName, -1, 0)
file.Write data
file.Close
End Sub
Sub UpdateFile(modified, revision, version, cur_date, filename)
Sub UpdateFile(revision, version, cur_date, filename)
FSO.CopyFile filename & ".in", filename
FindReplaceInFile filename, "@@MODIFIED@@", modified
FindReplaceInFile filename, "@@REVISION@@", revision
FindReplaceInFile filename, "@@VERSION@@", version
FindReplaceInFile filename, "@@DATE@@", cur_date
End Sub
Sub UpdateFiles(version)
Dim modified, revision, cur_date
Dim WshShell, cur_date, revision, oExec
Set WshShell = CreateObject("WScript.Shell")
cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date)
If InStr(version, Chr(9)) Then
revision = Mid(version, InStr(version, Chr(9)) + 1)
revision = Mid(revision, 1, InStr(revision, Chr(9)) - 1)
modified = Mid(version, InStrRev(version, Chr(9)) + 1)
version = Mid(version, 1, InStr(version, Chr(9)) - 1)
Else
revision = 0
modified = 1
End If
UpdateFile modified, revision, version, cur_date, "../src/rev.cpp"
UpdateFile modified, revision, version, cur_date, "../src/ottdres.rc"
End Sub
Function ReadRegistryKey(shive, subkey, valuename, architecture)
Dim hiveKey, objCtx, objLocator, objServices, objReg, Inparams, Outparams
' First, get the Registry Provider for the requested architecture
Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
objCtx.Add "__ProviderArchitecture", architecture ' Must be 64 of 32
Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
Set objServices = objLocator.ConnectServer("","root\default","","",,,,objCtx)
Set objReg = objServices.Get("StdRegProv")
' Check the hive and give it the right value
Select Case shive
Case "HKCR", "HKEY_CLASSES_ROOT"
hiveKey = &h80000000
Case "HKCU", "HKEY_CURRENT_USER"
hiveKey = &H80000001
Case "HKLM", "HKEY_LOCAL_MACHINE"
hiveKey = &h80000002
Case "HKU", "HKEY_USERS"
hiveKey = &h80000003
Case "HKCC", "HKEY_CURRENT_CONFIG"
hiveKey = &h80000005
Case "HKDD", "HKEY_DYN_DATA" ' Only valid for Windows 95/98
hiveKey = &h80000006
Case Else
MsgBox "Hive not valid (ReadRegistryKey)"
revision = 0
Select Case Mid(version, 1, 1)
Case "r" ' svn
revision = Mid(version, 2)
If InStr(revision, "M") Then
revision = Mid(revision, 1, InStr(revision, "M") - 1)
End If
If InStr(revision, "-") Then
revision = Mid(revision, 1, InStr(revision, "-") - 1)
End If
Case "h" ' mercurial (hg)
Set oExec = WshShell.Exec("hg log -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
If Err.Number = 0 Then
revision = Mid(OExec.StdOut.ReadLine(), 7)
revision = Mid(revision, 1, InStr(revision, ")") - 1)
End If
Case "g" ' git
Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
if Err.Number = 0 Then
revision = Mid(oExec.StdOut.ReadLine(), 7)
revision = Mid(revision, 1, InStr(revision, ")") - 1)
End If
End Select
Set Inparams = objReg.Methods_("GetStringValue").Inparameters
Inparams.Hdefkey = hiveKey
Inparams.Ssubkeyname = subkey
Inparams.Svaluename = valuename
Set Outparams = objReg.ExecMethod_("GetStringValue", Inparams,,objCtx)
ReadRegistryKey = Outparams.SValue
End Function
UpdateFile revision, version, cur_date, "../src/rev.cpp"
UpdateFile revision, version, cur_date, "../src/ottdres.rc"
End Sub
Function DetermineSVNVersion()
Dim WshShell, version, branch, modified, revision, url, oExec, line, hash
Dim WshShell, version, url, oExec, line
Set WshShell = CreateObject("WScript.Shell")
On Error Resume Next
revision = 0
' Try TortoiseSVN
' Get the directory where TortoiseSVN (should) reside(s)
Dim sTortoise
' First, try with 32-bit architecture
sTortoise = ReadRegistryKey("HKLM", "SOFTWARE\TortoiseSVN", "Directory", 32)
If sTortoise = "" Then
' No 32-bit version of TortoiseSVN installed, try 64-bit version (doesn't hurt on 32-bit machines, it returns nothing or is ignored)
sTortoise = ReadRegistryKey("HKLM", "SOFTWARE\TortoiseSVN", "Directory", 64)
End If
sTortoise = WshShell.RegRead("HKLM\SOFTWARE\TortoiseSVN\Directory")
' If TortoiseSVN is installed, try to get the revision number
If sTortoise <> "" Then
Dim SubWCRev
Set SubWCRev = WScript.CreateObject("SubWCRev.object")
SubWCRev.GetWCInfo FSO.GetAbsolutePathName("../src"), 0, 0
revision = SubWCRev.Revision
version = "r" & revision
modified = 0
if SubWCRev.HasModifications then modified = 2
url = SubWCRev.Url
End If
Dim file
' Write some "magic" to a temporary file so we can acquire the svn revision/state
Set file = FSO.CreateTextFile("tsvn_tmp", -1, 0)
file.WriteLine "r$WCREV$$WCMODS?M:$"
file.WriteLine "$WCURL$"
file.Close
Set oExec = WshShell.Exec(sTortoise & "\bin\SubWCRev.exe ../src tsvn_tmp tsvn_tmp")
' Wait till the application is finished ...
Do
OExec.StdOut.ReadLine()
Loop While Not OExec.StdOut.atEndOfStream
Set file = FSO.OpenTextFile("tsvn_tmp", 1, 0, 0)
version = file.ReadLine
url = file.ReadLine
file.Close
Set file = FSO.GetFile("tsvn_tmp")
file.Delete
' Looks like there is no TortoiseSVN installed either. Then we don't know it.
If revision = 0 Then
If InStr(version, "$") Then
' Reset error and version
Err.Clear
version = "norev000"
modified = 0
' Set the environment to english
WshShell.Environment("PROCESS")("LANG") = "en"
' Do we have subversion installed? Check immediatelly whether we've got a modified WC.
Set oExec = WshShell.Exec("svnversion ../src")
If Err.Number = 0 Then
' Wait till the application is finished ...
Do While oExec.Status = 0
Loop
Dim modified
If InStr(OExec.StdOut.ReadLine(), "M") Then
modified = "M"
Else
modified = ""
End If
line = OExec.StdOut.ReadLine()
If line <> "exported" Then
If InStr(line, "M") Then
modified = 2
End If
' Set the environment to english
WshShell.Environment("PROCESS")("LANG") = "en"
' And use svn info to get the correct revision and branch information.
Set oExec = WshShell.Exec("svn info ../src")
If Err.Number = 0 Then
Do
line = OExec.StdOut.ReadLine()
If InStr(line, "URL") Then
url = line
End If
If InStr(line, "Last Changed Rev") Then
revision = Mid(line, 19)
version = "r" & revision
End If
Loop While Not OExec.StdOut.atEndOfStream
End If ' Err.Number = 0
End If ' line <> "exported"
End If ' Err.Number = 0
End If ' InStr(version, "$")
' And use svn info to get the correct revision and branch information.
Set oExec = WshShell.Exec("svn info ../src")
If Err.Number = 0 Then
Do
line = OExec.StdOut.ReadLine()
If InStr(line, "URL") Then
url = line
End If
If InStr(line, "Last Changed Rev") Then
version = "r" & Mid(line, 19) & modified
End If
Loop While Not OExec.StdOut.atEndOfStream
End If
End If
End If
If version <> "norev000" Then
If InStr(url, "branches") Then
url = Mid(url, InStr(url, "branches/") + 9)
branch = Mid(url, 1, InStr(2, url, "/") - 1)
url = Mid(url, InStr(url, "branches") + 8)
url = Mid(url, 1, InStr(2, url, "/") - 1)
version = version & Replace(url, "/", "-")
End If
Else ' version <> "norev000"
Else
' svn detection failed, reset error and try git
Err.Clear
Set oExec = WshShell.Exec("git rev-parse --verify HEAD")
Set oExec = WshShell.Exec("git rev-parse --verify --short=8 HEAD")
If Err.Number = 0 Then
' Wait till the application is finished ...
Do While oExec.Status = 0
version = "g" & oExec.StdOut.ReadLine()
Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src")
Do While oExec.Status = 0 And Err.Number = 0
Loop
If Err.Number = 0 And oExec.ExitCode = 1 Then
version = version & "M"
End If
If oExec.ExitCode = 0 Then
hash = oExec.StdOut.ReadLine()
version = "g" & Mid(hash, 1, 8)
Set oExec = WshShell.Exec("git diff-index --exit-code --quiet HEAD ../src")
If Err.Number = 0 Then
' Wait till the application is finished ...
Do While oExec.Status = 0
Loop
If oExec.ExitCode = 1 Then
modified = 2
End If ' oExec.ExitCode = 1
Set oExec = WshShell.Exec("git symbolic-ref HEAD")
If Err.Number = 0 Then
line = oExec.StdOut.ReadLine()
line = Mid(line, InStrRev(line, "/") + 1)
If line <> "master" Then
branch = line
End If ' line <> "master"
End If ' Err.Number = 0
Set oExec = WshShell.Exec("git log --pretty=format:%s --grep=" & Chr(34) & "^(svn r[0-9]*)" & Chr(34) & " -1 ../src")
if Err.Number = 0 Then
revision = Mid(oExec.StdOut.ReadLine(), 7)
revision = Mid(revision, 1, InStr(revision, ")") - 1)
End If ' Err.Number = 0
End If ' Err.Number = 0
End If ' oExec.ExitCode = 0
End If ' Err.Number = 0
If version = "norev000" Then
' git detection failed, reset error and try mercurial (hg)
Err.Clear
Set oExec = WshShell.Exec("hg parents")
Set oExec = WshShell.Exec("git symbolic-ref HEAD")
If Err.Number = 0 Then
' Wait till the application is finished ...
Do While oExec.Status = 0
Loop
If oExec.ExitCode = 0 Then
line = OExec.StdOut.ReadLine()
hash = Mid(line, InStrRev(line, ":") + 1)
version = "h" & Mid(hash, 1, 8)
Set oExec = WshShell.Exec("hg status ../src")
If Err.Number = 0 Then
Do
line = OExec.StdOut.ReadLine()
If Len(line) > 0 And Mid(line, 1, 1) <> "?" Then
modified = 2
Exit Do
End If ' Len(line) > 0 And Mid(line, 1, 1) <> "?"
Loop While Not OExec.StdOut.atEndOfStream
Set oExec = WshShell.Exec("hg branch")
If Err.Number = 0 Then
line = OExec.StdOut.ReadLine()
If line <> "default" Then
branch = line
End If ' line <> "default"
End If ' Err.Number = 0
Set oExec = WshShell.Exec("hg log -r " & hash & ":0 -k " & Chr(34) & "svn" & Chr(34) & " -l 1 --template " & Chr(34) & "{desc}\n" & Chr(34) & " ../src")
If Err.Number = 0 Then
revision = Mid(OExec.StdOut.ReadLine(), 7)
revision = Mid(revision, 1, InStr(revision, ")") - 1)
End If ' Err.Number = 0
End If ' Err.Number = 0
End If ' oExec.ExitCode = 0
End If ' Err.Number = 0
End If ' version = "norev000"
End If ' version <> "norev000"
If modified = 2 Then
version = version & "M"
line = oExec.StdOut.ReadLine()
line = Mid(line, InStrRev(line, "/")+1)
If line <> "master" Then
version = version & "-" & line
End If
End If
Else
' try mercurial (hg)
Err.Clear
Set oExec = WshShell.Exec("hg tip")
If Err.Number = 0 Then
version = "h" & Mid(OExec.StdOut.ReadLine(), 19, 8)
Set oExec = WshShell.Exec("hg status ../src")
If Err.Number = 0 Then
Do
line = OExec.StdOut.ReadLine()
If Mid(line, 1, 1) <> "?" Then
version = version & "M"
Exit Do
End If
Loop While Not OExec.StdOut.atEndOfStream
End If
Set oExec = WshShell.Exec("hg branch")
If Err.Number = 0 Then
line = OExec.StdOut.ReadLine()
If line <> "default" Then
version = version & "-" & line
End If
End If
End If
End If
End If
If branch <> "" Then
version = version & "-" & branch
End If
If version <> "norev000" Then
DetermineSVNVersion = version & Chr(9) & revision & Chr(9) & modified
Else
DetermineSVNVersion = version
End If
DetermineSVNVersion = version
End Function
Function IsCachedVersion(ByVal version)
Function IsCachedVersion(version)
Dim cache_file, cached_version
cached_version = ""
Set cache_file = FSO.OpenTextFile("../config.cache.version", 1, True, 0)
@@ -258,10 +183,6 @@ Function IsCachedVersion(ByVal version)
End If
cache_file.Close
If InStr(version, Chr(9)) Then
version = Mid(version, 1, Instr(version, Chr(9)) - 1)
End If
If version <> cached_version Then
Set cache_file = fso.CreateTextFile("../config.cache.version", True)
cache_file.WriteLine(version)
@@ -272,13 +193,8 @@ Function IsCachedVersion(ByVal version)
End If
End Function
Function CheckFile(filename)
CheckFile = FSO.FileExists(filename)
If CheckFile Then CheckFile = (FSO.GetFile(filename).DateLastModified >= FSO.GetFile(filename & ".in").DateLastModified)
End Function
Dim version
version = "0.7.0-beta1"
If Not (IsCachedVersion(version) And CheckFile("../src/rev.cpp") And CheckFile("../src/ottdres.rc")) Then
version = "0.6.0-beta4"
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
UpdateFiles version
End If

View File

@@ -28,7 +28,6 @@ fi
# First, collect the list of Windows files
allegro_config=""
sdl_config="1"
png_config="1"
os="MSVC"
@@ -56,15 +55,6 @@ safety_check() {
done
}
grep '\.h' "$ROOT_DIR/source.list" | grep -v '../objs/langs/table/strings.h' | sed 's/ //' | sort > tmp.headers.source.list
find "$ROOT_DIR/src" \( -iname "*.h" -or -iname "*.hpp" \) -and -not -ipath "*/.svn/*" | sed "s~$ROOT_DIR/src/~~" | sort > tmp.headers.src
if [ -n "`diff tmp.headers.source.list tmp.headers.src`" ]; then
echo "The following headers are missing in source.list and not in /src/ or vice versa."
diff tmp.headers.source.list tmp.headers.src | grep '[<>]' | sort
echo ""
fi
rm tmp.headers.*
load_main_data() {
# Read the source.list and process it
RES="`cat $1 | tr '\r' '\n' | awk '
@@ -79,13 +69,11 @@ load_main_data() {
deep += 1;
if ($0 == "ALLEGRO" && "'$allegro_config'" == "") { next; }
if ($0 == "SDL" && "'$sdl_config'" == "") { next; }
if ($0 == "PNG" && "'$png_config'" == "") { next; }
if ($0 == "OSX" && "'$os'" != "OSX") { next; }
if ($0 == "OS2" && "'$os'" != "OS2") { next; }
if ($0 == "PSP" && "'$os'" != "PSP") { next; }
if ($0 == "DOS" && "'$os'" != "DOS") { next; }
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
if ($0 == "BEOS" && "'$os'" != "BEOS") { next; }
@@ -95,7 +83,7 @@ load_main_data() {
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
if ($0 == "DIRECTMUSIC" && "'$enable_directmusic'" != "1") { next; }
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
if ($0 == "NO_THREADS" && "'$with_threads'" == "0") { next; }
skip += 1;
@@ -141,7 +129,7 @@ load_lang_data() {
RES=""
for i in `ls $1`
do
i=`basename $i | sed s~.txt$~~g`
i=`basename $i | sed s/.txt$//g`
RES="$RES
<File
RelativePath=\"..\\src\\lang\\"$i".txt\"

83
projects/generate.vbs Executable file → Normal file
View File

@@ -46,85 +46,6 @@ Sub safety_check(filename)
file.Close
End Sub
Sub get_files(srcdir, dir, list)
Dim file, filename
Dim rekeep, reskip
' pattern for files to keep
Set rekeep = New RegExp
rekeep.Pattern = "\.h(pp)?$"
rekeep.Global = True
' pattern for files to exclude
Set reskip = New RegExp
reskip.Pattern = "\.svn"
reskip.Global = True
For Each file in dir.Files
filename = Replace(file.path, srcdir, "") ' Remove */src/
filename = Replace(filename, "\", "/") ' Replace separators
If rekeep.Test(filename) And Not reskip.Test(filename) Then
list.Add filename, filename
End If
Next
End Sub
Sub get_dir_files(srcdir, dir, list)
Dim folder
' Get files
get_files srcdir, dir, list
' Recurse in subfolders
For Each folder in dir.SubFolders
get_dir_files srcdir, folder, list
Next
End Sub
Sub headers_check(filename, dir)
Dim source_list_headers, src_dir_headers, regexp, line, file, str
' Define regexp for source.list parsing
Set regexp = New RegExp
regexp.Pattern = "\.h"
regexp.Global = True
' Parse source.list and store headers in a dictionary
Set source_list_headers = CreateObject("Scripting.Dictionary")
Set file = FSO.OpenTextFile(filename, 1, 0, 0)
While Not file.AtEndOfStream
line = Replace(file.ReadLine, Chr(9), "") ' Remove tabs
If Len(line) > 0 And regexp.Test(line) And line <> "../objs/langs/table/strings.h" Then
source_list_headers.Add line, line
End If
Wend
file.Close()
' Get header files in /src/
Set src_dir_headers = CreateObject("Scripting.Dictionary")
get_dir_files dir, FSO.GetFolder(dir), src_dir_headers
' Finding files in source.list but not in /src/
For Each line In source_list_headers
If Not src_dir_headers.Exists(line) Then
str = str & "< " & line & vbCrLf
End If
Next
' Finding files in /src/ but not in source.list
For Each line In src_dir_headers
If Not source_list_headers.Exists(line) Then
str = str & "> " & line & vbCrLf
End If
Next
' Display the missing files if any
If str <> "" Then
str = "The following headers are missing in source.list and not in /src/ or vice versa." _
& vbCrLf & str
WScript.Echo str
End If
End Sub
Function load_main_data(filename)
Dim res, file, line, deep, skip, first_time
res = ""
@@ -150,8 +71,7 @@ Function load_main_data(filename)
line = "PNG" Or _
line = "WIN32" Or _
line = "MSVC" Or _
line = "DIRECTMUSIC" Or _
line = "HAVE_THREAD" _
line = "DIRECTMUSIC" _
) Then skip = skip + 1
deep = deep + 1
Case "#"
@@ -250,7 +170,6 @@ If Not FSO.FileExists(ROOT_DIR & "/source.list") Then
End If
safety_check ROOT_DIR & "/source.list"
headers_check ROOT_DIR & "/source.list", ROOT_DIR & "\src\" ' Backslashes needed for DoFiles
Dim openttd
openttd = load_main_data(ROOT_DIR &"/source.list")

View File

@@ -61,21 +61,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\arabic_egypt.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating arabic_egypt language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\arabic_egypt.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\brazilian_portuguese.txt"
>
@@ -301,21 +286,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\hebrew.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating hebrew language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\hebrew.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\hungarian.txt"
>
@@ -346,21 +316,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\indonesian.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating indonesian language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\indonesian.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\italian.txt"
>
@@ -406,21 +361,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\latvian.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating latvian language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\latvian.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\lithuanian.txt"
>
@@ -676,21 +616,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\welsh.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating welsh language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\welsh.lng"
/>
</FileConfiguration>
</File>
</Files>
<Globals>
</Globals>

View File

@@ -62,21 +62,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\arabic_egypt.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating arabic_egypt language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\arabic_egypt.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\brazilian_portuguese.txt"
>
@@ -302,21 +287,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\hebrew.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating hebrew language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\hebrew.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\hungarian.txt"
>
@@ -347,21 +317,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\indonesian.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating indonesian language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\indonesian.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\italian.txt"
>
@@ -407,21 +362,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\latvian.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating latvian language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\latvian.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\lithuanian.txt"
>
@@ -677,21 +617,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\welsh.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating welsh language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;"
AdditionalDependencies=""
Outputs="..\bin\lang\welsh.lng"
/>
</FileConfiguration>
</File>
</Files>
<Globals>
</Globals>

View File

@@ -4,7 +4,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd_vs80.vcp
ProjectSection(ProjectDependencies) = postProject
{0F066B23-18DF-4284-8265-F4A5E7E3B966} = {0F066B23-18DF-4284-8265-F4A5E7E3B966}
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC} = {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen_vs80.vcproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
@@ -14,8 +13,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "langs", "langs_vs80.vcproj"
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", "version_vs80.vcproj", "{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -48,14 +45,6 @@ Global
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|Win32.Build.0 = Debug|Win32
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|x64.ActiveCfg = Debug|Win32
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|x64.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|Win32.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|Win32.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|x64.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|x64.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|Win32.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|Win32.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|x64.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|x64.Build.0 = Debug|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

File diff suppressed because it is too large Load Diff

View File

@@ -33,6 +33,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -53,14 +55,13 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -90,14 +91,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames=""
@@ -144,6 +145,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -164,10 +167,9 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -188,14 +190,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="0"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib"
@@ -241,6 +243,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -262,14 +266,13 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -299,14 +302,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames=""
@@ -353,6 +356,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -374,10 +379,9 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -400,14 +404,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="0"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib"
@@ -488,6 +492,10 @@
</FileConfiguration>
</File>
</Filter>
<File
RelativePath=".\..\media\mainicon.ico"
>
</File>
<File
RelativePath=".\..\media\openttd.ico"
>

View File

@@ -4,7 +4,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openttd", "openttd_vs90.vcp
ProjectSection(ProjectDependencies) = postProject
{0F066B23-18DF-4284-8265-F4A5E7E3B966} = {0F066B23-18DF-4284-8265-F4A5E7E3B966}
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC} = {1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strgen", "strgen_vs90.vcproj", "{A133A442-BD0A-4ADE-B117-AD7545E4BDD1}"
@@ -14,8 +13,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "langs", "langs_vs90.vcproj"
{A133A442-BD0A-4ADE-B117-AD7545E4BDD1} = {A133A442-BD0A-4ADE-B117-AD7545E4BDD1}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", "version_vs90.vcproj", "{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -48,14 +45,6 @@ Global
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|Win32.Build.0 = Debug|Win32
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|x64.ActiveCfg = Debug|Win32
{0F066B23-18DF-4284-8265-F4A5E7E3B966}.Release|x64.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|Win32.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|Win32.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|x64.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Debug|x64.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|Win32.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|Win32.Build.0 = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|x64.ActiveCfg = Debug|Win32
{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}.Release|x64.Build.0 = Debug|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

File diff suppressed because it is too large Load Diff

View File

@@ -34,6 +34,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -54,14 +56,13 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -91,14 +92,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames=""
@@ -143,6 +144,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -163,10 +166,9 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -187,14 +189,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="0"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib"
@@ -239,6 +241,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -260,14 +264,13 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="3"
InlineFunctionExpansion="2"
EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -297,14 +300,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="1"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames=""
@@ -350,6 +353,8 @@
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="&quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCCustomBuildTool"
@@ -371,10 +376,9 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;WITH_ICU;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
AdditionalIncludeDirectories="..\objs\langs"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -397,14 +401,14 @@
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="2057"
Culture="1053"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib libicu.lib"
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib dxguid.lib libfreetype2.lib"
LinkIncremental="0"
SuppressStartupBanner="true"
IgnoreDefaultLibraryNames="LIBCMT.lib"
@@ -485,6 +489,10 @@
</FileConfiguration>
</File>
</Filter>
<File
RelativePath=".\..\media\mainicon.ico"
>
</File>
<File
RelativePath=".\..\media\openttd.ico"
>

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioUserFile
ProjectType="Visual C++"
Version="9.00"
ShowAllFiles="false"
>
<Configurations>
<Configuration
Name="Release|Win32"
>
<DebugSettings
WorkingDirectory="..\bin"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
>
<DebugSettings
WorkingDirectory="..\bin"
/>
</Configuration>
<Configuration
Name="Release|x64"
>
<DebugSettings
WorkingDirectory="..\bin"
/>
</Configuration>
<Configuration
Name="Debug|x64"
>
<DebugSettings
WorkingDirectory="..\bin"
/>
</Configuration>
</Configurations>
</VisualStudioUserFile>

View File

@@ -43,7 +43,6 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="1"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="STRGEN;WIN32;_DEBUG;_CONSOLE"

View File

@@ -44,7 +44,6 @@
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
Optimization="1"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="STRGEN;WIN32;_DEBUG;_CONSOLE"

View File

@@ -1,48 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="version"
ProjectGUID="{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}"
RootNamespace="version"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="10"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="cscript &quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath="..\src\ottdres.rc.in"
>
</File>
<File
RelativePath="..\src\rev.cpp.in"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -1,49 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="version"
ProjectGUID="{1A2B3C5E-1C23-41A5-9C9B-ACBA2AA75FEC}"
RootNamespace="version"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="10"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
Description="Determining version number"
CommandLine="cscript &quot;$(InputDir)/determineversion.vbs&quot;"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath="..\src\ottdres.rc.in"
>
</File>
<File
RelativePath="..\src\rev.cpp.in"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -1,6 +1,6 @@
OpenTTD README
Last updated: 2009-02-16
Release version: 0.7.0-beta1
Last updated: 2008-02-18
Release version: 0.6.0-beta4
------------------------------------------------------------------------
@@ -11,9 +11,6 @@ Table of Contents:
* 2.1 Reporting Bugs
3.0) Supported Platforms
4.0) Installing and running OpenTTD
* 4.1 (Required) 3rd party files
* 4.2 OpenTTD directories
* 4.3 Portable Installations (External Media)
5.0) OpenTTD features
6.0) Configuration File
7.0) Compiling
@@ -66,58 +63,6 @@ Please include the following information in your bug report:
the bug. That way we can fix it quicker by looking at the
changes made.
2.2) Reporting Desyncs:
---- ------------------
As desyncs are hard to make reproducable OpenTTD has the ability to log all
actions done by clients so we can replay the whole game in an effort to make
desyncs better reproducable. You need to turn this ability on. When turned
on an automatic savegame will be made once the map has been constructed in
the 'save/autosave' directory, see OpenTTD directories to know where to find
this directory. Furthermore the log file 'commands-out.log' will be created
and all actions will be written to there.
To enable the desync debugging you need to set the debug level for 'desync'
to at least 1. You do this by starting OpenTTD with '-d desync=<level>' as
parameter or by typing 'debug_level desync=<level>' in OpenTTD's internal
console.
The desync debug levels are:
0: nothing.
1: dumping of commands to 'commands-out.log'.
2: same as 1 plus checking vehicle caches and dumping that too.
3: same as 2 plus monthly saves in autosave.
4 and higher: same as 3
Restarting OpenTTD will overwrite 'commands-out.log'. OpenTTD will not remove
the savegames (dmp_cmds_*.sav) made by the desync debugging system, so you
have to occasionally remove them yourself!
The naming format of the desync savegames is as follows:
dmp_cmds_XXXXXXXX_YYYYYYYY.sav. The XXXXXXXX is the hexadecimal representation
of the generation seed of the game and YYYYYYYY is the hexadecimal
representation of the date of the game. This sorts the savegames by game and
then by date making it easier to find the right savegames.
When a desync has occurred with the desync debugging turned on you should file
a bug report with the following files attached:
- commands-out.log as it contains all the commands that were done
- the last saved savegame (search for the last line beginning with
'save: dmp_cmds_' in commands-out.log). We use this savegame to check
whether we can quickly reproduce the desync. Otherwise we will need...
- the first saved savegame (search for the first line beginning with 'save'
where the first part, up to the last underscore '_', is the same). We need
this savegame to be able to reproduce the bug when the last savegame is not
old enough. If you loaded a scenario or savegame you need to attach that.
- optionally you can attach the savegames from around 50%, 75%, 85%, 90% and
95% of the game's progression. We can use these savegames to speed up the
reproduction of the desync, but we should be able to reproduce these
savegames based on the first savegame and commands-out.log.
- in case you use any NewGRFs you should attach the ones you used unless
we can easily find them ourselves via e.g. grfcrawler or when they are
in the OpenTTDCoop pack.
Do NOT remove the dmp_cmds savegames of a desync you have reported until the
desync has been fixed; if you, by accident, send us the wrong savegames we
will not be able to reproduce the desync and thus will be unable to fix it.
3.0) Supported Platforms:
---- --------------------
@@ -125,15 +70,14 @@ OpenTTD has been ported to several platforms and operating systems. It shouldn't
be very difficult to port it to a new platform. The currently working platforms
are:
BeOS - SDL or Allegro
DOS - Allegro
BeOS - SDL
FreeBSD - SDL
Linux - SDL or Allegro
Linux - SDL
MacOS X (universal) - Cocoa video and sound drivers (SDL works too, but not 100% and not as a universal binary)
MorphOS - SDL
OpenBSD - SDL
OS/2 - SDL
Windows - Win32 GDI (faster) or SDL or Allegro
Windows - Win32 GDI (faster) or SDL
4.0) Installing and running OpenTTD:
@@ -144,100 +88,25 @@ archive which you have to extract to a directory where you want OpenTTD to
be installed, or you have downloaded an installer, which will automatically
extract OpenTTD in the given directory.
OpenTTD looks in multiple locations to find the required data files (described
in section 4.2). Installing any 3rd party files into a "shared" location has
the advantage that you only need to do this step once, rather than copying the
data files into all OpenTTD versions you have.
Savegames, screenshots, etc are saved relative to the config file (openttd.cfg)
currently being used. This means that if you use a config file in one of the
shared directories, savegames will reside in the save/ directory next to the
openttd.cfg file there.
If you want savegames and screenshots in the directory where the OpenTTD binary
resides, simply have your config file in that location. But if you remove this
config file, savegames will still be in this directory (see notes in section 4.2)
4.1) (Required) 3rd party files:
---- ---------------------------
Before you run OpenTTD, you need to put the game's datafiles into a data/
directory which can be located in various places addressed in the following
section.
As OpenTTD makes use of the original TTD artwork you will need the files listed
below, which you can find on a Transport Tycoon Deluxe CD-ROM.
The Windows installer optionally can copy these files from that CD-ROM.
Before you run OpenTTD, you need to put the game's datafiles into the data/
subdirectory. You need the following files from the original version
of TTD as OpenTTD makes use of the original TTD artwork. The Windows
installer optionally can copy these files from your Transport Tycoon Deluxe
CD-ROM.
List of the required files:
- sample.cat
- trg1r.grf
- trgcr.grf
- trghr.grf
- trgir.grf
- trgtr.grf
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
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF,
TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF.
If you want the TTD music, copy the gm/ folder from the Windows version
of TTD to your OpenTTD folder (not your data folder - also explained in
the following sections).
Do NOT copy files included with OpenTTD into "shared" directories (explained in
the following sections) as sooner or later you will run into graphical glitches
when using other versions of the game.
4.2) OpenTTD directories
---- -------------------------------
The TTD artwork files listed in the section 4.1 "(Required) 3rd party files"
can be placed in a few different locations:
1. The current working directory (from where you started OpenTTD)
2. Your personal directory
Windows: C:\Documents and Settings\<username>\My Documents\OpenTTD
Mac OSX: ~/Documents/OpenTTD
Linux: ~/.openttd
3. The shared directory
Windows: C:\Documents and Settings\All Users\Documents\OpenTTD
Mac OSX: /Library/Application Support/OpenTTD
Linux: not available
4. The binary directory (where the OpenTTD executable is)
Windows: C:\Program Files\OpenTTD
Linux: /usr/games
5. The installation directory (Linux only)
Linux: /usr/share/games/openttd
6. The application bundle (Mac OSX only)
It includes the OTTD files (grf+lng) and it will work as long as they aren't touched
Notes:
- Linux in the previous list means .deb, but most paths should be similar for others.
- The previous search order is also used for newgrfs and openttd.cfg.
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3, 5 order.
- Savegames will be relative to the config file only if there is no save/
directory in paths with higher priority than the config file path, but
autosaves and screenshots will always be relative to the config file.
The prefered setup:
Place 3rd party files in shared directory (or in personal directory if you don't
have write access on shared directory) and have your openttd.cfg config file in
personal directory (where the game will then also place savegames and screenshots).
4.3) Portable Installations (External Media):
---- ----------------------------------------
You can install OpenTTD on external media so you can take it with you, i.e.
using a USB key, or a USB HDD, etc.
Create a directory where you shall store the game in (i.e. OpenTTD/).
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), data/ and your
openttd.cfg to this directory.
You can copy binaries for any operating system into this directory, which will
allow you to play the game on nearly any computer you can attach the external
media to.
As always - additional grf files are stored in the data/ dir (for details,
again, see section 4.1).
If you want music you need to copy the gm/ folder from Windows TTD into your
OpenTTD folder, not your data folder.
5.0) OpenTTD features:
@@ -246,7 +115,7 @@ again, see section 4.1).
OpenTTD has a lot of features going beyond the original TTD emulation.
Unfortunately, there is currently no comprehensive list of features, but there
is a basic features list on the web, and some optional features can be
controlled through the Advanced Settings dialog. We also implement some
controlled through the Configure Patches dialog. We also implement some
features known from TTDPatch (http://www.ttdpatch.net/).
Several important non-standard controls:
@@ -256,41 +125,11 @@ Several important non-standard controls:
http://wiki.openttd.org/index.php/Console
5.1) Logging of potentially dangerous actions:
---- ----------------------------------------
OpenTTD is a complex program, and together with NewGRF, it may show a buggy
behaviour. But not only bugs in code can cause problems. There are several
ways to affect game state possibly resulting in program crash or multiplayer
desyncs.
Easier way would be to forbid all these unsafe actions, but that would affect
game usability for many players. We certainly do not want that.
However, we receive bugreports because of this. To reduce time spent with
solving these problems, these potentially unsafe actions are logged in
the savegame (including crash.sav). Log is stored in crash logs, too.
Information logged:
* Adding / removing / changing order of NewGRFs
* Changing NewGRF parameters, loading compatible NewGRF
* Changing game mode (scenario editor <-> normal game)
* Loading game saved in a different OTTD / TTDPatch / TTD version
* Running a modified OTTD build
* Changing settings affecting NewGRF behaviour (non-networksafe settings)
* Changing landscape (by cheat)
* Triggering NewGRF bugs
No personal information is stored.
You can show the gamelog by typing 'gamelog' in the console or by running
OpenTTD in debug mode.
6.0) Configuration File:
---- -------------------
The configuration file for OpenTTD (openttd.cfg) is in a simple Windows-like
.INI format. It's mostly undocumented. Almost all settings can be changed
ingame by using the 'Advanced Settings' window.
ingame by using the 'Configure Patches' window.
7.0) Compiling:
@@ -351,27 +190,10 @@ OS/2:
A comprehensive GNU build environment is required to build the OS/2 version.
See the docs/Readme_OS2.txt file for more information.
DOS:
A build environment with DJGPP is needed as well as libraries such as
Allegro, zlib and libpng, which all can be downloaded from the DJGPP
website. Compilation is straight forward: use make, but do a "./configure"
before the first build. The build binary will need cwsdpmi.exe to be in
the same directory as the openttd executable. cwsdpmi.exe can be found in
the os/dos subdirectory. If you compile with stripping turned on a binary
will be generated that does not need cwsdpmi.exe by adding the cswdstub.exe
to the created OpenTTD binary.
The following libraries are used by OpenTTD for:
- libSDL/liballegro: hardware access (video, sound, mouse)
- zlib: (de)compressing of savegames
- libpng: making screenshots and loading heightmaps
- libfreetype: loading generic fonts and rendering them
- libfontconfig: searching for fonts, resolving font names to actual fonts
- libicu: handling of right-to-left scripts (e.g. Arabic and Persian)
8.0) Translating:
---- -------------------
See http://www.openttd.org/development for up-to-date information.
See http://www.openttd.org/translating.php for up-to-date information.
The use of the online Translator service, located at
http://translator2.openttd.org/, is highly encouraged. For a username/password
@@ -394,7 +216,7 @@ Here are some translation guidelines which you should follow closely.
---- -------------------
So, now that you've notified the development team about your intention to
translate (You did, right? Of course you did.) you can pick up english.txt
(found in the SVN repository under /src/lang) and translate.
(found in the SVN repository under /lang) and translate.
You must change the first two lines of the file appropriately:
@@ -411,10 +233,7 @@ Note: Do not alter the following parts of the file:
8.3) Previewing:
---- -------------------
In order to view the translation in the game, you need to compile your language
file with the strgen utility. You can download the precompiled strgen from:
http://www.openttd.org/download-strgen
To compile it yourself just take the normal OpenTTD sources and build that.
During the build process the strgen utility will be made.
file with the strgen utility, which is now bundled with the game.
strgen is a command-line utility. It takes the language filename as parameter.
Example:
@@ -465,12 +284,9 @@ The OpenTTD team (in alphabetical order):
Jean-Francois Claeys (Belugas) - GUI, newindustries and more
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles
Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework
Victor Fischer (Celestar) - Programming everywhere you need him to
Christoph Elsenhans (frosch) - General coding
Loïc Guilloux (glx) - General coding
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)
Jonathan Coome (Maedhros) - High priest of the NewGRF Temple
Michael Lutz (michi_cc) - Path based signals
Jonathan Coome (Maedhros) - High priest of the newGRF Temple
Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host
Owen Rudge (orudge) - Forum host, OS/2 port
Peter Nelson (peter1138) - Spiritual descendant from newGRF gods
@@ -479,6 +295,7 @@ The OpenTTD team (in alphabetical order):
Zdenek Sojka (SmatZ) - Bug finder and fixer
Inactive Developers:
Victor Fischer (Celestar) - Programming everywhere you need him to
Tamás Faragó (Darkvater) - Ex-Lead coder
Christoph Mallon (Tron) - Programmer, code correctness police

View File

@@ -1,14 +1,14 @@
# Source Files
airport.cpp
animated_tile.cpp
core/alloc_func.cpp
articulated_vehicles.cpp
autoreplace.cpp
autoreplace_cmd.cpp
aystar.cpp
core/bitmath_func.cpp
bmp.cpp
callback_table.cpp
cargopacket.cpp
cargotype.cpp
cheat.cpp
command.cpp
console.cpp
console_cmds.cpp
@@ -18,20 +18,18 @@ debug.cpp
dedicated.cpp
depot.cpp
driver.cpp
widgets/dropdown.cpp
economy.cpp
effectvehicle.cpp
elrail.cpp
engine.cpp
fileio.cpp
fios.cpp
fontcache.cpp
gamelog.cpp
genworld.cpp
gfx.cpp
gfxinit.cpp
heightmap.cpp
highscore.cpp
ini.cpp
helpers.cpp
landscape.cpp
map.cpp
md5.cpp
@@ -42,12 +40,12 @@ music.cpp
namegen.cpp
network/network.cpp
network/network_client.cpp
network/network_command.cpp
network/network_content.cpp
network/network_data.cpp
network/network_gamelist.cpp
network/network_server.cpp
network/network_udp.cpp
npf.cpp
oldloader.cpp
oldpool.cpp
openttd.cpp
os_timer.cpp
@@ -58,11 +56,13 @@ os_timer.cpp
ottdres.rc
#end
pathfind.cpp
pbs.cpp
players.cpp
queue.cpp
rail.cpp
core/random_func.cpp
rev.cpp
road.cpp
saveload.cpp
screenshot.cpp
#if SDL
sdl.cpp
@@ -77,23 +77,7 @@ string.cpp
strings.cpp
texteff.cpp
tgp.cpp
#if HAVE_THREAD
#if WIN32
thread_win32.cpp
#else
#if OS2
thread_os2.cpp
#else
#if MORPHOS
thread_morphos.cpp
#else
thread_pthread.cpp
#end
#end
#end
#else
thread_none.cpp
#end
thread.cpp
tile_map.cpp
#if WIN32
#else
@@ -108,7 +92,6 @@ tile_map.cpp
#end
#end
vehicle.cpp
vehiclelist.cpp
viewport.cpp
waypoint.cpp
widget.cpp
@@ -118,15 +101,10 @@ widget.cpp
window.cpp
# Header Files
#if ALLEGRO
music/allegro_m.h
sound/allegro_s.h
video/allegro_v.h
#end
aircraft.h
airport.h
airport_movement.h
animated_tile_func.h
core/alloc_func.hpp
articulated_vehicles.h
autoreplace_base.h
autoreplace_func.h
@@ -134,89 +112,62 @@ autoreplace_gui.h
autoreplace_type.h
autoslope.h
aystar.h
core/bitmath_func.hpp
bmp.h
bridge.h
callback_table.h
cargo_type.h
cargopacket.h
cargotype.h
cheat_func.h
cheat_type.h
cmd_helper.h
command_func.h
command_type.h
company_base.h
company_func.h
company_gui.h
company_manager_face.h
company_type.h
console_func.h
console_gui.h
console_internal.h
console_type.h
console.h
currency.h
date_func.h
date_type.h
debug.h
video/dedicated_v.h
depot_base.h
depot_func.h
depot_map.h
depot_type.h
depot.h
direction_func.h
direction_type.h
music/dmusic.h
driver.h
widgets/dropdown_func.h
widgets/dropdown_type.h
economy_func.h
economy_type.h
effectvehicle_base.h
effectvehicle_func.h
elrail_func.h
engine_base.h
engine_func.h
engine_gui.h
engine_type.h
fileio_func.h
fileio_type.h
core/endian_func.hpp
engine.h
core/enum_type.hpp
fileio.h
fios.h
fontcache.h
functions.h
gamelog.h
gamelog_internal.h
genworld.h
core/geometry_type.hpp
gfx_func.h
gfx_type.h
gfxinit.h
group.h
group_gui.h
group_type.h
gui.h
heightmap.h
highscore.h
industry.h
industry_type.h
ini_type.h
landscape.h
landscape_type.h
livery.h
lzoconf.h
map_func.h
map_type.h
core/math_func.hpp
md5.h
minilzo.h
mixer.h
music.h
namegen_func.h
network/network.h
network/network_base.h
network/network_client.h
network/network_content.h
network/network_func.h
network/network_data.h
network/network_gamelist.h
network/network_gui.h
network/network_internal.h
network/network_server.h
network/network_type.h
network/network_udp.h
newgrf.h
newgrf_callbacks.h
@@ -236,35 +187,34 @@ newgrf_storage.h
newgrf_text.h
newgrf_town.h
newgrf_townname.h
news_func.h
news_gui.h
news_type.h
news.h
npf.h
music/null_m.h
sound/null_s.h
video/null_v.h
oldpool.h
oldpool_func.h
openttd.h
order_base.h
order_func.h
order_type.h
order.h
core/overflowsafe_type.hpp
pathfind.h
pbs.h
querystring_gui.h
player_base.h
player_face.h
player_func.h
player_gui.h
player_type.h
queue.h
rail.h
rail_gui.h
rail_type.h
rev.h
core/random_func.hpp
road_cmd.h
road_func.h
road_gui.h
road_internal.h
road_type.h
roadveh.h
saveload.h
screenshot.h
sdl.h
sound/sdl_s.h
video/sdl_v.h
settings_func.h
@@ -272,29 +222,20 @@ settings_internal.h
settings_type.h
ship.h
signal_func.h
signal_type.h
signs_base.h
signs_func.h
signs_type.h
signs.h
slope_func.h
slope_type.h
sortlist_type.h
sound_func.h
sound_type.h
sprite.h
spritecache.h
station_base.h
station_func.h
station.h
station_gui.h
station_type.h
statusbar_gui.h
stdafx.h
strgen/strgen.h
string_func.h
string_type.h
strings_func.h
strings_type.h
tar_type.h
terraform_gui.h
textbuf_gui.h
texteff.hpp
@@ -302,10 +243,7 @@ tgp.h
thread.h
tile_cmd.h
tile_type.h
tilehighlight_func.h
tilehighlight_type.h
timetable.h
toolbar_gui.h
town.h
town_type.h
track_func.h
@@ -313,23 +251,14 @@ track_type.h
train.h
transparency.h
transparency_gui.h
transport_type.h
tunnelbridge.h
unmovable.h
variables.h
vehicle_base.h
vehicle_func.h
vehicle_gui.h
vehicle_gui_base.h
vehicle_type.h
vehiclelist.h
viewport_func.h
viewport_type.h
water.h
waypoint.h
waypoint_type.h
widget_type.h
win32.h
music/win32_m.h
sound/win32_s.h
video/win32_v.h
@@ -338,40 +267,6 @@ window_gui.h
window_type.h
zoom_func.h
zoom_type.h
#if WIN32
#else
music/bemidi.h
music/extmidi.h
music/libtimidity.h
music/os2_m.h
music/qtmidi.h
os/macosx/macos.h
os/macosx/osx_stdafx.h
os/macosx/splash.h
sound/cocoa_s.h
video/cocoa/cocoa_keys.h
video/cocoa/cocoa_v.h
#end
# Core Source Code
core/alloc_func.cpp
core/alloc_func.hpp
core/alloc_type.hpp
core/bitmath_func.cpp
core/bitmath_func.hpp
core/endian_func.hpp
core/endian_type.hpp
core/enum_type.hpp
core/geometry_type.hpp
core/math_func.hpp
core/mem_func.hpp
core/overflowsafe_type.hpp
core/random_func.cpp
core/random_func.hpp
core/smallmap_type.hpp
core/smallvec_type.hpp
core/sort_func.hpp
core/string_compare_type.hpp
# GUI Source Code
aircraft_gui.cpp
@@ -379,28 +274,22 @@ airport_gui.cpp
autoreplace_gui.cpp
bridge_gui.cpp
build_vehicle_gui.cpp
cheat_gui.cpp
company_gui.cpp
console_gui.cpp
depot_gui.cpp
dock_gui.cpp
engine_gui.cpp
genworld_gui.cpp
graph_gui.cpp
group_gui.cpp
highscore_gui.cpp
industry_gui.cpp
intro_gui.cpp
main_gui.cpp
misc_gui.cpp
music_gui.cpp
network/network_chat_gui.cpp
network/network_content_gui.cpp
network/network_gui.cpp
newgrf_gui.cpp
news_gui.cpp
order_gui.cpp
osk_gui.cpp
player_gui.cpp
rail_gui.cpp
road_gui.cpp
roadveh_gui.cpp
@@ -409,28 +298,17 @@ ship_gui.cpp
signs_gui.cpp
smallmap_gui.cpp
station_gui.cpp
statusbar_gui.cpp
subsidy_gui.cpp
terraform_gui.cpp
timetable_gui.cpp
toolbar_gui.cpp
town_gui.cpp
train_gui.cpp
transparency_gui.cpp
tree_gui.cpp
vehicle_gui.cpp
waypoint_gui.cpp
# Widgets
widgets/dropdown.cpp
widgets/dropdown_func.h
widgets/dropdown_type.h
# Command handlers
# Landscape
aircraft_cmd.cpp
autoreplace_cmd.cpp
clear_cmd.cpp
company_cmd.cpp
disaster_cmd.cpp
dummy_land.cpp
group_cmd.cpp
@@ -451,56 +329,20 @@ tunnelbridge_cmd.cpp
unmovable_cmd.cpp
water_cmd.cpp
# Save/Load handlers
saveload/afterload.cpp
saveload/ai_sl.cpp
saveload/animated_tile_sl.cpp
saveload/autoreplace_sl.cpp
saveload/cargopacket_sl.cpp
saveload/cheat_sl.cpp
saveload/company_sl.cpp
saveload/depot_sl.cpp
saveload/economy_sl.cpp
saveload/engine_sl.cpp
saveload/gamelog_sl.cpp
saveload/group_sl.cpp
saveload/industry_sl.cpp
saveload/map_sl.cpp
saveload/misc_sl.cpp
saveload/newgrf_sl.cpp
saveload/oldloader.cpp
saveload/oldloader.h
saveload/oldloader_sl.cpp
saveload/order_sl.cpp
saveload/saveload.cpp
saveload/saveload.h
saveload/saveload_internal.h
saveload/signs_sl.cpp
saveload/station_sl.cpp
saveload/strings_sl.cpp
saveload/subsidy_sl.cpp
saveload/town_sl.cpp
saveload/vehicle_sl.cpp
saveload/waypoint_sl.cpp
# Tables
table/ai_rail.h
table/animcursors.h
table/autorail.h
table/bridge_land.h
table/build_industry.h
table/cargo_const.h
table/clear_land.h
table/control_codes.h
table/elrail_data.h
table/engines.h
table/files.h
table/genland.h
table/industry_land.h
table/landscape_sprite.h
table/namegen.h
table/palette_convert.h
table/palettes.h
table/railtypes.h
table/road_land.h
table/roadveh_movement.h
table/sprites.h
@@ -510,179 +352,18 @@ table/town_land.h
table/track_land.h
table/train_cmd.h
table/tree_land.h
table/unicode.h
table/unmovable_land.h
table/water_land.h
# Script
script/squirrel.cpp
script/squirrel.hpp
script/squirrel_class.hpp
script/squirrel_helper.hpp
script/squirrel_helper_type.hpp
script/squirrel_std.cpp
script/squirrel_std.hpp
# Squirrel
3rdparty/squirrel/squirrel/sqapi.cpp
3rdparty/squirrel/squirrel/sqbaselib.cpp
3rdparty/squirrel/squirrel/sqclass.cpp
3rdparty/squirrel/squirrel/sqcompiler.cpp
3rdparty/squirrel/squirrel/sqdebug.cpp
3rdparty/squirrel/squirrel/sqfuncstate.cpp
3rdparty/squirrel/squirrel/sqlexer.cpp
3rdparty/squirrel/squirrel/sqmem.cpp
3rdparty/squirrel/squirrel/sqobject.cpp
3rdparty/squirrel/squirrel/sqstate.cpp
3rdparty/squirrel/sqstdlib/sqstdaux.cpp
3rdparty/squirrel/squirrel/sqtable.cpp
3rdparty/squirrel/squirrel/sqvm.cpp
# Squirrel headers
3rdparty/squirrel/squirrel/sqarray.h
3rdparty/squirrel/squirrel/sqclass.h
3rdparty/squirrel/squirrel/sqclosure.h
3rdparty/squirrel/squirrel/sqcompiler.h
3rdparty/squirrel/squirrel/sqfuncproto.h
3rdparty/squirrel/squirrel/sqfuncstate.h
3rdparty/squirrel/squirrel/sqlexer.h
3rdparty/squirrel/squirrel/sqobject.h
3rdparty/squirrel/squirrel/sqopcodes.h
3rdparty/squirrel/squirrel/sqpcheader.h
3rdparty/squirrel/squirrel/sqstate.h
3rdparty/squirrel/include/sqstdaux.h
3rdparty/squirrel/include/sqstdblob.h
3rdparty/squirrel/sqstdlib/sqstdblobimpl.h
3rdparty/squirrel/include/sqstdio.h
3rdparty/squirrel/include/sqstdmath.h
3rdparty/squirrel/sqstdlib/sqstdstream.h
3rdparty/squirrel/include/sqstdstring.h
3rdparty/squirrel/include/sqstdsystem.h
3rdparty/squirrel/squirrel/sqstring.h
3rdparty/squirrel/squirrel/sqtable.h
3rdparty/squirrel/include/squirrel.h
3rdparty/squirrel/squirrel/squserdata.h
3rdparty/squirrel/squirrel/squtils.h
3rdparty/squirrel/squirrel/sqvm.h
# AI Core
ai/ai.hpp
ai/ai_config.cpp
ai/ai_config.hpp
ai/ai_core.cpp
ai/ai_gui.cpp
ai/ai_gui.hpp
ai/ai_info.cpp
ai/ai_info.hpp
ai/ai_info_dummy.cpp
ai/ai_instance.cpp
ai/ai_instance.hpp
ai/ai_scanner.cpp
ai/ai_scanner.hpp
ai/ai_storage.hpp
# AI API
ai/api/ai_abstractlist.hpp
ai/api/ai_accounting.hpp
ai/api/ai_airport.hpp
ai/api/ai_base.hpp
ai/api/ai_bridge.hpp
ai/api/ai_bridgelist.hpp
ai/api/ai_cargo.hpp
ai/api/ai_cargolist.hpp
ai/api/ai_company.hpp
ai/api/ai_controller.hpp
ai/api/ai_date.hpp
ai/api/ai_depotlist.hpp
ai/api/ai_engine.hpp
ai/api/ai_enginelist.hpp
ai/api/ai_error.hpp
ai/api/ai_event.hpp
ai/api/ai_event_types.hpp
ai/api/ai_execmode.hpp
ai/api/ai_gamesettings.hpp
ai/api/ai_group.hpp
ai/api/ai_grouplist.hpp
ai/api/ai_industry.hpp
ai/api/ai_industrylist.hpp
ai/api/ai_industrytype.hpp
ai/api/ai_industrytypelist.hpp
ai/api/ai_list.hpp
ai/api/ai_log.hpp
ai/api/ai_map.hpp
ai/api/ai_marine.hpp
ai/api/ai_object.hpp
ai/api/ai_order.hpp
ai/api/ai_rail.hpp
ai/api/ai_railtypelist.hpp
ai/api/ai_road.hpp
ai/api/ai_sign.hpp
ai/api/ai_station.hpp
ai/api/ai_stationlist.hpp
ai/api/ai_subsidy.hpp
ai/api/ai_subsidylist.hpp
ai/api/ai_testmode.hpp
ai/api/ai_tile.hpp
ai/api/ai_tilelist.hpp
ai/api/ai_town.hpp
ai/api/ai_townlist.hpp
ai/api/ai_tunnel.hpp
ai/api/ai_types.hpp
ai/api/ai_vehicle.hpp
ai/api/ai_vehiclelist.hpp
# AI API Implementation
ai/api/ai_abstractlist.cpp
ai/api/ai_accounting.cpp
ai/api/ai_airport.cpp
ai/api/ai_base.cpp
ai/api/ai_bridge.cpp
ai/api/ai_bridgelist.cpp
ai/api/ai_cargo.cpp
ai/api/ai_cargolist.cpp
ai/api/ai_company.cpp
ai/api/ai_controller.cpp
ai/api/ai_date.cpp
ai/api/ai_depotlist.cpp
ai/api/ai_engine.cpp
ai/api/ai_enginelist.cpp
ai/api/ai_error.cpp
ai/api/ai_event.cpp
ai/api/ai_event_types.cpp
ai/api/ai_execmode.cpp
ai/api/ai_gamesettings.cpp
ai/api/ai_group.cpp
ai/api/ai_grouplist.cpp
ai/api/ai_industry.cpp
ai/api/ai_industrylist.cpp
ai/api/ai_industrytype.cpp
ai/api/ai_industrytypelist.cpp
ai/api/ai_list.cpp
ai/api/ai_log.cpp
ai/api/ai_map.cpp
ai/api/ai_marine.cpp
ai/api/ai_object.cpp
ai/api/ai_order.cpp
ai/api/ai_rail.cpp
ai/api/ai_railtypelist.cpp
ai/api/ai_road.cpp
ai/api/ai_sign.cpp
ai/api/ai_station.cpp
ai/api/ai_stationlist.cpp
ai/api/ai_subsidy.cpp
ai/api/ai_subsidylist.cpp
ai/api/ai_testmode.cpp
ai/api/ai_tile.cpp
ai/api/ai_tilelist.cpp
ai/api/ai_town.cpp
ai/api/ai_townlist.cpp
ai/api/ai_tunnel.cpp
ai/api/ai_vehicle.cpp
ai/api/ai_vehiclelist.cpp
# AI Files
ai/ai.cpp
ai/trolly/build.cpp
ai/default/default.cpp
ai/trolly/pathfinder.cpp
ai/trolly/shared.cpp
ai/trolly/trolly.cpp
# Blitters
#if DEDICATED
#else
blitter/32bpp_anim.cpp
blitter/32bpp_anim.hpp
blitter/32bpp_base.cpp
@@ -699,7 +380,6 @@ blitter/8bpp_optimized.cpp
blitter/8bpp_optimized.hpp
blitter/8bpp_simple.cpp
blitter/8bpp_simple.hpp
#end
blitter/base.hpp
blitter/factory.hpp
blitter/null.cpp
@@ -759,9 +439,10 @@ water_map.h
# Misc
misc/array.hpp
misc/autocopyptr.hpp
misc/autoptr.hpp
misc/binaryheap.hpp
misc/blob.hpp
misc/countedobj.cpp
misc/countedptr.hpp
misc/crc32.hpp
misc/dbg_helpers.cpp
@@ -772,33 +453,27 @@ misc/str.hpp
misc/strapi.hpp
# Network Core
network/core/address.cpp
network/core/address.h
network/core/config.h
network/core/core.cpp
network/core/core.h
network/core/game.h
network/core/host.cpp
network/core/host.h
network/core/os_abstraction.h
network/core/packet.cpp
network/core/packet.h
network/core/tcp.cpp
network/core/tcp.h
network/core/tcp_connect.cpp
network/core/tcp_content.cpp
network/core/tcp_content.h
network/core/tcp_game.cpp
network/core/tcp_game.h
network/core/udp.cpp
network/core/udp.h
# YAPF
yapf/follow_track.cpp
yapf/follow_track.hpp
yapf/nodelist.hpp
yapf/track_dir.hpp
yapf/yapf.h
yapf/yapf.hpp
yapf/yapf_base.hpp
yapf/yapf_common.cpp
yapf/yapf_common.hpp
yapf/yapf_costbase.hpp
yapf/yapf_costcache.hpp
@@ -809,16 +484,12 @@ yapf/yapf_node_rail.hpp
yapf/yapf_node_road.hpp
yapf/yapf_rail.cpp
yapf/yapf_road.cpp
yapf/yapf_settings.h
yapf/yapf_ship.cpp
# Video
video/dedicated_v.cpp
video/null_v.cpp
#if DEDICATED
#else
#if ALLEGRO
video/allegro_v.cpp
#end
#if SDL
video/sdl_v.cpp
#end
@@ -828,18 +499,12 @@ video/null_v.cpp
#if WINCE
video/win32_v.cpp
#end
#end
# Music
music/null_m.cpp
#if DEDICATED
#else
#if ALLEGRO
music/allegro_m.cpp
#end
#if DIRECTMUSIC
music/dmusic.cpp
#end
music/null_m.cpp
#if WIN32
music/win32_m.cpp
#else
@@ -847,10 +512,7 @@ music/null_m.cpp
#else
#if PSP
#else
#if DOS
#else
music/extmidi.cpp
#end
music/extmidi.cpp
#end
#end
#end
@@ -860,22 +522,15 @@ music/null_m.cpp
#if LIBTIMIDITY
music/libtimidity.cpp
#end
#end
# Sound
sound/null_s.cpp
#if DEDICATED
#else
#if ALLEGRO
sound/allegro_s.cpp
#end
#if SDL
sound/sdl_s.cpp
#end
#if WIN32
sound/win32_s.cpp
#end
#end
#if OSX
# OSX Files

252
src/ai/ai.cpp Normal file
View File

@@ -0,0 +1,252 @@
/* $Id$ */
#include "../stdafx.h"
#include "../openttd.h"
#include "../variables.h"
#include "../command_func.h"
#include "../network/network.h"
#include "../core/alloc_func.hpp"
#include "../player_func.h"
#include "../player_base.h"
#include "ai.h"
#include "default/default.h"
#include "../signal_func.h"
AIStruct _ai;
AIPlayer _ai_player[MAX_PLAYERS];
/**
* Dequeues commands put in the queue via AI_PutCommandInQueue.
*/
static void AI_DequeueCommands(PlayerID player)
{
AICommand *com, *entry_com;
entry_com = _ai_player[player].queue;
/* It happens that DoCommandP issues a new DoCommandAI which adds a new command
* to this very same queue (don't argue about this, if it currently doesn't
* happen I can tell you it will happen with AIScript -- TrueLight). If we
* do not make the queue NULL, that commands will be dequeued immediatly.
* Therefor we safe the entry-point to entry_com, and make the queue NULL, so
* the new queue can be safely built up. */
_ai_player[player].queue = NULL;
_ai_player[player].queue_tail = NULL;
/* Dequeue all commands */
while ((com = entry_com) != NULL) {
_current_player = player;
_cmd_text = com->text;
DoCommandP(com->tile, com->p1, com->p2, com->callback, com->procc);
/* Free item */
entry_com = com->next;
free(com->text);
free(com);
}
}
/**
* Needed for SP; we need to delay DoCommand with 1 tick, because else events
* will make infinite loops (AIScript).
*/
static void AI_PutCommandInQueue(PlayerID player, TileIndex tile, uint32 p1, uint32 p2, uint32 procc, CommandCallback* callback)
{
AICommand *com;
if (_ai_player[player].queue_tail == NULL) {
/* There is no item in the queue yet, create the queue */
_ai_player[player].queue = MallocT<AICommand>(1);
_ai_player[player].queue_tail = _ai_player[player].queue;
} else {
/* Add an item at the end */
_ai_player[player].queue_tail->next = MallocT<AICommand>(1);
_ai_player[player].queue_tail = _ai_player[player].queue_tail->next;
}
/* This is our new item */
com = _ai_player[player].queue_tail;
/* Assign the info */
com->tile = tile;
com->p1 = p1;
com->p2 = p2;
com->procc = procc;
com->callback = callback;
com->next = NULL;
com->text = NULL;
/* Copy the cmd_text, if needed */
if (_cmd_text != NULL) {
com->text = strdup(_cmd_text);
_cmd_text = NULL;
}
}
/**
* Executes a raw DoCommand for the AI.
*/
CommandCost AI_DoCommandCc(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 procc, CommandCallback* callback)
{
PlayerID old_lp;
CommandCost res;
const char* tmp_cmdtext;
/* If you enable DC_EXEC with DC_QUERY_COST you are a really strange
* person.. should we check for those funny jokes?
*/
/* The test already resets _cmd_text, so backup the pointer */
tmp_cmdtext = _cmd_text;
/* First, do a test-run to see if we can do this */
res = DoCommand(tile, p1, p2, flags & ~DC_EXEC, procc);
/* The command failed, or you didn't want to execute, or you are quering, return */
if (CmdFailed(res) || !(flags & DC_EXEC) || (flags & DC_QUERY_COST)) {
return res;
}
/* Restore _cmd_text */
_cmd_text = tmp_cmdtext;
/* NetworkSend_Command needs _local_player to be set correctly, so
* adjust it, and put it back right after the function */
old_lp = _local_player;
_local_player = _current_player;
#ifdef ENABLE_NETWORK
/* Send the command */
if (_networking) {
/* Network is easy, send it to his handler */
NetworkSend_Command(tile, p1, p2, procc, callback);
} else {
#else
{
#endif
/* If we execute BuildCommands directly in SP, we have a big problem with events
* so we need to delay is for 1 tick */
AI_PutCommandInQueue(_current_player, tile, p1, p2, procc, callback);
}
/* Set _local_player back */
_local_player = old_lp;
return res;
}
CommandCost AI_DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 procc)
{
return AI_DoCommandCc(tile, p1, p2, flags, procc, NULL);
}
/**
* Run 1 tick of the AI. Don't overdo it, keep it realistic.
*/
static void AI_RunTick(PlayerID player)
{
extern void AiNewDoGameLoop(Player *p);
Player *p = GetPlayer(player);
_current_player = player;
if (_patches.ainew_active) {
AiNewDoGameLoop(p);
} else {
/* Enable all kind of cheats the old AI needs in order to operate correctly... */
_is_old_ai_player = true;
AiDoGameLoop(p);
_is_old_ai_player = false;
}
/* AI could change some track, so update signals */
UpdateSignalsInBuffer();
}
/**
* The gameloop for AIs.
* Handles one tick for all the AIs.
*/
void AI_RunGameLoop()
{
/* Don't do anything if ai is disabled */
if (!_ai.enabled) return;
/* Don't do anything if we are a network-client, or the AI has been disabled */
if (_networking && (!_network_server || !_patches.ai_in_multiplayer)) return;
/* New tick */
_ai.tick++;
/* Make sure the AI follows the difficulty rule.. */
assert(_opt.diff.competitor_speed <= 4);
if ((_ai.tick & ((1 << (4 - _opt.diff.competitor_speed)) - 1)) != 0) return;
/* Check for AI-client (so joining a network with an AI) */
if (!_networking || _network_server) {
/* Check if we want to run AIs (server or SP only) */
const Player* p;
FOR_ALL_PLAYERS(p) {
if (p->is_active && p->is_ai) {
/* This should always be true, else something went wrong... */
assert(_ai_player[p->index].active);
/* Run the script */
AI_DequeueCommands(p->index);
AI_RunTick(p->index);
}
}
}
_current_player = OWNER_NONE;
}
/**
* A new AI sees the day of light. You can do here what ever you think is needed.
*/
void AI_StartNewAI(PlayerID player)
{
assert(IsValidPlayer(player));
/* Called if a new AI is booted */
_ai_player[player].active = true;
}
/**
* This AI player died. Give it some chance to make a final puf.
*/
void AI_PlayerDied(PlayerID player)
{
/* Called if this AI died */
_ai_player[player].active = false;
}
/**
* Initialize some AI-related stuff.
*/
void AI_Initialize()
{
/* First, make sure all AIs are DEAD! */
AI_Uninitialize();
memset(&_ai, 0, sizeof(_ai));
memset(&_ai_player, 0, sizeof(_ai_player));
_ai.enabled = true;
}
/**
* Deinitializer for AI-related stuff.
*/
void AI_Uninitialize()
{
const Player* p;
FOR_ALL_PLAYERS(p) {
if (p->is_active && p->is_ai) AI_PlayerDied(p->index);
}
}

113
src/ai/ai.h Normal file
View File

@@ -0,0 +1,113 @@
/* $Id$ */
#ifndef AI_H
#define AI_H
#include "../network/network.h"
#include "../command_type.h"
#include "../core/random_func.hpp"
#include "../settings_type.h"
/* How DoCommands look like for an AI */
struct AICommand {
uint32 tile;
uint32 p1;
uint32 p2;
uint32 procc;
CommandCallback *callback;
char *text;
uint uid;
AICommand *next;
};
/* The struct for an AIScript Player */
struct AIPlayer {
bool active; ///< Is this AI active?
AICommand *queue; ///< The commands that he has in his queue
AICommand *queue_tail; ///< The tail of this queue
};
/* The struct to keep some data about the AI in general */
struct AIStruct {
/* General */
bool enabled; ///< Is AI enabled?
uint tick; ///< The current tick (something like _frame_counter, only for AIs)
};
extern AIStruct _ai;
extern AIPlayer _ai_player[MAX_PLAYERS];
// ai.c
void AI_StartNewAI(PlayerID player);
void AI_PlayerDied(PlayerID player);
void AI_RunGameLoop();
void AI_Initialize();
void AI_Uninitialize();
CommandCost AI_DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc);
CommandCost AI_DoCommandCc(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc, CommandCallback* callback);
/** Is it allowed to start a new AI.
* This function checks some boundries to see if we should launch a new AI.
* @return True if we can start a new AI.
*/
static inline bool AI_AllowNewAI()
{
/* If disabled, no AI */
if (!_ai.enabled)
return false;
/* If in network, but no server, no AI */
if (_networking && !_network_server)
return false;
/* If in network, and server, possible AI */
if (_networking && _network_server) {
/* Do we want AIs in multiplayer? */
if (!_patches.ai_in_multiplayer)
return false;
/* Only the NewAI is allowed... sadly enough the old AI just doesn't support this
* system, because all commands are delayed by at least 1 tick, which causes
* a big problem, because it uses variables that are only set AFTER the command
* is really executed... */
if (!_patches.ainew_active)
return false;
}
return true;
}
#define AI_CHANCE16(a, b) ((uint16) AI_Random() <= (uint16)((65536 * a) / b))
#define AI_CHANCE16R(a, b, r) ((uint16)(r = AI_Random()) <= (uint16)((65536 * a) / b))
/**
* The random-function that should be used by ALL AIs.
*/
static inline uint AI_RandomRange(uint max)
{
/* We pick RandomRange if we are in SP (so when saved, we do the same over and over)
* but we pick InteractiveRandomRange if we are a network_server or network-client.
*/
if (_networking)
return InteractiveRandomRange(max);
else
return RandomRange(max);
}
/**
* The random-function that should be used by ALL AIs.
*/
static inline uint32 AI_Random()
{
/* We pick RandomRange if we are in SP (so when saved, we do the same over and over)
* but we pick InteractiveRandomRange if we are a network_server or network-client.
*/
if (_networking)
return InteractiveRandom();
else
return Random();
}
#endif /* AI_H */

View File

@@ -1,121 +0,0 @@
/* $Id$ */
/** @file ai.hpp Base functions for all AIs. */
#ifndef AI_HPP
#define AI_HPP
#include "api/ai_event_types.hpp"
#include "../date_type.h"
#include "../core/string_compare_type.hpp"
typedef std::map<const char *, class AIInfo *, StringCompare> AIInfoList;
void CcAI(bool success, TileIndex tile, uint32 p1, uint32 p2);
class AI {
public:
/**
* The default months AIs start after eachother.
*/
enum StartNext {
START_NEXT_EASY = DAYS_IN_YEAR * 2,
START_NEXT_MEDIUM = DAYS_IN_YEAR,
START_NEXT_HARD = DAYS_IN_YEAR / 2,
START_NEXT_MIN = 1,
START_NEXT_MAX = 3600,
START_NEXT_DEVIATION = 60,
};
/**
* Is it possible to start a new AI company?
* @return True if a new AI company can be started.
*/
static bool CanStartNew();
/**
* Start a new AI company.
* @param company At which slot the AI company should start.
*/
static void StartNew(CompanyID company);
/**
* Called every game-tick to let AIs do something.
*/
static void GameLoop();
/**
* Get the current AI tick.
*/
static uint GetTick();
/**
* Stop a company to be controlled by an AI.
* @param company The company from which the AI needs to detach.
* @pre !IsHumanCompany(company).
*/
static void Stop(CompanyID company);
/**
* Kill any and all AIs we manage.
*/
static void KillAll();
/**
* Initialize the AI system.
*/
static void Initialize();
/**
* Uninitialize the AI system
* @param keepConfig Should we keep AIConfigs, or can we free that memory?
*/
static void Uninitialize(bool keepConfig);
/**
* Reset all AIConfigs, and make them reload their AIInfo.
* If the AIInfo could no longer be found, an error is reported to the user.
*/
static void ResetConfig();
/**
* Queue a new event for an AI.
*/
static void NewEvent(CompanyID company, AIEvent *event);
/**
* Broadcast a new event to all active AIs.
*/
static void BroadcastNewEvent(AIEvent *event, CompanyID skip_company = MAX_COMPANIES);
/**
* Save data from an AI to a savegame.
*/
static void Save(CompanyID company);
/**
* Load data for an AI from a savegame.
*/
static void Load(CompanyID company, int version);
/**
* Get the number of days before the next AI should start.
*/
static int GetStartNextTime();
static char *GetConsoleList(char *p, const char *last);
static const AIInfoList *GetInfoList();
static const AIInfoList *GetUniqueInfoList();
static AIInfo *FindInfo(const char *name, int version);
static bool ImportLibrary(const char *library, const char *class_name, int version, HSQUIRRELVM vm);
static void Rescan();
#if defined(ENABLE_NETWORK)
static bool HasAI(const struct ContentInfo *ci, bool md5sum);
#endif
private:
static uint frame_counter;
static class AIScanner *ai_scanner;
};
#endif /* AI_HPP */

View File

@@ -1,219 +0,0 @@
/* $Id$ */
/** @file ai_config.cpp Implementation of AIConfig. */
#include "../stdafx.h"
#include "../openttd.h"
#include "../settings_type.h"
#include "../core/random_func.hpp"
#include "ai.hpp"
#include "ai_config.hpp"
void AIConfig::ChangeAI(const char *name, int version)
{
free((void *)this->name);
this->name = (name == NULL) ? NULL : strdup(name);
this->info = (name == NULL) ? NULL : AI::FindInfo(this->name, version);
this->version = (info == NULL) ? -1 : info->GetVersion();
if (this->config_list != NULL) delete this->config_list;
this->config_list = (info == NULL) ? NULL : new AIConfigItemList();
if (this->config_list != NULL) this->config_list->push_back(_start_date_config);
/* The special casing for start_date is here to ensure that the
* start_date setting won't change even if you chose another AI. */
int start_date = this->GetSetting("start_date");
for (SettingValueList::iterator it = this->settings.begin(); it != this->settings.end(); it++) {
free((void*)(*it).first);
}
this->settings.clear();
this->SetSetting("start_date", start_date);
if (_game_mode == GM_NORMAL && this->info != NULL) {
/* If we're in an existing game and the AI is changed, set all settings
* for the AI that have the random flag to a random value. */
for (AIConfigItemList::const_iterator it = this->info->GetConfigList()->begin(); it != this->info->GetConfigList()->end(); it++) {
if ((*it).flags & AICONFIG_RANDOM) {
this->SetSetting((*it).name, InteractiveRandomRange((*it).max_value - (*it).min_value) + (*it).min_value);
}
}
this->AddRandomDeviation();
}
}
AIConfig::AIConfig(const AIConfig *config)
{
this->name = (config->name == NULL) ? NULL : strdup(config->name);
this->info = config->info;
this->version = config->version;
this->config_list = NULL;
for (SettingValueList::const_iterator it = config->settings.begin(); it != config->settings.end(); it++) {
this->settings[strdup((*it).first)] = (*it).second;
}
this->AddRandomDeviation();
}
AIConfig::~AIConfig()
{
free((void *)this->name);
this->ResetSettings();
if (this->config_list != NULL) delete this->config_list;
}
AIInfo *AIConfig::GetInfo()
{
return this->info;
}
bool AIConfig::ResetInfo()
{
this->info = AI::FindInfo(this->name, -1);
return this->info != NULL;
}
const AIConfigItemList *AIConfig::GetConfigList()
{
if (this->info != NULL) return this->info->GetConfigList();
if (this->config_list == NULL) {
this->config_list = new AIConfigItemList();
this->config_list->push_back(_start_date_config);
}
return this->config_list;
}
AIConfig *AIConfig::GetConfig(CompanyID company, bool forceNewgameSetting)
{
AIConfig **config;
if (!forceNewgameSetting) {
config = (_game_mode == GM_MENU) ? &_settings_newgame.ai_config[company] : &_settings_game.ai_config[company];
} else {
config = &_settings_newgame.ai_config[company];
}
if (*config == NULL) *config = new AIConfig();
return *config;
}
int AIConfig::GetSetting(const char *name)
{
SettingValueList::iterator it = this->settings.find(name);
/* Return the default value if the setting is not set, or if we are in a not-custom difficult level */
if (it == this->settings.end() || ((_game_mode == GM_MENU) ? _settings_newgame.difficulty.diff_level : _settings_game.difficulty.diff_level) != 3) {
if (this->info == NULL) {
assert(strcmp("start_date", name) == 0);
switch ((_game_mode == GM_MENU) ? _settings_newgame.difficulty.diff_level : _settings_game.difficulty.diff_level) {
case 0: return AI::START_NEXT_EASY;
case 1: return AI::START_NEXT_MEDIUM;
case 2: return AI::START_NEXT_HARD;
case 3: return AI::START_NEXT_MEDIUM;
default: NOT_REACHED();
}
}
return this->info->GetSettingDefaultValue(name);
}
return (*it).second;
}
void AIConfig::SetSetting(const char *name, int value)
{
/* You can only set ai specific settings if an AI is selected. */
if (this->info == NULL && strcmp("start_date", name) != 0) return;
if (this->info == NULL && strcmp("start_date", name) == 0) {
value = Clamp(value, AI::START_NEXT_MIN, AI::START_NEXT_MAX);
} else {
const AIConfigItem *config_item = this->info->GetConfigItem(name);
if (config_item == NULL) return;
value = Clamp(value, config_item->min_value, config_item->max_value);
}
SettingValueList::iterator it = this->settings.find(name);
if (it != this->settings.end()) {
(*it).second = value;
} else {
this->settings[strdup(name)] = value;
}
}
void AIConfig::ResetSettings()
{
for (SettingValueList::iterator it = this->settings.begin(); it != this->settings.end(); it++) {
free((void*)(*it).first);
}
this->settings.clear();
}
void AIConfig::AddRandomDeviation()
{
for (AIConfigItemList::const_iterator it = this->GetConfigList()->begin(); it != this->GetConfigList()->end(); it++) {
if ((*it).random_deviation != 0) {
this->SetSetting((*it).name, InteractiveRandomRange((*it).random_deviation * 2) - (*it).random_deviation + this->GetSetting((*it).name));
}
}
}
bool AIConfig::HasAI()
{
return this->info != NULL;
}
const char *AIConfig::GetName()
{
return this->name;
}
int AIConfig::GetVersion()
{
return this->version;
}
void AIConfig::StringToSettings(const char *value)
{
char *value_copy = strdup(value);
char *s = value_copy;
while (s != NULL) {
/* Analyze the string ('name=value,name=value\0') */
char *item_name = s;
s = strchr(s, '=');
if (s == NULL) break;
if (*s == '\0') break;
*s = '\0';
s++;
char *item_value = s;
s = strchr(s, ',');
if (s != NULL) {
*s = '\0';
s++;
}
this->SetSetting(item_name, atoi(item_value));
}
free(value_copy);
}
void AIConfig::SettingsToString(char *string, size_t size)
{
string[0] = '\0';
for (SettingValueList::iterator it = this->settings.begin(); it != this->settings.end(); it++) {
char no[10];
snprintf(no, sizeof(no), "%d", (*it).second);
/* Check if the string would fit in the destination */
size -= strlen((*it).first) - 1 - strlen(no) - 1;
/* If it doesn't fit, skip the next settings */
if (size <= 0) return;
strcat(string, (*it).first);
strcat(string, "=");
strcat(string, no);
strcat(string, ",");
}
/* Remove the last ',', but only if at least one setting was saved. */
size_t len = strlen(string);
if (len > 0) string[len - 1] = '\0';
}

View File

@@ -1,115 +0,0 @@
/* $Id$ */
/** @file ai_config.hpp AIConfig stores the configuration settings of every AI. */
#ifndef AI_CONFIG_HPP
#define AI_CONFIG_HPP
#include <map>
#include "ai_info.hpp"
#include "../core/string_compare_type.hpp"
class AIConfig {
private:
typedef std::map<const char *, int, StringCompare> SettingValueList;
public:
AIConfig() :
name(NULL),
version(-1),
info(NULL),
config_list(NULL)
{}
AIConfig(const AIConfig *config);
~AIConfig();
/**
* Set another AI to be loaded in this slot.
* @param name The name of the AI.
* @param version The version of the AI to load, or -1 of latest.
*/
void ChangeAI(const char *name, int version = -1);
/**
* When ever the AI Scanner is reloaded, all infos become invalid. This
* function tells AIConfig about this.
* @return True if the reset was successfull, false if the AI was no longer
* found.
*/
bool ResetInfo();
/**
* Get the AIInfo linked to this AIConfig.
*/
class AIInfo *GetInfo();
/**
* Get the config list for this AIConfig.
*/
const AIConfigItemList *GetConfigList();
/**
* Get the config of a company.
*/
static AIConfig *GetConfig(CompanyID company, bool forceNewgameSetting = false);
/**
* Get the value of a setting for this config. It might fallback to his
* 'info' to find the default value (if not set or if not-custom difficulty
* level).
* @return The (default) value of the setting, or -1 if the setting was not
* found.
*/
int GetSetting(const char *name);
/**
* Set the value of a setting for this config.
*/
void SetSetting(const char *name, int value);
/**
* Reset all settings to their default value.
*/
void ResetSettings();
/**
* Randomize all settings the AI requested to be randomized.
*/
void AddRandomDeviation();
/**
* Is this config attached to an AI?
*/
bool HasAI();
/**
* Get the name of the AI.
*/
const char *GetName();
/**
* Get the version of the AI.
*/
int GetVersion();
/**
* Convert a string which is stored in the config file or savegames to
* custom settings of this AI.
*/
void StringToSettings(const char *value);
/**
* Convert the custom settings to a string that can be stored in the config
* file or savegames.
*/
void SettingsToString(char *string, size_t size);
private:
const char *name;
int version;
class AIInfo *info;
SettingValueList settings;
AIConfigItemList *config_list;
};
#endif /* AI_CONFIG_HPP */

Some files were not shown because too many files have changed in this diff Show More