Merge branch 'master' of https://github.com/supertuxkart/stk-code
13
CHANGELOG.md
@@ -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
|
||||
|
||||
@@ -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
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 45 KiB |
1
data/po/.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.sh -crlf
|
||||
3
data/po/.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
transifex
|
||||
tx.exe
|
||||
tx.exe
|
||||
gui_strings.h
|
||||
|
||||
6477
data/po/ar.po
3801
data/po/be.po
Normal file
6385
data/po/bg.po
6441
data/po/bn.po
6592
data/po/br.po
6426
data/po/bs.po
6595
data/po/ca.po
6560
data/po/cs.po
6598
data/po/da.po
@@ -3366,4 +3366,4 @@ msgstr ""
|
||||
|
||||
#: src/states_screens/credits.cpp:209
|
||||
msgid "translator-credits"
|
||||
msgstr "Launchpad Contributions:"
|
||||
msgstr ""
|
||||
|
||||
6600
data/po/de.po
6550
data/po/el.po
6419
data/po/en_AU.po
6419
data/po/en_GB.po
6295
data/po/eo.po
6595
data/po/es.po
6413
data/po/eu.po
6422
data/po/fa.po
6595
data/po/fi.po
6385
data/po/fr.po
6423
data/po/fr_CA.po
6452
data/po/ga.po
6611
data/po/gd.po
6479
data/po/gl.po
6597
data/po/he.po
6373
data/po/hi.po
6418
data/po/hr.po
6514
data/po/hu.po
6449
data/po/hy.po
6464
data/po/id.po
6421
data/po/is.po
6524
data/po/it.po
6494
data/po/ja.po
6457
data/po/jbo.po
6301
data/po/ko.po
6607
data/po/kw.po
6438
data/po/ky.po
3792
data/po/la.po
Normal file
6350
data/po/lt.po
6603
data/po/lv.po
6419
data/po/mn_MN.po
6440
data/po/nb.po
3792
data/po/nb_NO.po
Normal file
6595
data/po/nl.po
6569
data/po/nn.po
3792
data/po/no.po
Normal file
3792
data/po/no_NO.po
Normal file
6433
data/po/os.po
6600
data/po/pl.po
6609
data/po/pt.po
6598
data/po/pt_BR.po
6332
data/po/ro.po
6608
data/po/ru.po
3792
data/po/sc.po
Normal file
6419
data/po/sco.po
6656
data/po/sk.po
6609
data/po/sl.po
6431
data/po/sq.po
6629
data/po/sr.po
6336
data/po/sv.po
6447
data/po/tr.po
6412
data/po/tt.po
6425
data/po/uk.po
@@ -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++
|
||||
|
||||
|
||||
6412
data/po/uz.po
6474
data/po/vi.po
3788
data/po/zh.po
Normal file
6547
data/po/zh_CN.po
6610
data/po/zh_TW.po
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||