This commit is contained in:
samuncle
2015-09-29 20:09:55 +02:00
114 changed files with 237519 additions and 186920 deletions

View File

@@ -1,3 +1,16 @@
## SupertTuxKart 0.9.1
* Many bug fixes
* Started to use scripting in tracks
* Significant audio performance improvements
* Smaller tweaks and improvements to several tracks including
** Math class
** XR591
** Fort Magma
** Gran Paradiso
** Subsea
* Tweak to challenges
* Better support for driving tracks in reverse
## SupertTuxKart 0.9 (April 2015)
* Fully shader-based rendering engine
* New tracks Cocoa Temple and Gran Paradiso

View File

@@ -19,6 +19,7 @@ option(USE_WIIUSE "Support for wiimote input devices" ON)
option(USE_FRIBIDI "Support for right-to-left languages" ON)
option(CHECK_ASSETS "Check if assets are installed in ../stk-assets" ON)
option(USE_SYSTEM_ANGELSCRIPT "Use system angelscript instead of built-in angelscript. If you enable this option, make sure to use a compatible version." OFF)
option(ENABLE_NETWORK_MULTIPLAYER "Enable network multiplayer. This will replace the online profile GUI in the main menu with the network multiplayer GUI" OFF)
if(MSVC AND (MSVC_VERSION LESS 1900))
# Normally hide the option to build wiiuse on VS, since it depends
@@ -123,9 +124,15 @@ endif()
# Build the angelscript library if not in system
find_package(Angelscript)
if(USE_SYSTEM_ANGELSCRIPT AND ANGELSCRIPT_FOUND)
include_directories(${Angelscript_INCLUDE_DIRS})
if(USE_SYSTEM_ANGELSCRIPT)
find_package(Angelscript)
if(ANGELSCRIPT_FOUND)
include_directories(${Angelscript_INCLUDE_DIRS})
else()
message(FATAL_ERROR "Angelscript not found. "
"Either install angelscript or use built-in version using "
"-DUSE_SYSTEM_ANGELSCRIPT=0")
endif()
else()
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/angelscript/projects/cmake")
include_directories("${PROJECT_SOURCE_DIR}/lib/angelscript/include")
@@ -205,6 +212,11 @@ if(MINGW AND CMAKE_BUILD_TYPE MATCHES Release)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--subsystem,windows")
endif()
# Netwowk Multiplayer
if(ENABLE_NETWORK_MULTIPLAYER)
add_definitions(-DENABLE_NETWORK_MULTIPLAYER_SCREEN)
endif()
if(WIN32)
# By default windows.h has macros defined for min and max that screw up everything
add_definitions(-DNOMINMAX)
@@ -408,24 +420,6 @@ endif()
add_subdirectory(tools/font_tool)
# ==== Make dist target ====
if(MSVC OR MINGW)
# Don't create a dist target for VS
else()
add_custom_target(dist
COMMAND rm -rf ${CMAKE_BINARY_DIR}/SuperTuxKart-${PROJECT_VERSION} && rm -f ${CMAKE_BINARY_DIR}/SuperTuxKart-${PROJECT_VERSION}.tar.bz2
&& echo "Exporting..."
&& svn export ${PROJECT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/SuperTuxKart-${PROJECT_VERSION}
&& echo "Compressing..."
&& cd ${CMAKE_BINARY_DIR}
&& tar -cjf ${CMAKE_BINARY_DIR}/SuperTuxKart-${PROJECT_VERSION}.tar.bz2 ./SuperTuxKart-${PROJECT_VERSION}
&& echo "Done, cleaning up"
&& rm -rf ${CMAKE_BINARY_DIR}/SuperTuxKart-${PROJECT_VERSION}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
endif()
# ==== Checking if data folder exists ====
if(NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data)
message( FATAL_ERROR "${CMAKE_CURRENT_SOURCE_DIR}/data folder doesn't exist" )

BIN
data/CREDITS Normal file → Executable file

Binary file not shown.

View File

@@ -10,11 +10,11 @@
</hard>
<medium>
<karts number="4"/>
<requirements position="2"/>
<requirements position="1"/>
</medium>
<easy>
<karts number="3"/>
<requirements position="3"/>
<requirements position="1"/>
</easy>
</challenge>

View File

@@ -6,15 +6,15 @@
<hard>
<karts number="5"/>
<requirements position="1" time="50"/>
<requirements position="1" time="65"/>
</hard>
<medium>
<karts number="5"/>
<requirements position="1" time="65"/>
<requirements position="1" time="85"/>
</medium>
<easy>
<karts number="5"/>
<requirements position="1" time="80"/>
<requirements position="1" time="105"/>
</easy>
</challenge>

Binary file not shown.

View File

@@ -1,22 +1,22 @@
<?xml version="1.0"?>
<materials>
<!-- Fonts -->
<material name="title_font.png" shader="unlit" lazy-load="Y"/>
<material name="title_font_2.png" shader="unlit" lazy-load="Y"/>
<material name="sigmar0.png" shader="unlit" lazy-load="Y"/>
<material name="comix.png" shader="unlit" lazy-load="Y"/>
<material name="LayneHansom0.png" shader="unlit" lazy-load="Y"/>
<material name="Mplus2p_JP0.png" shader="unlit" lazy-load="Y"/>
<material name="rasheeq0.png" shader="unlit" lazy-load="Y"/>
<material name="rasheeq3.png" shader="unlit" lazy-load="Y"/>
<material name="rasheeq4.png" shader="unlit" lazy-load="Y"/>
<material name="wqyMicroHei0.png" shader="unlit" lazy-load="Y"/>
<material name="wqyMicroHei1.png" shader="unlit" lazy-load="Y"/>
<material name="wqyMicroHei2.png" shader="unlit" lazy-load="Y"/>
<material name="wqyMicroHei3.png" shader="unlit" lazy-load="Y"/>
<material name="wqyMicroHei4.png" shader="unlit" lazy-load="Y"/>
<material name="wqyMicroHei5.png" shader="unlit" lazy-load="Y"/>
<material name="AR_PL_SungtiL_GB0.png" shader="unlit" lazy-load="Y"/>
<material name="LayneHansomBigDigits.png" shader="unlit" lazy-load="Y"/>
<material name="title_font.png" shader="unlit" dont-load="Y"/>
<material name="title_font_2.png" shader="unlit" dont-load="Y"/>
<material name="sigmar0.png" shader="unlit" dont-load="Y"/>
<material name="comix.png" shader="unlit" dont-load="Y"/>
<material name="LayneHansom0.png" shader="unlit" dont-load="Y"/>
<material name="Mplus2p_JP0.png" shader="unlit" dont-load="Y"/>
<material name="rasheeq0.png" shader="unlit" dont-load="Y"/>
<material name="rasheeq3.png" shader="unlit" dont-load="Y"/>
<material name="rasheeq4.png" shader="unlit" dont-load="Y"/>
<material name="wqyMicroHei0.png" shader="unlit" dont-load="Y"/>
<material name="wqyMicroHei1.png" shader="unlit" dont-load="Y"/>
<material name="wqyMicroHei2.png" shader="unlit" dont-load="Y"/>
<material name="wqyMicroHei3.png" shader="unlit" dont-load="Y"/>
<material name="wqyMicroHei4.png" shader="unlit" dont-load="Y"/>
<material name="wqyMicroHei5.png" shader="unlit" dont-load="Y"/>
<material name="AR_PL_SungtiL_GB0.png" shader="unlit" dont-load="Y"/>
<material name="LayneHansomBigDigits.png" shader="unlit" dont-load="Y"/>
</materials>

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 45 KiB

1
data/po/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.sh -crlf

3
data/po/.gitignore vendored
View File

@@ -1,2 +1,3 @@
transifex
tx.exe
tx.exe
gui_strings.h

File diff suppressed because it is too large Load Diff

3801
data/po/be.po Normal file

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

@@ -3366,4 +3366,4 @@ msgstr ""
#: src/states_screens/credits.cpp:209
msgid "translator-credits"
msgstr "Launchpad Contributions:"
msgstr ""

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

3792
data/po/la.po Normal file

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

3792
data/po/nb_NO.po Normal file

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

3792
data/po/no.po Normal file

File diff suppressed because it is too large Load Diff

3792
data/po/no_NO.po Normal file

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

3792
data/po/sc.po Normal file

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

@@ -52,7 +52,7 @@ xgettext -j -d supertuxkart --keyword=_ --keyword=N_ --keyword=_LTR \
--package-name=supertuxkart
# Angelscript files (xgettext doesn't support AS so pretend it's c++)
xgettext -j -d supertuxkart -s --keyword="translate" --add-comments="I18N:" \
xgettext -j -d supertuxkart --keyword="translate" --add-comments="I18N:" \
-p ./data/po -o supertuxkart.pot $ANGELSCRIPT_FILE_LIST \
--package-name=supertuxkart --language=c++

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

3788
data/po/zh.po Normal file

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

@@ -4,3 +4,5 @@ Atm there is no mechanism in place to verify this.
stk release svn version of assets
---------------------------------------
0.8.2-beta2 needs r15985
0.9 needs r16279
0.9.1-rc1 needs r16470

View File

@@ -2,6 +2,10 @@ cmake_minimum_required(VERSION 2.6)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
cmake_policy(SET CMP0003 NEW)
if(NOT (CMAKE_MAJOR_VERSION VERSION_LESS 3))
cmake_policy(SET CMP0048 OLD)
endif()
project(angelscript)
option(BUILD_SHARED_LIBS "Build shared library" OFF)
@@ -129,7 +133,7 @@ else()
endif()
add_library(${ANGELSCRIPT_LIBRARY_NAME} ${ANGELSCRIPT_SOURCE} ${ANGELSCRIPT_HEADERS})
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../lib)
#set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../../lib)
target_link_libraries(${ANGELSCRIPT_LIBRARY_NAME} ${CMAKE_THREAD_LIBS_INIT})
set_target_properties(${ANGELSCRIPT_LIBRARY_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
@@ -150,6 +154,6 @@ if(MSVC)
set_target_properties(${ANGELSCRIPT_LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "/MP")
endif()
set(RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../../bin)
#set(RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../../bin)

View File

@@ -912,8 +912,7 @@ bool CIrrDeviceLinux::createWindow()
// window is showed in wrong screen. It doesn't matter for vidmode
// which displays cloned image in all devices.
#ifdef _IRR_LINUX_X11_RANDR_
XResizeWindow(display, window, Width, Height);
XMoveWindow(display, window, crtc_x, crtc_y);
XMoveResizeWindow(display, window, crtc_x, crtc_y, Width, Height);
XRaiseWindow(display, window);
XFlush(display);
#endif

View File

@@ -520,6 +520,9 @@ namespace UserConfigParams
/** True if physics debugging should be enabled. */
PARAM_PREFIX bool m_physics_debug PARAM_DEFAULT( false );
/** True if fps should be printed each frame. */
PARAM_PREFIX bool m_fps_debug PARAM_DEFAULT(false);
/** True if slipstream debugging is activated. */
PARAM_PREFIX bool m_slipstream_debug PARAM_DEFAULT( false );

View File

@@ -157,7 +157,10 @@ IrrDriver::~IrrDriver()
delete m_shadow_matrices;
m_shadow_matrices = NULL;
Shaders::destroy();
if (CVS->isGLSL())
{
Shaders::destroy();
}
delete m_wind;
delete m_spherical_harmonics;
} // ~IrrDriver
@@ -422,7 +425,8 @@ void IrrDriver::initDevice()
m_device = NULL;
SIrrlichtCreationParameters params;
params.ForceLegacyDevice = UserConfigParams::m_force_legacy_device;
params.ForceLegacyDevice = (UserConfigParams::m_force_legacy_device ||
UserConfigParams::m_gamepad_visualisation);
// Try 32 and, upon failure, 24 then 16 bit per pixels
for (int bits=32; bits>15; bits -=8)
@@ -821,7 +825,10 @@ void IrrDriver::applyResolutionSettings()
GlowPassCmd::getInstance()->kill();
resetTextureTable();
// initDevice will drop the current device.
Shaders::destroy();
if (CVS->isGLSL())
{
Shaders::destroy();
}
initDevice();
// Re-init GUI engine

View File

@@ -73,7 +73,7 @@ Material::Material(const XMLNode *node, bool deprecated)
m_full_path = file_manager->getFileSystem()->getAbsolutePath(relativePath.c_str()).c_str();
init();
node->get("lazy-load", &m_lazy_load);
node->get("dont-load", &m_dont_load_texture);
bool b = false;
node->get("clampu", &b); if (b) m_clamp_tex |= UCLAMP; //blender 2.4 style
@@ -420,7 +420,7 @@ Material::Material(const std::string& fname, bool is_full_path,
*/
void Material::init()
{
m_lazy_load = false;
m_dont_load_texture = false;
m_texture = NULL;
m_clamp_tex = 0;
m_shader_type = SHADERTYPE_SOLID;
@@ -465,8 +465,8 @@ void Material::init()
//-----------------------------------------------------------------------------
void Material::install(bool is_full_path, bool complain_if_not_found)
{
// Don't load a texture that is lazily loaded.
if(m_lazy_load) return;
// Don't load a texture that are not supposed to be loaded automatically
if(m_dont_load_texture) return;
const std::string &full_path = is_full_path
? m_texname
@@ -477,6 +477,7 @@ void Material::install(bool is_full_path, bool complain_if_not_found)
Log::error("material", "Cannot find texture '%s'.", m_texname.c_str());
m_texture = NULL;
}
else
{
m_texture = irr_driver->getTexture(full_path,

View File

@@ -91,7 +91,7 @@ private:
* at load time, it must be loaded elsewhere. This is used to store
* material settings for font textures, without loading fonts for
* languages that might not be needed at all. */
bool m_lazy_load;
bool m_dont_load_texture;
/** Name of a special sfx to play when a kart is on this terrain, or
* "" if no special sfx exists. */
@@ -267,10 +267,10 @@ public:
/** Returns the ITexture associated with this material. */
video::ITexture *getTexture() const
{
// Note that atm lazy load means that the textures are not loaded
// via the material. So getTexture should only get called for non
// lazily loaded textures (used atm for font textures.
assert(!m_lazy_load);
// Note that dont load means that the textures are not loaded
// via the material. So getTexture should only get called for
// automatically loaded textures (used atm for font textures).
assert(!m_dont_load_texture);
return m_texture;
} // getTexture
// ------------------------------------------------------------------------

View File

@@ -111,84 +111,84 @@ irr::core::stringw Binding::getAsString() const
case 222: s="'"; break;
#endif
//I18N: input configuration screen: mouse button
case irr::KEY_LBUTTON : s = _("Left Mouse Button"); break;
case irr::KEY_LBUTTON : s = _C("input_key", "Left Mouse Button"); break;
//I18N: input configuration screen: mouse button
case irr::KEY_RBUTTON : s = _("Right Mouse Button"); break;
case irr::KEY_RBUTTON : s = _C("input_key", "Right Mouse Button"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_CANCEL : s = _("Cancel"); break;
case irr::KEY_CANCEL : s = _C("input_key", "Cancel"); break;
//I18N: input configuration screen: mouse button
case irr::KEY_MBUTTON : s = _("Middle Mouse Button"); break;
case irr::KEY_MBUTTON : s = _C("input_key", "Middle Mouse Button"); break;
//I18N: input configuration screen: mouse button
case irr::KEY_XBUTTON1 : s = _("X1 Mouse Button"); break;
case irr::KEY_XBUTTON1 : s = _C("input_key", "X1 Mouse Button"); break;
//I18N: input configuration screen: mouse button
case irr::KEY_XBUTTON2 : s = _("X2 Mouse Button"); break;
case irr::KEY_XBUTTON2 : s = _C("input_key", "X2 Mouse Button"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_BACK : s = _("Backspace"); break;
case irr::KEY_BACK : s = _C("input_key", "Backspace"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_TAB : s = _("Tab"); break;
case irr::KEY_TAB : s = _C("input_key", "Tab"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_CLEAR : s = _("Clear"); break;
case irr::KEY_CLEAR : s = _C("input_key", "Clear"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_RETURN : s = _("Return"); break;
case irr::KEY_RETURN : s = _C("input_key", "Return"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SHIFT : s = _("Shift"); break;
case irr::KEY_SHIFT : s = _C("input_key", "Shift"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_CONTROL : s = _("Control"); break;
case irr::KEY_CONTROL : s = _C("input_key", "Control"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_MENU : s = _("Alt/Menu"); break;
case irr::KEY_MENU : s = _C("input_key", "Alt/Menu"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_PAUSE : s = _("Pause"); break;
case irr::KEY_PAUSE : s = _C("input_key", "Pause"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_CAPITAL : s = _("Caps Lock"); break;
case irr::KEY_CAPITAL : s = _C("input_key", "Caps Lock"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_KANA : s = _("Kana"); break;
case irr::KEY_KANA : s = _C("input_key", "Kana"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_JUNJA : s = _("Junja"); break;
case irr::KEY_JUNJA : s = _C("input_key", "Junja"); break;
//I18N: input configuration screen: keyboard key
//I18N: input configuration screen: keyboard key
case irr::KEY_FINAL : s = _("Final"); break;
case irr::KEY_FINAL : s = _C("input_key", "Final"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_ESCAPE : s = _("Escape"); break;
case irr::KEY_ESCAPE : s = _C("input_key", "Escape"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_CONVERT : s = _("Convert"); break;
case irr::KEY_CONVERT : s = _C("input_key", "Convert"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NONCONVERT : s = _("Nonconvert"); break;
case irr::KEY_NONCONVERT : s = _C("input_key", "Nonconvert"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_ACCEPT : s = _("Accept"); break;
case irr::KEY_ACCEPT : s = _C("input_key", "Accept"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_MODECHANGE : s = _("Modechange"); break;
case irr::KEY_MODECHANGE : s = _C("input_key", "Modechange"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SPACE : s = _("Space"); break;
case irr::KEY_SPACE : s = _C("input_key", "Space"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_PRIOR : s = _("Page Up"); break;
case irr::KEY_PRIOR : s = _C("input_key", "Page Up"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NEXT : s = _("Page Down"); break;
case irr::KEY_NEXT : s = _C("input_key", "Page Down"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_END : s = _("End"); break;
case irr::KEY_END : s = _C("input_key", "End"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_HOME : s = _("Home"); break;
case irr::KEY_HOME : s = _C("input_key", "Home"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_LEFT : s = _("Left"); break;
case irr::KEY_LEFT : s = _C("input_key", "Left"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_UP : s = _("Up"); break;
case irr::KEY_UP : s = _C("input_key", "Up"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_RIGHT : s = _("Right"); break;
case irr::KEY_RIGHT : s = _C("input_key", "Right"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_DOWN : s = _("Down"); break;
case irr::KEY_DOWN : s = _C("input_key", "Down"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SELECT : s = _("Select"); break;
case irr::KEY_SELECT : s = _C("input_key", "Select"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_PRINT : s = _("Print"); break;
case irr::KEY_PRINT : s = _C("input_key", "Print"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_EXECUT : s = _("Exec"); break;
case irr::KEY_EXECUT : s = _C("input_key", "Exec"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SNAPSHOT : s = _("Print Screen"); break;
case irr::KEY_SNAPSHOT : s = _C("input_key", "Print Screen"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_INSERT : s = _("Insert"); break;
case irr::KEY_INSERT : s = _C("input_key", "Insert"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_DELETE : s = _("Delete"); break;
case irr::KEY_DELETE : s = _C("input_key", "Delete"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_HELP : s = _("Help"); break;
case irr::KEY_HELP : s = _C("input_key", "Help"); break;
case irr::KEY_KEY_0 : s = "0"; break;
case irr::KEY_KEY_1 : s = "1"; break;
case irr::KEY_KEY_2 : s = "2"; break;
@@ -226,43 +226,43 @@ irr::core::stringw Binding::getAsString() const
case irr::KEY_KEY_Y : s = "Y"; break;
case irr::KEY_KEY_Z : s = "Z"; break;
//I18N: input configuration screen: keyboard key
case irr::KEY_LWIN : s = _("Left Logo"); break;
case irr::KEY_LWIN : s = _C("input_key", "Left Logo"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_RWIN : s = _("Right Logo"); break;
case irr::KEY_RWIN : s = _C("input_key", "Right Logo"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_APPS : s = _("Apps"); break;
case irr::KEY_APPS : s = _C("input_key", "Apps"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SLEEP : s = _("Sleep"); break;
case irr::KEY_SLEEP : s = _C("input_key", "Sleep"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD0 : s = _("Numpad 0"); break;
case irr::KEY_NUMPAD0 : s = _C("input_key", "Numpad 0"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD1 : s = _("Numpad 1"); break;
case irr::KEY_NUMPAD1 : s = _C("input_key", "Numpad 1"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD2 : s = _("Numpad 2"); break;
case irr::KEY_NUMPAD2 : s = _C("input_key", "Numpad 2"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD3 : s = _("Numpad 3"); break;
case irr::KEY_NUMPAD3 : s = _C("input_key", "Numpad 3"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD4 : s = _("Numpad 4"); break;
case irr::KEY_NUMPAD4 : s = _C("input_key", "Numpad 4"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD5 : s = _("Numpad 5"); break;
case irr::KEY_NUMPAD5 : s = _C("input_key", "Numpad 5"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD6 : s = _("Numpad 6"); break;
case irr::KEY_NUMPAD6 : s = _C("input_key", "Numpad 6"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD7 : s = _("Numpad 7"); break;
case irr::KEY_NUMPAD7 : s = _C("input_key", "Numpad 7"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD8 : s = _("Numpad 8"); break;
case irr::KEY_NUMPAD8 : s = _C("input_key", "Numpad 8"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMPAD9 : s = _("Numpad 9"); break;
case irr::KEY_NUMPAD9 : s = _C("input_key", "Numpad 9"); break;
case irr::KEY_MULTIPLY : s = "*"; break;
case irr::KEY_ADD : s = "+"; break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SEPARATOR : s = _("Separator"); break;
case irr::KEY_SEPARATOR : s = _C("input_key", "Separator"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SUBTRACT : s = _("- (Subtract)"); break;
case irr::KEY_SUBTRACT : s = _C("input_key", "- (Subtract)"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_DECIMAL : s = _("Decimal"); break;
case irr::KEY_DECIMAL : s = _C("input_key", "Decimal"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_DIVIDE : s = _("/ (Divide)"); break;
case irr::KEY_DIVIDE : s = _C("input_key", "/ (Divide)"); break;
case irr::KEY_F1 : s = "F1"; break;
case irr::KEY_F2 : s = "F2"; break;
case irr::KEY_F3 : s = "F3"; break;
@@ -288,41 +288,41 @@ irr::core::stringw Binding::getAsString() const
case irr::KEY_F23 : s = "F23"; break;
case irr::KEY_F24 : s = "F24"; break;
//I18N: input configuration screen: keyboard key
case irr::KEY_NUMLOCK : s = _("Num Lock"); break;
case irr::KEY_NUMLOCK : s = _C("input_key", "Num Lock"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_SCROLL : s = _("Scroll Lock"); break;
case irr::KEY_SCROLL : s = _C("input_key", "Scroll Lock"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_LSHIFT : s = _("Left Shift"); break;
case irr::KEY_LSHIFT : s = _C("input_key", "Left Shift"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_RSHIFT : s = _("Right Shift"); break;
case irr::KEY_RSHIFT : s = _C("input_key", "Right Shift"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_LCONTROL : s = _("Left Control"); break;
case irr::KEY_LCONTROL : s = _C("input_key", "Left Control"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_RCONTROL : s = _("Right Control"); break;
case irr::KEY_RCONTROL : s = _C("input_key", "Right Control"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_LMENU : s = _("Left Menu"); break;
case irr::KEY_LMENU : s = _C("input_key", "Left Menu"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_RMENU : s = _("Right Menu"); break;
case irr::KEY_RMENU : s = _C("input_key", "Right Menu"); break;
case irr::KEY_PLUS : s = "+"; break;
case irr::KEY_COMMA : s = ","; break;
case irr::KEY_MINUS : s = "-"; break;
case irr::KEY_PERIOD : s = "."; break;
//I18N: input configuration screen: keyboard key
case irr::KEY_ATTN : s = _("Attn"); break;
case irr::KEY_ATTN : s = _C("input_key", "Attn"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_CRSEL : s = _("Crsel"); break;
case irr::KEY_CRSEL : s = _C("input_key", "Crsel"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_EXSEL : s = _("Exsel"); break;
case irr::KEY_EXSEL : s = _C("input_key", "Exsel"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_EREOF : s = _("Ereof"); break;
case irr::KEY_EREOF : s = _C("input_key", "Ereof"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_PLAY : s = _("Play"); break;
case irr::KEY_PLAY : s = _C("input_key", "Play"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_ZOOM : s = _("Zoom"); break;
case irr::KEY_ZOOM : s = _C("input_key", "Zoom"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_PA1 : s = _("Pa1"); break;
case irr::KEY_PA1 : s = _C("input_key", "Pa1"); break;
//I18N: input configuration screen: keyboard key
case irr::KEY_OEM_CLEAR : s = _("Oem Clear"); break;
case irr::KEY_OEM_CLEAR : s = _C("input_key", "Oem Clear"); break;
}
break;

View File

@@ -321,6 +321,24 @@ void PlayerController::update(float dt)
if (!history->replayHistory())
steer(dt, m_steer_val);
// look backward when the player requests or
// if automatic reverse camera is active
if (m_camera->getMode() != Camera::CM_FINAL)
{
if (m_controls->m_look_back || (UserConfigParams::m_reverse_look_threshold > 0 &&
m_kart->getSpeed() < -UserConfigParams::m_reverse_look_threshold))
{
m_camera->setMode(Camera::CM_REVERSE);
}
else
{
if (m_camera->getMode() == Camera::CM_REVERSE)
m_camera->setMode(Camera::CM_NORMAL);
}
}
if (World::getWorld()->isStartPhase())
{
if (m_controls->m_accel || m_controls->m_brake ||
@@ -358,21 +376,7 @@ void PlayerController::update(float dt)
return;
}
// look backward when the player requests or
// if automatic reverse camera is active
if (m_camera->getMode() != Camera::CM_FINAL)
{
if (m_controls->m_look_back || (UserConfigParams::m_reverse_look_threshold>0 &&
m_kart->getSpeed()<-UserConfigParams::m_reverse_look_threshold))
{
m_camera->setMode(Camera::CM_REVERSE);
}
else
{
if (m_camera->getMode() == Camera::CM_REVERSE)
m_camera->setMode(Camera::CM_NORMAL);
}
}
// We can't restrict rescue to fulfil isOnGround() (which would be more like
// MK), since e.g. in the City track it is possible for the kart to end

View File

@@ -1778,6 +1778,8 @@ void Kart::crashed(AbstractKart *k, bool update_attachments)
// -----------------------------------------------------------------------------
/** Kart hits the track with a given material.
* \param m Material hit, can be NULL if no specific material exists.
* \param normal The normal of the hit (used to push a kart back, which avoids
* that karts sometimes can get stuck).
*/
void Kart::crashed(const Material *m, const Vec3 &normal)
{

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