mirror of
https://github.com/minetest/minetest.git
synced 2024-08-20 05:24:15 +02:00
Irrlicht support changes (#14383)
This commit is contained in:
parent
84dd812da4
commit
e3cc26cb7c
@ -198,11 +198,18 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
|
|||||||
while (m_rendering_engine->run() && !*kill &&
|
while (m_rendering_engine->run() && !*kill &&
|
||||||
!g_gamecallback->shutdown_requested) {
|
!g_gamecallback->shutdown_requested) {
|
||||||
// Set the window caption
|
// Set the window caption
|
||||||
|
#if IRRLICHT_VERSION_MT_REVISION >= 15
|
||||||
|
auto driver_name = m_rendering_engine->getVideoDriver()->getName();
|
||||||
|
#else
|
||||||
|
auto driver_name = wide_to_utf8(m_rendering_engine->getVideoDriver()->getName());
|
||||||
|
#endif
|
||||||
|
std::string caption = std::string(PROJECT_NAME_C) +
|
||||||
|
" " + g_version_hash +
|
||||||
|
" [" + gettext("Main Menu") + "]" +
|
||||||
|
" [" + driver_name + "]";
|
||||||
|
|
||||||
m_rendering_engine->get_raw_device()->
|
m_rendering_engine->get_raw_device()->
|
||||||
setWindowCaption((utf8_to_wide(PROJECT_NAME_C) +
|
setWindowCaption(utf8_to_wide(caption).c_str());
|
||||||
L" " + utf8_to_wide(g_version_hash) +
|
|
||||||
L" [" + wstrgettext("Main Menu") + L"]" +
|
|
||||||
L" [" + m_rendering_engine->getVideoDriver()->getName() + L"]" ).c_str());
|
|
||||||
|
|
||||||
try { // This is used for catching disconnects
|
try { // This is used for catching disconnects
|
||||||
|
|
||||||
|
@ -1551,18 +1551,20 @@ bool Game::createClient(const GameStartData &start_data)
|
|||||||
|
|
||||||
/* Set window caption
|
/* Set window caption
|
||||||
*/
|
*/
|
||||||
std::wstring str = utf8_to_wide(PROJECT_NAME_C);
|
#if IRRLICHT_VERSION_MT_REVISION >= 15
|
||||||
str += L" ";
|
auto driver_name = driver->getName();
|
||||||
str += utf8_to_wide(g_version_hash);
|
#else
|
||||||
str += L" [";
|
auto driver_name = wide_to_utf8(driver->getName());
|
||||||
str += simple_singleplayer_mode ? wstrgettext("Singleplayer")
|
#endif
|
||||||
: wstrgettext("Multiplayer");
|
std::string str = std::string(PROJECT_NAME_C) +
|
||||||
str += L"]";
|
" " + g_version_hash + " [";
|
||||||
str += L" [";
|
str += simple_singleplayer_mode ? gettext("Singleplayer")
|
||||||
str += driver->getName();
|
: gettext("Multiplayer");
|
||||||
str += L"]";
|
str += "] [";
|
||||||
|
str += driver_name;
|
||||||
|
str += "]";
|
||||||
|
|
||||||
device->setWindowCaption(str.c_str());
|
device->setWindowCaption(utf8_to_wide(str).c_str());
|
||||||
|
|
||||||
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
||||||
player->hurt_tilt_timer = 0;
|
player->hurt_tilt_timer = 0;
|
||||||
|
@ -240,37 +240,6 @@ CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filen
|
|||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGUITTFont* CGUITTFont::createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias, const bool transparency)
|
|
||||||
{
|
|
||||||
if (!c_libraryLoaded)
|
|
||||||
{
|
|
||||||
if (FT_Init_FreeType(&c_library))
|
|
||||||
return 0;
|
|
||||||
c_libraryLoaded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
CGUITTFont* font = new CGUITTFont(device->getGUIEnvironment());
|
|
||||||
font->Device = device;
|
|
||||||
bool ret = font->load(filename, size, antialias, transparency);
|
|
||||||
if (!ret)
|
|
||||||
{
|
|
||||||
font->drop();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return font;
|
|
||||||
}
|
|
||||||
|
|
||||||
CGUITTFont* CGUITTFont::create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias, const bool transparency)
|
|
||||||
{
|
|
||||||
return CGUITTFont::createTTFont(env, filename, size, antialias, transparency);
|
|
||||||
}
|
|
||||||
|
|
||||||
CGUITTFont* CGUITTFont::create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias, const bool transparency)
|
|
||||||
{
|
|
||||||
return CGUITTFont::createTTFont(device, filename, size, antialias, transparency);
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////
|
//////////////////////
|
||||||
|
|
||||||
//! Constructor.
|
//! Constructor.
|
||||||
@ -304,6 +273,7 @@ bool CGUITTFont::load(const io::path& filename, const u32 size, const bool antia
|
|||||||
|
|
||||||
io::IFileSystem* filesystem = Environment->getFileSystem();
|
io::IFileSystem* filesystem = Environment->getFileSystem();
|
||||||
irr::ILogger* logger = (Device != 0 ? Device->getLogger() : 0);
|
irr::ILogger* logger = (Device != 0 ? Device->getLogger() : 0);
|
||||||
|
// FIXME: this is always null ^
|
||||||
this->size = size;
|
this->size = size;
|
||||||
this->filename = filename;
|
this->filename = filename;
|
||||||
|
|
||||||
@ -314,7 +284,7 @@ bool CGUITTFont::load(const io::path& filename, const u32 size, const bool antia
|
|||||||
|
|
||||||
// Log.
|
// Log.
|
||||||
if (logger)
|
if (logger)
|
||||||
logger->log(L"CGUITTFont", core::stringw(core::stringw(L"Creating new font: ") + core::stringw(filename) + L" " + core::stringc(size) + L"pt " + (antialias ? L"+antialias " : L"-antialias ") + (transparency ? L"+transparency" : L"-transparency")).c_str(), irr::ELL_INFORMATION);
|
logger->log("CGUITTFont", (core::stringc(L"Creating new font: ") + filename + " " + core::stringc(size) + "pt " + (antialias ? "+antialias " : "-antialias ") + (transparency ? "+transparency" : "-transparency")).c_str(), irr::ELL_INFORMATION);
|
||||||
|
|
||||||
// Grab the face.
|
// Grab the face.
|
||||||
SGUITTFace* face = 0;
|
SGUITTFace* face = 0;
|
||||||
@ -330,7 +300,7 @@ bool CGUITTFont::load(const io::path& filename, const u32 size, const bool antia
|
|||||||
io::IReadFile* file = filesystem->createAndOpenFile(filename);
|
io::IReadFile* file = filesystem->createAndOpenFile(filename);
|
||||||
if (file == 0)
|
if (file == 0)
|
||||||
{
|
{
|
||||||
if (logger) logger->log(L"CGUITTFont", L"Failed to open the file.", irr::ELL_INFORMATION);
|
if (logger) logger->log("CGUITTFont", "Failed to open the file.", irr::ELL_INFORMATION);
|
||||||
|
|
||||||
c_faces.erase(filename);
|
c_faces.erase(filename);
|
||||||
delete face;
|
delete face;
|
||||||
@ -345,7 +315,7 @@ bool CGUITTFont::load(const io::path& filename, const u32 size, const bool antia
|
|||||||
// Create the face.
|
// Create the face.
|
||||||
if (FT_New_Memory_Face(c_library, face->face_buffer, face->face_buffer_size, 0, &face->face))
|
if (FT_New_Memory_Face(c_library, face->face_buffer, face->face_buffer_size, 0, &face->face))
|
||||||
{
|
{
|
||||||
if (logger) logger->log(L"CGUITTFont", L"FT_New_Memory_Face failed.", irr::ELL_INFORMATION);
|
if (logger) logger->log("CGUITTFont", "FT_New_Memory_Face failed.", irr::ELL_INFORMATION);
|
||||||
|
|
||||||
c_faces.erase(filename);
|
c_faces.erase(filename);
|
||||||
delete face;
|
delete face;
|
||||||
@ -357,7 +327,7 @@ bool CGUITTFont::load(const io::path& filename, const u32 size, const bool antia
|
|||||||
{
|
{
|
||||||
if (FT_New_Face(c_library, reinterpret_cast<const char*>(filename.c_str()), 0, &face->face))
|
if (FT_New_Face(c_library, reinterpret_cast<const char*>(filename.c_str()), 0, &face->face))
|
||||||
{
|
{
|
||||||
if (logger) logger->log(L"CGUITTFont", L"FT_New_Face failed.", irr::ELL_INFORMATION);
|
if (logger) logger->log("CGUITTFont", "FT_New_Face failed.", irr::ELL_INFORMATION);
|
||||||
|
|
||||||
c_faces.erase(filename);
|
c_faces.erase(filename);
|
||||||
delete face;
|
delete face;
|
||||||
|
@ -229,9 +229,6 @@ namespace gui
|
|||||||
//! \param transparency set the use_transparency flag
|
//! \param transparency set the use_transparency flag
|
||||||
//! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.
|
//! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.
|
||||||
static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true, const u32 shadow = 0, const u32 shadow_alpha = 255);
|
static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true, const u32 shadow = 0, const u32 shadow_alpha = 255);
|
||||||
static CGUITTFont* createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
|
||||||
static CGUITTFont* create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
|
||||||
static CGUITTFont* create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
|
|
||||||
|
|
||||||
//! Destructor
|
//! Destructor
|
||||||
virtual ~CGUITTFont();
|
virtual ~CGUITTFont();
|
||||||
|
@ -29,33 +29,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
using namespace irr;
|
using namespace irr;
|
||||||
|
|
||||||
namespace irr {
|
#define S8_MIN INT8_MIN
|
||||||
|
#define S16_MIN INT16_MIN
|
||||||
|
#define S32_MIN INT32_MIN
|
||||||
|
#define S64_MIN INT64_MIN
|
||||||
|
|
||||||
// Define missing constant for vector math with 16-bit numbers
|
#define S8_MAX INT8_MAX
|
||||||
namespace core {
|
#define S16_MAX INT16_MAX
|
||||||
template <typename T>
|
#define S32_MAX INT32_MAX
|
||||||
inline T roundingError();
|
#define S64_MAX INT64_MAX
|
||||||
|
|
||||||
template <>
|
#define U8_MAX UINT8_MAX
|
||||||
inline s16 roundingError()
|
#define U16_MAX UINT16_MAX
|
||||||
{
|
#define U32_MAX UINT32_MAX
|
||||||
return 0;
|
#define U64_MAX UINT64_MAX
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#define S8_MIN (-0x7F - 1)
|
|
||||||
#define S16_MIN (-0x7FFF - 1)
|
|
||||||
#define S32_MIN (-0x7FFFFFFF - 1)
|
|
||||||
#define S64_MIN (-0x7FFFFFFFFFFFFFFF - 1)
|
|
||||||
|
|
||||||
#define S8_MAX 0x7F
|
|
||||||
#define S16_MAX 0x7FFF
|
|
||||||
#define S32_MAX 0x7FFFFFFF
|
|
||||||
#define S64_MAX 0x7FFFFFFFFFFFFFFF
|
|
||||||
|
|
||||||
#define U8_MAX 0xFF
|
|
||||||
#define U16_MAX 0xFFFF
|
|
||||||
#define U32_MAX 0xFFFFFFFF
|
|
||||||
#define U64_MAX 0xFFFFFFFFFFFFFFFF
|
|
||||||
|
@ -234,8 +234,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
|
#define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
|
||||||
|
|
||||||
// Client's supported network protocol range
|
// Client's supported network protocol range
|
||||||
// The minimal version depends on whether
|
|
||||||
// send_pre_v25_init is enabled or not
|
|
||||||
#define CLIENT_PROTOCOL_VERSION_MIN 37
|
#define CLIENT_PROTOCOL_VERSION_MIN 37
|
||||||
#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
|
#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
|
||||||
|
|
||||||
|
@ -963,7 +963,12 @@ int ModApiMainMenu::l_get_active_driver(lua_State *L)
|
|||||||
|
|
||||||
int ModApiMainMenu::l_get_active_renderer(lua_State *L)
|
int ModApiMainMenu::l_get_active_renderer(lua_State *L)
|
||||||
{
|
{
|
||||||
lua_pushstring(L, wide_to_utf8(RenderingEngine::get_video_driver()->getName()).c_str());
|
#if IRRLICHT_VERSION_MT_REVISION >= 15
|
||||||
|
lua_pushstring(L, RenderingEngine::get_video_driver()->getName());
|
||||||
|
#else
|
||||||
|
auto tmp = wide_to_utf8(RenderingEngine::get_video_driver()->getName());
|
||||||
|
lua_pushstring(L, tmp.c_str());
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -515,8 +515,9 @@ void PlayerSAO::setHP(s32 target_hp, const PlayerHPChangeReason &reason, bool fr
|
|||||||
return; // Nothing to do
|
return; // Nothing to do
|
||||||
|
|
||||||
s32 hp_change = m_env->getScriptIface()->on_player_hpchange(this, target_hp - (s32)m_hp, reason);
|
s32 hp_change = m_env->getScriptIface()->on_player_hpchange(this, target_hp - (s32)m_hp, reason);
|
||||||
|
hp_change = std::min<s32>(hp_change, U16_MAX); // Protect against overflow
|
||||||
|
|
||||||
s32 hp = (s32)m_hp + std::min(hp_change, U16_MAX); // Protection against s32 overflow
|
s32 hp = (s32)m_hp + hp_change;
|
||||||
hp = rangelim(hp, 0, U16_MAX);
|
hp = rangelim(hp, 0, U16_MAX);
|
||||||
|
|
||||||
if (hp > m_prop.hp_max)
|
if (hp > m_prop.hp_max)
|
||||||
|
Loading…
Reference in New Issue
Block a user