44 Commits

Author SHA1 Message Date
hikerstk
8f824a503b Removed unnecessary demo mode in ProfileWorld (r11218 on trunk).
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@11219 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2012-05-09 23:20:45 +00:00
hikerstk
1c811e4bde Enabled demo mode from all every menu (r11202 on trunk).
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@11215 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2012-05-08 07:10:31 +00:00
hikerstk
95af35e4b4 Fixed default for number of laps in demo mode (r11204 on trunk).
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@11205 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2012-05-08 00:40:09 +00:00
hikerstk
a728878ba7 Added demo mode from trunk to 0.7.3.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@11201 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2012-05-07 23:55:46 +00:00
hikerstk
1ccbad409b Applied r10221 to 0.7.3, to prepare for a minor bugfix release (probably
windows only).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10237 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-22 04:33:23 +00:00
hikerstk
5f5d9e0a41 Fixed installing using cmake: SUPERTUXKART_DATADIR was not defined (see
r10211/10212 on trunk).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10213 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-14 23:54:27 +00:00
hikerstk
ac1eddfef5 Don't install font-tool files.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10209 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-14 23:00:01 +00:00
hikerstk
030e265986 Fixed missing cmake files in source distribution (r10207 on trunk).
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10208 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-14 22:29:49 +00:00
hikerstk
5e018e4b1a Fixed version numbers in credits.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10199 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-14 04:15:25 +00:00
hikerstk
075753f519 Also install license.txt files (not only License.txt).
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10198 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-14 00:15:43 +00:00
auria
070684672c Remove canyon from credits
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10195 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:58:21 +00:00
auria
0ab24ddc05 Update credits
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10194 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:56:09 +00:00
auria
e556822a2c Add minigolf to changelog
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10193 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:55:26 +00:00
hikerstk
d23abc2937 Updated Asian fonts.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10189 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:31:24 +00:00
auria
1c438c0f59 remove translations less than 50% complete
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10188 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:22:34 +00:00
auria
7a4aa8a312 merge translations from LP
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10187 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:19:35 +00:00
auria
780d7c05c7 Update version in CMake
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10185 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 23:11:21 +00:00
hikerstk
94f842d705 Updated version number.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10184 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 22:58:54 +00:00
hikerstk
0680acda44 Fixed ball squashing, see r10180 on trunk.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10183 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 22:53:39 +00:00
hikerstk
3b74312129 Fixed rubber ball bouncing too high when it misses its
target (#496).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10181 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 22:46:09 +00:00
hikerstk
99f1958ff0 Adjusted sideways distance.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10177 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 22:14:24 +00:00
auria
4a5df90d37 Reduce konqi texture that was uselessly huge and giving a hard time to some gpus/drivers
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10174 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-13 16:08:50 +00:00
auria
d165104ee8 Add 2 missing textures and apply build fixes for osx
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10171 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-12 18:34:46 +00:00
auria
0f09655333 Merge r10114 into branch (update challenges and GPs to use minigolf instead of canyon)
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10170 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-12 17:59:33 +00:00
auria
bff721cceb Add minigolf to 0.7.3
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10169 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-12 17:53:58 +00:00
auria
f0b1179226 Fixed a few skin images that were not powers of 2 in size
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10166 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-12 17:22:47 +00:00
auria
2982df5069 Fixed a few skin images that were not powers of 2 in size
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10164 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-12 17:21:00 +00:00
auria
8e41de33db Fixed a few skin images that were not powers of 2 in size
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10162 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-12 17:15:59 +00:00
hikerstk
aa3bd6d00e Fix #494 (thunderbird disappearing if game is paused while countdown is shown), see r10153 on trunk.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10154 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-10 00:30:10 +00:00
hikerstk
504e31b388 Fixed freebsd compilation, see r10134/r10138 on trunk.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10146 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-08 22:20:49 +00:00
auria
870a90a048 Dynamically update list of tabs in arenas screen, to better handle when addons arenas are first installed
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10143 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-08 02:12:43 +00:00
auria
224b3c4a07 Show GP progress even if something is unlocked
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10137 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-08 01:50:42 +00:00
auria
49a6c9263f Fixed brake, a binary control, being actived if value > 0 with no deadzone
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10132 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-08 01:08:56 +00:00
hikerstk
53727d0729 Applied Stephen's r10128 to 0.7.3 branch.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10129 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-08 00:45:15 +00:00
auria
2d1bb2abb7 Update traffic lights by Fraang
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10116 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-07 00:30:53 +00:00
auria
86214eb8a8 Improve thunderbird texture by Fraang (branch)
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10107 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-05 20:27:00 +00:00
hikerstk
30e355789f Fixed r473: leak when cancelling a download request.
This is not only a leak, but actually meant that downloads
were not cancelled at all, so they would still finish (in
the background), and other downloads would be delayed.
This fixes this issue (r10098 on trunk).


git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10099 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-03 02:23:05 +00:00
auria
5497882282 Fix zipper in mathclass
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10097 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 23:56:02 +00:00
hikerstk
d2338a0947 Applied compilation fix for freebsd (r10089 on trunk).
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10090 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 03:51:52 +00:00
hikerstk
e9bcc12dba Updated donations ... again.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10087 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 00:19:43 +00:00
hikerstk
9ab8fd09a7 Updated donations.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10086 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 00:16:02 +00:00
hikerstk
426c1492b9 Updated version numbers.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10085 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 00:12:12 +00:00
auria
101677c3a1 Set version in CMake
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10084 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 00:08:42 +00:00
hikerstk
61175c1a1c Created branch for 0.7.3.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/0.7.3@10083 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2011-11-02 00:03:59 +00:00
114 changed files with 8908 additions and 36795 deletions

View File

@@ -405,6 +405,8 @@ set( SRCS ${SRCS} src/main.cpp
src/karts/max_speed.hpp
src/karts/moveable.cpp
src/karts/moveable.hpp
src/modes/demo_world.cpp
src/modes/demo_world.hpp
src/modes/follow_the_leader.cpp
src/modes/follow_the_leader.hpp
src/modes/game_tutorial.cpp
@@ -681,6 +683,9 @@ if (APPLE)
add_definitions(`ln -sf ${PROJECT_SOURCE_DIR}/data ${CMAKE_BINARY_DIR}/bin/supertuxkart.app/Contents/Resources`)
else()
add_definitions(-DSUPERTUXKART_DATADIR=\"${CMAKE_INSTALL_PREFIX}/share/games/supertuxkart\")
# Build the final executable
add_executable(supertuxkart ${SRCS})

View File

@@ -1,6 +1,6 @@
SuperTuxKart 0.7.3
~~~~~~~~~~~~~~~~~~
* New Zen Garden and Subsea tracks
* New Zen Garden, Minigolf and Subsea tracks
* New Island battle arena
* New Suzanne kart
* New graphical effects

View File

@@ -4,7 +4,7 @@ SUBDIRS = $(BULLETTREE) $(ENETTREE) src doc data tools
pkgdatadir=$(datadir)/doc/$(PACKAGE)
dist_pkgdata_DATA=AUTHORS ChangeLog COPYING README
EXTRA_DIST=autogen.sh m4
EXTRA_DIST=autogen.sh m4 CMakeLists.txt
# NEWS only contains "see changelog"
# CHANGES only contains "see NEW"

View File

@@ -1,6 +1,6 @@
# Process this file with autogen.sh to produce a configure script.
AC_INIT(supertuxkart,SVN)
AC_INIT(supertuxkart,0.7.3)
AC_CONFIG_SRCDIR([src/main.cpp])
AC_PREREQ(2.61)

Binary file not shown.

View File

@@ -6,7 +6,7 @@
name="Follow the Leader on a Desert Island"
description="Win a Follow the Leader race with 3 AI karts on a Desert Island."
unlock-gp="atworldsend"
depend-on="canyon"
depend-on="minigolf"
major="single"
minor="followtheleader"
track="islandtrack"

View File

@@ -6,7 +6,7 @@
name="Collect fuel for your rocket"
description="Finish with at least 16 nitro points on 2 laps of XR591 in under 2:30 minutes."
unlock-track="mines"
depend-on="lighthousetime canyon"
depend-on="lighthousetime minigolf"
major="single"
minor="quickrace"
track="xr591"

View File

@@ -6,7 +6,7 @@
name="Win a race on Tux Tollway"
description="Win a 3 lap race on Tux Tollway against 4 Expert level AI karts."
depend-on="lighthousetime tothemoonandbackgp"
unlock-track="canyon"
unlock-track="minigolf"
major="single"
minor="quickrace"
track="tuxtollway"

View File

@@ -2,14 +2,14 @@
<challenge
version="1"
id="canyon"
name="Win a race on Canyon"
description="Win a 3 lap race on Canyon against 4 Expert level AI karts."
id="minigolf"
name="Win a race on Minigolf"
description="Win a 3 lap race on Minigolf against 4 Expert level AI karts."
depend-on="tollway"
unlock-track="xr591"
major="single"
minor="quickrace"
track="canyon"
track="minigolf"
difficulty="hard"
laps="3"
karts="5"

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -17,7 +17,7 @@
<track id="zengarden" laps="4" />
<track id="city" laps="3" />
<track id="xr591" laps="3" />
<track id="canyon" laps="2" />
<track id="minigolf" laps="3" />
<track id="snowmountain" laps="3" />
<track id="tuxtollway" laps="2" />
<track id="subsea" laps="2" />

View File

@@ -2,7 +2,7 @@
<supertuxkart_grand_prix name="At World's End">
<track id="fortmagma" laps="3" />
<track id="canyon" laps="2" />
<track id="minigolf" laps="3" />
<track id="xr591" laps="3" />
<track id="mines" laps="3" />
<track id="city" laps="3" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -227,6 +227,8 @@ supertuxkart_SOURCES = \
karts/max_speed.hpp \
karts/moveable.cpp \
karts/moveable.hpp \
modes/demo_world.cpp \
modes/demo_world.hpp \
modes/follow_the_leader.cpp \
modes/follow_the_leader.hpp \
modes/game_tutorial.cpp \

View File

@@ -67,7 +67,11 @@ Addon::Addon(const XMLNode &xml)
xml.get("id", &m_id );
xml.get("designer", &designer );
xml.get("status", &m_status );
xml.get("date", &m_date );
int64_t date;
xml.get("date", &date );
m_date = date;
xml.get("installed", &m_installed );
xml.get("installed-revision", &m_installed_revision);
xml.get("revision", &m_revision );

View File

@@ -428,12 +428,12 @@ CURLcode NetworkHttp::loadAddonsList(const XMLNode *xml,
const std::string &filename)
{
std::string addon_list_url("");
Time::TimeType mtime(0);
int64_t mtime(0);
const XMLNode *include = xml->getNode("include");
if(include)
{
include->get("file", &addon_list_url);
include->get("mtime", &mtime );
include->get("mtime", &mtime);
}
if(addon_list_url.size()==0)
{
@@ -503,7 +503,7 @@ CURLcode NetworkHttp::downloadFileInternal(Request *request)
uagent += (std::string)" (Windows)";
#elif defined(__APPLE__)
uagent += (std::string)" (Macintosh)";
#elif defined(FreeBSD)
#elif defined(__FreeBSD__)
uagent += (std::string)" (FreeBSD)";
#elif defined(linux)
uagent += (std::string)" (Linux)";

View File

@@ -1,5 +1,5 @@
SUBDIRS=src
EXTRA_DIST = BulletLicense.txt Changelog copy_bullet_files \
LICENSE README VERSION
LICENSE README VERSION CMakeLists.txt

View File

@@ -242,13 +242,18 @@ void TimeUserConfigParam::findYourDataInAChildOf(const XMLNode* node)
//std::cout << "Couldn't find int parameter " << paramName <<std::endl;
return;
}
child->get( "value", &m_value );
int64_t val;
child->get( "value", &val );
m_value = val;
} // findYourDataInAChildOf
// ----------------------------------------------------------------------------
void TimeUserConfigParam::findYourDataInAnAttributeOf(const XMLNode* node)
{
node->get( m_param_name, &m_value );
int64_t val;
node->get( m_param_name, &val );
m_value = val;
} // findYourDataInAnAttributeOf
// ============================================================================

View File

@@ -1,5 +1,5 @@
noinst_LIBRARIES = libenet.a
EXTRA_DIST = ChangeLog configure design.txt Doxyfile LICENSE tutorial.txt \
EXTRA_DIST = ChangeLog configure design.txt Doxyfile LICENSE tutorial.txt CMakeLists.txt\
$(shell find $(srcdir) -maxdepth 2 -name "*.dox")
libenet_a_SOURCES = callbacks.c compress.c host.c list.c packet.c peer.c \
protocol.c unix.c win32.c \

View File

@@ -617,6 +617,7 @@ namespace GUIEngine
#include "guiengine/screen.hpp"
#include "guiengine/skin.hpp"
#include "guiengine/widget.hpp"
#include "modes/demo_world.hpp"
#include "modes/world.hpp"
#include "states_screens/race_gui_base.hpp"
@@ -1117,6 +1118,20 @@ namespace GUIEngine
g_driver->enableMaterial2D(false);
if (gamestate == MENU)
{
if (DemoWorld::updateIdleTimeAndStartDemo(elapsed_time))
{
return;
}
}
else
{
DemoWorld::resetIdleTime();
}
} // render
// ------------------------------------------------------------------------

View File

@@ -30,6 +30,7 @@
#include "guiengine/widgets/list_widget.hpp"
#include "guiengine/widgets/ribbon_widget.hpp"
#include "input/input_manager.hpp"
#include "modes/demo_world.hpp"
#include "states_screens/state_manager.hpp"
#include "utils/profiler.hpp"
@@ -648,6 +649,8 @@ EventPropagation EventHandler::onGUIEvent(const SEvent& event)
{
const s32 id = event.GUIEvent.Caller->getID();
DemoWorld::resetIdleTime();
switch (event.GUIEvent.EventType)
{
case EGET_BUTTON_CLICKED:

View File

@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.7.1b</string>
<string>0.7.3</string>
<key>CFBundleVersion</key>
<string>0.7.1b</string>
<string>0.7.3</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>CFBundleIdentifier</key>

View File

@@ -494,6 +494,10 @@
<Filter
Name="modes"
>
<File
RelativePath="..\..\modes\demo_world.cpp"
>
</File>
<File
RelativePath="..\..\modes\follow_the_leader.cpp"
>
@@ -1576,6 +1580,10 @@
<Filter
Name="modes"
>
<File
RelativePath="..\..\modes\demo_world.hpp"
>
</File>
<File
RelativePath="..\..\modes\follow_the_leader.hpp"
>

View File

@@ -96,14 +96,13 @@ bool DeviceManager::initialize()
{
core::stringc name = m_irrlicht_gamepads[id].Name.c_str();
// On Windows, unless we use DirectInput, all gamepads are given the same name...
// This makes configuration totally useless, so append an ID to the name
core::stringc name_lower = name;
name_lower.make_lower();
if (name_lower == "microsoft pc-joystick driver")
{
#ifdef WIN32
// On Windows, unless we use DirectInput, all gamepads are given the
// same name ('microsoft pc-joystick driver'). This makes configuration
// totally useless, so append an ID to the name. We can't test for the
// name, since the name is even translated.
name = name + " " + StringUtils::toString(id).c_str();
}
#endif
if (UserConfigParams::logMisc())
{

View File

@@ -33,10 +33,12 @@
#include "input/device_manager.hpp"
#include "input/input.hpp"
#include "karts/kart.hpp"
#include "modes/demo_world.hpp"
#include "modes/profile_world.hpp"
#include "modes/world.hpp"
#include "race/history.hpp"
#include "states_screens/kart_selection.hpp"
#include "states_screens/main_menu_screen.hpp"
#include "states_screens/options_screen_input2.hpp"
#include "states_screens/state_manager.hpp"
#include "utils/string_utils.hpp"
@@ -432,6 +434,14 @@ void InputManager::dispatchInput(Input::InputType type, int deviceID,
return;
}
// Abort demo mode if a key is pressed during the race in demo mode
if(dynamic_cast<DemoWorld*>(World::getWorld()))
{
race_manager->exitRace();
StateManager::get()->resetAndGoToScreen(MainMenuScreen::getInstance());
return;
}
StateManager::ActivePlayer* player = NULL;
PlayerAction action;
bool action_found = m_device_manager->translateInput(type, deviceID,

View File

@@ -287,7 +287,7 @@ int XMLNode::get(const std::string &attribute, video::SColorf *color) const
return 1;
} // get(SColor)
// ----------------------------------------------------------------------------
int XMLNode::get(const std::string &attribute, int *value) const
int XMLNode::get(const std::string &attribute, int32_t *value) const
{
std::string s;
if(!get(attribute, &s)) return 0;
@@ -300,15 +300,15 @@ int XMLNode::get(const std::string &attribute, int *value) const
}
return 1;
} // get(int)
} // get(int32_t)
// ----------------------------------------------------------------------------
int XMLNode::get(const std::string &attribute, Time::TimeType *value) const
int XMLNode::get(const std::string &attribute, int64_t *value) const
{
std::string s;
if(!get(attribute, &s)) return 0;
if (!StringUtils::parseString<Time::TimeType>(s, value))
if (!StringUtils::parseString<int64_t>(s, value))
{
fprintf(stderr, "[XMLNode] WARNING: Expected int but found '%s' for attribute '%s' of node '%s' in file %s\n",
s.c_str(), attribute.c_str(), m_name.c_str(), m_file_name.c_str());
@@ -316,10 +316,11 @@ int XMLNode::get(const std::string &attribute, Time::TimeType *value) const
}
return 1;
} // get(TimeType)
} // get(int64_t)
// ----------------------------------------------------------------------------
int XMLNode::get(const std::string &attribute, unsigned int *value) const
int XMLNode::get(const std::string &attribute, uint32_t *value) const
{
std::string s;
if(!get(attribute, &s)) return 0;
@@ -332,7 +333,7 @@ int XMLNode::get(const std::string &attribute, unsigned int *value) const
}
return 1;
} // get(unsigned int)
} // get(uint32_t)
// ----------------------------------------------------------------------------
int XMLNode::get(const std::string &attribute, float *value) const

View File

@@ -20,6 +20,15 @@
#ifndef HEADER_XML_NODE_HPP
#define HEADER_XML_NODE_HPP
#ifdef _MSC_VER
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
# include <stdint.h>
#endif
#include <string>
#include <map>
#include <vector>
@@ -71,9 +80,9 @@ public:
unsigned int getNumNodes() const {return m_nodes.size(); }
int get(const std::string &attribute, std::string *value) const;
int get(const std::string &attribute, core::stringw *value) const;
int get(const std::string &attribute, int *value) const;
int get(const std::string &attribute, unsigned int *value) const;
int get(const std::string &attribute, Time::TimeType *value) const;
int get(const std::string &attribute, int32_t *value) const;
int get(const std::string &attribute, uint32_t *value) const;
int get(const std::string &attribute, int64_t *value) const;
int get(const std::string &attribute, float *value) const;
int get(const std::string &attribute, bool *value) const;
int get(const std::string &attribute, Vec3 *value) const;

View File

@@ -411,13 +411,8 @@ bool RubberBall::updateAndDelete(float dt)
// Ball squashing:
// ===============
// If we start squashing the ball as soon as the height is smaller than
// then height of the ball, it looks to extreme. So a ratio r of the
// height of the ball and the current height of the object is used to
// tweak the look a bit.
float r = 2.0f;
if(r*height<m_extend.getY())
m_node->setScale(core::vector3df(1.0f, r*height/m_extend.getY(),1.0f));
if(height<1.5f*m_extend.getY())
m_node->setScale(core::vector3df(1.0f, height/m_extend.getY(),1.0f));
else
m_node->setScale(core::vector3df(1.0f, 1.0f, 1.0f));
@@ -570,6 +565,12 @@ float RubberBall::updateHeight()
{
// Some experimental formulas
m_current_max_height = 0.5f*sqrt(m_distance_to_target);
// If the ball just missed the target, m_distance_to_target
// can be huge (close to track length) due to the order in
// which a lost target is detected. Avoid this by clamping
// m_current_max_height.
if(m_current_max_height>m_max_height)
m_current_max_height = m_max_height;
m_interval = m_current_max_height / 10.0f;
// Avoid too small hops and esp. a division by zero
if(m_interval<0.01f)

View File

@@ -157,7 +157,8 @@ void PlayerController::action(PlayerAction action, int value)
break;
case PA_BRAKE:
m_prev_brake = value!=0;
if(value)
// let's consider below that to be a deadzone
if(value > 32768/2)
{
m_controls->m_brake = true;
m_controls->m_accel = 0.0f;

View File

@@ -28,7 +28,6 @@ KartWithStats::KartWithStats(const std::string& ident, Track* track,
: Kart(ident, track, position, is_first_kart,
init_transform, type)
{
reset();
} // KartWithStats
// ----------------------------------------------------------------------------
@@ -47,6 +46,7 @@ void KartWithStats::reset()
m_small_nitro_count = 0;
m_large_nitro_count = 0;
m_bubblegum_count = 0;
Kart::reset();
} // reset
// ----------------------------------------------------------------------------

View File

@@ -165,6 +165,7 @@
#include "items/projectile_manager.hpp"
#include "karts/kart_properties_manager.hpp"
#include "karts/kart.hpp"
#include "modes/demo_world.hpp"
#include "modes/profile_world.hpp"
#include "network/network_manager.hpp"
#include "race/grand_prix_manager.hpp"
@@ -388,6 +389,12 @@ void cmdLineHelp (char* invocation)
" --profile-time=n Enable automatic driven profile mode for n "
"seconds.\n"
" --no-graphics Do not display the actual race.\n"
" --demo-mode t Enables demo mode after t seconds idle time in "
"main menu.\n"
" --demo-tracks t1,t2 List of tracks to be used in demo mode. No\n"
" spaces are allowed in the track names.\n"
" --demo-laps n Number of laps in a demo.\n"
" --demo-karts n Number of karts to use in a demo.\n"
// " --history Replay history file 'history.dat'.\n"
// " --history=n Replay history file 'history.dat' using:\n"
// " n=1: recorded positions\n"
@@ -904,6 +911,38 @@ int handleCmdLine(int argc, char **argv)
UserConfigParams::m_no_start_screen = true;
}
else if( !strcmp(argv[i], "--demo-mode") && i+1<argc)
{
float t;
StringUtils::fromString(argv[i+1], t);
DemoWorld::enableDemoMode(t);
// The default number of laps is taken from ProfileWorld and
// is 0. So set a more useful default for demo mode.
DemoWorld::setNumLaps(2);
i++;
}
else if( !strcmp(argv[i], "--demo-laps") && i+1<argc)
{
// Note that we use a separate setting for demo mode to avoid the
// problem that someone plays a game, and in further demos then
// the wrong (i.e. last selected) number of laps would be used
DemoWorld::setNumLaps(atoi(argv[i+1]));
i++;
}
else if( !strcmp(argv[i], "--demo-karts") && i+1<argc)
{
// Note that we use a separate setting for demo mode to avoid the
// problem that someone plays a game, and in further demos then
// the wrong (i.e. last selected) number of karts would be used
DemoWorld::setNumKarts(atoi(argv[i+1]));
i++;
}
else if( !strcmp(argv[i], "--demo-tracks") && i+1<argc)
{
DemoWorld::setTracks(StringUtils::split(std::string(argv[i+1]),
','));
i++;
}
else if( !strcmp(argv[i], "--item") && i+1<argc )
{
item_manager->setUserFilename(argv[i+1]);

143
src/modes/demo_world.cpp Normal file
View File

@@ -0,0 +1,143 @@
//
// SuperTuxKart - a fun racing game with go-kart
// Copyright (C) 2012 Joerg Henrichs
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 3
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "modes/demo_world.hpp"
#include "input/device_manager.hpp"
#include "input/input_manager.hpp"
#include "network/network_manager.hpp"
#include "race/race_manager.hpp"
#include "tracks/track.hpp"
#include "tracks/track_manager.hpp"
std::vector<std::string> DemoWorld::m_demo_tracks;
int DemoWorld::m_num_karts = 2;
float DemoWorld::m_max_idle_time = 99999.0f;
float DemoWorld::m_current_idle_time = 0;
bool DemoWorld::m_do_demo = false;
//-----------------------------------------------------------------------------
/** The constructor sets the number of (local) players to 0, since only AI
* karts are used.
*/
DemoWorld::DemoWorld()
{
m_abort = false;
ProfileWorld::setProfileModeLaps(m_num_laps);
race_manager->setMinorMode (RaceManager::MINOR_MODE_NORMAL_RACE);
race_manager->setDifficulty(RaceManager::RD_HARD);
race_manager->setNumKarts(m_num_karts);
race_manager->setNumLocalPlayers(1);
race_manager->setLocalKartInfo(0, UserConfigParams::m_default_kart);
} // DemoWorld
//-----------------------------------------------------------------------------
/** Destructor. Resets the flag that the next race is a demo mode.
*/
DemoWorld::~DemoWorld()
{
m_current_idle_time = 0;
m_do_demo = false;
} // ~DemoWorld
//-----------------------------------------------------------------------------
/** Sets the list of tracks that is to be used.
* \param tracks List of track identifiers.
*/
void DemoWorld::setTracks(const std::vector<std::string> &tracks)
{
m_demo_tracks = tracks;
} // setTracks
//-----------------------------------------------------------------------------
/** The race is over if either the requested number of laps have been done
* or the requested time is over.
*/
bool DemoWorld::isRaceOver()
{
if(m_abort) return true;
// Now it must be laps based profiling:
return race_manager->getFinishedKarts()==getNumKarts();
} // isRaceOver
//-----------------------------------------------------------------------------
/** This function is called when the race is finished, but end-of-race
* animations have still to be played. In the case of profiling,
* we can just abort here without waiting for the animations.
*/
void DemoWorld::enterRaceOverState()
{
// Do not call profile enterRaceOverState, since it will abort
StandardRace::enterRaceOverState();
} // enterRaceOverState
//-----------------------------------------------------------------------------
/** Updates the current idle time by dt. If the accumulated idle time is
* large enough, a demo race is started.
* \param dt Time step size, which is added to the idle time.
* \return true if a demo is started.
*/
bool DemoWorld::updateIdleTimeAndStartDemo(float dt)
{
m_current_idle_time += dt;
if(m_current_idle_time <= m_max_idle_time)
return false;
if(m_demo_tracks.size()==0)
m_demo_tracks = track_manager->getAllTrackIdentifiers();
Track *track = track_manager->getTrack(m_demo_tracks[0]);
// Remove arena tracks (outside the if statement above in case that
// a user requests a arena track ;) )
while((!track || track->isArena()) && m_demo_tracks.size()>1)
{
if(!track)
printf("Invalid demo track identifier '%s'.\n",
m_demo_tracks[0].c_str());
m_demo_tracks.erase(m_demo_tracks.begin());
track = track_manager->getTrack(m_demo_tracks[0]);
}
if(m_demo_tracks.size()==0)
{
printf("No valid tracks found, no demo started.\n");
return false;
}
StateManager::get()->enterGameState();
race_manager->setNumLocalPlayers(1);
InputDevice *device;
// Use keyboard 0 by default in --no-start-screen
device = input_manager->getDeviceList()->getKeyboard(0);
StateManager::get()->createActivePlayer(
UserConfigParams::m_all_players.get(0), device );
// ASSIGN should make sure that only input from assigned devices
// is read.
input_manager->getDeviceList()->setAssignMode(ASSIGN);
m_do_demo = true;
race_manager->setNumKarts(m_num_karts);
race_manager->setLocalKartInfo(0, "tux");
network_manager->setupPlayerKartInfo();
race_manager->startSingleRace(m_demo_tracks[0], m_num_laps);
m_demo_tracks.push_back(m_demo_tracks[0]);
m_demo_tracks.erase(m_demo_tracks.begin());
return true;
} // updateIdleTime

87
src/modes/demo_world.hpp Normal file
View File

@@ -0,0 +1,87 @@
//
// SuperTuxKart - a fun racing game with go-kart
// Copyright (C) 2012 Joerg Henrichs
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 3
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#ifndef HEADER_DEMO_WORLD_HPP
#define HEADER_DEMO_WORLD_HPP
#include "modes/profile_world.hpp"
class Kart;
/** \brief This class is used to show a demo of STK (e.g. after being
* idle for a certain amount of time, or on certain command line options.
* This allows STK to be used as a demo in a shop.
* \ingroup modes
*/
class DemoWorld : public ProfileWorld
{
private:
/** True if demo mode should be aborted, e.g. because a key was
* pressed. */
bool m_abort;
/** The list of tracks to use for demo mode. They will be picked randomly,
* but each track will be picked once before one track is repeated. */
static std::vector<std::string> m_demo_tracks;
/** Number of karts to use in demo mode. */
static int m_num_karts;
/** Idle time after which demo mode should be started. */
static float m_max_idle_time;
/** Used by the menu system to measure idle time. */
static float m_current_idle_time;
/** True if the next race is to be a demo race. */
static bool m_do_demo;
public:
DemoWorld();
virtual ~DemoWorld();
/** Returns identifier for this world. */
virtual std::string getInternalCode() const {return "DEMO"; }
virtual void update(float dt) {ProfileWorld::update(dt);};
virtual bool isRaceOver();
virtual void enterRaceOverState();
static bool updateIdleTimeAndStartDemo(float dt) ;
// ------------------------------------------------------------------------
/** Sets the number of laps to use in demo mode. m_num_laps is from
* ProfileWorld. */
static void setNumLaps(unsigned int num_laps) { m_num_laps = num_laps; }
// ------------------------------------------------------------------------
/** Sets the number of karts to use in demo mode. */
static void setNumKarts(unsigned int num_karts) { m_num_karts = num_karts;}
// ------------------------------------------------------------------------
static void setTracks(const std::vector<std::string> &tracks);
// ------------------------------------------------------------------------
/** Enables demo mode after the specified amount of time (default 1
* second).
* \param time The idle time after which demo mode should be started. */
static void enableDemoMode(float time=1.0f) { m_max_idle_time = time; }
// ------------------------------------------------------------------------
/** Returns true if the menu detected enough idle time to run a demo. */
static bool isDemoMode() { return m_do_demo; }
// ------------------------------------------------------------------------
/** Resets the idle time to 0. */
static void resetIdleTime() { m_current_idle_time = 0; }
// ------------------------------------------------------------------------
/** Signals that the demo should be aborted. */
void abortDemo() {m_abort = true; }
}; // DemoWorld
#endif

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