Compare commits

..
1 Commits
Author SHA1 Message Date
frosch c91b5dffd4 (svn r24851) -Release: 1.3.0-beta1 2012-12-24 19:25:24 +00:00
388 changed files with 5663 additions and 14102 deletions
-4
View File
@@ -26,13 +26,11 @@ endif
# An OSX application bundle needs the data files, lang files and openttd executable in a different location.
ifdef OSXAPP
AI_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/ai
GAME_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/game
BASESET_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/baseset
LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang
TTD_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS
else
AI_DIR = $(BUNDLE_DIR)/ai
GAME_DIR = $(BUNDLE_DIR)/game
BASESET_DIR = $(BUNDLE_DIR)/baseset
LANG_DIR = $(BUNDLE_DIR)/lang
TTD_DIR = $(BUNDLE_DIR)
@@ -47,7 +45,6 @@ bundle: all
$(Q)mkdir -p "$(BUNDLE_DIR)/scripts"
$(Q)mkdir -p "$(TTD_DIR)"
$(Q)mkdir -p "$(AI_DIR)"
$(Q)mkdir -p "$(GAME_DIR)"
$(Q)mkdir -p "$(BASESET_DIR)"
$(Q)mkdir -p "$(LANG_DIR)"
ifdef OSXAPP
@@ -62,7 +59,6 @@ ifeq ($(OS),UNIX)
endif
$(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/"
$(Q)cp "$(BIN_DIR)/ai/"compat_*.nut "$(AI_DIR)/"
$(Q)cp "$(BIN_DIR)/game/"compat_*.nut "$(GAME_DIR)/"
$(Q)cp "$(BIN_DIR)/baseset/"*.grf "$(BASESET_DIR)/"
$(Q)cp "$(BIN_DIR)/baseset/"*.obg "$(BASESET_DIR)/"
$(Q)cp "$(BIN_DIR)/baseset/"*.obs "$(BASESET_DIR)/"
+1 -2
View File
@@ -36,7 +36,6 @@ endif
GRFCODEC := !!GRFCODEC!!
NFORENUM := !!NFORENUM!!
CC_BUILD := !!CC_BUILD!!
MD5SUM := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum")
# Some "should not be changed" settings.
@@ -64,7 +63,7 @@ $(BIN_DIR)/openttd.grf: $(OBJS_DIR)/openttd.grf
$(OBJS_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
$(E) '$(STAGE) Assembling openttd.nfo'
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
$(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
$(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
$(E) '$(STAGE) Compiling openttd.grf'
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -55,7 +55,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
OPENTTD.GRF = c683a77e1a43aed7db29ef318b166dd9
OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
+1 -1
View File
@@ -55,7 +55,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
OPENTTD.GRF = c683a77e1a43aed7db29ef318b166dd9
OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
+1 -1
View File
@@ -55,7 +55,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
OPENTTD.GRF = c683a77e1a43aed7db29ef318b166dd9
OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
+3 -89
View File
@@ -1,89 +1,3 @@
1.3.0 (2013-04-01)
------------------------------------------------------------------------
- Fix: Station rebuilding could leave reserved tiles which caused crashes later on [FS#5510, FS#5516] (r25132)
- Fix: When the count for a scrollbar was 0, the inter distance was subtracted too much causing a scrollbar with a negative size (r25123)
1.3.0-RC3 (2013-03-18)
------------------------------------------------------------------------
- Fix: Limit aircraft property 0D to 19, since the conversion result to km-ish/h needs to fit into a byte [FS#5492] (r25099)
- Fix: Clicking the statusbar crashed, when news were pending but no news were shown yet [FS#5486] (r25093)
- Fix: Make editbox character filters also apply to pasted content from clipboard (r25090, r25089)
- Fix: Catch exception anonymously, if the exception content is not of interest [FS#5500] (r25081)
1.3.0-RC2 (2013-03-05)
------------------------------------------------------------------------
- Fix: Make sizes of the station preview list and direction selection identical in the station build window [FS#5472] (r25064)
- Fix: When allocation of the sprite cache fails, try to allocate less memory and display an error message later on (r25061)
- Fix: Refactor Script Debug GUI to only set widget states in OnInvalidateData [FS#5490] (r25052)
- Fix: Do not let gcc include files from the "standard C" include directories to avoid inclusion of header files at the top of the preprocessed nfo files, which cause NFOrenum/GRFcodec to make invalid assumptions about the NFO version (r25050)
- Fix: Minimise gaps feature caused removal to only happen at the signal build interval instead of the implicit interval of 1 [FS#5479] (r25038)
- Fix: Green path signals would be shown when building them 'under' a train, and they would keep showing green until they were passed again [FS#5480] (r25037)
1.3.0-RC1 (2013-02-19)
------------------------------------------------------------------------
- Feature: Searching of (missing) content via GrfCrawler (r25024, r25023)
- Change: Cleanup goals and cargo monitors of companies when they go bankrupt or are taken over (r24986)
- Change: Apply the same name sorting rules to content and NewGRF list as for the server list (r24983)
- Fix: [SDL] Crash after bootstrap download of 32bits base set due to referencing a deleted mutex [FS#5466] (r25017)
- Fix: [SDL] Improve 8bpp hardware palette support. Instead of always requesting SDL_HWPALETTE, it is now only done for 8bp blitters in fullscreen mode (r25003, r25002, r24993)
- Fix: Set vehicle's service interval is percent flag appropriately on creation [FS#5137] (r24998)
- Fix: When choosing a train in a depot to attach a newly purchased wagon to, do not consider trains currently moving in and out of the depot (r24987)
- Fix: [Script] Crash when passing too many parameters [FS#5465] (r24982, r24981, r24980)
1.3.0-beta2 (2013-02-07)
------------------------------------------------------------------------
- Feature: [NewGRF] Station randomisation triggers (r24906, r24905)
- Feature: Settings type filter included in the advanced settings GUI (r24862, r24863)
- Change: Revert to opening the vehicle GUI again when cloning vehicles using the clone-button from the depot GUI [FS#4458] (r24955)
- Fix: Additional zoom in levels could glitch by a few pixels due to incorrect rounding [FS#5463] (r24975)
- Fix: Honour pause_on_newgame setting when running as a dedicated server [FS#5279] (r24974)
- Fix: [NewGRF] Prevent access to tile-based variables when tile is invalid [FS#5462] (r24973)
- Fix: Do not make overbuilding rivers with canals insanely expensive [FS#5258] (r24972)
- Fix: Crash when an infinite loop occurred during loading of a script [FS#5346] (r24970)
- Fix: company window was not updated when shares were enabled/disabled [FS#5379] (r24968)
- Fix: Trams would get stuck on water [FS#5228] (r24966)
- Fix: With YAPF the docking behaviour differed per direction; now favour docking in the direction you approached [FS#5416] (r24964)
- Fix: Do not stop loading if there are reservations left [FS#5435] (r24963)
- Fix: Reserve all capacity while unloading to avoid 'stealing' cargo, i.e. loading cargo onto a second vehicle when the first cannot be fully filled yet [FS#5438] (r24962)
- Fix: If a platform is enlarged and there is a reservation, reserve the whole platform [FS#5362] (r24961)
- Fix: Inconsistencies in the 'thanks to' lists [FS#5423] (r24960)
- Fix: Set 'replace when old' flag when replacing an autoreplace (r24950)
- Fix: Deleting implicit orders was not able to deal with the various side-effects of DeleteOrder [FS#5452] (r24944)
- Fix: Redraw autoreplace window properly in network games (r24939)
- Fix: Never put a space between cargo name and subtype [FS#5447] (r24938)
- Fix: Do not allow order refit to be set for no-load orders [FS#5446] (r24936)
- Fix: Make group names unique per company and vehicle type [FS#3473] (r24933)
- Fix: Prevent more NewGRFs being selected than is possible to load [FS#5158] (r24932)
- Fix: [GS] Do not try to pause or unpause crashed scripts [FS#5415] (r24929)
- Fix: [Squirrel] Update line information before processing 'while' token of 'do'-'while' statement [FS#5408] (r24928)
- Fix: Add a tooltip to the mapsize selection mentioning possible deviations [FS#5395] (r24925)
- Fix: When an object built on a river is removed, restore the river [FS#5441] (r24923)
- Fix: Upgrading bridges could steal road types [FS#5389] (r24912)
- Fix: [GS] Allow GSs to pass negative integer string parameters (r24908)
- Fix: 'Train loads/unloads cargo' station animation triggers on individual platform (r24904)
- Fix: Cached station animation triggers were only set when removing parts of a station (r24903)
- Fix: The station build window did not update when the station spread changed [FS#5434] (r24899)
- Fix: Do not unpause the game when closing the highscore window if it was already paused before the highscore screen was shown (r24898)
- Fix: Improvements and fixes for the base translation [FS#5411, FS#5420, FS#5421, FS#5422, FS#5427] (r24896, r24875, r24872, r24869)
- Fix: Allow downgrade of road bridges in the scenario editor [FS#5436] (r24895)
- Fix: Invalidate station selection window when station spread changes [FS#5434] (r24894)
- Fix: Distribute GS compat_<version>.nut with OpenTTD (r24890)
- Fix: Pass proper UTF-16 strings instead of UCS-2 to ICU in order to preserve characters outside the BMP (r24885)
- Fix: A completely emptied vehicle could trigger an assert (r24883)
- Fix: Desync when NewGRF changes the stats related to acceleration (power, weight, tractive effort, etc) during service or 32 day triggers (r24882)
- Fix: Incorrect Romanian own name (r24874)
- Fix: Make invalid sprite references to mapgen sprites behave the same as invalid references between recolour and real sprites [FS#5404] (r24858)
- Fix: Do not let UFOs and coal mines clear water (r24857)
- Fix: Do not let UFOs and coal mines destroy depots [FS#5406] (r24856)
- Fix: Do not send aircraft to depots that are out of range of the next destination [FS#5405] (r24855)
- Fix: Only consider vehicles available in the climate for purchase/depot cell size (r24854)
- Fix: Extend widget data member to 32 bits so that sprite IDs >= 2^16 can be used (r24853)
1.3.0-beta1 (2012-12-24)
------------------------------------------------------------------------
- Feature: Advanced settings to disable certain sound effects (r24846)
@@ -171,8 +85,8 @@
- Change: [NewGRF] Make bounding boxes of road vehicles change according to the vehicle length to make alignment easier [FS#5204] (r24331)
- Fix: [NewGRF] Consider regearing-like cargos as no-cargo in cargo filters [FS#5386] (r24848)
- Fix: [NewGRF] Draw NewGRF railtypes in NewGRF station previews (r24840)
- Fix: Do not consider blocked rail station tiles that display wires as non-reachable for masking out unnecessary catenary wires (r24837)
- Fix: The autorefit dropdown in the order GUI was not always updated when modifying vehicle consists [FS#5396] (r24834)
- Fix: Don't consider blocked rail station tiles that display wires as non-reachable for masking out unnecessary catenary wires (r24837)
- Fix: The autorefit dropdown in the order GUI wasn't always updated when modifying vehicle consists [FS#5396] (r24834)
- Fix: [NewGRF] Incorrect values are better than a crash when a NewGRF queries vehicle variable 4C before vehicle initialisation is completed [FS#5398] (r24831)
- Fix: determineversion.vbs could hang in a git checkout (r24826)
- Fix: Close pending preview windows when the engine is introduced to everyone (r24812)
@@ -412,7 +326,7 @@
- Fix: [SDL] Handle the SDL_VIDEOEXPOSE event to solve issues with SDL 1.3 (r23910)
- Fix: [SDL] Fix keyboard-related segfault when compiling against SDL 1.3 (r23909)
- Fix: [Makefile] Make sure bin/baseset/openttd.32.bmp is removed on make clean (r23908)
- Fix: [Makefile] Let 'make clean --dry-run' not delete Makefiles (r23907)
- Fix: [Makefile] Let "make clean --dry-run" not delete Makefiles (r23907)
- Fix: [Windows installer] OpenMSX got downloaded to and extracted in the wrong (non-existent) folder [FS#5045] (r23905)
- Fix: Memory leak everytime one clicked a savegame in the load GUI (r23901)
- Fix: [NewGRF] It was not possible to import sounds from a NewGRF later in the load order (r23883)
+8 -11
View File
@@ -57,8 +57,8 @@ set_default() {
enable_translator="0"
enable_unicode="1"
enable_console="1";
enable_assert="0"
enable_strip="1"
enable_assert="1"
enable_strip="0"
enable_universal="0"
enable_osx_g5="0"
enable_cocoa_quartz="1"
@@ -3169,9 +3169,9 @@ detect_grfcodec() {
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
if [ -n "$version" ] && [ "$version" -lt "949" ]; then
log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "913" ]; then
if [ -n "$version" ] && [ "$version" -lt "913" ]; then
log 1 "checking grfcodec... needs at least version 5.1.4 (r913), disabled"
else
log 1 "checking grfcodec... not found"
fi
@@ -3211,9 +3211,9 @@ detect_nforenum() {
log 2 " returned $version"
log 2 " exit code $ret"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
if [ -n "$version" ] && [ "$version" -lt "949" ]; then
log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled"
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "913" ]; then
if [ -n "$version" ] && [ "$version" -lt "913" ]; then
log 1 "checking nforenum... needs at least version 5.1.4 (r913), disabled"
else
log 1 "checking nforenum... not found"
fi
@@ -3648,9 +3648,6 @@ showhelp() {
echo " LDFLAGS linker flags, e.g. -L<lib dir> if you"
echo " have libraries in a nonstandard"
echo " directory <lib dir>"
echo " CFLAGS_BUILD C compiler flags for build time tool generation"
echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
echo " LDFLAGS_BUILD linker flags for build time tool generation"
echo ""
echo "Use these variables to override the choices made by 'configure' or to help"
echo "it to find libraries and programs with nonstandard names/locations."
+32 -8
View File
@@ -1,13 +1,14 @@
OpenTTD's known bugs
Last updated: 2013-04-01
Release version: 1.3.0
Last updated: 2012-06-01
Release version: 1.2.1
------------------------------------------------------------------------
Table of contents
-----------------
1.0) About
2.0) Known bugs
2.0) Known bugs in this release
* 2.1) Known bugs that will not be solved
1.0) About
@@ -16,13 +17,36 @@ All bugs listed below are marked as known. Please do not submit any bugs
that are the same as these. If you do, do not act surprised, because
we WILL flame you!!
The current list of known bugs that we intend to fix can be found in our
bug tracking system at: http://bugs.openttd.org
Also check the closed bugs when searching for your bug in this system as
we might have fixed the bug in the mean time.
Of course if you have more knowledge about any of these bugs, have more
specifics, we welcome you to report them. React to the given bug indicated
by the number below on http://bugs.openttd.org.
2.0) Known bugs
2.0) Known bugs in this release
---- --------------------------
The following bugs are known to exist in this release and we intend to
fix them. Some bugs are known but are not fixable or fixing them would
cause further problems. Those bugs can be found in the "Known bugs that
will not be solved" section.
The bugs in this section all refer to a ticket in our bug tracking system
that you can find at: http://bugs.openttd.org
If the bugs are closed but still listed here it means that the bug is fixed
and that the nightlies and next major release will not have that bug.
Issues prefixed with [OSX] are required to be fixed before we consider
officially supporting Mac OS X again. For now it remains unsupported and
we only apply bug fixes provided by the community but we are unable to fix
these bugs ourselves.
- 4857 [OSX] No support for detecting mono space font
- 4847 [OSX] No support for bootstrap downloading of base graphics
- 4744 [OSX] Crash when switching to full screen with OS X Lion
- 4689 [OSX] Crash when hiding window after coming from full screen
- 4420 [OSX] OS' mouse pointer still shows
- 2484 [OSX] Cannot enter CJK characters
2.1) Known bugs that will not be solved
---- ----------------------------------
This section lists all known bugs that we do not intend to fix and the
reasons why we think that fixing them is infeasible. We might make some
+1 -1
View File
@@ -7,7 +7,7 @@
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
//
-1 * 0 0C "OpenTTD GUI graphics"
-1 * 3 05 15 \b 168 // OPENTTD_SPRITE_COUNT
-1 * 3 05 15 A8
-1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal
-1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal
-1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal
+47 -77
View File
@@ -1,308 +1,278 @@
openttd (1.3.0-0) unstable; urgency=low
* New upstream release 1.3.0
-- OpenTTD <info@openttd.org> Mon, 01 Apr 2013 00:00:00 +0200
openttd (1.3.0~RC3) unstable; urgency=low
* New upstream release 1.3.0-RC3
-- OpenTTD <info@openttd.org> Mon, 18 Mar 2013 00:00:00 +0100
openttd (1.3.0~RC2) unstable; urgency=low
* New upstream release 1.3.0-RC2
-- OpenTTD <info@openttd.org> Tue, 05 Mar 2013 00:00:00 +0100
openttd (1.3.0~RC1) unstable; urgency=low
* New upstream release 1.3.0-RC1
-- OpenTTD <info@openttd.org> Tue, 19 Feb 2013 00:00:00 +0100
openttd (1.3.0~beta2) unstable; urgency=low
* New upstream release 1.3.0-beta2
-- OpenTTD <info@openttd.org> Thu, 07 Feb 2013 00:00:00 +0100
openttd (1.3.0~beta1) unstable; urgency=low
openttd (1.3.0-beta1) unstable; urgency=low
* New upstream release 1.3.0-beta1
-- OpenTTD <info@openttd.org> Mon, 24 Dec 2012 00:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 24 Dec 2012 00:00:00 +0100
openttd (1.2.3) unstable; urgency=low
* New upstream release 1.2.3
-- OpenTTD <info@openttd.org> Thu, 01 Nov 2012 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 01 Nov 2012 00:00:00 +0200
openttd (1.2.3~RC1) unstable; urgency=low
* New upstream release 1.2.3-RC1
-- OpenTTD <info@openttd.org> Wed, 17 Oct 2012 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 17 Oct 2012 00:00:00 +0200
openttd (1.2.2) unstable; urgency=low
* New upstream release 1.2.2
-- OpenTTD <info@openttd.org> Thu, 16 Aug 2012 20:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 16 Aug 2012 20:00:00 +0200
openttd (1.2.2~RC1) unstable; urgency=low
* New upstream release 1.2.2-RC1
-- OpenTTD <info@openttd.org> Wed, 01 Aug 2012 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Aug 2012 00:00:00 +0200
openttd (1.2.1) unstable; urgency=low
* New upstream release 1.2.1
-- OpenTTD <info@openttd.org> Fri, 01 Jun 2012 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 01 Jun 2012 00:00:00 +0200
openttd (1.2.1~RC1) unstable; urgency=low
* New upstream release 1.2.1-RC1
-- OpenTTD <info@openttd.org> Wed, 16 Apr 2012 22:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 16 Apr 2012 22:00:00 +0200
openttd (1.2.0) unstable; urgency=low
* New upstream release 1.2.0
-- OpenTTD <info@openttd.org> Sun, 15 Apr 2012 14:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 15 Apr 2012 14:00:00 +0200
openttd (1.2.0~RC4) unstable; urgency=low
* New upstream release 1.2.0-RC4
-- OpenTTD <info@openttd.org> Sun, 01 Apr 2012 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 01 Apr 2012 00:00:00 +0200
openttd (1.2.0~RC3) unstable; urgency=low
* New upstream release 1.2.0-RC3
-- OpenTTD <info@openttd.org> Sun, 18 Mar 2012 18:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 18 Mar 2012 18:00:00 +0100
openttd (1.2.0~RC2) unstable; urgency=low
* New upstream release 1.2.0-RC2
-- OpenTTD <info@openttd.org> Sun, 04 Mar 2012 18:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 04 Mar 2012 18:00:00 +0100
openttd (1.2.0~RC1) unstable; urgency=low
* New upstream release 1.2.0-RC1
-- OpenTTD <info@openttd.org> Sun, 19 Feb 2012 23:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 19 Feb 2012 23:00:00 +0100
openttd (1.2.0~beta4) unstable; urgency=low
* New upstream release 1.2.0-beta4
-- OpenTTD <info@openttd.org> Sat, 04 Feb 2012 16:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 04 Feb 2012 16:00:00 +0100
openttd (1.2.0~beta3) unstable; urgency=low
* New upstream release 1.2.0-beta3
-- OpenTTD <info@openttd.org> Sat, 21 Jan 2012 16:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 21 Jan 2012 16:00:00 +0100
openttd (1.2.0~beta2) unstable; urgency=low
* New upstream release 1.2.0-beta2
-- OpenTTD <info@openttd.org> Sat, 07 Jan 2012 00:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 07 Jan 2012 00:00:00 +0100
openttd (1.2.0~beta1) unstable; urgency=low
* New upstream release 1.2.0-beta1
-- OpenTTD <info@openttd.org> Sat, 24 Dec 2011 00:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 24 Dec 2011 00:00:00 +0100
openttd (1.1.4) unstable; urgency=low
* New upstream release 1.1.4
-- OpenTTD <info@openttd.org> Mon, 05 Dec 2011 00:00:00 +0400
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 05 Dec 2011 00:00:00 +0400
openttd (1.1.4-RC1) unstable; urgency=low
* New upstream release 1.1.4-RC1
-- OpenTTD <info@openttd.org> Sun, 20 Nov 2011 17:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 20 Nov 2011 17:00:00 +0100
openttd (1.1.3) unstable; urgency=low
* New upstream release 1.1.3
-- OpenTTD <info@openttd.org> Thu, 15 Sep 2011 21:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 15 Sep 2011 21:00:00 +0200
openttd (1.1.3-RC1) unstable; urgency=low
* New upstream release 1.1.3-RC1
-- OpenTTD <info@openttd.org> Sun, 04 Sep 2011 17:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 04 Sep 2011 17:00:00 +0200
openttd (1.1.2) unstable; urgency=low
* New upstream release 1.1.2
-- OpenTTD <info@openttd.org> Sun, 14 Aug 2011 17:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 14 Aug 2011 17:00:00 +0200
openttd (1.1.2~RC2) unstable; urgency=low
* New upstream release 1.1.2-RC2
-- OpenTTD <info@openttd.org> Sat, 30 Jul 2011 21:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 30 Jul 2011 21:00:00 +0200
openttd (1.1.2~RC1) unstable; urgency=low
* New upstream release 1.1.2-RC1
-- OpenTTD <info@openttd.org> Sun, 24 Jul 2011 21:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 24 Jul 2011 21:00:00 +0200
openttd (1.1.1) unstable; urgency=low
* New upstream release 1.1.1
-- OpenTTD <info@openttd.org> Wed, 01 Jun 2011 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Jun 2011 00:00:00 +0200
openttd (1.1.1~RC1) unstable; urgency=low
* New upstream release 1.1.1-RC1
-- OpenTTD <info@openttd.org> Sun, 15 May 2011 21:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 15 May 2011 21:00:00 +0200
openttd (1.1.0) unstable; urgency=low
* New upstream release 1.1.0
-- OpenTTD <info@openttd.org> Fri, 01 Apr 2011 00:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 01 Apr 2011 00:00:00 +0100
openttd (1.1.0~RC3) unstable; urgency=low
* New upstream release 1.1.0-RC3
-- OpenTTD <info@openttd.org> Fri, 18 Mar 2011 22:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 18 Mar 2011 22:00:00 +0100
openttd (1.1.0~RC2) unstable; urgency=low
* New upstream release 1.1.0-RC2
-- OpenTTD <info@openttd.org> Fri, 04 Mar 2011 22:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 04 Mar 2011 22:00:00 +0100
openttd (1.1.0~RC1) unstable; urgency=low
* New upstream release 1.1.0-RC1
-- OpenTTD <info@openttd.org> Fri, 18 Feb 2011 22:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 18 Feb 2011 22:00:00 +0100
openttd (1.1.0~beta5) unstable; urgency=low
* New upstream release 1.1.0-beta5
-- OpenTTD <info@openttd.org> Fri, 04 Feb 2011 22:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 04 Feb 2011 22:00:00 +0100
openttd (1.1.0~beta4) unstable; urgency=low
* New upstream release 1.1.0-beta4
-- OpenTTD <info@openttd.org> Fri, 21 Jan 2011 00:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 21 Jan 2011 00:00:00 +0100
openttd (1.1.0~beta3) unstable; urgency=low
* New upstream release 1.1.0-beta3
-- OpenTTD <info@openttd.org> Sun, 09 Jan 2011 18:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 09 Jan 2011 18:00:00 +0100
openttd (1.1.0~beta2) unstable; urgency=low
* New upstream release 1.1.0-beta2
-- OpenTTD <info@openttd.org> Fri, 31 Dec 2010 18:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 31 Dec 2010 18:00:00 +0100
openttd (1.1.0~beta1) unstable; urgency=low
* New upstream release 1.1.0-beta1
-- OpenTTD <info@openttd.org> Fri, 24 Dec 2010 00:00:00 +0100
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 24 Dec 2010 00:00:00 +0100
openttd (1.0.5-0) unstable; urgency=low
* New upstream release 1.0.5
-- OpenTTD <info@openttd.org> Sat, 20 Nov 2010 21:00:00 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 20 Nov 2010 21:00:00 +0000
openttd (1.0.5~rc2-0) unstable; urgency=low
* New upstream release 1.0.5~rc2
-- OpenTTD <info@openttd.org> Sun, 14 Nov 2010 15:00:00 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 14 Nov 2010 15:00:00 +0000
openttd (1.0.5~rc1-0) unstable; urgency=low
* New upstream release 1.0.5-RC1
-- OpenTTD <info@openttd.org> Sun, 31 Oct 2010 15:00:00 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 31 Oct 2010 15:00:00 +0000
openttd (1.0.4-0) unstable; urgency=low
* New upstream release 1.0.4
-- OpenTTD <info@openttd.org> Tue, 14 Sep 2010 20:00:00 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 14 Sep 2010 20:00:00 +0000
openttd (1.0.4~rc1-0) unstable; urgency=low
* New upstream release 1.0.4-RC1
-- OpenTTD <info@openttd.org> Mon, 30 Aug 2010 20:00:00 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 30 Aug 2010 20:00:00 +0000
openttd (1.0.3-0) unstable; urgency=low
* New upstream release 1.0.3
-- OpenTTD <info@openttd.org> Sun, 01 Aug 2010 00:00:00 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 01 Aug 2010 00:00:00 +0000
openttd (1.0.3~rc1-0) unstable; urgency=low
* New upstream release 1.0.3-RC1
-- OpenTTD <info@openttd.org> Sat, 05 Jul 2010 17:37:21 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 05 Jul 2010 17:37:21 +0000
openttd (1.0.2-0) unstable; urgency=low
* New upstream release 1.0.2
-- OpenTTD <info@openttd.org> Sat, 19 Jun 2010 18:36:21 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 19 Jun 2010 18:36:21 +0000
openttd (1.0.2~rc1-0) unstable; urgency=low
* New upstream release 1.0.2-RC1
-- OpenTTD <info@openttd.org> Sat, 05 Jun 2010 23:36:21 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 05 Jun 2010 23:36:21 +0000
openttd (1.0.1-0) unstable; urgency=low
* New upstream release 1.0.1
-- OpenTTD <info@openttd.org> Sat, 01 May 2010 00:00:00 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 01 May 2010 00:00:00 +0200
openttd (1.0.1~rc2-0) unstable; urgency=low
* New upstream release 1.0.1-RC2
-- OpenTTD <info@openttd.org> Wed, 21 Apr 2010 21:36:21 +0200
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 21 Apr 2010 21:36:21 +0200
openttd (1.0.1~rc1-0) unstable; urgency=low
* New upstream release 1.0.1-RC1
-- OpenTTD <info@openttd.org> Sat, 17 Apr 2010 23:36:21 +0000
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 17 Apr 2010 23:36:21 +0000
openttd (1.0.0-1) unstable; urgency=low
+1 -1
View File
@@ -1,6 +1,6 @@
@echo off
set OPENTTD_VERSION=1.3.0
set OPENTTD_VERSION=1.3.0-beta1
set OPENSFX_VERSION=0.8.0
set NOSOUND_VERSION=0.8.0
set OPENGFX_VERSION=1.2.0
+2 -4
View File
@@ -17,9 +17,9 @@
#
Name: openttd
Version: 1.3.beta2
Version: 1.3.beta1
Release: 0
%define srcver 1.3.0-beta2
%define srcver 1.3.0-beta1
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
License: GPL-2.0
Group: Amusements/Games/Strategy/Other
@@ -227,13 +227,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%dir %{_datadir}/%{name}/baseset
%dir %{_datadir}/%{name}/scripts
%dir %{_datadir}/%{name}/ai
%dir %{_datadir}/%{name}/game
%{_datadir}/doc/%{name}/*
%{_datadir}/%{name}/lang/*
%{_datadir}/%{name}/baseset/*
%{_datadir}/%{name}/scripts/*
%{_datadir}/%{name}/ai/*
%{_datadir}/%{name}/game/*
%doc %{_mandir}/man6/%{name}.6.*
%files gui
+2 -10
View File
@@ -2,8 +2,8 @@
!define APPV_MAJOR 1
!define APPV_MINOR 3
!define APPV_MAINT 0
!define APPV_BUILD 5
!define APPV_EXTRA ""
!define APPV_BUILD 0
!define APPV_EXTRA "-beta1"
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
@@ -124,10 +124,6 @@ Section "!OpenTTD" Section1
SetOutPath "$INSTDIR\ai\"
File ${PATH_ROOT}bin\ai\compat_*.nut
; Copy Game Script files
SetOutPath "$INSTDIR\game\"
File ${PATH_ROOT}bin\game\compat_*.nut
; Copy data files
SetOutPath "$INSTDIR\baseset\"
File ${PATH_ROOT}bin\baseset\*.grf
@@ -402,9 +398,6 @@ Section "Uninstall"
; AI files
Delete "$INSTDIR\ai\compat_*.nut"
; Game Script files
Delete "$INSTDIR\game\compat_*.nut"
; Baseset files
Delete "$INSTDIR\baseset\opntitle.dat"
Delete "$INSTDIR\baseset\openttd.grf"
@@ -476,7 +469,6 @@ Section "Uninstall"
RMDir "$SMPROGRAMS\$SHORTCUTS\Docs\"
RMDir "$SMPROGRAMS\$SHORTCUTS"
RMDir "$INSTDIR\ai"
RMDir "$INSTDIR\game"
RMDir "$INSTDIR\data"
RMDir "$INSTDIR\baseset"
RMDir "$INSTDIR\gm"
-6
View File
@@ -59,12 +59,6 @@
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\arabic_egypt.lng;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="..\src\lang\basque.txt">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating basque language file</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\basque.lng;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="..\src\lang\belarusian.txt">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating belarusian language file</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
-3
View File
@@ -13,9 +13,6 @@
<CustomBuild Include="..\src\lang\arabic_egypt.txt">
<Filter>Translations</Filter>
</CustomBuild>
<CustomBuild Include="..\src\lang\basque.txt">
<Filter>Translations</Filter>
</CustomBuild>
<CustomBuild Include="..\src\lang\belarusian.txt">
<Filter>Translations</Filter>
</CustomBuild>
-15
View File
@@ -93,21 +93,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\basque.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating basque language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;exit 0&#x0D;&#x0A;"
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
Outputs="..\bin\lang\basque.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\belarusian.txt"
>
-15
View File
@@ -94,21 +94,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\basque.txt"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Generating basque language file"
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang &quot;$(InputPath)&quot;&#x0D;&#x0A;exit 0&#x0D;&#x0A;"
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
Outputs="..\bin\lang\basque.lng"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\lang\belarusian.txt"
>
+2 -2
View File
@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+2 -2
View File
@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+2 -2
View File
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -2
View File
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+4 -3
View File
@@ -1,6 +1,6 @@
OpenTTD readme
Last updated: 2013-04-01
Release version: 1.3.0
Last updated: 2012-12-24
Release version: 1.3.0-beta1
------------------------------------------------------------------------
@@ -670,7 +670,7 @@ Retired Developers:
Thanks to:
Josef Drexler - For his great work on TTDPatch.
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and graphics (signals and track foundations)
Petr Baudiš (pasky) - Many patches, newgrf support, etc.
Simon Sasburg (HackyKid) - For the many bugfixes he has blessed us with
Stefan Meißner (sign_de) - For his work on the console
@@ -684,6 +684,7 @@ Thanks to:
George - Canal graphics
Andrew Parkhouse (andythenorth) - River graphics
David Dallaston (Pikka) - Tram tracks
Marcin Grzegorczyk - Foundations for tracks on slopes,
All Translators - For their support to make OpenTTD a truly international game
Bug Reporters - Thanks for all bug reports
Chris Sawyer - For an amazing game!
-1
View File
@@ -917,7 +917,6 @@ public:
_last_stacksize = _fs->GetStackSize();
Statement();
CleanStack(stacksize);
_fs->AddLineInfos(_lex._currentline, _lineinfo, true);
Expect(TK_WHILE);
SQInteger continuetrg = _fs->GetCurrentPos();
Expect(_SC('(')); CommaExpr(); Expect(_SC(')'));
+1 -1
View File
@@ -1190,7 +1190,7 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb
throw;
}
_callsstacksize = cstksize;
assert(cstksize == _callsstacksize);
_nnativecalls--;
suspend = false;
+1 -1
View File
@@ -26,7 +26,7 @@ typedef std::map<const char *, class ScriptInfo *, StringCompare> ScriptInfoList
class AI {
public:
/**
* The default months AIs start after each other.
* The default months AIs start after eachother.
*/
enum StartNext {
START_NEXT_EASY = DAYS_IN_YEAR * 2,
+1 -1
View File
@@ -197,7 +197,7 @@
/* static */ void AI::ResetConfig()
{
/* Check for both newgame as current game if we can reload the AIInfo inside
/* Check for both newgame as current game if we can reload the AIInfo insde
* the AIConfig. If not, remove the AI from the list (which will assign
* a random new AI on reload). */
for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
+110 -115
View File
@@ -987,56 +987,6 @@ struct AIDebugWindow : public Window {
return (ScriptLog::LogData *)Company::Get(ai_debug_company)->ai_instance->GetLogPointer();
}
/**
* Check whether the currently selected AI/GS is dead.
* @return true if dead.
*/
bool IsDead() const
{
if (ai_debug_company == OWNER_DEITY) {
GameInstance *game = Game::GetInstance();
return game == NULL || game->IsDead();
}
return !Company::IsValidAiID(ai_debug_company) || Company::Get(ai_debug_company)->ai_instance->IsDead();
}
/**
* Check whether a company is a valid AI company or GS.
* @param company Company to check for validity.
* @return true if company is valid for debugging.
*/
bool IsValidDebugCompany(CompanyID company) const
{
switch (company) {
case INVALID_COMPANY: return false;
case OWNER_DEITY: return Game::GetInstance() != NULL;
default: return Company::IsValidAiID(company);
}
}
/**
* Ensure that \c ai_debug_company refers to a valid AI company or GS, or is set to #INVALID_COMPANY.
* If no valid company is selected, it selects the first valid AI or GS if any.
*/
void SelectValidDebugCompany()
{
/* Check if the currently selected company is still active. */
if (this->IsValidDebugCompany(ai_debug_company)) return;
ai_debug_company = INVALID_COMPANY;
const Company *c;
FOR_ALL_COMPANIES(c) {
if (c->is_ai) {
ChangeToAI(c->index);
return;
}
}
/* If no AI is available, see if there is a game script. */
if (Game::GetInstance() != NULL) ChangeToAI(OWNER_DEITY);
}
/**
* Constructor for the window.
* @param desc The description of the window.
@@ -1051,6 +1001,14 @@ struct AIDebugWindow : public Window {
this->FinishInitNested(desc, number);
if (!this->show_break_box) break_check_enabled = false;
/* Disable the companies who are not active or not an AI */
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i));
}
this->EnableWidget(WID_AID_SCRIPT_GAME);
this->DisableWidget(WID_AID_RELOAD_TOGGLE);
this->DisableWidget(WID_AID_SETTINGS);
this->DisableWidget(WID_AID_CONTINUE_BTN);
this->last_vscroll_pos = 0;
this->autoscroll = true;
@@ -1061,8 +1019,17 @@ struct AIDebugWindow : public Window {
/* Restore the break string value from static variable */
this->break_editbox.text.Assign(this->break_string);
this->SelectValidDebugCompany();
this->InvalidateData(-1);
/* Restore button state from static class variables */
if (ai_debug_company == OWNER_DEITY) {
this->LowerWidget(WID_AID_SCRIPT_GAME);
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !Game::IsPaused());
} else if (ai_debug_company != INVALID_COMPANY) {
this->LowerWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !AI::IsPaused(ai_debug_company));
}
this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);
this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check);
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
@@ -1075,31 +1042,67 @@ struct AIDebugWindow : public Window {
virtual void OnPaint()
{
this->SelectValidDebugCompany();
/* Check if the currently selected company is still active. */
if (ai_debug_company == INVALID_COMPANY || (ai_debug_company != OWNER_DEITY && !Company::IsValidAiID(ai_debug_company))) {
if (ai_debug_company != INVALID_COMPANY) {
/* Raise the widget for the previous selection. */
this->RaiseWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
ai_debug_company = INVALID_COMPANY;
}
const Company *c;
FOR_ALL_COMPANIES(c) {
if (c->is_ai) {
/* Lower the widget corresponding to this company. */
this->LowerWidget(c->index + WID_AID_COMPANY_BUTTON_START);
ai_debug_company = c->index;
break;
}
}
/* If no AI is available, see if there is a game script. */
if (ai_debug_company == INVALID_COMPANY && Game::GetInstance() != NULL) {
/* Lower the widget corresponding to the game script. */
this->LowerWidget(WID_AID_SCRIPT_GAME);
ai_debug_company = OWNER_DEITY;
}
}
/* Update "Reload AI" and "AI settings" buttons */
this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY);
this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY);
this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL);
/* Draw standard stuff */
this->DrawWidgets();
if (this->IsShaded()) return; // Don't draw anything when the window is shaded.
bool dirty = false;
/* Paint the company icons */
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
NWidgetCore *button = this->GetWidget<NWidgetCore>(i + WID_AID_COMPANY_BUTTON_START);
bool dirty = false;
bool valid = Company::IsValidAiID(i);
/* Check whether the validity of the company changed */
dirty |= (button->IsDisabled() == valid);
bool disabled = !valid;
if (button->IsDisabled() != disabled) {
/* Invalid/non-AI companies have button disabled */
button->SetDisabled(disabled);
dirty = true;
}
/* Mark dead/paused AIs by setting the background colour. */
bool dead = valid && Company::Get(i)->ai_instance->IsDead();
bool paused = valid && Company::Get(i)->ai_instance->IsPaused();
/* Re-paint if the button was updated.
* (note that it is intentional that SetScriptButtonColour is always called) */
dirty |= SetScriptButtonColour(*button, dead, paused);
dirty = SetScriptButtonColour(*button, dead, paused) || dirty;
/* Do we need a repaint? */
if (dirty) this->SetDirty();
/* Draw company icon only for valid AI companies */
if (!valid) continue;
@@ -1109,14 +1112,13 @@ struct AIDebugWindow : public Window {
/* Set button colour for Game Script. */
GameInstance *game = Game::GetInstance();
bool valid = game != NULL;
bool dead = valid && game->IsDead();
bool paused = valid && game->IsPaused();
bool dead = game != NULL && game->IsDead();
bool paused = game != NULL && game->IsPaused();
NWidgetCore *button = this->GetWidget<NWidgetCore>(WID_AID_SCRIPT_GAME);
dirty |= (button->IsDisabled() == valid) || SetScriptButtonColour(*button, dead, paused);
if (dirty) this->InvalidateData(-1);
if (SetScriptButtonColour(*button, dead, paused)) {
/* Re-paint if the button was updated. */
this->SetWidgetDirty(WID_AID_SCRIPT_GAME);
}
/* If there are no active companies, don't display anything else. */
if (ai_debug_company == INVALID_COMPANY) return;
@@ -1218,19 +1220,30 @@ struct AIDebugWindow : public Window {
*/
void ChangeToAI(CompanyID show_ai)
{
if (!this->IsValidDebugCompany(show_ai)) return;
if (ai_debug_company == OWNER_DEITY) {
this->RaiseWidget(WID_AID_SCRIPT_GAME);
} else {
this->RaiseWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
}
ai_debug_company = show_ai;
ScriptLog::LogData *log = this->GetLogPointer();
this->vscroll->SetCount((log == NULL) ? 0 : log->used);
if (ai_debug_company == OWNER_DEITY) {
this->LowerWidget(WID_AID_SCRIPT_GAME);
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !Game::IsPaused());
} else {
this->LowerWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !AI::IsPaused(ai_debug_company));
}
this->highlight_row = -1; // The highlight of one AI make little sense for another AI.
/* Close AI settings window to prevent confusion */
DeleteWindowByClass(WC_AI_SETTINGS);
this->InvalidateData(-1);
this->autoscroll = true;
this->last_vscroll_pos = this->vscroll->GetPosition();
this->SetDirty();
/* Close AI settings window to prevent confusion */
DeleteWindowByClass(WC_AI_SETTINGS);
}
virtual void OnClick(Point pt, int widget, int click_count)
@@ -1261,22 +1274,24 @@ struct AIDebugWindow : public Window {
case WID_AID_BREAK_STR_ON_OFF_BTN:
this->break_check_enabled = !this->break_check_enabled;
this->InvalidateData(-1);
this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);
this->SetWidgetDirty(WID_AID_BREAK_STR_ON_OFF_BTN);
break;
case WID_AID_MATCH_CASE_BTN:
this->case_sensitive_break_check = !this->case_sensitive_break_check;
this->InvalidateData(-1);
this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check);
this->SetWidgetDirty(WID_AID_MATCH_CASE_BTN);
break;
case WID_AID_CONTINUE_BTN:
/* Unpause current AI / game script and mark the corresponding script button dirty. */
if (!this->IsDead()) {
if (ai_debug_company == OWNER_DEITY) {
Game::Unpause();
} else {
AI::Unpause(ai_debug_company);
}
if (ai_debug_company == OWNER_DEITY) {
Game::Unpause();
this->SetWidgetDirty(WID_AID_SCRIPT_GAME);
} else {
AI::Unpause(ai_debug_company);
this->SetWidgetDirty(WID_AID_COMPANY_BUTTON_START + ai_debug_company);
}
/* If the last AI/Game Script is unpaused, unpause the game too. */
@@ -1298,7 +1313,8 @@ struct AIDebugWindow : public Window {
}
this->highlight_row = -1;
this->InvalidateData(-1);
this->SetWidgetDirty(WID_AID_LOG_PANEL);
this->DisableWidget(WID_AID_CONTINUE_BTN);
break;
}
}
@@ -1332,14 +1348,15 @@ struct AIDebugWindow : public Window {
/**
* Some data on this window has become invalid.
* @param data Information about the changed data.
* This is the company ID of the AI/GS which wrote a new log message, or -1 in other cases.
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
*/
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
{
if (data == -1 || ai_debug_company == data) this->SetDirty();
/* If the log message is related to the active company tab, check the break string.
* This needs to be done in gameloop-scope, so the AI is suspended immediately. */
if (!gui_scope && data == ai_debug_company && this->IsValidDebugCompany(ai_debug_company) && this->break_check_enabled && !this->break_string_filter.IsEmpty()) {
if (!gui_scope && data == ai_debug_company && this->break_check_enabled && !this->break_string_filter.IsEmpty()) {
/* Get the log instance of the active company */
ScriptLog::LogData *log = this->GetLogPointer();
@@ -1348,12 +1365,10 @@ struct AIDebugWindow : public Window {
this->break_string_filter.AddLine(log->lines[log->pos]);
if (this->break_string_filter.GetState()) {
/* Pause execution of script. */
if (!this->IsDead()) {
if (ai_debug_company == OWNER_DEITY) {
Game::Pause();
} else {
AI::Pause(ai_debug_company);
}
if (ai_debug_company == OWNER_DEITY) {
Game::Pause();
} else {
AI::Pause(ai_debug_company);
}
/* Pause the game. */
@@ -1361,35 +1376,15 @@ struct AIDebugWindow : public Window {
DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);
}
/* Make it possible to click on the continue button */
this->EnableWidget(WID_AID_CONTINUE_BTN);
this->SetWidgetDirty(WID_AID_CONTINUE_BTN);
/* Highlight row that matched */
this->highlight_row = log->pos;
}
}
}
if (!gui_scope) return;
this->SelectValidDebugCompany();
ScriptLog::LogData *log = ai_debug_company != INVALID_COMPANY ? this->GetLogPointer() : NULL;
this->vscroll->SetCount((log == NULL) ? 0 : log->used);
/* Update company buttons */
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i));
this->SetWidgetLoweredState(i + WID_AID_COMPANY_BUTTON_START, ai_debug_company == i);
}
this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL);
this->SetWidgetLoweredState(WID_AID_SCRIPT_GAME, ai_debug_company == OWNER_DEITY);
this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);
this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check);
this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY);
this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY);
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, ai_debug_company == INVALID_COMPANY ||
(ai_debug_company == OWNER_DEITY ? !Game::IsPaused() : !AI::IsPaused(ai_debug_company)));
}
virtual void OnResize()
+1 -1
View File
@@ -30,7 +30,7 @@ public:
/**
* Check if we have an AI by name and version available in our list.
* @param nameParam The name of the AI.
* @param versionParam The version of the AI, or -1 if you want the latest.
* @param versionParam The versionof the AI, or -1 if you want the latest.
* @param force_exact_match Only match name+version, never latest.
* @return NULL if no match found, otherwise the AI that matched.
*/
+5 -11
View File
@@ -136,11 +136,6 @@ static StationID FindNearestHangar(const Aircraft *v)
/* v->tile can't be used here, when aircraft is flying v->tile is set to 0 */
uint distance = DistanceSquare(vtile, st->airport.tile);
if (v->acache.cached_max_range_sqr != 0) {
/* Check if our current destination can be reached from the depot airport. */
const Station *cur_dest = GetTargetAirportIfValid(v);
if (cur_dest != NULL && DistanceSquare(st->airport.tile, cur_dest->airport.tile) > v->acache.cached_max_range_sqr) continue;
}
if (distance < best || index == INVALID_STATION) {
best = distance;
index = st->index;
@@ -302,7 +297,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
v->targetairport = GetStationIndex(tile);
v->SetNext(u);
v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_aircraft);
v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_aircraft;
v->date_of_last_service = _date;
v->build_year = u->build_year = _cur_year;
@@ -314,7 +309,6 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
v->vehicle_flags = 0;
if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE);
v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent);
v->InvalidateNewGRFCacheOfChain();
@@ -636,7 +630,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE,
/* Adjust distance moved by plane speed setting */
if (_settings_game.vehicle.plane_speed > 1) spd /= _settings_game.vehicle.plane_speed;
/* Convert direction-independent speed into direction-dependent speed. (old movement method) */
/* Convert direction-indepenent speed into direction-dependent speed. (old movement method) */
spd = v->GetOldAdvanceSpeed(spd);
spd += v->progress;
@@ -661,7 +655,7 @@ int GetAircraftFlyingAltitude(const Aircraft *v)
int base_altitude = PLANE_HOLDING_ALTITUDE;
/* Make sure eastbound and westbound planes do not "crash" into each
* other by providing them with vertical separation
* other by providing them with vertical seperation
*/
switch (v->direction) {
case DIR_N:
@@ -1381,7 +1375,7 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass *
* and get serviced at the same time - setting */
if (_settings_game.order.serviceathelipad) {
if (v->subtype == AIR_HELICOPTER && apc->num_helipads > 0) {
/* an excerpt of ServiceAircraft, without the invisibility stuff */
/* an exerpt of ServiceAircraft, without the invisibility stuff */
v->date_of_last_service = _date;
v->breakdowns_since_last_service = 0;
v->reliability = v->GetEngine()->reliability;
@@ -1403,7 +1397,7 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass *
switch (v->current_order.GetType()) {
case OT_GOTO_STATION: // ready to fly to another airport
break;
case OT_GOTO_DEPOT: // visit hangar for servicing, sale, etc.
case OT_GOTO_DEPOT: // visit hangar for serivicing, sale, etc.
go_to_hangar = v->current_order.GetDestination() == v->targetairport;
break;
case OT_CONDITIONAL:
+2 -2
View File
@@ -22,7 +22,7 @@
* @param terminals The terminals.
* @param num_helipads Number of heli pads.
* @param flags Information about the class of FTA.
* @param delta_z Height of the airport above the land.
* @param delta_z Height of the arport above the land.
*/
#define AIRPORT_GENERIC(name, terminals, num_helipads, flags, delta_z) \
static AirportFTAClass _airportfta_ ## name(_airport_moving_data_ ## name, terminals, \
@@ -41,7 +41,7 @@
* Define a heliport.
* @param name Suffix of the names of the helipad data.
* @param num_helipads Number of heli pads.
* @param delta_z Height of the airport above the land.
* @param delta_z Height of the arport above the land.
*/
#define HELIPORT(name, num_helipads, delta_z) \
AIRPORT_GENERIC(name, NULL, num_helipads, AirportFTAClass::HELICOPTERS, delta_z)
+3 -3
View File
@@ -68,7 +68,7 @@ bool IsArticulatedEngine(EngineID engine_type)
* Count the number of articulated parts of an engine.
* @param engine_type The engine to get the number of parts of.
* @param purchase_window Whether we are in the scope of the purchase window or not, i.e. whether we cannot allocate vehicles.
* @return The number of parts.
* @return The nmumber of parts.
*/
uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
{
@@ -98,7 +98,7 @@ uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
/**
* Returns the default (non-refitted) capacity of a specific EngineID.
* @param engine the EngineID of interest
* @param engine the EngineID of iterest
* @param cargo_type returns the default cargo type, if needed
* @return capacity
*/
@@ -113,7 +113,7 @@ static inline uint16 GetVehicleDefaultCapacity(EngineID engine, CargoID *cargo_t
/**
* Returns all cargoes a vehicle can carry.
* @param engine the EngineID of interest
* @param engine the EngineID of iterest
* @param include_initial_cargo_type if true the default cargo type of the vehicle is included; if false only the refit_mask
* @return bit set of CargoIDs
*/
+1 -4
View File
@@ -87,10 +87,7 @@ CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, Engi
/* Check if the old vehicle is already in the list */
EngineRenew *er = GetEngineReplacement(*erl, old_engine, group);
if (er != NULL) {
if (flags & DC_EXEC) {
er->to = new_engine;
er->replace_when_old = replace_when_old;
}
if (flags & DC_EXEC) er->to = new_engine;
return CommandCost();
}
+5 -5
View File
@@ -66,18 +66,18 @@ bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company)
/* make sure the railtypes are compatible */
if ((GetRailTypeInfo(e_from->u.rail.railtype)->compatible_railtypes & GetRailTypeInfo(e_to->u.rail.railtype)->compatible_railtypes) == 0) return false;
/* make sure we do not replace wagons with engines or vice versa */
/* make sure we do not replace wagons with engines or vise versa */
if ((e_from->u.rail.railveh_type == RAILVEH_WAGON) != (e_to->u.rail.railveh_type == RAILVEH_WAGON)) return false;
break;
}
case VEH_ROAD:
/* make sure that we do not replace a tram with a normal road vehicles or vice versa */
/* make sure that we do not replace a tram with a normal road vehicles or vise versa */
if (HasBit(e_from->info.misc_flags, EF_ROAD_TRAM) != HasBit(e_to->info.misc_flags, EF_ROAD_TRAM)) return false;
break;
case VEH_AIRCRAFT:
/* make sure that we do not replace a plane with a helicopter or vice versa */
/* make sure that we do not replace a plane with a helicopter or vise versa */
if ((e_from->u.air.subtype & AIR_CTOL) != (e_to->u.air.subtype & AIR_CTOL)) return false;
break;
@@ -263,7 +263,7 @@ static CommandCost GetNewEngineType(const Vehicle *v, const Company *c, bool alw
* Builds and refits a replacement vehicle
* Important: The old vehicle is still in the original vehicle chain (used for determining the cargo when the old vehicle did not carry anything, but the new one does)
* @param old_veh A single (articulated/multiheaded) vehicle that shall be replaced.
* @param new_vehicle Returns the newly build and refitted vehicle
* @param new_vehicle Returns the newly build and refittet vehicle
* @param part_of_chain The vehicle is part of a train
* @return cost or error
*/
@@ -766,7 +766,7 @@ CommandCost CmdSetAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
if (flags & DC_EXEC) {
GroupStatistics::UpdateAutoreplace(_current_company);
if (IsLocalCompany()) SetWindowDirty(WC_REPLACE_VEHICLE, Engine::Get(old_engine_type)->type);
SetWindowClassesDirty(GetWindowClassForVehicleType(Engine::Get(old_engine_type)->type));
}
if ((flags & DC_EXEC) && IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g);
+3 -1
View File
@@ -45,7 +45,7 @@ static int CDECL EngineNumberSorter(const EngineID *a, const EngineID *b)
* @param id_g The group the engine belongs to
* Note: this function only works if it is called either
* - when a new vehicle is build, but before it's counted in num_engines
* - when a vehicle is deleted and after it's subtracted from num_engines
* - when a vehicle is deleted and after it's substracted from num_engines
* - when not changing the count (used when changing replace orders)
*/
void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g)
@@ -186,6 +186,7 @@ class ReplaceVehicleWindow : public Window {
EngineID veh_from = this->sel_engine[0];
EngineID veh_to = this->sel_engine[1];
DoCommandP(0, (replace_when_old ? 1 : 0) | (this->sel_group << 16), veh_from + (veh_to << 16), CMD_SET_AUTOREPLACE);
this->SetDirty();
}
public:
@@ -454,6 +455,7 @@ public:
case WID_RV_STOP_REPLACE: { // Stop replacing
EngineID veh_from = this->sel_engine[0];
DoCommandP(0, this->sel_group << 16, veh_from + (INVALID_ENGINE << 16), CMD_SET_AUTOREPLACE);
this->SetDirty();
break;
}
+2 -2
View File
@@ -24,12 +24,12 @@ struct BaseConsist {
int32 lateness_counter; ///< How many ticks late (or early if negative) this vehicle is.
Date timetable_start; ///< When the vehicle is supposed to start the timetable.
uint16 service_interval; ///< The interval for (automatic) servicing; either in days or %.
Date service_interval; ///< The interval for (automatic) servicing; either in days or %.
VehicleOrderID cur_real_order_index;///< The index to the current real (non-implicit) order
VehicleOrderID cur_implicit_order_index;///< The index to the current implicit order
uint16 vehicle_flags; ///< Used for gradual loading and other miscellaneous things (@see VehicleFlags enum)
byte vehicle_flags; ///< Used for gradual loading and other miscellaneous things (@see VehicleFlags enum)
BaseConsist() : name(NULL) {}
virtual ~BaseConsist();
+4 -10
View File
@@ -137,16 +137,12 @@ bool BaseSet<T, Tnum_files, Tsearch_in_tars>::FillSetDetails(IniFile *ini, const
switch (T::CheckMD5(file, BASESET_DIR)) {
case MD5File::CR_MATCH:
this->valid_files++;
this->found_files++;
break;
/* FALL THROUGH */
case MD5File::CR_MISMATCH:
DEBUG(grf, 1, "MD5 checksum mismatch for: %s (in %s)", filename, full_filename);
this->found_files++;
break;
case MD5File::CR_NO_FILE:
DEBUG(grf, 1, "The file %s specified in %s is missing", filename, full_filename);
break;
}
}
@@ -184,8 +180,7 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length,
/* The more complete set takes precedence over the version number. */
if ((duplicate->valid_files == set->valid_files && duplicate->version >= set->version) ||
duplicate->valid_files > set->valid_files) {
DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate, %s)", set->name, set->version,
duplicate->valid_files > set->valid_files ? "less valid files" : "lower version");
DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate)", set->name, set->version);
set->next = BaseMedia<Tbase_set>::duplicate_sets;
BaseMedia<Tbase_set>::duplicate_sets = set;
} else {
@@ -200,8 +195,7 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length,
* version number until a new game is started which isn't a big problem */
if (BaseMedia<Tbase_set>::used_set == duplicate) BaseMedia<Tbase_set>::used_set = set;
DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate, %s)", duplicate->name, duplicate->version,
duplicate->valid_files < set->valid_files ? "less valid files" : "lower version");
DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate)", duplicate->name, duplicate->version);
duplicate->next = BaseMedia<Tbase_set>::duplicate_sets;
BaseMedia<Tbase_set>::duplicate_sets = duplicate;
ret = true;
@@ -269,7 +263,7 @@ template <class Tbase_set>
if (missing == 0) {
p += seprintf(p, last, " (%i corrupt file%s)\n", invalid, invalid == 1 ? "" : "s");
} else {
p += seprintf(p, last, " (unusable: %i missing file%s)\n", missing, missing == 1 ? "" : "s");
p += seprintf(p, last, " (unuseable: %i missing file%s)\n", missing, missing == 1 ? "" : "s");
}
} else {
p += seprintf(p, last, "\n");
-1
View File
@@ -71,7 +71,6 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> {
uint16 random_bits; ///< Random bits assigned to this station
byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station
uint8 cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
uint32 cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask
TileArea train_station; ///< Tile area the train 'station' part covers
StationRect rect; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions
+1 -1
View File
@@ -107,7 +107,7 @@ void Blitter_32bppBase::ScrollBuffer(void *video, int &left, int &top, int &widt
dst = (uint32 *)video + left + top * _screen.pitch;
src = dst - scroll_y * _screen.pitch;
/* Decrease height. (scroll_y is <=0). */
/* Decrese height. (scroll_y is <=0). */
height += scroll_y;
assert(height > 0);
+1 -1
View File
@@ -112,7 +112,7 @@ void Blitter_8bppBase::ScrollBuffer(void *video, int &left, int &top, int &width
dst = (uint8 *)video + left + top * _screen.pitch;
src = dst - scroll_y * _screen.pitch;
/* Decrease height. (scroll_y is <=0). */
/* Decrese height. (scroll_y is <=0). */
height += scroll_y;
assert(height > 0);
+1 -1
View File
@@ -123,7 +123,7 @@ public:
/**
* Copy from a buffer to the screen.
* @param video The destination pointer (video-buffer).
* @param video The destionation pointer (video-buffer).
* @param src The buffer from which the data will be read.
* @param width The width of the buffer.
* @param height The height of the buffer.
+1 -1
View File
@@ -37,7 +37,7 @@ public:
/* virtual */ int GetBytesPerPixel() { return 0; }
};
/** Factory for the blitter that does nothing. */
/** Factory for the blitter that doesn nothing. */
class FBlitter_Null: public BlitterFactory<FBlitter_Null> {
public:
/* virtual */ const char *GetName() { return "null"; }
+1 -1
View File
@@ -205,7 +205,7 @@ public:
#endif /* defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) */
/**
* Handle all procedures for bootstrapping OpenTTD without a base graphics set.
* Handle all procedures for bootstrapping OpenTTD without a base grapics set.
* This requires all kinds of trickery that is needed to avoid the use of
* sprites from the base graphics set which are pretty interwoven.
* @return True if a base set exists, otherwise false.
+1 -1
View File
@@ -381,7 +381,7 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transpo
/* The bridge length without ramps. */
const uint bridge_len = GetTunnelBridgeLength(start, end);
/* If Ctrl is being pressed, check whether the last bridge built is available
/* If Ctrl is being pressed, check wether the last bridge built is available
* If so, return this bridge type. Otherwise continue normally.
* We store bridge types for each transport type, so we have to check for
* the transport type beforehand.
+4 -6
View File
@@ -41,7 +41,7 @@ static inline bool IsBridgeTile(TileIndex t)
* checks for the possibility that a bridge may be on this tile
* These are in fact all the tile types on which a bridge can be found
* @param t The tile to analyze
* @return true if a bridge might be present
* @return true if a bridge migh be present
*/
static inline bool MayHaveBridgeAbove(TileIndex t)
{
@@ -161,17 +161,15 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D
* Make a bridge ramp for roads.
* @param t the tile to make a bridge ramp
* @param o the new owner of the bridge ramp
* @param owner_road the new owner of the road on the bridge
* @param owner_tram the new owner of the tram on the bridge
* @param bridgetype the type of bridge this bridge ramp belongs to
* @param d the direction this ramp must be facing
* @param r the road type of the bridge
*/
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Owner owner_tram, BridgeType bridgetype, DiagDirection d, RoadTypes r)
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RoadTypes r)
{
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, 0);
SetRoadOwner(t, ROADTYPE_ROAD, owner_road);
if (owner_tram != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, owner_tram);
SetRoadOwner(t, ROADTYPE_ROAD, o);
if (o != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, o);
SetRoadTypes(t, r);
}
+2 -2
View File
@@ -272,7 +272,7 @@ static int CDECL EnginePowerVsRunningCostSorter(const EngineID *a, const EngineI
* we will actually calculate cunning cost/power (to make it more than 1).
* Because of this, the return value have to be reversed as well and we return b - a instead of a - b.
* Another thing is that both power and running costs should be doubled for multiheaded engines.
* Since it would be multiplying with 2 in both numerator and denominator, it will even themselves out and we skip checking for multiheaded. */
* Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */
Money va = (e_a->GetRunningCost()) / max(1U, (uint)e_a->GetPower());
Money vb = (e_b->GetRunningCost()) / max(1U, (uint)e_b->GetPower());
int r = ClampToI32(vb - va);
@@ -967,7 +967,7 @@ struct BuildVehicleWindow : Window {
this->vscroll = this->GetScrollbar(WID_BV_SCROLLBAR);
/* If we are just viewing the list of vehicles, we do not need the Build button.
* So we just hide it, and enlarge the Rename button by the now vacant place. */
* So we just hide it, and enlarge the Rename buton by the now vacant place. */
if (this->listview_mode) this->GetWidget<NWidgetStacked>(WID_BV_BUILD_SEL)->SetDisplayedPlane(SZSP_NONE);
NWidgetCore *widget = this->GetWidget<NWidgetCore>(WID_BV_LIST);
+7 -39
View File
@@ -16,54 +16,22 @@
CargoMonitorMap _cargo_pickups; ///< Map of monitored pick-ups to the amount since last query/activation.
CargoMonitorMap _cargo_deliveries; ///< Map of monitored deliveries to the amount since last query/activation.
/**
* Helper method for ClearCargoPickupMonitoring and ClearCargoDeliveryMonitoring.
* Clears all monitors that belong to the specified company or all if INVALID_OWNER
* is specified as company.
* @param cargo_monitor_map reference to the cargo monitor map to operate on.
* @param company company to clear cargo monitors for or INVALID_OWNER if all cargo monitors should be cleared.
*/
static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID company = INVALID_OWNER)
/** Clear all pick-up cargo monitors. */
void ClearCargoPickupMonitoring()
{
if (company == INVALID_OWNER) {
cargo_monitor_map.clear();
return;
}
CargoMonitorMap::iterator next;
for (CargoMonitorMap::iterator it = cargo_monitor_map.begin(); it != cargo_monitor_map.end(); it = next) {
next = it;
next++;
if (DecodeMonitorCompany(it->first) == company) {
cargo_monitor_map.erase(it);
}
}
_cargo_pickups.clear();
}
/**
* Clear all pick-up cargo monitors.
* @param company clear all pick-up monitors for this company or if INVALID_OWNER
* is passed, all pick-up monitors are cleared regardless of company.
*/
void ClearCargoPickupMonitoring(CompanyID company)
/** Clear all delivery cargo monitors. */
void ClearCargoDeliveryMonitoring()
{
ClearCargoMonitoring(_cargo_pickups, company);
}
/**
* Clear all delivery cargo monitors.
* @param company clear all delivery monitors for this company or if INVALID_OWNER
* is passed, all delivery monitors are cleared regardless of company.
*/
void ClearCargoDeliveryMonitoring(CompanyID company)
{
ClearCargoMonitoring(_cargo_deliveries, company);
_cargo_deliveries.clear();
}
/**
* Get and reset the amount associated with a cargo monitor.
* @param[in,out] monitor_map Monitoring map to search (and reset for the queried entry).
* @param monitor Cargo monitor to query/reset.
* @oaram monitor Cargo monitor to query/reset.
* @param keep_monitoring After returning from this call, continue monitoring.
* @return Amount collected since last query/activation for the monitored combination.
*/
+2 -2
View File
@@ -139,8 +139,8 @@ static inline TownID DecodeMonitorTown(CargoMonitorID num)
return GB(num, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH);
}
void ClearCargoPickupMonitoring(CompanyID company = INVALID_OWNER);
void ClearCargoDeliveryMonitoring(CompanyID company = INVALID_OWNER);
void ClearCargoPickupMonitoring();
void ClearCargoDeliveryMonitoring();
uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring);
uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring);
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st);
+1 -1
View File
@@ -161,7 +161,7 @@ public:
/**
* Simple collection class for a list of cargo packets.
* @tparam Tinst Actual instantiation of this cargo list.
* @tparam Tinst Actual instantation of this cargo list.
*/
template <class Tinst>
class CargoList {
+3 -3
View File
@@ -46,7 +46,7 @@ enum CargoClass {
CC_LIQUID = 1 << 6, ///< Liquids (Oil, Water, Rubber)
CC_REFRIGERATED = 1 << 7, ///< Refrigerated cargo (Food, Fruit)
CC_HAZARDOUS = 1 << 8, ///< Hazardous cargo (Nuclear Fuel, Explosives, etc.)
CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transportation in Box Vans, Silo Wagons, etc.)
CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transporation in Box Vans, Silo Wagons, etc.)
CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes.
};
@@ -163,13 +163,13 @@ static inline bool IsCargoInClass(CargoID c, CargoClass cc)
* @param var Reference getting the cargospec.
* @see CargoSpec
*/
#define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_cargo_specs_size && (var = _sorted_cargo_specs[index], true) ; index++)
#define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_cargo_specs_size; index++)
/**
* Loop header for iterating over 'real' cargoes, sorted by name. Phony cargoes like regearing cargoes are skipped.
* @param var Reference getting the cargospec.
* @see CargoSpec
*/
#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_standard_cargo_specs_size && (var = _sorted_cargo_specs[index], true); index++)
#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_standard_cargo_specs_size; index++)
#endif /* CARGOTYPE_H */
+1 -1
View File
@@ -75,7 +75,7 @@ static int32 ClickChangeCompanyCheat(int32 p1, int32 p2)
* Allow (or disallow) changing production of all industries.
* @param p1 new value
* @param p2 unused
* @return New value allowing change of industry production.
* @return New value allwing change of industry production.
*/
static int32 ClickSetProdCheat(int32 p1, int32 p2)
{
+3 -3
View File
@@ -190,12 +190,12 @@ static void TileLoopClearAlps(TileIndex tile)
}
}
/* Update snow density. */
uint current_density = GetClearDensity(tile);
uint curent_density = GetClearDensity(tile);
uint req_density = (k < 0) ? 0u : min((uint)k, 3);
if (current_density < req_density) {
if (curent_density < req_density) {
AddClearDensity(tile, 1);
} else if (current_density > req_density) {
} else if (curent_density > req_density) {
AddClearDensity(tile, -1);
} else {
/* Density at the required level. */
+1 -1
View File
@@ -331,7 +331,7 @@ static const Command _command_proc_table[] = {
/*!
* This function range-checks a cmd, and checks if the cmd is not NULL
*
* @param cmd The integer value of a command
* @param cmd The integervalue of a command
* @return true if the command is valid (and got a CommandProc function)
*/
bool IsValidCommand(uint32 cmd)
+1 -1
View File
@@ -277,7 +277,7 @@ enum Commands {
CMD_GIVE_MONEY, ///< give money to another company
CMD_CHANGE_SETTING, ///< change a setting
CMD_CHANGE_COMPANY_SETTING, ///< change a company setting
CMD_CHANGE_COMPANY_SETTING, ///< change a company etting
CMD_SET_AUTOREPLACE, ///< set an autoreplace entry
-18
View File
@@ -1170,21 +1170,3 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, u
return CommandCost();
}
/**
* Get the service interval for the given company and vehicle type.
* @param c The company, or NULL for client-default settings.
* @param type The vehicle type to get the interval for.
* @return The service interval.
*/
int CompanyServiceInterval(const Company *c, VehicleType type)
{
const VehicleDefaultSettings *vds = (c == NULL) ? &_settings_client.company.vehicle : &c->settings.vehicle;
switch (type) {
default: NOT_REACHED();
case VEH_TRAIN: return vds->servint_trains;
case VEH_ROAD: return vds->servint_roadveh;
case VEH_AIRCRAFT: return vds->servint_aircraft;
case VEH_SHIP: return vds->servint_ships;
}
}
-3
View File
@@ -15,7 +15,6 @@
#include "command_type.h"
#include "company_type.h"
#include "gfx_type.h"
#include "vehicle_type.h"
bool MayCompanyTakeOver(CompanyID cbig, CompanyID small);
void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner);
@@ -57,6 +56,4 @@ static inline bool IsInteractiveCompany(CompanyID company)
return company == _local_company;
}
int CompanyServiceInterval(const Company *c, VehicleType type);
#endif /* COMPANY_FUNC_H */
+19 -31
View File
@@ -1987,7 +1987,6 @@ struct CompanyWindow : Window
{
this->InitNested(desc, window_number);
this->owner = (Owner)this->window_number;
this->OnInvalidateData();
}
virtual void OnPaint()
@@ -2056,6 +2055,25 @@ struct CompanyWindow : Window
}
}
if (!local) {
if (_settings_game.economy.allow_shares) { // Shares are allowed
/* If all shares are owned by someone (none by nobody), disable buy button */
this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
/* Spectators cannot do anything of course */
_local_company == COMPANY_SPECTATOR);
/* If the company doesn't own any shares, disable sell button */
this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
/* Spectators cannot do anything of course */
_local_company == COMPANY_SPECTATOR);
} else { // Shares are not allowed, disable buy/sell buttons
this->DisableWidget(WID_C_BUY_SHARE);
this->DisableWidget(WID_C_SELL_SHARE);
}
}
this->DrawWidgets();
}
@@ -2378,36 +2396,6 @@ struct CompanyWindow : Window
#endif /* ENABLE_NETWORK */
}
}
/**
* Some data on this window has become invalid.
* @param data Information about the changed data.
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
*/
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
{
if (this->window_number == _local_company) return;
if (_settings_game.economy.allow_shares) { // Shares are allowed
const Company *c = Company::Get(this->window_number);
/* If all shares are owned by someone (none by nobody), disable buy button */
this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
/* Spectators cannot do anything of course */
_local_company == COMPANY_SPECTATOR);
/* If the company doesn't own any shares, disable sell button */
this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
/* Spectators cannot do anything of course */
_local_company == COMPANY_SPECTATOR);
} else { // Shares are not allowed, disable buy/sell buttons
this->DisableWidget(WID_C_BUY_SHARE);
this->DisableWidget(WID_C_SELL_SHARE);
}
}
};
static const WindowDesc _company_desc(
+1 -1
View File
@@ -120,7 +120,7 @@ static inline void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyMan
/**
* Increase/Decrease the company manager's face variable by the given amount.
* If the new value greater than the max value for this variable it will be set to 0.
* Or is it negative (< 0) it will be set to max value.
* Or is it negativ (< 0) it will be set to max value.
*
* @param cmf the company manager face to write the bits to
* @param cmfv the company manager face variable to write the data of
+5 -5
View File
@@ -355,7 +355,7 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char
aliasstream[astream_i++] = '"';
break;
case ';': // Cmd separator, start new command
case ';': // Cmd seperator, start new command
aliasstream[astream_i] = '\0';
aliases[++a_index] = &aliasstream[++astream_i];
cmdptr++;
@@ -364,7 +364,7 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char
case '%': // Some or all parameters
cmdptr++;
switch (*cmdptr) {
case '+': { // All parameters separated: "[param 1]" "[param 2]"
case '+': { // All parameters seperated: "[param 1]" "[param 2]"
for (i = 0; i != tokencount; i++) {
aliasstream[astream_i++] = '"';
astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[i], astream_i);
@@ -412,7 +412,7 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char
/**
* Execute a given command passed to us. First chop it up into
* individual tokens (separated by spaces), then execute it if possible
* individual tokens (seperated by spaces), then execute it if possible
* @param cmdstr string to be parsed and executed
*/
void IConsoleCmdExec(const char *cmdstr)
@@ -439,14 +439,14 @@ void IConsoleCmdExec(const char *cmdstr)
memset(&tokens, 0, sizeof(tokens));
memset(&tokenstream, 0, sizeof(tokenstream));
/* 1. Split up commandline into tokens, separated by spaces, commands
/* 1. Split up commandline into tokens, seperated by spaces, commands
* enclosed in "" are taken as one token. We can only go as far as the amount
* of characters in our stream or the max amount of tokens we can handle */
for (cmdptr = cmdstr, t_index = 0, tstream_i = 0; *cmdptr != '\0'; cmdptr++) {
if (t_index >= lengthof(tokens) || tstream_i >= lengthof(tokenstream)) break;
switch (*cmdptr) {
case ' ': // Token separator
case ' ': // Token seperator
if (!foundtoken) break;
if (longtoken) {
+1 -1
View File
@@ -1066,7 +1066,7 @@ DEF_CONSOLE_CMD(ConRestart)
}
/**
* Print a text buffer line by line to the console. Lines are separated by '\n'.
* Print a text buffer line by line to the console. Lines are seperated by '\n'.
* @param buf The buffer to print.
* @note All newlines are replace by '\0' characters.
*/
+2 -2
View File
@@ -28,7 +28,7 @@ enum ConsoleHookResult {
* --Commands--
* Commands are commands, or functions. They get executed once and any
* effect they produce are carried out. The arguments to the commands
* are given to them, each input word separated by a double-quote (") is an argument
* are given to them, each input word seperated by a double-quote (") is an argument
* If you want to handle multiple words as one, enclose them in double-quotes
* eg. 'say "hello sexy boy"'
*/
@@ -50,7 +50,7 @@ struct IConsoleCmd {
* (eg. 'ng' for 'load %A; unpause; debug_level 5'). Aliases can parse the arguments
* given to them in the command line.
* - "%A - %Z" substitute arguments 1 t/m 26
* - "%+" lists all parameters keeping them separated
* - "%+" lists all parameters keeping them seperated
* - "%!" also lists all parameters but presenting them to the aliased command as one argument
* - ";" allows for combining commands (see example 'ng')
*/
+2 -2
View File
@@ -27,7 +27,7 @@ const uint8 _ffb_64[64] = {
* Search the first set bit in a 32 bit variable.
*
* This algorithm is a static implementation of a log
* congruence search algorithm. It checks the first half
* conguence search algorithm. It checks the first half
* if there is a bit set search there further. And this
* way further. If no bit is set return 0.
*
@@ -55,7 +55,7 @@ uint8 FindFirstBit(uint32 x)
* Search the last set bit in a 64 bit variable.
*
* This algorithm is a static implementation of a log
* congruence search algorithm. It checks the second half
* conguence search algorithm. It checks the second half
* if there is a bit set search there further. And this
* way further. If no bit is set return 0.
*
-12
View File
@@ -26,8 +26,6 @@
* @param x The value to read some bits.
* @param s The start position to read some bits.
* @param n The number of bits to read.
* @pre n < sizeof(T) * 8
* @pre s + n <= sizeof(T) * 8
* @return The selected bits, aligned to a LSB.
*/
template <typename T>
@@ -52,8 +50,6 @@ static inline uint GB(const T x, const uint8 s, const uint8 n)
* @param s The start position for the new bits
* @param n The size/window for the new bits
* @param d The actually new bits to save in the defined position.
* @pre n < sizeof(T) * 8
* @pre s + n <= sizeof(T) * 8
* @return The new value of \a x
*/
template <typename T, typename U>
@@ -76,8 +72,6 @@ static inline T SB(T &x, const uint8 s, const uint8 n, const U d)
* @param x The variable to add some bits at some position
* @param s The start position of the addition
* @param n The size/window for the addition
* @pre n < sizeof(T) * 8
* @pre s + n <= sizeof(T) * 8
* @param i The value to add at the given start position in the given window.
* @return The new value of \a x
*/
@@ -98,7 +92,6 @@ static inline T AB(T &x, const uint8 s, const uint8 n, const U i)
*
* @param x The value to check
* @param y The position of the bit to check, started from the LSB
* @pre y < sizeof(T) * 8
* @return True if the bit is set, false else.
*/
template <typename T>
@@ -116,7 +109,6 @@ static inline bool HasBit(const T x, const uint8 y)
*
* @param x The variable to set a bit
* @param y The bit position to set
* @pre y < sizeof(T) * 8
* @return The new value of the old value with the bit set
*/
template <typename T>
@@ -146,7 +138,6 @@ static inline T SetBit(T &x, const uint8 y)
*
* @param x The variable to clear the bit
* @param y The bit position to clear
* @pre y < sizeof(T) * 8
* @return The new value of the old value with the bit cleared
*/
template <typename T>
@@ -176,7 +167,6 @@ static inline T ClrBit(T &x, const uint8 y)
*
* @param x The variable to toggle the bit
* @param y The bit position to toggle
* @pre y < sizeof(T) * 8
* @return The new value of the old value with the bit toggled
*/
template <typename T>
@@ -296,7 +286,6 @@ static inline bool HasAtMostOneBit(T value)
* @note Assumes a byte has 8 bits
* @param x The value which we want to rotate
* @param n The number how many we want to rotate
* @pre n < sizeof(T) * 8
* @return A bit rotated number
*/
template <typename T>
@@ -311,7 +300,6 @@ static inline T ROL(const T x, const uint8 n)
* @note Assumes a byte has 8 bits
* @param x The value which we want to rotate
* @param n The number how many we want to rotate
* @pre n < sizeof(T) * 8
* @return A bit rotated number
*/
template <typename T>
+1 -1
View File
@@ -89,7 +89,7 @@ template <typename Tenum_t> struct TinyEnumT;
template <typename Tenum_t>
struct TinyEnumT {
typedef Tenum_t enum_type; ///< expose our enumeration type (i.e. Trackdir) to outside
typedef EnumPropsT<Tenum_t> Props; ///< make easier access to our enumeration properties
typedef EnumPropsT<Tenum_t> Props; ///< make easier access to our enumeration propeties
typedef typename Props::storage storage_type; ///< small storage type
static const enum_type begin = Props::begin; ///< enum beginning (i.e. TRACKDIR_BEGIN)
static const enum_type end = Props::end; ///< enum end (i.e. TRACKDIR_END)
+1 -1
View File
@@ -108,7 +108,7 @@ DEFINE_POOL_METHOD(inline void *)::AllocateItem(size_t size, size_t index)
item = (Titem *)this->alloc_cache;
this->alloc_cache = this->alloc_cache->next;
if (Tzero) {
/* Explicitly casting to (void *) prevents a clang warning -
/* Explicitly casting to (void *) prevets a clang warning -
* we are actually memsetting a (not-yet-constructed) object */
memset((void *)item, 0, sizeof(Titem));
}
+2 -2
View File
@@ -45,7 +45,7 @@ struct PoolBase {
static void Clean(PoolType);
/**
* Constructor registers this object in the pool vector.
* Contructor registers this object in the pool vector.
* @param pt type of this pool.
*/
PoolBase(PoolType pt) : type(pt)
@@ -278,7 +278,7 @@ struct Pool : PoolBase {
};
private:
static const size_t NO_FREE_ITEM = MAX_UVALUE(size_t); ///< Constant to indicate we can't allocate any more items
static const size_t NO_FREE_ITEM = MAX_UVALUE(size_t); ///< Contant to indicate we can't allocate any more items
/**
* Helper struct to cache 'freed' PoolItems so we
+1 -1
View File
@@ -37,7 +37,7 @@ static inline void QSortT(T *base, uint num, int (CDECL *comparator)(const T*, c
/**
* Type safe Gnome Sort.
*
* This is a slightly modified Gnome search. The basic
* This is a slightly modifyied Gnome search. The basic
* Gnome search tries to sort already sorted list parts.
* The modification skips these.
*
+1 -1
View File
@@ -72,7 +72,7 @@ protected:
virtual char *LogRegisters(char *buffer, const char *last) const;
/**
* Writes the dynamically linked libraries/modules to the buffer, if there
* Writes the dynamically linked libaries/modules to the buffer, if there
* is information about it available.
* @param buffer The begin where to write at.
* @param last The last position in the buffer to write to.
+3 -3
View File
@@ -62,7 +62,7 @@ static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = {
CurrencySpec _currency_specs[NUM_CURRENCY];
/**
* These enums are only declared in order to make sense
* These enums are only declared in order to make sens
* out of the TTDPatch_To_OTTDIndex array that will follow
* Every currency used by Ottd is there, just in case TTDPatch will
* add those missing in its code
@@ -129,7 +129,7 @@ const byte TTDPatch_To_OTTDIndex[] =
};
/**
* Will return the ottd's index correspondence to
* Will return the ottd's index correspondance to
* the ttdpatch's id. If the id is bigger than the array,
* it is a grf written for ottd, thus returning the same id.
* Only called from newgrf.cpp
@@ -180,7 +180,7 @@ void CheckSwitchToEuro()
* Called only from newgrf.cpp and settings.cpp.
* @param preserve_custom will not reset custom currency (the latest one on the list)
* if ever it is flagged to true. In which case, the total size of the memory to move
* will be one currency spec less, thus preserving the custom currency from been
* will be one currency spec less, thus preserving the custom curreny from been
* overwritten.
*/
void ResetCurrencies(bool preserve_custom)
+1 -1
View File
@@ -138,7 +138,7 @@ void ConvertDateToYMD(Date date, YearMonthDay *ymd)
}
/**
* Converts a tuple of Year, Month and Day to a Date.
* Converts a tupe of Year, Month and Day to a Date.
* @param year is a number between 0..MAX_YEAR
* @param month is a number between 0..11
* @param day is a number between 1..31
+1 -1
View File
@@ -83,7 +83,7 @@ uint64 ottd_rdtsc();
*
* for (int i = 0; i < 5; i++) {
* TIC();
* --Do your code--
* --Do yuor code--
* TOC("A name", 5);
* }
*
+3 -4
View File
@@ -169,8 +169,6 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ
const Engine *e;
FOR_ALL_ENGINES_OF_TYPE(e, type) {
if (!e->IsEnabled()) continue;
EngineID eid = e->index;
uint x, y;
int x_offs, y_offs;
@@ -744,7 +742,7 @@ struct DepotWindow : Window {
}
case WID_D_SELL_ALL:
/* Only open the confirmation window if there are anything to sell */
/* Only open the confimation window if there are anything to sell */
if (this->vehicle_list.Length() != 0 || this->wagon_list.Length() != 0) {
TileIndex tile = this->window_number;
byte vehtype = this->type;
@@ -842,7 +840,8 @@ struct DepotWindow : Window {
*/
virtual bool OnVehicleSelect(const Vehicle *v)
{
if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), CcCloneVehicle)) {
/* Suppress the vehicle GUI when share-cloning. There is no point to it, starting vehicles can also be done via the depot GUI. */
if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), _ctrl_pressed ? NULL : CcCloneVehicle)) {
ResetObjectToPlace();
}
return true;
+2 -2
View File
@@ -93,7 +93,7 @@ static inline DiagDirection ReverseDiagDir(DiagDirection d)
* the new DiagDirection.
*
* @param d The DiagDirection
* @param delta The difference to apply on
* @param delta The difference to applie on
* @return The new direction which was calculated
*/
static inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta)
@@ -207,7 +207,7 @@ static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns)
}
/**
* Checks if an integer value is a valid DiagDirection
* Checks if an interger value is a valid DiagDirection
*
* @param d The value to check
* @return True if the value belongs to a DiagDirection, else false
+2 -2
View File
@@ -66,7 +66,7 @@ enum DirDiff {
DIRDIFF_SAME = 0, ///< Both directions faces to the same direction
DIRDIFF_45RIGHT = 1, ///< Angle of 45 degrees right
DIRDIFF_90RIGHT = 2, ///< Angle of 90 degrees right
DIRDIFF_REVERSE = 4, ///< One direction is the opposite of the other one
DIRDIFF_REVERSE = 4, ///< One direction is the opposit of the other one
DIRDIFF_90LEFT = 6, ///< Angle of 90 degrees left
DIRDIFF_45LEFT = 7, ///< Angle of 45 degrees left
};
@@ -119,7 +119,7 @@ DECLARE_POSTFIX_INCREMENT(DiagDirDiff)
/**
* Enumeration for the two axis X and Y
*
* This enumeration represents the two axis X and Y in the game.
* This enumeration represente the two axis X and Y in the game.
* The X axis is the one which goes align the north-west edge
* (and south-east edge). The Y axis must be so the one which goes
* align the north-east edge (and south-west) edge.
+2 -2
View File
@@ -76,7 +76,7 @@ static void DisasterClearSquare(TileIndex tile)
switch (GetTileType(tile)) {
case MP_RAILWAY:
if (Company::IsHumanID(GetTileOwner(tile)) && !IsRailDepot(tile)) {
if (Company::IsHumanID(GetTileOwner(tile))) {
Backup<CompanyByte> cur_company(_current_company, OWNER_WATER, FILE_LINE);
DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
cur_company.Restore();
@@ -382,7 +382,7 @@ static void DestructIndustry(Industry *i)
/**
* Aircraft handling, v->current_order.dest states:
* 0: Fly towards the targeted industry
* 0: Fly towards the targetted industry
* 1: If within 15 tiles, fire away rockets and destroy industry
* 2: Industry explosions
* 3: Fly out of the map
+1 -1
View File
@@ -87,7 +87,7 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = N
return endtile;
}
/** Toolbar window for constructing water infrastructure. */
/** Toolbar window for constructing water infra structure. */
struct BuildDocksToolbarWindow : Window {
DockToolbarWidgets last_clicked_widget; ///< Contains the last widget that has been clicked on this toolbar.
+27 -58
View File
@@ -45,7 +45,6 @@
#include "water.h"
#include "game/game.hpp"
#include "cargomonitor.h"
#include "goal_base.h"
#include "table/strings.h"
#include "table/pricebase.h"
@@ -292,7 +291,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
#endif /* ENABLE_NETWORK */
if (old_owner == _local_company) {
/* Single player cheated to AI company.
* There are no spectators in single player, so we must pick some other company. */
* There are no specatators in single player, so we must pick some other company. */
assert(!_networking);
Backup<CompanyByte> cur_company(_current_company, FILE_LINE);
Company *c;
@@ -462,7 +461,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
if (new_owner != INVALID_OWNER) {
/* Update all signals because there can be new segment that was owned by two companies
* and signals were not propagated
* Similar with crossings - it is needed to bar crossings that weren't before
* Similiar with crossings - it is needed to bar crossings that weren't before
* because of different owner of crossing and approaching train */
tile = 0;
@@ -509,15 +508,6 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
if (si->owner == old_owner) si->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner;
}
/* Remove Game Script created Goals and CargoMonitors. */
Goal *g;
FOR_ALL_GOALS(g) {
if (g->company == old_owner) delete g;
}
ClearCargoPickupMonitoring(old_owner);
ClearCargoDeliveryMonitoring(old_owner);
/* Change colour of existing windows */
if (new_owner != INVALID_OWNER) ChangeWindowOwner(old_owner, new_owner);
@@ -555,7 +545,7 @@ static void CompanyCheckBankrupt(Company *c)
case 9:
break;
/* Warn about bankruptcy after 3 months */
/* Warn about bancruptcy after 3 months */
case 4: {
CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
cni->FillData(c);
@@ -570,19 +560,19 @@ static void CompanyCheckBankrupt(Company *c)
/* Offer company for sale after 6 months */
case 7: {
/* Don't consider the loan */
/* Check if the company has any value. If not, declare it bankrupt
* right now */
Money val = CalculateCompanyValue(c, false);
c->bankrupt_value = val;
c->bankrupt_asked = 1 << c->index; // Don't ask the owner
c->bankrupt_timeout = 0;
/* The company assets should always have some value */
assert(c->bankrupt_value > 0);
break;
if (val > 0) {
c->bankrupt_value = val;
c->bankrupt_asked = 1 << c->index; // Don't ask the owner
c->bankrupt_timeout = 0;
break;
}
/* FALL THROUGH to case 10 */
}
/* Bankrupt company after 6 months (if the company has no value) or latest
/* Bancrupt company after 6 months (if the company has no value) or latest
* after 9 months (if it still had value after 6 months) */
default:
case 10: {
@@ -706,7 +696,7 @@ bool AddInflation(bool check_year)
/* Approximation for (100 + infl_amount)% ** (1 / 12) - 100%
* scaled by 65536
* 12 -> months per year
* This is only a good approximation for small values
* This is only a good approxiamtion for small values
*/
_economy.inflation_prices += (_economy.inflation_prices * _economy.infl_amount * 54) >> 16;
_economy.inflation_payment += (_economy.inflation_payment * _economy.infl_amount_pr * 54) >> 16;
@@ -876,7 +866,7 @@ void StartupIndustryDailyChanges(bool init_counter)
* which stands for the days in a month.
* Using just 31 will make it so that a monthly reset (based on the real number of days of that month)
* would not be needed.
* Since it is based on "fractional parts", the leftover days will not make much of a difference
* Since it is based on "fractionnal parts", the leftover days will not make much of a difference
* on the overall total number of changes performed */
_economy.industry_daily_increment = (1 << map_size) / 31;
@@ -1261,8 +1251,7 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
/* 'Reserve' this cargo for this vehicle, because we were first. */
for (Vehicle *v = front; v != NULL; v = v->Next()) {
int cap_left = v->cargo_cap;
if (!HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) cap_left -= v->cargo.Count();
int cap_left = v->cargo_cap - v->cargo.Count();
if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left;
}
}
@@ -1295,12 +1284,11 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
bool dirty_station = false;
bool completely_emptied = true;
bool anything_unloaded = false;
bool anything_loaded = false;
bool anything_unloaded = false;
bool anything_loaded = false;
uint32 full_load_amount = 0;
uint32 cargo_not_full = 0;
uint32 cargo_full = 0;
uint32 reservation_left = 0;
uint32 cargo_not_full = 0;
uint32 cargo_full = 0;
front->cur_speed = 0;
@@ -1512,14 +1500,9 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
if (use_autorefit) {
/* When using autorefit, reserve all cargo for this wagon to prevent other wagons
* from feeling the need to refit. */
uint total_cap_left = v->cargo_cap - v->cargo.Count();
int total_cap_left = v->cargo_cap - v->cargo.Count();
cargo_left[v->cargo_type] -= total_cap_left;
consist_capleft[v->cargo_type] -= total_cap_left;
if (total_cap_left > cap && count > cap) {
/* Remember if there are reservations left so that we don't stop
* loading before they're loaded. */
SetBit(reservation_left, v->cargo_type);
}
} else {
/* Update cargo left; but don't reserve everything yet, so other wagons
* of the same consist load in parallel. */
@@ -1552,7 +1535,6 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
st->last_vehicle_type = v->type;
if (ge->cargo.Empty()) {
TriggerStationRandomisation(st, st->xy, SRT_CARGO_TAKEN, v->cargo_type);
TriggerStationAnimation(st, st->xy, SAT_CARGO_TAKEN, v->cargo_type);
AirportAnimationTrigger(st, AAT_STATION_CARGO_TAKEN, v->cargo_type);
}
@@ -1570,10 +1552,7 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
}
if (anything_loaded || anything_unloaded) {
if (front->type == VEH_TRAIN) {
TriggerStationRandomisation(st, front->tile, SRT_TRAIN_LOADS);
TriggerStationAnimation(st, front->tile, SAT_TRAIN_LOADS);
}
if (front->type == VEH_TRAIN) TriggerStationAnimation(st, st->xy, SAT_TRAIN_LOADS);
}
/* Only set completely_emptied, if we just unloaded all remaining cargo */
@@ -1585,17 +1564,10 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
* If we use autorefit otoh, we only want to load/refit a vehicle if the other wagons cannot already hold the cargo,
* to keep the option to still refit the vehicle when new cargo of different type shows up.
*/
if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD) && !use_autorefit) {
/* Update left cargo */
for (Vehicle *v = front; v != NULL; v = v->Next()) {
int cap_left = v->cargo_cap;
if (!HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) {
if (use_autorefit) {
continue;
} else {
cap_left -= v->cargo.Count();
}
}
int cap_left = v->cargo_cap - v->cargo.Count();
if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left;
}
}
@@ -1613,7 +1585,7 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
}
/* We loaded less cargo than possible for all cargo types and it's not full
* load and we're not supposed to wait any longer: stop loading. */
if (!anything_unloaded && full_load_amount == 0 && reservation_left == 0 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) &&
if (!anything_unloaded && full_load_amount == 0 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) &&
front->current_order_time >= (uint)max(front->current_order.wait_time - front->lateness_counter, 0)) {
SetBit(front->vehicle_flags, VF_STOP_LOADING);
}
@@ -1665,9 +1637,6 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
front->load_unload_ticks = max(1, unloading_time);
if (completely_emptied) {
/* Make sure the vehicle is marked dirty, since we need to update the NewGRF
* properties such as weight, power and TE whenever the trigger runs. */
dirty_vehicle = true;
TriggerVehicle(front, VEHICLE_TRIGGER_EMPTY);
}
@@ -1828,7 +1797,7 @@ CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1,
break;
}
}
InvalidateWindowData(WC_COMPANY, target_company);
SetWindowDirty(WC_COMPANY, target_company);
CompanyAdminUpdate(c);
}
return cost;
@@ -1866,7 +1835,7 @@ CommandCost CmdSellShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1
OwnerByte *b = c->share_owners;
while (*b != _current_company) b++; // share owners is guaranteed to contain company
*b = COMPANY_SPECTATOR;
InvalidateWindowData(WC_COMPANY, target_company);
SetWindowDirty(WC_COMPANY, target_company);
CompanyAdminUpdate(c);
}
return CommandCost(EXPENSES_OTHER, cost);
+1 -1
View File
@@ -547,7 +547,7 @@ static EffectInitProc * const _effect_init_procs[] = {
};
assert_compile(lengthof(_effect_init_procs) == EV_END);
/** Functions for controlling effect vehicles at each tick. */
/** Functions for controling effect vehicles at each tick. */
static EffectTickProc * const _effect_tick_procs[] = {
ChimneySmokeTick, // EV_CHIMNEY_SMOKE
SteamSmokeTick, // EV_STEAM_SMOKE
+5 -5
View File
@@ -25,7 +25,7 @@
* Group 0: Tiles with both an even X coordinate and an even Y coordinate
* Group 1: Tiles with an even X and an odd Y coordinate
* Group 2: Tiles with an odd X and an even Y coordinate
* Group 3: Tiles with both an odd X and Y coordinate.
* Group 3: Tiles with both an odd X and Y coordnate.
*
* <h3>Pylon Points</h3>
* <h4>Control Points</h4>
@@ -39,7 +39,7 @@
* other tile.
*
* Now on each edge there are two PCPs: One from each adjacent tile. Both PCPs
* are merged using an OR operation (i. e. if one tile needs a PCP at the position
* are merged using an OR operation (i. e. if one tile needs a PCP at the postion
* in question, both tiles get it).
*
* <h4>Position Points</h4>
@@ -127,7 +127,7 @@ static TrackBits MaskWireBits(TileIndex t, TrackBits tracks)
TrackdirBits neighbour_tdb = TRACKDIR_BIT_NONE;
for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) {
/* If the neighbour tile is either not electrified or has no tracks that can be reached
/* If the neighbor tile is either not electrified or has no tracks that can be reached
* from this tile, mark all trackdirs that can be reached from the neighbour tile
* as needing no catenary. We make an exception for blocked station tiles with a matching
* axis that still display wires to preserve visual continuity. */
@@ -376,7 +376,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
/* Station and road crossings are always "flat", so adjust the tileh accordingly */
if (IsTileType(neighbour, MP_STATION) || IsTileType(neighbour, MP_ROAD)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT;
/* Read the foundations if they are present, and adjust the tileh */
/* Read the foundataions if they are present, and adjust the tileh */
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]);
if (IsBridgeTile(neighbour)) {
foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour)));
@@ -426,7 +426,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
/* Don't build the pylon if it would be outside the tile */
if (!HasBit(OwnedPPPonPCP[i], temp)) {
/* We have a neighbour that will draw it, bail out */
/* We have a neighour that will draw it, bail out */
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE) break;
continue; // No neighbour, go looking for a better position
}
+2 -2
View File
@@ -854,7 +854,7 @@ void EnginesDailyLoop()
* Accept an engine prototype. XXX - it is possible that the top-company
* changes while you are waiting to accept the offer? Then it becomes invalid
* @param tile unused
* @param flags operation to perform
* @param flags operation to perfom
* @param p1 engine-prototype offered
* @param p2 unused
* @param text unused
@@ -1000,7 +1000,7 @@ static bool IsUniqueEngineName(const char *name)
/**
* Rename an engine.
* @param tile unused
* @param flags operation to perform
* @param flags operation to perfom
* @param p1 engine ID to rename
* @param p2 unused
* @param text the new name or an empty string when resetting to the default
+1 -1
View File
@@ -72,7 +72,7 @@ struct Engine : EnginePool::PoolItem<&_engine_pool> {
* Usually a valid cargo is returned, even though the vehicle has zero capacity, and can therefore not carry anything. But the cargotype is still used
* for livery selection etc..
*
* Vehicles with CT_INVALID as default cargo are usually not available, but it can appear as default cargo of articulated parts.
* Vehicles with CT_INVALID as default cargo are usally not available, but it can appear as default cargo of articulated parts.
*
* @return The default cargo type.
* @see CanCarryCargo
+1 -1
View File
@@ -18,7 +18,7 @@
/** Message severity/type */
enum WarningLevel {
WL_INFO, ///< Used for DoCommand-like (and some non-fatal AI GUI) errors/information
WL_INFO, ///< Used for DoCommand-like (and some nonfatal AI GUI) errors/information
WL_WARNING, ///< Other information
WL_ERROR, ///< Errors (eg. saving/loading failed)
WL_CRITICAL, ///< Critical errors, the MessageBox is shown in all cases
+1 -1
View File
@@ -67,7 +67,7 @@ static const WindowDesc _errmsg_face_desc(
);
/**
* Copy the given data into our instance.
* Copy the given data into our instace.
* @param data The data to copy.
*/
ErrorMessageData::ErrorMessageData(const ErrorMessageData &data)
+4 -4
View File
@@ -238,7 +238,7 @@ static void FioFreeHandle()
* @param slot Index to assign.
* @param filename Name of the file at the disk.
* @param subdir The sub directory to search this file in.
*/
*/
void FioOpenFile(int slot, const char *filename, Subdirectory subdir)
{
FILE *f;
@@ -643,7 +643,7 @@ static void SimplifyFileName(char *name)
/* Force lowercase */
strtolower(name);
/* Tar-files always have '/' path-separator, but we want our PATHSEPCHAR */
/* Tar-files always have '/' path-seperator, but we want our PATHSEPCHAR */
#if (PATHSEPCHAR != '/')
for (char *n = name; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR;
#endif
@@ -1364,7 +1364,7 @@ static uint ScanTar(FileScanner *fs, const char *extension, TarFileList::iterato
}
/**
* Scan for files with the given extension in the given search path.
* Scan for files with the given extention in the given search path.
* @param extension the extension of files to search for.
* @param sd the sub directory to search in.
* @param tars whether to search in the tars too.
@@ -1410,7 +1410,7 @@ uint FileScanner::Scan(const char *extension, Subdirectory sd, bool tars, bool r
}
/**
* Scan for files with the given extension in the given search path.
* Scan for files with the given extention in the given search path.
* @param extension the extension of files to search for.
* @param directory the sub directory to search in.
* @param recursive whether to search recursively
+2 -2
View File
@@ -88,9 +88,9 @@ enum FileSlots {
CONFIG_SLOT = 0,
/** Slot for the sound. */
SOUND_SLOT = 1,
/** First slot usable for (New)GRFs used during the game. */
/** First slot useable for (New)GRFs used during the game. */
FIRST_GRF_SLOT = 2,
/** Last slot usable for (New)GRFs used during the game. */
/** Last slot useable for (New)GRFs used during the game. */
LAST_GRF_SLOT = 63,
/** Maximum number of slots. */
MAX_FILE_SLOTS = 64
+1
View File
@@ -266,6 +266,7 @@ public:
this->querystrings[WID_SL_SAVE_OSK_TITLE] = &this->filename_editbox;
this->filename_editbox.ok_button = WID_SL_SAVE_GAME;
this->filename_editbox.afilter = CS_ALPHANUMERAL;
this->CreateNestedTree(desc, true);
if (mode == SLD_LOAD_GAME) this->GetWidget<NWidgetStacked>(WID_SL_CONTENT_DOWNLOAD_SEL)->SetDisplayedPlane(SZSP_HORIZONTAL);
+5 -5
View File
@@ -160,8 +160,8 @@ static FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
* - Batang & BatangChe & Gungsuh & GungsuhChe (TrueType)
* We will strip the font-type '()' if any and work with the font name
* itself, which must match exactly; if...
* TTC files, font files which contain more than one font are separated
* by '&'. Our best bet will be to do substr match for the fontname
* TTC files, font files which contain more than one font are seperated
* byt '&'. Our best bet will be to do substr match for the fontname
* and then let FreeType figure out which index to load */
s = _tcschr(vbuffer, _T('('));
if (s != NULL) s[-1] = '\0';
@@ -182,7 +182,7 @@ static FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
* contain multiple fonts inside this single file. GetFontData however
* returns the whole file, so we need to check each font inside to get the
* proper font.
* Also note that FreeType does not support UNICODE filenames! */
* Also note that FreeType does not support UNICODE filesnames! */
#if defined(UNICODE)
/* We need a cast here back from wide because FreeType doesn't support
* widechar filenames. Just use the buffer we allocated before for the
@@ -570,7 +570,7 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
strecpy(buff, str, lastof(buff));
str_validate(buff, lastof(buff), SVS_ALLOW_NEWLINE);
/* Extract a UniChar representation of the sample string. */
/* Extract a UniChar represenation of the sample string. */
CFStringRef cf_str = CFStringCreateWithCString(kCFAllocatorDefault, buff, kCFStringEncodingUTF8);
if (cf_str == NULL) {
/* Something went wrong. Corrupt/invalid sample string? */
@@ -590,7 +590,7 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
ATSUCreateTextLayoutWithTextPtr(string, kATSUFromTextBeginning, kATSUToTextEnd, str_len, 1, &run_len, &style, &text_layout);
/* Try to match a font for the sample text. ATSUMatchFontsToText stops after
* it finds the first continuous character run not renderable with the currently
* it finds the first continous character run not renderable with the currently
* selected font starting at offset. The matching needs to be repeated until
* the end of the string is reached to make sure the fallback font matches for
* all characters in the string and not only the first run. */
+1 -1
View File
@@ -159,7 +159,7 @@
/* static */ void Game::ResetConfig()
{
/* Check for both newgame as current game if we can reload the GameInfo inside
/* Check for both newgame as current game if we can reload the GameInfo insde
* the GameConfig. If not, remove the Game from the list. */
if (_settings_game.game_config != NULL && _settings_game.game_config->HasScript()) {
if (!_settings_game.game_config->ResetInfo(true)) {
+1 -1
View File
@@ -21,7 +21,7 @@ public:
/**
* Check if we have a game by name and version available in our list.
* @param nameParam The name of the game script.
* @param versionParam The version of the game script, or -1 if you want the latest.
* @param versionParam The versionof the game script, or -1 if you want the latest.
* @param force_exact_match Only match name+version, never latest.
* @return NULL if no match found, otherwise the game script that matched.
*/
+4 -4
View File
@@ -78,7 +78,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0),
/* Left column with labels. */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_LAND_GENERATOR, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1),
@@ -92,9 +92,9 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
/* Mapsize X * Y. */
NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_LANDSCAPE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0),
@@ -320,7 +320,7 @@ struct GenerateLandscapeWindow : public Window {
this->querystrings[WID_GL_RANDOM_EDITBOX] = &this->seed_editbox;
this->seed_editbox.text.Print("%u", _settings_newgame.game_creation.generation_seed);
this->seed_editbox.caption = STR_NULL;
this->seed_editbox.text.afilter = CS_NUMERAL;
this->seed_editbox.afilter = CS_NUMERAL;
this->mode = (GenenerateLandscapeWindowMode)this->window_number;
+33 -36
View File
@@ -297,11 +297,11 @@ static void SetColourRemap(TextColour colour)
}
#if !defined(WITH_ICU)
static WChar *HandleBiDiAndArabicShapes(WChar *text) { return text; }
typedef WChar UChar;
static UChar *HandleBiDiAndArabicShapes(UChar *text) { return text; }
#else
#include <unicode/ubidi.h>
#include <unicode/ushape.h>
#include <unicode/ustring.h>
/**
* Function to be able to handle right-to-left text and Arabic chars properly.
@@ -332,40 +332,37 @@ static WChar *HandleBiDiAndArabicShapes(WChar *text) { return text; }
* @param lastof the end of the buffer
* @return the buffer to draw from
*/
static WChar *HandleBiDiAndArabicShapes(WChar *buffer)
static UChar *HandleBiDiAndArabicShapes(UChar *buffer)
{
UChar input[DRAW_STRING_BUFFER];
static UChar input_output[DRAW_STRING_BUFFER];
UChar intermediate[DRAW_STRING_BUFFER];
static WChar output[DRAW_STRING_BUFFER];
/* Transform from UTF-32 to internal ICU format of UTF-16. */
UChar *t = buffer;
size_t length = 0;
while (*t != '\0' && length < lengthof(input_output) - 1) {
input_output[length++] = *t++;
}
input_output[length] = 0;
UErrorCode err = U_ZERO_ERROR;
int32_t length = 0;
u_strFromUTF32(input, lengthof(input), &length, (UChar32 *)buffer, -1, &err);
if (U_FAILURE(err)) return buffer;
UBiDi *para = ubidi_openSized(length, 0, &err);
UBiDi *para = ubidi_openSized((int32_t)length, 0, &err);
if (para == NULL) return buffer;
ubidi_setPara(para, input, length, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, NULL, &err);
length = ubidi_writeReordered(para, intermediate, lengthof(intermediate), UBIDI_REMOVE_BIDI_CONTROLS, &err);
length = u_shapeArabic(intermediate, length, input, lengthof(input), U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_LETTERS_SHAPE, &err);
ubidi_setPara(para, input_output, (int32_t)length, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, NULL, &err);
ubidi_writeReordered(para, intermediate, (int32_t)length, UBIDI_REMOVE_BIDI_CONTROLS, &err);
length = u_shapeArabic(intermediate, (int32_t)length, input_output, lengthof(input_output), U_SHAPE_TEXT_DIRECTION_VISUAL_LTR | U_SHAPE_LETTERS_SHAPE, &err);
ubidi_close(para);
if (U_FAILURE(err)) return buffer;
/* Transform back to UTF-32. */
u_strToUTF32((UChar32 *)output, lengthof(output), NULL, input, length, &err);
if (U_FAILURE(err)) return buffer;
/* u_strToUTF32 doesn't add a NUL charcter if the buffer is too small, be safe. */
output[lengthof(output) - 1] = '\0';
return output;
input_output[length] = '\0';
return input_output;
}
#endif /* WITH_ICU */
/**
* Truncate a given string to a maximum width if necessary.
* Truncate a given string to a maximum width if neccessary.
* If the string is truncated, add three dots ('...') to show this.
* @param *str string that is checked and possibly truncated
* @param maxw maximum width in pixels of the string
@@ -423,7 +420,7 @@ static int TruncateString(char *str, int maxw, bool ignore_setxy, FontSize start
return w;
}
static int ReallyDoDrawString(const WChar *string, int x, int y, DrawStringParams &params, bool parse_string_also_when_clipped = false);
static int ReallyDoDrawString(const UChar *string, int x, int y, DrawStringParams &params, bool parse_string_also_when_clipped = false);
/**
* Get the real width of the string.
@@ -431,7 +428,7 @@ static int ReallyDoDrawString(const WChar *string, int x, int y, DrawStringParam
* @param start_fontsize Fontsize to start the text with
* @return the width.
*/
static int GetStringWidth(const WChar *str, FontSize start_fontsize)
static int GetStringWidth(const UChar *str, FontSize start_fontsize)
{
FontSize size = start_fontsize;
int max_width;
@@ -499,11 +496,11 @@ static int DrawString(int left, int right, int top, char *str, const char *last,
* the string and draw the parts separated by SETX(Y).
* So here we split
*/
static SmallVector<WChar *, 4> setx_offsets;
static SmallVector<UChar *, 4> setx_offsets;
setx_offsets.Clear();
WChar draw_buffer[DRAW_STRING_BUFFER];
WChar *p = draw_buffer;
UChar draw_buffer[DRAW_STRING_BUFFER];
UChar *p = draw_buffer;
*setx_offsets.Append() = p;
@@ -562,8 +559,8 @@ static int DrawString(int left, int right, int top, char *str, const char *last,
/* In case we have a RTL language we swap the alignment. */
if (!(align & SA_FORCE) && _current_text_dir == TD_RTL && !(align & SA_STRIP) && (align & SA_HOR_MASK) != SA_HOR_CENTER) align ^= SA_RIGHT;
for (WChar **iter = setx_offsets.Begin(); iter != setx_offsets.End(); iter++) {
WChar *to_draw = *iter;
for (UChar **iter = setx_offsets.Begin(); iter != setx_offsets.End(); iter++) {
UChar *to_draw = *iter;
int offset = 0;
/* Skip the SETX(Y) and set the appropriate offsets. */
@@ -754,7 +751,7 @@ uint32 FormatStringLinebreaks(char *str, const char *last, int maxw, FontSize si
end_of_inner_loop:
/* String didn't fit on line (or a '\n' was encountered), so 'dummy' terminate
* and increase linecount. We use Utf8PrevChar() as also non 1 char long
* whitespace separators are supported */
* whitespace seperators are supported */
num++;
char *s = Utf8PrevChar(str);
*s++ = '\0';
@@ -1077,25 +1074,25 @@ void DrawCharCentered(WChar c, int x, int y, TextColour colour)
/**
* Draw a string at the given coordinates with the given colour.
* While drawing the string, parse it in case some formatting is specified,
* like new colour, new size or even positioning.
* like new colour, new size or even positionning.
* @param string The string to draw. This is already bidi reordered.
* @param x Offset from left side of the screen
* @param y Offset from top side of the screen
* @param params Text drawing parameters
* @param parse_string_also_when_clipped
* By default, always test the available space where to draw the string.
* When in multiline drawing, it would already be done,
* When in multipline drawing, it would already be done,
* so no need to re-perform the same kind (more or less) of verifications.
* It's not only an optimisation, it's also a way to ensures the string will be parsed
* (as there are certain side effects on global variables, which are important for the next line)
* @return the x-coordinates where the drawing has finished.
* If nothing is drawn, the originally passed x-coordinate is returned
*/
static int ReallyDoDrawString(const WChar *string, int x, int y, DrawStringParams &params, bool parse_string_also_when_clipped)
static int ReallyDoDrawString(const UChar *string, int x, int y, DrawStringParams &params, bool parse_string_also_when_clipped)
{
DrawPixelInfo *dpi = _cur_dpi;
bool draw_shadow = GetDrawGlyphShadow();
WChar c;
UChar c;
int xo = x;
if (!parse_string_also_when_clipped) {
@@ -1458,7 +1455,7 @@ void DoPaletteAnimations()
}
Colour *palette_pos = &_cur_palette.palette[PALETTE_ANIM_START]; // Points to where animations are taking place on the palette
/* Makes a copy of the current animation palette in old_val,
/* Makes a copy of the current anmation palette in old_val,
* so the work on the current palette could be compared, see if there has been any changes */
memcpy(old_val, palette_pos, sizeof(old_val));
@@ -1840,7 +1837,7 @@ void DrawDirtyBlocks()
* @param left The left edge of the rectangle
* @param top The top edge of the rectangle
* @param right The right edge of the rectangle
* @param bottom The bottom edge of the rectangle
* @param bottom The bottm edge of the rectangle
* @see DrawDirtyBlocks
*
* @todo The name of the function should be called like @c AddDirtyBlock as
+2 -2
View File
@@ -26,10 +26,10 @@
* This whole mechanism is controlled by an rectangle defined in #_invalid_rect. This
* rectangle defines the area on the screen which must be repaint. If a new object
* needs to be repainted this rectangle is extended to 'catch' the object on the
* screen. At some point (which is normally uninteresting for patch writers) this
* screen. At some point (which is normaly uninteressted for patch writers) this
* rectangle is send to the video drivers method
* VideoDriver::MakeDirty and it is truncated back to an empty rectangle. At some
* later point (which is uninteresting, too) the video driver
* later point (which is uninteressted, too) the video driver
* repaints all these saved rectangle instead of the whole screen and drop the
* rectangle informations. Then a new round begins by marking objects "dirty".
*
+1 -1
View File
@@ -352,7 +352,7 @@ template <class Tbase_set>
const Tbase_set *best = NULL;
for (const Tbase_set *c = BaseMedia<Tbase_set>::available_sets; c != NULL; c = c->next) {
/* Skip unusable sets */
/* Skip unuseable sets */
if (c->GetNumMissing() != 0) continue;
if (best == NULL ||
+2 -2
View File
@@ -285,7 +285,7 @@ protected:
ValuesInterval interval; ///< Interval that contains all of the graph data.
int x_axis_offset; ///< Distance from the top of the graph to the x axis.
/* the colours and cost array of GraphDrawer must accommodate
/* the colours and cost array of GraphDrawer must accomodate
* both values for cargo and companies. So if any are higher, quit */
assert_compile(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES);
assert(this->num_vert_lines > 0);
@@ -423,7 +423,7 @@ protected:
if (datapoint != INVALID_DATAPOINT) {
/*
* Check whether we need to reduce the 'accuracy' of the
* datapoint value and the highest value to split overflows.
* datapoint value and the highest value to splut overflows.
* And when 'drawing' 'one million' or 'one million and one'
* there is no significant difference, so the least
* significant bits can just be removed.
+3 -3
View File
@@ -340,12 +340,12 @@ CommandCost CmdDeleteGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
return CommandCost();
}
static bool IsUniqueGroupNameForVehicleType(const char *name, VehicleType type)
static bool IsUniqueGroupName(const char *name)
{
const Group *g;
FOR_ALL_GROUPS(g) {
if (g->name != NULL && g->vehicle_type == type && strcmp(g->name, name) == 0) return false;
if (g->name != NULL && strcmp(g->name, name) == 0) return false;
}
return true;
@@ -370,7 +370,7 @@ CommandCost CmdRenameGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
if (!reset) {
if (Utf8StringLength(text) >= MAX_LENGTH_GROUP_NAME_CHARS) return CMD_ERROR;
if (!IsUniqueGroupNameForVehicleType(text, g->vehicle_type)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
if (!IsUniqueGroupName(text)) return_cmd_error(STR_ERROR_NAME_MUST_BE_UNIQUE);
}
if (flags & DC_EXEC) {
+2 -2
View File
@@ -344,7 +344,7 @@ static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map)
(col < col_pad) || (col >= (width - col_pad - (_settings_game.construction.freeform_edges ? 0 : 1)))) {
SetTileHeight(tile, 0);
} else {
/* Use nearest neighbour resizing to scale map data.
/* Use nearest neighbor resizing to scale map data.
* We rotate the map 45 degrees (counter)clockwise */
img_row = (((row - row_pad) * num_div) / img_scale);
switch (_settings_game.game_creation.heightmap_rotation) {
@@ -464,7 +464,7 @@ bool GetHeightmapDimensions(char *filename, uint *x, uint *y)
* Load a heightmap from file and change the map in his current dimensions
* to a landscape representing the heightmap.
* It converts pixels to height. The brighter, the higher.
* @param filename of the heightmap file to be imported
* @param filename of the heighmap file to be imported
*/
void LoadHeightmap(char *filename)
{
+3 -6
View File
@@ -148,13 +148,10 @@ struct EndGameWindow : EndGameHighScoreBaseWindow {
};
struct HighScoreWindow : EndGameHighScoreBaseWindow {
bool game_paused_by_player; ///< True if the game was paused by the player when the highscore window was opened.
HighScoreWindow(const WindowDesc *desc, int difficulty, int8 ranking) : EndGameHighScoreBaseWindow(desc)
{
/* pause game to show the chart */
this->game_paused_by_player = _pause_mode == PM_PAUSED_NORMAL;
if (!_networking && !this->game_paused_by_player) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);
if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);
/* Close all always on-top windows to get a clean screen */
if (_game_mode != GM_MENU) HideVitalWindows();
@@ -169,7 +166,7 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow {
{
if (_game_mode != GM_MENU) ShowVitalWindows();
if (!_networking && !this->game_paused_by_player) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause
if (!_networking) DoCommandP(0, PM_PAUSED_NORMAL, 0, CMD_PAUSE); // unpause
}
virtual void OnPaint()
@@ -200,7 +197,7 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow {
};
static const NWidgetPart _nested_highscore_widgets[] = {
NWidget(WWT_PANEL, COLOUR_BROWN, WID_H_BACKGROUND), SetMinimalSize(641, 481), SetResize(1, 1), EndContainer(),
NWidget(WWT_PANEL, COLOUR_END, WID_H_BACKGROUND), SetMinimalSize(641, 481), SetResize(1, 1), EndContainer(),
};
static const WindowDesc _highscore_desc(

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