Compare commits
44 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
0c911c697b | ||
|
6837ed82c3 | ||
|
b0eddb47f3 | ||
|
bfbc54879a | ||
|
0fb21c2dad | ||
|
9faafaaaa5 | ||
|
0350ac3305 | ||
|
b06a936e4b | ||
|
0ecf2eea05 | ||
|
184e5c9cde | ||
|
b90b7c805c | ||
|
38caef402e | ||
|
f08b9afde7 | ||
|
8742122103 | ||
|
ba527c17dd | ||
|
860a9844d0 | ||
|
717022258e | ||
|
2844210a1e | ||
|
d500072d52 | ||
|
025d67394b | ||
|
9a6b005651 | ||
|
3c8b1a76ce | ||
|
1b9d44607b | ||
|
1e21421c69 | ||
|
3a5b6df32e | ||
|
f80b65f032 | ||
|
e8f8510b5f | ||
|
afb92e1ae6 | ||
|
f7e02775a8 | ||
|
9ac2099e8f | ||
|
01f1475715 | ||
|
600e01a4ae | ||
|
7b7b5c4592 | ||
|
145759736f | ||
|
6d26ba5800 | ||
|
73ea4eb7b2 | ||
|
dade9763d6 | ||
|
98045b6698 | ||
|
e519754b3f | ||
|
8fcf8c0b9b | ||
|
755885c80b | ||
|
9b2c8e31da | ||
|
92aa10a427 | ||
|
a1742761c6 |
@@ -1,5 +1,5 @@
|
||||
SuperTuxKart 0.4 (February 2008)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
SuperTuxKart 0.4 (March 2008)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
* New physics handling using the bullet physics engine
|
||||
* New kart: wilber
|
||||
* Improved 'Shifting Sands' and 'Lighthouse' tracks
|
||||
|
4
INSTALL
4
INSTALL
@@ -48,7 +48,7 @@ install following packages:
|
||||
libglu1-mesa-dev subversion autoconf automake1.9 g++ gcc
|
||||
|
||||
do a:
|
||||
$ svn checkout svn://svn.berlios.de/supertuxkart/trunk
|
||||
$ svn checkout http://supertuxkart.svn.sourceforge.net/svnroot/supertuxkart/trunk/supertuxkart
|
||||
|
||||
then:
|
||||
$ cd trunk
|
||||
@@ -72,7 +72,7 @@ If you checked out your copy directly from SVN, you have to run
|
||||
|
||||
You should check the SuperTuxKart wiki at:
|
||||
|
||||
http://supertuxkart.berlios.de/wiki
|
||||
http://supertuxkart.sourceforge.net/
|
||||
|
||||
|
||||
Also, the most common (by FAR) reason for problems is that your OpenGL/Mesa
|
||||
|
@@ -1,6 +1,6 @@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
SUBDIRS = @BULLETTREE@ src wavs images models oggs data fonts
|
||||
SUBDIRS = @BULLETTREE@ src wavs images models oggs doc data fonts
|
||||
|
||||
EXTRA_DIST = README ChangeLog COPYING missing
|
||||
EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing
|
||||
|
||||
|
@@ -1,28 +0,0 @@
|
||||
Beginning with revision r1325 bullet physics is being used
|
||||
in SuperTuxKart. A copy of bullet is included in
|
||||
the sources and the STK build environment, so it's
|
||||
not necessary to install your own version.
|
||||
|
||||
Even though we officiall switched to bullet physics,
|
||||
not all 'old' features of STK are fully supported yet.
|
||||
For now mainly the race track works as expected, all tracks
|
||||
can be played. Most important bugs:
|
||||
- not all collectable work
|
||||
(zippers don't do much at the moment, rockets and sparks mostly
|
||||
work, but are sometimes too high)
|
||||
- karts are not automatically rescued when touching
|
||||
water or lava
|
||||
- no proper friction handling, so no skidding
|
||||
(though skidding potentially works - if the friction is
|
||||
set correctly).
|
||||
- physics parameters have been improved, but might need
|
||||
additional tuning
|
||||
- rescuing an upside-down kart will return the kart to the middle
|
||||
of the track (waypoints) - the kart should be returned to where
|
||||
it ended, just with a proper orientation.
|
||||
- tuxtrack is using real rigid bodies for the roadcone and roadblock,
|
||||
so they are pushed around when hit by a kart. Currently, the
|
||||
start orientation is not used, so the heading of the objects
|
||||
is currently wrong.
|
||||
Furthermore, the cones currently don't stop rolling around.
|
||||
|
@@ -1,3 +1,12 @@
|
||||
The latest information about compilation on Mac are on our wiki:
|
||||
http://supertuxkart.sourceforge.net/Building_and_packaging_on_OSX
|
||||
|
||||
The older instructions should still work, and are quite detailed.
|
||||
Note that we supply a modified version of plib (on our download page
|
||||
at http://sourceforge.net/project/showfiles.php?group_id=202302)
|
||||
which fixes a few compilation problems on Macs. We strongly recommend
|
||||
to use this version (unless a newer plib version is released).
|
||||
|
||||
System requirements Mac:
|
||||
PowerPC- or Intel-Mac with 800 MHz or more,
|
||||
1 GHz recommended 3D-graphics card with 32 MB or more.
|
||||
@@ -413,7 +422,7 @@ echo "Done!"
|
||||
e.g.: chmod 744 buildUB.sh
|
||||
|
||||
|
||||
3. Download SuperTuxKart-Source from "http://developer.berlios.de/project/showfiles.php?group_id=2765".
|
||||
3. Download SuperTuxKart-Source from "http://sourceforge.net/project/showfiles.php?group_id=202302".
|
||||
|
||||
|
||||
4. Go in the folder SuperTuxKart.
|
||||
|
@@ -1,3 +1,17 @@
|
||||
NOTE
|
||||
====
|
||||
If you have downloaded the 0.4 version and it does not start, please
|
||||
install the Microsoft Visual C++ redistributable package ('vcredist_x86.exe')
|
||||
included in this directory.
|
||||
|
||||
If you don't hear any sound, you have to install OpenAL (see http://ww.openal.org).
|
||||
Simply install the OpenAL redistributable ('oalinst.exe').
|
||||
|
||||
The release comes with a full installer, which includes these redistributables.
|
||||
|
||||
|
||||
If you are downloading a source version and want to compile it yourself:
|
||||
|
||||
There are two documented ways to compile an executable for windows: using
|
||||
cygwin, and using visual c++ (tested with the free Express version).
|
||||
|
||||
@@ -42,6 +56,8 @@ can be found in .../src/ide/vc8/README.
|
||||
|
||||
You still have to install all dependencies, and:
|
||||
1) Modify plib:
|
||||
Best choice would be to use the plib version from our download page,
|
||||
since it contains all bugfixes that are necessary. Otherwise:
|
||||
In src/ssg/ssgLoadAC.cxx replace:
|
||||
loader_fd = fopen ( filename, "ra" ) ;
|
||||
with
|
||||
|
2
TODO
2
TODO
@@ -33,7 +33,7 @@ no particular order):
|
||||
If you want to help the SuperTuxKart - Project, please
|
||||
contact us on the email list:
|
||||
|
||||
supertuxkart-devel@list.berlios.de
|
||||
supertuxkart-devel@lists.sourceforge.net
|
||||
|
||||
Thanks in advance!
|
||||
The SuperTuxKart-Team
|
||||
|
35
configure.ac
35
configure.ac
@@ -1,6 +1,6 @@
|
||||
dnl Process this file with autogen.sh to produce a configure script.
|
||||
|
||||
AC_INIT(supertuxkart, SVN)
|
||||
AC_INIT(supertuxkart, 0.4)
|
||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||
|
||||
dnl Require at least automake 2.59
|
||||
@@ -383,11 +383,6 @@ dnl Bullet physics
|
||||
dnl ==============
|
||||
AC_DEFINE([BT_NO_PROFILE], [], [Disable bullet internal profiling])
|
||||
CXXFLAGS="$CXXFLAGS -Ibullet/src"
|
||||
AC_CONFIG_FILES([ \
|
||||
src/bullet/Makefile \
|
||||
src/bullet/src/Makefile \
|
||||
src/bullet/Demos/OpenGL/Makefile
|
||||
])
|
||||
SUMMARY="$SUMMARY\nUsing bullet physics."
|
||||
BULLETTREE="src/bullet"
|
||||
|
||||
@@ -405,17 +400,23 @@ AC_SUBST(BULLETTREE)
|
||||
dnl ================
|
||||
dnl Create makefiles
|
||||
dnl ================
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile \
|
||||
data/Makefile \
|
||||
fonts/Makefile \
|
||||
images/Makefile \
|
||||
models/Makefile \
|
||||
oggs/Makefile \
|
||||
src/Makefile \
|
||||
wavs/Makefile \
|
||||
wavs/radio/Makefile \
|
||||
wavs/tintagel/Makefile \
|
||||
AC_CONFIG_FILES([ \
|
||||
Makefile \
|
||||
data/Makefile \
|
||||
doc/Makefile \
|
||||
doc/players_manual/Makefile \
|
||||
fonts/Makefile \
|
||||
images/Makefile \
|
||||
models/Makefile \
|
||||
oggs/Makefile \
|
||||
src/Makefile \
|
||||
src/robots/Makefile \
|
||||
src/bullet/Makefile \
|
||||
src/bullet/src/Makefile \
|
||||
src/bullet/Demos/OpenGL/Makefile \
|
||||
wavs/Makefile \
|
||||
wavs/radio/Makefile \
|
||||
wavs/tintagel/Makefile \
|
||||
models/herrings/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
33
data/CREDITS
33
data/CREDITS
@@ -1,6 +1,6 @@
|
||||
SuperTuxKart - 0.4 RC 1
|
||||
=====================
|
||||
Super TuxKart is fun kart racing game.
|
||||
SuperTuxKart - 0.4
|
||||
================
|
||||
Super TuxKart is a fun kart racing game.
|
||||
|
||||
http://sourceforge.net/supertuxkart
|
||||
|
||||
@@ -14,20 +14,27 @@ Project Leaders
|
||||
Additional coding
|
||||
--------------------
|
||||
Robert Schuster
|
||||
- IO handling
|
||||
- User settings updates
|
||||
- Input handling
|
||||
- SDL port
|
||||
- bug fixes
|
||||
- Bug fixes
|
||||
|
||||
Paul Elms (scifly)
|
||||
- bug fixes
|
||||
- change resoluton gui
|
||||
- Bug fixes
|
||||
- Change resoluton gui
|
||||
|
||||
Hans Dzaack (Hans the farmer)
|
||||
- physics tuning
|
||||
- Physics tuning
|
||||
|
||||
Maik Semder (Ikework)
|
||||
- Bugfixes
|
||||
|
||||
Stephan Wiefling
|
||||
- Menu sounds
|
||||
|
||||
Sam Clarke
|
||||
- Windows Installer
|
||||
|
||||
Canarix
|
||||
- User interface
|
||||
- Testing
|
||||
@@ -36,10 +43,9 @@ Additional coding
|
||||
- Ogg vorbis support
|
||||
|
||||
Patrick Ammann
|
||||
- bug fixes, code cleanup
|
||||
- Bug fixes, code cleanup
|
||||
- OpenAL support
|
||||
|
||||
|
||||
Artists
|
||||
---------------
|
||||
SuperTuxKart Music Theme
|
||||
@@ -50,9 +56,9 @@ Artists
|
||||
- Lukas Siewert (Dr.Sternhagel)
|
||||
- Paul Esra Martin (P@ule)
|
||||
- Asha B.
|
||||
- ??? (KingArthur's Castle)
|
||||
- Magne Djupvik
|
||||
|
||||
3D track improvements (Shifting Sands, Lighthouse)
|
||||
3D track improvements (Shifting Sands, Lighthouse, Beach)
|
||||
- Marianne Gagnon (auria)
|
||||
|
||||
Island track creation
|
||||
@@ -70,7 +76,8 @@ Artists
|
||||
Support for OS-X
|
||||
----------------
|
||||
Port and package creation:
|
||||
- Florian, -Nuke-, TinGamer and Xeno74
|
||||
- Florian, -Nuke-, TinGamer, Xeno74,
|
||||
Auria, JPenguin
|
||||
|
||||
Additional artwork/documentation:
|
||||
- Cherryprice, -Nuke-, and Xeno74
|
||||
|
@@ -5,7 +5,7 @@ pkgdatadir = $(datadir)/games/@PACKAGE@/data
|
||||
pkgdata_DATA = $(wildcard *.dat) $(wildcard *.data) $(wildcard *.herring) \
|
||||
$(wildcard *.loc) $(wildcard *.drv?) $(wildcard *.projectile) \
|
||||
$(wildcard *.cup) $(wildcard *.tkkf) $(wildcard *.collectable)\
|
||||
$(wildcard *.track) CREDITS \
|
||||
$(wildcard *.track) CREDITS licenses \
|
||||
supertuxkart_32.xpm supertuxkart_64.xpm supertuxkart.desktop
|
||||
|
||||
desktopdir = $(prefix)/share/applications
|
||||
|
@@ -2,7 +2,8 @@
|
||||
|
||||
(tuxkart-track
|
||||
(name "On the Beach")
|
||||
(description "Created by Ingo Ruhnke")
|
||||
(description "Created by Ingo Ruhnke,
|
||||
modified by M. Gagnon")
|
||||
(music "oggs/CaribbeanMusic.ogg")
|
||||
(screenshot "sshot-beach.rgb")
|
||||
(topview "topview-beach.rgb")
|
||||
|
@@ -3,7 +3,6 @@
|
||||
(tuxkart-track
|
||||
(name "Gowns Bow")
|
||||
(description "Created by Oliver & Steve Baker")
|
||||
(gravity 78.0)
|
||||
(music "oggs/another_caribbean_beat.ogg")
|
||||
(screenshot "sshot-gownsbow.rgb")
|
||||
(topview "topview-gownsbow.rgb")
|
||||
|
@@ -20,7 +20,7 @@ tk7.ogg,
|
||||
tuxr.ogg,
|
||||
Boom_boom_boom.ogg
|
||||
------------------
|
||||
Matt Thomas, license: CC
|
||||
Matt Thomas, license: GNU GPL v2 (or later)
|
||||
|
||||
main_theme.ogg,
|
||||
kart_grand_prix.ogg
|
||||
@@ -34,7 +34,7 @@ Ethereal_Spectrum_(ver_loop).ogg
|
||||
|
||||
KingArthursCastle.ogg
|
||||
---------------------
|
||||
??, license: CC
|
||||
Magne Djupvik, license: CC
|
||||
|
||||
|
||||
Textures
|
||||
@@ -50,5 +50,5 @@ New shifting sand and lighthouse textures
|
||||
|
||||
All other textures
|
||||
------------------
|
||||
Steve Baker, license: CC
|
||||
|
||||
Steve Baker, license: GNU GPL v2 (or later)
|
||||
|
||||
|
@@ -189,5 +189,6 @@
|
||||
"coniferous_tree.rgb" Y Y Y 0.5 N N 0.5 N N N N
|
||||
"island/sky2.rgb" N N N 0.0 N N 1.0 N N N N
|
||||
"window.rgb" N N Y 0.0 Y N 1.0 N N N N
|
||||
"waterfall.rgb" N N Y 0.0 N N 1.0 N N Y N
|
||||
|
||||
# EOF #
|
||||
|
@@ -22,7 +22,7 @@
|
||||
(anvil-time 2.0 ) ;; time an anvil is active
|
||||
(zipper-time 5.0 ) ;; time a zipper is active
|
||||
(zipper-force 800.0 ) ;; additional zipper force
|
||||
(shortcut-road-distance 23.0 ) ;; max. distance from side of road to be still
|
||||
(shortcut-road-distance 9999.0 ) ;; max. distance from side of road to be still
|
||||
;; considered on the road (otherwise shortcut)
|
||||
;; usually 5 is a good value, but for the math class
|
||||
;; we have to use at least 21(!!)
|
||||
|
@@ -9,5 +9,5 @@ Exec=supertuxkart --log=file
|
||||
Terminal=false
|
||||
StartupNotify=false
|
||||
Type=Application
|
||||
TryExec=supertuxkart --log=file
|
||||
TryExec=supertuxkart
|
||||
Categories=3DGraphics;Game;ActionGame;Simulation;SportsGame;
|
||||
|
@@ -1,3 +1,7 @@
|
||||
# contrib/
|
||||
# doc
|
||||
|
||||
EXTRA_DIST =
|
||||
SUBDIRS = players_manual
|
||||
|
||||
pkgdatadir = $(datadir)/games/@PACKAGE@/doc
|
||||
|
||||
EXTRA_DIST = conventions.txt implementation.txt robots.txt
|
||||
|
@@ -12,7 +12,8 @@ Coding style
|
||||
============
|
||||
|
||||
The coding style used in Super Tux Kart can be found at
|
||||
http://supertuxkart.berlios.de/wiki/index.php/Coding_Style .
|
||||
|
||||
http://supertuxkart.sourceforge.net/Coding_Style
|
||||
|
||||
|
||||
Documentation line length
|
||||
|
7
doc/players_manual/Makefile.am
Normal file
7
doc/players_manual/Makefile.am
Normal file
@@ -0,0 +1,7 @@
|
||||
# doc/players_manual
|
||||
|
||||
pkgdatadir = $(datadir)/games/@PACKAGE@/doc/players_manual
|
||||
|
||||
pkgdata_DATA = manual.html $(wildcard *.png) $(wildcard *.jpg)
|
||||
|
||||
EXTRA_DIST = $(pkgdata_DATA)
|
@@ -11,14 +11,19 @@
|
||||
<br>
|
||||
<big><span style="font-weight: bold;">Introduction</span></big><br>
|
||||
<br>
|
||||
SuperTuxKart (abbreviated STK) is a kart racing game, based on<br>
|
||||
Steve Baker's TuxKart (<a href="http://tuxkart.sourceforge.net">http://tuxkart.sourceforge.net</a>). It was<br>
|
||||
SuperTuxKart (abbreviated STK) is a fun kart racing game, focusing on <br>
|
||||
fun and not on realistic physics. You can find more details on<br>
|
||||
<a href="http://supertuxkart.sourceforge.net">http://supertuxkart.sourceforge.net</a><br>
|
||||
|
||||
It was originally based on Steve Baker's TuxKart (<a href="http://tuxkart.sourceforge.net">http://tuxkart.sourceforge.net</a>),<br>
|
||||
but by now has developed a life on its own. It was<br>
|
||||
picked up by the Linux Game Tome (<a href="http://www.happypenguin.org">http://www.happypenguin.org</a>)<br>
|
||||
Game of the Month project and got a big overhaul during this time,<br>
|
||||
but was left in an unfinished state.<br>
|
||||
<br>
|
||||
A new set of maintainers, namely hiker & coz, took over in 2006.<br>
|
||||
You can find more details on <a href="http://supertuxkart.berlios.de">http://supertuxkart.berlios.de</a><br>
|
||||
A new set of maintainers, namely hiker & coz, took over in 2006, <br>
|
||||
and since then three official versions (0.2, 0.3, and 0.4) have been released.<br>
|
||||
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
@@ -34,9 +39,9 @@ You can find more details on <a href="http://supertuxkart.berlios.de">http:
|
||||
thought currently it is hard to drive with the mouse.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold;">Software</span><br>
|
||||
Right now, SuperTuxKart runs under Linux and under Windoze using<br>
|
||||
the CygWin package. We hope MSVC/Windoze, MacOS, BSD, BeOS, etc.<br>
|
||||
ports to follow.<br>
|
||||
Right now, SuperTuxKart runs under Linux, Windows, and MacOSX.<br>
|
||||
While we are not aware of any ports to BSD, BeOS, etc., we don't<br>
|
||||
expect a problem on those platforms.<br>
|
||||
<br>
|
||||
You need the following programs installed:<br>
|
||||
<br>
|
||||
@@ -49,20 +54,13 @@ PLIB 1.8.4 <br>
|
||||
SDL 1.2<br>
|
||||
<a href="http://www.libsdl.org">http://www.libsdl.org</a><br>
|
||||
<br>
|
||||
OpenAL (optional, requires ALUT, MikMod)<br>
|
||||
OpenAL<br>
|
||||
<a href="http://www.openal.org">http://www.openal.org</a><br>
|
||||
<br>
|
||||
ALUT (optional, requires OpenAL, MikMod)<br>
|
||||
ALUT<br>
|
||||
<a href="http://www.openal.org">http://www.openal.org</a><br>
|
||||
<br>
|
||||
MikMod (optional, requires OpenAL, ALUT)<br>
|
||||
<a href="http://mikmod.raphnet.net">http://mikmod.raphnet.net</a><br>
|
||||
<br>
|
||||
Bullet (optional)<br>
|
||||
<a href="http://continuous.physics.com/Bullet/">http://continuous.physics.com/Bullet/</a><br>
|
||||
<br>
|
||||
<span style="font-style: italic;">If you wish to use bullet, you should see the README.bullet file</span><br style="font-style: italic;">
|
||||
<span style="font-style: italic;">that should be in the main SuperTuxKart directory.</span><br>
|
||||
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
@@ -71,37 +69,17 @@ Bullet (optional)<br>
|
||||
To win races you will need to master your controls. Here are the<br>
|
||||
predefined controls:<br>
|
||||
<br>
|
||||
Player 1:<br>
|
||||
Steer : Left / Right arrow<br>
|
||||
Accelerate : Up arrow<br>
|
||||
Brake : Down arrow<br>
|
||||
Use item : Right control<br>
|
||||
Wheelie : Right shift<br>
|
||||
Rescue : Backspace<br>
|
||||
<br>
|
||||
Player 2:<br>
|
||||
Steer : A / D key<br>
|
||||
Accelerate : W key<br>
|
||||
Brake : S key<br>
|
||||
Use item : Left control<br>
|
||||
Wheelie : Left shift<br>
|
||||
Rescue : Left alt<br>
|
||||
<br>
|
||||
Player 3:<br>
|
||||
Steer : F / H key<br>
|
||||
Accelerate : T key<br>
|
||||
Brake : G key<br>
|
||||
Use item : N key<br>
|
||||
Wheelie : C key<br>
|
||||
Rescue : B key<br>
|
||||
<br>
|
||||
Player 4:<br>
|
||||
Steer : J / L key<br>
|
||||
Accelerate : I key<br>
|
||||
Brake : K key<br>
|
||||
Use item : M key<br>
|
||||
Wheelie : . key<br>
|
||||
Rescue : / key<br>
|
||||
<table border="3">
|
||||
<tr><td>Function</td><td>Player 1</td><td>Player 2</td><td>Player 3</td><td>Player 4</td></tr>
|
||||
<tr><td>Steer </td><td>Left / Right arrow</td><td>A / D key </td><td>F / H key</td><td>J / L key</td></tr>
|
||||
<tr><td>Accelerate</td><td>Up arrow </td><td>W key </td><td>T key </td><td>I key </td></tr>
|
||||
<tr><td>Brake </td><td>Down arrow </td><td>S key </td><td>G key </td><td>K key </td></tr>
|
||||
<tr><td>Use item </td><td>Right control </td><td>Left Control</td><td>N key </td><td>. key </td></tr>
|
||||
<tr><td>Wheelie </td><td>Right shift </td><td>Left shift </td><td>C key </td><td>M key </td></tr>
|
||||
<tr><td>Rescue </td><td>Backspace </td><td>Q key </td><td>R key </td><td>U key </td></tr>
|
||||
<tr><td>Jump </td><td>- key </td><td>Caps lock </td><td>V key </td><td>, key </td></tr>
|
||||
<tr><td>Look back </td><td>Right alt </td><td>Left alt </td><td>N key </td><td>/ key </td></tr>
|
||||
</table>
|
||||
<br>
|
||||
The rescue button is meant to be used if your kart is stuck; it<br>
|
||||
will send you to the track with your approximate progress, but<br>
|
||||
@@ -113,9 +91,6 @@ menu it closes the game.<br>
|
||||
<br>
|
||||
There are also some special functions:<br>
|
||||
<br>
|
||||
F9 key - Toggle fullscreen during the race. Doesn't works on<br>
|
||||
Windows.<br>
|
||||
<br>
|
||||
F10 key - Save the last 1000 frames into a file ./history.dat<br>
|
||||
This can be used to reproduce problems occurring<br>
|
||||
during a race. This is mainly useful for developers.<br>
|
||||
@@ -127,6 +102,7 @@ There are also some special functions:<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
<big><span style="font-weight: bold;">The race screen</span></big><br>
|
||||
<img src="sshot-islandtrack.jpg" width="512" height="341">
|
||||
<br>
|
||||
This screen has several components:<br>
|
||||
<br>
|
||||
@@ -176,7 +152,7 @@ Three different game modes are available:<br>
|
||||
A single race (with between 1 and 5 laps)<br>
|
||||
<br>
|
||||
3) Time Trial<br>
|
||||
A single race with a single lap only<br>
|
||||
A single race without opponents<br>
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
@@ -272,8 +248,9 @@ this if the driver in the first position alreadyfinished the race, and you can't
|
||||
<br>
|
||||
Bomb: after 30 seconds the bomb will explode, but if another kart<br>
|
||||
touches you, the bomb will be transfered to it and the remaining<br>
|
||||
time will be reduced by 5 seconds. Also, the bomb can't be<br>
|
||||
transfered to the inmediate previous bomb holder.<br>
|
||||
time will be reduced by 5 seconds. If you hit a banana while<br>
|
||||
having a bomb attach, it will explode immediately! Also, the bomb<br>
|
||||
can't be transfered to the inmediate previous bomb holder.<br>
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
@@ -296,7 +273,7 @@ carry one!<br>
|
||||
<br>
|
||||
On the track there could be zippers, which will give you a boost<br>
|
||||
when you go over them. Avoid water and lava, since you can't<br>
|
||||
drive inside them and you will have to be rescued just before<br>
|
||||
drive on them and you will have to be rescued just before<br>
|
||||
you touch them!<br>
|
||||
<br>
|
||||
There are also nasty things left on the track which will put an<br>
|
||||
@@ -316,21 +293,15 @@ while doing a wheelie (since your front wheels are not touching<br>
|
||||
the track), so be careful.<br>
|
||||
<br>
|
||||
Hitting another kart does not do any damage to your kart or the<br>
|
||||
other kart, one of the karts will just be forced to a stand still,<br>
|
||||
loosing precious seconds.<br>
|
||||
other kart.<br>
|
||||
<br>
|
||||
When all human controlled karts finish the race, the game will wait<br>
|
||||
some seconds for the AI to finish the race. If the AI doesn't, it<br>
|
||||
will use the AI's current position as their final position.<br>
|
||||
will estimate the arrival time based on the kart's average speed.<br>
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
<big><span style="font-weight: bold;">Bugs in this version</span></big><br>
|
||||
<br>
|
||||
* Sometimes you can be pushed through a solid object if you are<br>
|
||||
hit by another player when in contact with the surface. <br>
|
||||
<br>
|
||||
There might of course be more.<br>
|
||||
<big><span style="font-weight: bold;">Known bugs in this version</span></big><br>
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
@@ -356,16 +327,13 @@ Useful command line options:<br>
|
||||
<big><span style="font-weight: bold;">Support</span></big><br>
|
||||
<br>
|
||||
If you have any problems, please send an e-mail to the<br>
|
||||
Super Tux Kart mailing list at <a href="mailto:supertuxkart-devel@list.berlios.de">supertuxkart-devel@list.berlios.de</a> .<br>
|
||||
Super Tux Kart mailing list at
|
||||
<a href="mailto:supertuxkart-devel@lists.sourceforge.net">supertuxkart-devel@lists.sourceforge.net</a> .<br>
|
||||
<br>
|
||||
The archives of this mailing list can be found at <br>
|
||||
<a href="http://lists.berlios.de/pipermail/supertuxkart-devel/">http://lists.berlios.de/pipermail/supertuxkart-devel/</a> .<br>
|
||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=supertuxkart-devel">http://sourceforge.net/mailarchive/forum.php?forum_name=supertuxkart-devel/</a> .<br>
|
||||
<br>
|
||||
Or post a bug report on the SuperTuxKart bug forum (no <br>
|
||||
registration is required):<br>
|
||||
<a href="http://developer.berlios.de/forum/forum.php?forum_id=23737">http://developer.berlios.de/forum/forum.php?forum_id=23737</a><br>
|
||||
<br>
|
||||
There is also a wiki at <a href="http://supertuxkart.berlios.de/wiki">http://supertuxkart.berlios.de/wiki</a> .<br>
|
||||
There is also a wiki on the homepage at <a href="http://supertuxkart.sourceforge.net/">http://supertuxkart.sourceforge.net</a> .<br>
|
||||
<br>
|
||||
<img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><img style="width: 32px; height: 33px;" alt="" src="chess.png"><br>
|
||||
<br>
|
||||
|
BIN
doc/players_manual/sshot-islandtrack.jpg
Normal file
BIN
doc/players_manual/sshot-islandtrack.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
@@ -1,6 +1,6 @@
|
||||
To create a robot, here is what you should do:
|
||||
|
||||
- There is a template for the robots in the contrib/ directory, modify it
|
||||
- There is a template for the robots in the src/robots directory, modify it
|
||||
to create your own robot, the files are named empty_robot.cpp and
|
||||
empty_robot.hpp .
|
||||
- Name your source file <name of robot>_robot.cpp, and your header as
|
||||
|
@@ -135,6 +135,7 @@ tuxkartshadow.rgb \
|
||||
tv.rgb \
|
||||
usaflag.rgb \
|
||||
water.rgb \
|
||||
waterfall.rgb \
|
||||
water_light.rgb \
|
||||
wheel.rgb \
|
||||
wilbericon.rgb \
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
images/waterfall.rgb
Normal file
BIN
images/waterfall.rgb
Normal file
Binary file not shown.
104631
models/beachtrack.ac
104631
models/beachtrack.ac
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
10225
models/racetrack.ac
10225
models/racetrack.ac
File diff suppressed because it is too large
Load Diff
7080
models/wilber-low.ac
7080
models/wilber-low.ac
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,2 @@
|
||||
King Arthur's Castle
|
||||
???
|
||||
Magne Djupvik
|
||||
|
@@ -99,6 +99,7 @@ supertuxkart_SOURCES = main.cpp \
|
||||
gui/race_results_gui.cpp gui/race_results_gui.hpp \
|
||||
gui/grand_prix_ending.cpp gui/grand_prix_ending.hpp \
|
||||
gui/num_laps.cpp gui/num_laps.hpp \
|
||||
gui/num_karts.cpp gui/num_karts.hpp \
|
||||
gui/race_menu.cpp gui/race_menu.hpp \
|
||||
gui/num_players.cpp gui/num_players.hpp \
|
||||
gui/track_sel.cpp gui/track_sel.hpp \
|
||||
@@ -122,7 +123,9 @@ supertuxkart_SOURCES = main.cpp \
|
||||
replay_buffers.hpp replay_buffers.cpp \
|
||||
replay_base.hpp replay_base.cpp \
|
||||
replay_player.hpp replay_player.cpp \
|
||||
replay_recorder.hpp replay_recorder.cpp
|
||||
replay_recorder.hpp replay_recorder.cpp \
|
||||
ide/vc8/supertuxkart.sln ide/vc8/supertuxkart.vcproj \
|
||||
ide/vc8/bullet_lib.vcproj ide/vc8/README
|
||||
|
||||
|
||||
# Link in the specific gcc 4.1 bug work around
|
||||
@@ -133,3 +136,5 @@ supertuxkart_LDADD = -L. -lstatic_ssg \
|
||||
.PHONY: pot
|
||||
pot:
|
||||
xgettext -o supertuxkart.pot -k_ --c++ *.?pp */*.?pp
|
||||
|
||||
SUBDIRS = robots
|
@@ -1,63 +0,0 @@
|
||||
# This is basically the overall name of the project in Visual Studio this is the name of the Solution File
|
||||
|
||||
|
||||
# For every executable you have with a main method you should have an add_executable line below.
|
||||
# For every add executable line you should list every .cpp and .h file you have associated with that executable.
|
||||
|
||||
|
||||
# This is the variable for Windows. I use this to define the root of my directory structure.
|
||||
SET(GLUT_ROOT ${BULLET_PHYSICS_SOURCE_DIR}/glut)
|
||||
|
||||
# You shouldn't have to modify anything below this line
|
||||
########################################################
|
||||
|
||||
|
||||
# This is the shortcut to finding GLU, GLUT and OpenGL if they are properly installed on your system
|
||||
# This should be the case.
|
||||
INCLUDE (${CMAKE_ROOT}/Modules/FindGLU.cmake)
|
||||
INCLUDE (${CMAKE_ROOT}/Modules/FindGLUT.cmake)
|
||||
INCLUDE (${CMAKE_ROOT}/Modules/FindOpenGL.cmake)
|
||||
|
||||
|
||||
IF (WIN32)
|
||||
# This is the Windows code for which Opengl, and Glut are not properly installed
|
||||
# since I can't install them I must cheat and copy libraries around
|
||||
INCLUDE_DIRECTORIES(${GLUT_ROOT})
|
||||
# LINK_DIRECTORIES(${GLUT_ROOT}\\lib)
|
||||
# IF (${GLUT_glut_LIBRARY} MATCHES "GLUT_glut_LIBRARY-NOTFOUND")
|
||||
# LINK_LIBRARIES(${GLUT_ROOT}\\lib\\glut32 ${OPENGL_gl_LIBRARY} ${OPENGL_glU_LIBRARY})
|
||||
# TARGET_LINK_LIBRARIES(table ${GLUT_ROOT}\\lib\\glut32)
|
||||
#
|
||||
# ADD_CUSTOM_COMMAND(TARGET table POST_BUILD COMMAND copy ${GLUT_ROOT}\\lib\\glut32.dll ${GLUT_ROOT}\\bin\\vs2005\\Debug
|
||||
# COMMAND copy ${GLUT_ROOT}\\lib\\glut32.dll ${GLUT_ROOT}\\bin\\vs2003\\Debug
|
||||
# COMMAND copy ${GLUT_ROOT}\\lib\\glut32.dll ${GLUT_ROOT}\\bin\\vs6\\Debug)
|
||||
# ELSE (${GLUT_glut_LIBRARY} MATCHES "GLUT_glut_LIBRARY-NOTFOUND")
|
||||
# LINK_LIBRARIES(${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
|
||||
# TARGET_LINK_LIBRARIES(table ${GLUT_glut_LIBRARY})
|
||||
# ENDIF(${GLUT_glut_LIBRARY} MATCHES "GLUT_glut_LIBRARY-NOTFOUND")
|
||||
# TARGET_LINK_LIBRARIES(table ${OPENGL_gl_LIBRARY})
|
||||
# TARGET_LINK_LIBRARIES(table ${OPENGL_glu_LIBRARY})
|
||||
ELSE (WIN32)
|
||||
# This is the lines for linux. This should always work if everything is installed and working fine.
|
||||
# SET(CMAKE_BUILD_TYPE Debug)
|
||||
# SET(CMAKE_CXX_FLAGS_DEBUG "-g")
|
||||
INCLUDE_DIRECTORIES(/usr/include /usr/local/include ${GLUT_INCLUDE_DIR})
|
||||
# TARGET_LINK_LIBRARIES(table ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
|
||||
# TARGET_LINK_LIBRARIES(checker ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
|
||||
ENDIF (WIN32)
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${BULLET_PHYSICS_SOURCE_DIR}/src }
|
||||
)
|
||||
|
||||
ADD_LIBRARY(LibOpenGLSupport
|
||||
BMF_Api.cpp
|
||||
BMF_BitmapFont.cpp
|
||||
BMF_font_helv10.cpp
|
||||
GL_ShapeDrawer.cpp
|
||||
GL_Simplex1to4.cpp
|
||||
GLDebugDrawer.cpp
|
||||
GlutStuff.cpp
|
||||
RenderTexture.cpp
|
||||
DemoApplication.cpp
|
||||
)
|
@@ -1 +1,5 @@
|
||||
SUBDIRS=src Demos/OpenGL
|
||||
SUBDIRS=src Demos/OpenGL
|
||||
|
||||
EXTRA_DIST = BulletLicense.txt ChangeLog.txt copy_bullet_files \
|
||||
LICENSE README VERSION
|
||||
|
||||
|
@@ -235,11 +235,12 @@ void CharSel::select()
|
||||
}
|
||||
}
|
||||
|
||||
if (race_manager->getRaceMode() != RaceSetup::RM_GRAND_PRIX)
|
||||
menu_manager->pushMenu(MENUID_TRACKSEL);
|
||||
if (race_manager->getRaceMode() == RaceSetup::RM_GRAND_PRIX)
|
||||
menu_manager->pushMenu(MENUID_NUMKARTS);
|
||||
else
|
||||
race_manager->start();
|
||||
}
|
||||
menu_manager->pushMenu(MENUID_TRACKSEL);
|
||||
} // select
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Function checks the vector of previously selected karts and returns true if
|
||||
// kart i is in the vector and false if it is not.
|
||||
|
@@ -28,7 +28,7 @@ enum WidgetTokens
|
||||
WTOK_TITLE,
|
||||
|
||||
WTOK_HARD,
|
||||
WTOK_MEDIUM,
|
||||
// WTOK_MEDIUM,
|
||||
WTOK_EASY,
|
||||
|
||||
WTOK_QUIT
|
||||
@@ -53,8 +53,8 @@ Difficulty::Difficulty()
|
||||
widget_manager->addWgt(WTOK_HARD, 60, 7);
|
||||
widget_manager->setWgtText(WTOK_HARD, _("Racer"));
|
||||
|
||||
widget_manager->addWgt(WTOK_MEDIUM, 60, 7);
|
||||
widget_manager->setWgtText(WTOK_MEDIUM, _("Driver"));
|
||||
//widget_manager->addWgt(WTOK_MEDIUM, 60, 7);
|
||||
//widget_manager->setWgtText(WTOK_MEDIUM, _("Driver"));
|
||||
|
||||
widget_manager->addWgt(WTOK_EASY, 60, 7);
|
||||
widget_manager->setWgtText(WTOK_EASY, _("Novice"));
|
||||
@@ -80,10 +80,10 @@ void Difficulty::select()
|
||||
race_manager->setDifficulty(RD_EASY);
|
||||
menu_manager->pushMenu(MENUID_CHARSEL_P1);
|
||||
break;
|
||||
case WTOK_MEDIUM:
|
||||
race_manager->setDifficulty(RD_MEDIUM);
|
||||
menu_manager->pushMenu(MENUID_CHARSEL_P1);
|
||||
break;
|
||||
// case WTOK_MEDIUM:
|
||||
// race_manager->setDifficulty(RD_MEDIUM);
|
||||
// menu_manager->pushMenu(MENUID_CHARSEL_P1);
|
||||
// break;
|
||||
case WTOK_HARD:
|
||||
race_manager->setDifficulty(RD_HARD);
|
||||
menu_manager->pushMenu(MENUID_CHARSEL_P1);
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include "options.hpp"
|
||||
#include "track_sel.hpp"
|
||||
#include "num_laps.hpp"
|
||||
#include "num_karts.hpp"
|
||||
#include "num_players.hpp"
|
||||
#include "config_controls.hpp"
|
||||
#include "config_display.hpp"
|
||||
@@ -164,6 +165,9 @@ void MenuManager::update()
|
||||
case MENUID_NUMLAPS:
|
||||
m_current_menu= new NumLaps();
|
||||
break;
|
||||
case MENUID_NUMKARTS:
|
||||
m_current_menu= new NumKarts();
|
||||
break;
|
||||
case MENUID_NUMPLAYERS:
|
||||
m_current_menu= new NumPlayers();
|
||||
break;
|
||||
|
@@ -38,6 +38,7 @@ enum MenuManagerIDs
|
||||
MENUID_GRANDPRIXEND,
|
||||
MENUID_RACEMENU,
|
||||
MENUID_TRACKSEL,
|
||||
MENUID_NUMKARTS,
|
||||
MENUID_NUMLAPS,
|
||||
MENUID_NUMPLAYERS,
|
||||
MENUID_OPTIONS,
|
||||
|
139
src/gui/num_karts.cpp
Normal file
139
src/gui/num_karts.cpp
Normal file
@@ -0,0 +1,139 @@
|
||||
// $Id: num_laps.cpp 1369 2007-12-25 03:23:32Z cosmosninja $
|
||||
//
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2006, 2007 SuperTuxKart-Team
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 2
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#include "race_manager.hpp"
|
||||
#include "num_karts.hpp"
|
||||
#include "widget_manager.hpp"
|
||||
#include "menu_manager.hpp"
|
||||
#if defined(WIN32) && !defined(__CYGWIN__)
|
||||
# define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
enum WidgetTokens
|
||||
{
|
||||
WTOK_TITLE,
|
||||
|
||||
WTOK_NUMLAPS,
|
||||
|
||||
WTOK_LESS,
|
||||
WTOK_MORE,
|
||||
|
||||
WTOK_CONTINUE,
|
||||
WTOK_QUIT
|
||||
};
|
||||
|
||||
NumKarts::NumKarts()
|
||||
{
|
||||
widget_manager->addWgt(WTOK_TITLE, 50, 7);
|
||||
widget_manager->showWgtRect(WTOK_TITLE);
|
||||
widget_manager->showWgtText(WTOK_TITLE);
|
||||
widget_manager->setWgtText(WTOK_TITLE, _("Choose number of karts"));
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt( WidgetManager::WGT_NONE, 100, 5);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt(WTOK_NUMLAPS, 20, 7);
|
||||
widget_manager->showWgtRect(WTOK_NUMLAPS);
|
||||
widget_manager->showWgtText(WTOK_NUMLAPS);
|
||||
m_num_karts = race_manager->getNumKarts();
|
||||
snprintf(m_kart_label, MAX_MESSAGE_LENGTH, _("Karts: %d"), m_num_karts);
|
||||
widget_manager->setWgtText(WTOK_NUMLAPS, m_kart_label);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt( WidgetManager::WGT_NONE, 100, 5);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt(WTOK_LESS, 20, 7);
|
||||
widget_manager->showWgtRect(WTOK_LESS);
|
||||
widget_manager->showWgtText(WTOK_LESS);
|
||||
widget_manager->setWgtText(WTOK_LESS, _("Less"));
|
||||
widget_manager->activateWgt(WTOK_LESS);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt(WTOK_MORE, 20, 7);
|
||||
widget_manager->showWgtRect(WTOK_MORE);
|
||||
widget_manager->showWgtText(WTOK_MORE);
|
||||
widget_manager->setWgtText(WTOK_MORE, _("More"));
|
||||
widget_manager->activateWgt(WTOK_MORE);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt( WidgetManager::WGT_NONE, 100, 5);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt(WTOK_CONTINUE, 30, 7);
|
||||
widget_manager->showWgtRect(WTOK_CONTINUE);
|
||||
widget_manager->showWgtText(WTOK_CONTINUE);
|
||||
if (race_manager->getRaceMode() == RaceSetup::RM_GRAND_PRIX)
|
||||
widget_manager->setWgtText(WTOK_CONTINUE, _("Start race"));
|
||||
else
|
||||
widget_manager->setWgtText(WTOK_CONTINUE, _("Continue"));
|
||||
|
||||
widget_manager->activateWgt(WTOK_CONTINUE);
|
||||
widget_manager->breakLine();
|
||||
|
||||
widget_manager->addWgt(WTOK_QUIT, 50, 7);
|
||||
widget_manager->showWgtRect(WTOK_QUIT);
|
||||
widget_manager->showWgtText(WTOK_QUIT);
|
||||
widget_manager->setWgtText(WTOK_QUIT, _("Press <ESC> to go back"));
|
||||
widget_manager->activateWgt(WTOK_QUIT);
|
||||
|
||||
widget_manager->layout(WGT_AREA_ALL);
|
||||
|
||||
widget_manager->setSelectedWgt(WTOK_CONTINUE);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
NumKarts::~NumKarts()
|
||||
{
|
||||
widget_manager->reset();
|
||||
} // ~NumKarts
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
void NumKarts::select()
|
||||
{
|
||||
const int WGT = widget_manager->getSelectedWgt();
|
||||
switch (WGT)
|
||||
{
|
||||
case WTOK_LESS:
|
||||
m_num_karts = std::max(race_manager->getNumPlayers(), m_num_karts-1);
|
||||
snprintf(m_kart_label, MAX_MESSAGE_LENGTH, "Karts: %d", m_num_karts);
|
||||
widget_manager->setWgtText(WTOK_NUMLAPS, m_kart_label);
|
||||
break;
|
||||
case WTOK_MORE:
|
||||
m_num_karts = std::min(stk_config->m_max_karts, m_num_karts+1);
|
||||
snprintf(m_kart_label, MAX_MESSAGE_LENGTH, "Karts: %d", m_num_karts);
|
||||
widget_manager->setWgtText(WTOK_NUMLAPS, m_kart_label);
|
||||
break;
|
||||
case WTOK_CONTINUE:
|
||||
race_manager->setNumKarts(m_num_karts);
|
||||
if (race_manager->getRaceMode() == RaceSetup::RM_GRAND_PRIX)
|
||||
race_manager->start();
|
||||
else
|
||||
menu_manager->pushMenu(MENUID_NUMLAPS);
|
||||
break;
|
||||
case WTOK_QUIT:
|
||||
menu_manager->popMenu();
|
||||
break;
|
||||
}
|
||||
|
||||
} // select
|
||||
|
||||
|
||||
|
40
src/gui/num_karts.hpp
Normal file
40
src/gui/num_karts.hpp
Normal file
@@ -0,0 +1,40 @@
|
||||
// $Id: num_karts.hpp 924 2007-03-06 17:33:35Z coz $
|
||||
//
|
||||
// SuperTuxKart - a fun racing game with go-kart
|
||||
// Copyright (C) 2006 SuperTuxKart-Team
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License
|
||||
// as published by the Free Software Foundation; either version 2
|
||||
// of the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
#ifndef HEADER_KARTSLAPS_H
|
||||
#define HEADER_KARTSLAPS_H
|
||||
|
||||
#include "base_gui.hpp"
|
||||
#include "translation.hpp"
|
||||
|
||||
class NumKarts: public BaseGUI
|
||||
{
|
||||
public:
|
||||
NumKarts();
|
||||
~NumKarts();
|
||||
|
||||
void select();
|
||||
|
||||
private:
|
||||
int m_karts_label_id;
|
||||
int m_num_karts;
|
||||
char m_kart_label[MAX_MESSAGE_LENGTH];
|
||||
};
|
||||
|
||||
#endif
|
@@ -89,6 +89,8 @@ NumLaps::NumLaps() : laps(3)
|
||||
widget_manager->activateWgt(WTOK_QUIT);
|
||||
|
||||
widget_manager->layout(WGT_AREA_ALL);
|
||||
|
||||
widget_manager->setSelectedWgt(WTOK_START);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
@@ -246,8 +246,14 @@ void TrackSel::select()
|
||||
const int CLICKED_TOKEN = widget_manager->getSelectedWgt();
|
||||
const Track* TRACK = track_manager->getTrack(CLICKED_TOKEN - WTOK_TRACK0);
|
||||
race_manager->setTrack(TRACK->getIdent());
|
||||
|
||||
menu_manager->pushMenu(MENUID_NUMLAPS);
|
||||
}
|
||||
if(race_manager->getRaceMode()==RaceSetup::RM_TIME_TRIAL)
|
||||
{
|
||||
menu_manager->pushMenu(MENUID_NUMLAPS);
|
||||
}
|
||||
else
|
||||
{
|
||||
menu_manager->pushMenu(MENUID_NUMKARTS);
|
||||
}
|
||||
} // select
|
||||
|
||||
/* EOF */
|
||||
|
@@ -522,7 +522,7 @@
|
||||
Optimization="0"
|
||||
WholeProgramOptimization="false"
|
||||
AdditionalIncludeDirectories="./../../../src;"$(PLIB_PATH)";"$(SDL_PATH)\include";"$(ALUT_PATH)\include";"$(OGG_PATH)\include";"$(VORBIS_PATH)\include";"$(OPENAL_PATH)\include";"$(OPENAL_PATH)\include\AL";../../../src/bullet/src;"$(GLUT_PATH)\include";"$(GETTEXT_PATH)/include""
|
||||
PreprocessorDefinitions="BT_NO_PROFILE;HAVE_OPENAL;HAVE_OGGVORBIS;_DEBUG;_CONSOLE;WIN32;NOMINMAX;VERSION=\"0.4alpha\";_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;DEBUG;PACKAGE=\"supertuxkart\""
|
||||
PreprocessorDefinitions="BT_NO_PROFILE;HAVE_OPENAL;HAVE_OGGVORBIS;_DEBUG;_CONSOLE;WIN32;NOMINMAX;VERSION=\"0.4\";_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;DEBUG;PACKAGE=\"supertuxkart\""
|
||||
GeneratePreprocessedFile="0"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
@@ -607,7 +607,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
WholeProgramOptimization="true"
|
||||
AdditionalIncludeDirectories="./../../../src;"$(PLIB_PATH)";"$(SDL_PATH)\include";"$(ALUT_PATH)\include";"$(OGG_PATH)\include";"$(VORBIS_PATH)\include";"$(OPENAL_PATH)\include";"$(OPENAL_PATH)\include\AL";../../../src/bullet/src;"$(GLUT_PATH)\include""
|
||||
PreprocessorDefinitions="HAVE_OPENAL;HAVE_OGGVORBIS;NDEBUG;_CONSOLE;WIN32;NOMINMAX;VERSION=\"0.4alpha\";_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;BT_NO_PROFILE"
|
||||
PreprocessorDefinitions="HAVE_OPENAL;HAVE_OGGVORBIS;NDEBUG;_CONSOLE;WIN32;NOMINMAX;VERSION=\"0.4\";_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;BT_NO_PROFILE"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
@@ -981,6 +981,10 @@
|
||||
RelativePath="../../../src\gui\menu_manager.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\gui\num_karts.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="../../../src\gui\num_laps.cpp"
|
||||
>
|
||||
@@ -1403,6 +1407,10 @@
|
||||
RelativePath="../../../src\gui\menu_manager.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\gui\num_karts.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="../../../src\gui\num_laps.hpp"
|
||||
>
|
||||
|
@@ -633,13 +633,17 @@ void Kart::update (float dt)
|
||||
Moveable::update(dt);
|
||||
|
||||
// Check if a kart is (nearly) upside down and not moving much --> automatic rescue
|
||||
if((fabs(m_curr_pos.hpr[2])>60 && getSpeed()<3.0f) )
|
||||
if((fabs(m_curr_pos.hpr[2])>60 && fabs(getSpeed())<3.0f) )
|
||||
{
|
||||
forceRescue();
|
||||
}
|
||||
|
||||
btTransform trans=getTrans();
|
||||
TerrainInfo::update(trans.getOrigin());
|
||||
// Add a certain epsilon (0.1) to the height of the kart. This avoids
|
||||
// problems of the ray being cast from under the track (which happened
|
||||
// e.g. on tux tollway when jumping down from the ramp).
|
||||
btVector3 pos_plus_epsilon = trans.getOrigin()+btVector3(0,0,0.1f);
|
||||
TerrainInfo::update(pos_plus_epsilon);
|
||||
if (getHoT()==Track::NOHIT ||
|
||||
(getMaterial()->isReset() && isOnGround()) )
|
||||
{
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <stdexcept>
|
||||
#include <sstream>
|
||||
#include <sys/stat.h>
|
||||
#include <string>
|
||||
#ifdef WIN32
|
||||
# include <io.h>
|
||||
# include <stdio.h>
|
||||
@@ -38,16 +39,53 @@
|
||||
#include "translation.hpp"
|
||||
#include "material_manager.hpp"
|
||||
|
||||
#ifdef __APPLE__
|
||||
// dynamic data path detection onmac
|
||||
# include <CoreFoundation/CoreFoundation.h>
|
||||
|
||||
bool macSetBundlePathIfRelevant(std::string& data_dir)
|
||||
{
|
||||
printf("checking whether we are using an app bundle... ");
|
||||
// the following code will enable STK to find its data when placed in an app bundle on mac OS X.
|
||||
// returns true if path is set, returns false if path was not set
|
||||
char path[1024];
|
||||
CFBundleRef main_bundle = CFBundleGetMainBundle(); assert(main_bundle);
|
||||
CFURLRef main_bundle_URL = CFBundleCopyBundleURL(main_bundle); assert(main_bundle_URL);
|
||||
CFStringRef cf_string_ref = CFURLCopyFileSystemPath( main_bundle_URL, kCFURLPOSIXPathStyle); assert(cf_string_ref);
|
||||
CFStringGetCString(cf_string_ref, path, 1024, kCFStringEncodingASCII);
|
||||
CFRelease(main_bundle_URL);
|
||||
CFRelease(cf_string_ref);
|
||||
|
||||
std::string contents = std::string(path) + std::string("/Contents");
|
||||
if(contents.find(".app") != std::string::npos)
|
||||
{
|
||||
printf("yes\n");
|
||||
// executable is inside an app bundle, use app bundle-relative paths
|
||||
data_dir = contents + std::string("/Resources/data");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("no\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Loader* loader = 0;
|
||||
|
||||
Loader::Loader()
|
||||
{
|
||||
const char *datadir;
|
||||
std::string datadir;
|
||||
m_current_callback_type = CB_COLLECTABLE;
|
||||
|
||||
if ( getenv ( "SUPERTUXKART_DATADIR" ) != NULL )
|
||||
datadir = getenv ( "SUPERTUXKART_DATADIR" ) ;
|
||||
else
|
||||
#ifdef __APPLE__
|
||||
if( macSetBundlePathIfRelevant( datadir ) ) { /* nothing to do */ }
|
||||
else
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
if ( _access ( "data\\tuxtrack.track", 04 ) == 0 )
|
||||
#else
|
||||
@@ -68,7 +106,7 @@ Loader::Loader()
|
||||
datadir = "/usr/local/share/games/supertuxkart" ;
|
||||
#endif
|
||||
fprintf(stderr, _("Data files will be fetched from: '%s'\n"),
|
||||
datadir ) ;
|
||||
datadir.c_str() ) ;
|
||||
addSearchPath(datadir);
|
||||
} // Loader
|
||||
|
||||
|
4
src/robots/Makefile.am
Normal file
4
src/robots/Makefile.am
Normal file
@@ -0,0 +1,4 @@
|
||||
# src/robots
|
||||
|
||||
EXTRA_DIST = empty_robot.cpp empty_robot.hpp
|
||||
|
@@ -38,6 +38,7 @@
|
||||
#include "projectile_manager.hpp"
|
||||
#include "loader.hpp"
|
||||
#include "gui/menu_manager.hpp"
|
||||
#include "widget_manager.hpp"
|
||||
#include "player.hpp"
|
||||
#include "gui/font.hpp"
|
||||
#include "user_config.hpp"
|
||||
@@ -205,6 +206,10 @@ void setVideoMode(bool resetTextures)
|
||||
//Reinit fonts
|
||||
delete_fonts();
|
||||
init_fonts();
|
||||
|
||||
//TODO: this function probably will get deleted in the future; if
|
||||
//so, the widget_manager.hpp include has no other reason to be here.
|
||||
widget_manager->reloadFonts();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@@ -39,7 +39,8 @@ SFXImpl::SFXImpl(const char* filename)
|
||||
{
|
||||
m_soundBuffer= 0;
|
||||
m_soundSource= 0;
|
||||
assert(load(filename));
|
||||
bool ok=load(filename);
|
||||
assert(ok);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -53,6 +54,15 @@ SFXImpl::~SFXImpl()
|
||||
void SFXImpl::play()
|
||||
{
|
||||
alSourcePlay(m_soundSource);
|
||||
|
||||
// Check (and clear) the error flag
|
||||
int error = alGetError();
|
||||
|
||||
if(error != AL_NO_ERROR)
|
||||
{
|
||||
fprintf(stderr, "SFX OpenAL error: %d\n", error);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@@ -380,11 +380,11 @@ bool Widget::createRect(int radius)
|
||||
//TODO: show warning if text > rect
|
||||
if(radius > m_width * 0.5)
|
||||
{
|
||||
std::cerr << "Warning: widget's radius > half width.\n";
|
||||
//std::cerr << "Warning: widget's radius > half width.\n";
|
||||
}
|
||||
if(radius > m_height * 0.5)
|
||||
{
|
||||
std::cerr << "Warning: widget's radius > half height.\n";
|
||||
// std::cerr << "Warning: widget's radius > half height.\n";
|
||||
}
|
||||
if(radius < 1)
|
||||
{
|
||||
@@ -677,4 +677,8 @@ void Widget::setFont( const WidgetFont FONT )
|
||||
m_font = font_race;
|
||||
break;
|
||||
};
|
||||
|
||||
//TODO: the curr_widget_font variable exists only for a bug around; after
|
||||
//some restructuration, it should be fine to remove this.
|
||||
m_curr_widget_font = FONT;
|
||||
}
|
||||
|
@@ -149,6 +149,10 @@ class Widget
|
||||
std::string m_text;
|
||||
WidgetFontSize m_text_size;
|
||||
|
||||
//TODO: This variable exists only to go around a bug; should be removed
|
||||
//after better restructuration.
|
||||
WidgetFont m_curr_widget_font;
|
||||
|
||||
static const int MAX_SCROLL;
|
||||
bool m_enable_scroll;
|
||||
float m_scroll_pos_x;
|
||||
|
@@ -1591,3 +1591,19 @@ int WidgetManager::findBottomWidget(const int START_WGT) const
|
||||
return closest_wgt;
|
||||
}
|
||||
|
||||
/** reloadFonts() sets the pointers to the fonts of the guis
|
||||
* to their choosen fonts; it's useful in cases where you
|
||||
* free the font's memory (which makes the pointers invalid),
|
||||
* then reload the fonts, like it happens when you change resolution
|
||||
* on the Macs or Windows.
|
||||
*/
|
||||
void WidgetManager::reloadFonts()
|
||||
{
|
||||
const int NUM_WIDGETS = (int)m_widgets.size();
|
||||
for( int i = 0; i < NUM_WIDGETS; ++i )
|
||||
{
|
||||
m_widgets[i].widget->setFont(
|
||||
m_widgets[i].widget->m_curr_widget_font );
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -232,6 +232,7 @@ public:
|
||||
void setWgtFont( const int TOKEN, const WidgetFont FONT);
|
||||
void showWgtText( const int TOKEN );
|
||||
void hideWgtText( const int TOKEN );
|
||||
void reloadFonts();
|
||||
|
||||
//FIXME: change to enableWgtScrolling, since it enables or disables
|
||||
//FIXME: maybe all that enabling the scrolling should do, is to allow
|
||||
|
BIN
src/windows_installer/icon.ico
Executable file
BIN
src/windows_installer/icon.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
src/windows_installer/install.ico
Executable file
BIN
src/windows_installer/install.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
src/windows_installer/prerequisites/oalinst.exe
Executable file
BIN
src/windows_installer/prerequisites/oalinst.exe
Executable file
Binary file not shown.
BIN
src/windows_installer/prerequisites/vcredist_x86.exe
Executable file
BIN
src/windows_installer/prerequisites/vcredist_x86.exe
Executable file
Binary file not shown.
164
src/windows_installer/supertuxkart.nsi
Normal file
164
src/windows_installer/supertuxkart.nsi
Normal file
@@ -0,0 +1,164 @@
|
||||
; Before you start you will need the shelllink plugin for NSIS
|
||||
; Download it from the nsis webpage, and unzip it in the NSIS
|
||||
; install dir.
|
||||
;
|
||||
; To use just put this in a directory below the supertuxkart directory
|
||||
; which should be called "supertuxkart" and then copy the
|
||||
; GPL in the supertuxkart directory to 'license.txt'.
|
||||
; Next to supertuxkart create a subdirectory called 'prerequisites'
|
||||
; and copy the VC++ (vcredist_x86.exe) and OpenAL (oalinst.exe)
|
||||
; redistributables.
|
||||
; You will then need to make an icon, you can use:
|
||||
; http://tools.dynamicdrive.com/favicon/ to convert a png to an icon.
|
||||
; Once you have made an icon put it in the supertuxkart dir and call it
|
||||
; icon.ico. You will need to do the same for install.ico nd uninstall.ico
|
||||
; Once there done then all you need to do is compile with NSIS.
|
||||
|
||||
;--------------------------------
|
||||
;Include Modern UI
|
||||
|
||||
!include "MUI.nsh"
|
||||
|
||||
;--------------------------------
|
||||
;General
|
||||
|
||||
;Name and file
|
||||
Name "SuperTuxKart for Windows"
|
||||
OutFile "supertuxkart-win.exe"
|
||||
|
||||
;Default installation folder
|
||||
InstallDir "$PROGRAMFILES\SuperTuxKart"
|
||||
|
||||
;Get installation folder from registry if available
|
||||
InstallDirRegKey HKCU "Software\SuperTuxKart" ""
|
||||
|
||||
;Sets the text in the bottom corner
|
||||
BrandingText "SuperTuxKart Installer"
|
||||
|
||||
;Set the icon
|
||||
!define MUI_ICON "SuperTuxKart\install.ico"
|
||||
!define MUI_UNICON "SuperTuxKart\uninstall.ico"
|
||||
|
||||
;Sets the compressor to /SOLID lzma which when I tested was the best
|
||||
SetCompressor /SOLID lzma
|
||||
|
||||
;Vista redirects $SMPROGRAMS to all users without this
|
||||
RequestExecutionLevel admin
|
||||
|
||||
;--------------------------------
|
||||
;Variables
|
||||
|
||||
Var MUI_TEMP
|
||||
Var STARTMENU_FOLDER
|
||||
|
||||
;--------------------------------
|
||||
;Interface Settings
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
;--------------------------------
|
||||
;Pages
|
||||
|
||||
;Installer pages
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "SuperTuxKart\License.txt"
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
|
||||
;Start Menu Folder Page Configuration
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\SuperTuxKart"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
|
||||
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
|
||||
;Uninstaller pages
|
||||
!insertmacro MUI_UNPAGE_WELCOME
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
!insertmacro MUI_UNPAGE_FINISH
|
||||
|
||||
;--------------------------------
|
||||
;Languages
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English"
|
||||
|
||||
;--------------------------------
|
||||
;Installer Sections
|
||||
|
||||
Section "Main Section" SecMain
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
;Adds all the tux kart files
|
||||
File /r supertuxkart\*.*
|
||||
|
||||
;Store installation folder
|
||||
WriteRegStr HKCU "Software\SuperTuxKart" "" $INSTDIR
|
||||
|
||||
;Create uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
|
||||
;Create shortcuts
|
||||
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
|
||||
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\uninstall.ico"
|
||||
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Run.lnk" "$INSTDIR\supertuxkart.exe" "" "$INSTDIR\icon.ico"
|
||||
ShellLink::SetShortCutShowMode $SMPROGRAMS\$STARTMENU_FOLDER\Run.lnk 0
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section -Prerequisites
|
||||
SetOutPath $INSTDIR\Prerequisites
|
||||
MessageBox MB_YESNO "Install Microsoft VC++ runtime libraries?" /SD IDYES IDNO endVC
|
||||
File "prerequisites\vcredist_x86.exe"
|
||||
ExecWait "$INSTDIR\prerequisites\vcredist_x86.exe"
|
||||
Goto endVC
|
||||
endVC:
|
||||
MessageBox MB_YESNO "Install OpenAL sound libraries?" /SD IDYES IDNO endOA
|
||||
File "prerequisites\oalinst.exe"
|
||||
ExecWait "$INSTDIR\prerequisites\oalinst.exe"
|
||||
Goto endOA
|
||||
endOA:
|
||||
SectionEnd
|
||||
;--------------------------------
|
||||
;Uninstaller Section
|
||||
|
||||
Section "Uninstall"redist
|
||||
|
||||
;Removes all the supertuxkart data files
|
||||
RMDir /r /REBOOTOK $INSTDIR
|
||||
|
||||
Delete "$INSTDIR\Uninstall.exe"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
|
||||
;Remove start menuy items
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
||||
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\Run.lnk"
|
||||
|
||||
;Delete empty start menu parent diretories
|
||||
StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
|
||||
|
||||
startMenuDeleteLoop:
|
||||
ClearErrors
|
||||
RMDir $MUI_TEMP
|
||||
GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
|
||||
|
||||
IfErrors startMenuDeleteLoopDone
|
||||
|
||||
StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
|
||||
startMenuDeleteLoopDone:
|
||||
|
||||
|
||||
DeleteRegKey /ifempty HKCU "Software\SuperTuxKart"
|
||||
|
||||
SectionEnd
|
||||
|
BIN
src/windows_installer/uninstall.ico
Executable file
BIN
src/windows_installer/uninstall.ico
Executable file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
Reference in New Issue
Block a user