Fix
This commit is contained in:
parent
9251e980f8
commit
b05a829924
|
@ -47,7 +47,6 @@ gtags.files
|
|||
## Configuration/log files
|
||||
minetest.conf
|
||||
debug.txt
|
||||
Thumbs.db
|
||||
|
||||
## Doxygen files
|
||||
doc/Doxyfile
|
||||
|
@ -81,8 +80,6 @@ build/android/Debug
|
|||
build/android/deps
|
||||
build/android/gen
|
||||
build/android/jni/src
|
||||
## Need for WVersionManager
|
||||
##build/android/libs
|
||||
build/android/obj
|
||||
build/android/path.cfg
|
||||
build/android/and_env
|
||||
|
|
|
@ -611,7 +611,6 @@ curl_binary:
|
|||
tar -xzf curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android.tar.gz || exit 1;\
|
||||
mv curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android curl-${CURL_VERSION_BINARY};\
|
||||
rm curl-7.34.0-rtmp-ssh2-ssl-zlib-static-bin-android.tar.gz; \
|
||||
\
|
||||
fi
|
||||
|
||||
$(GMP_TIMESTAMP) : gmp_download
|
||||
|
|
|
@ -23,7 +23,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "mapgen_v5.h"
|
||||
#include "mapgen_v6.h"
|
||||
#include "mapgen_v7.h"
|
||||
#include "mapgen_fractal.h"
|
||||
#include "cavegen.h"
|
||||
|
||||
NoiseParams nparams_caveliquids(0, 1, v3f(150.0, 150.0, 150.0), 776, 3, 0.6, 2.0);
|
||||
|
|
|
@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
class MapgenV5;
|
||||
class MapgenV6;
|
||||
class MapgenV7;
|
||||
class MapgenFractal;
|
||||
|
||||
class CaveV5 {
|
||||
public:
|
||||
|
|
|
@ -34,10 +34,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "fontengine.h"
|
||||
#include "clientlauncher.h"
|
||||
|
||||
#ifdef ANDROID
|
||||
#include "porting_android.h"
|
||||
#endif
|
||||
|
||||
/* mainmenumanager.h
|
||||
*/
|
||||
gui::IGUIEnvironment *guienv = NULL;
|
||||
|
@ -71,11 +67,8 @@ u32 getTime(TimePrecision prec) {
|
|||
|
||||
ClientLauncher::~ClientLauncher()
|
||||
{
|
||||
if (receiver) {
|
||||
if (device)
|
||||
device->setEventReceiver(NULL);
|
||||
if (receiver)
|
||||
delete receiver;
|
||||
}
|
||||
|
||||
if (input)
|
||||
delete input;
|
||||
|
@ -83,10 +76,8 @@ ClientLauncher::~ClientLauncher()
|
|||
if (g_fontengine)
|
||||
delete g_fontengine;
|
||||
|
||||
if (device) {
|
||||
device->closeDevice();
|
||||
if (device)
|
||||
device->drop();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -196,10 +187,6 @@ bool ClientLauncher::run(GameParams &game_params, const Settings &cmd_args)
|
|||
device->setWindowCaption((utf8_to_wide(PROJECT_NAME_C) + L" [" + text + L"]").c_str());
|
||||
delete[] text;
|
||||
|
||||
#ifdef ANDROID
|
||||
porting::handleAndroidActivityEvents();
|
||||
#endif
|
||||
|
||||
try { // This is used for catching disconnects
|
||||
|
||||
guienv->clear();
|
||||
|
|
|
@ -337,7 +337,7 @@ void set_default_settings(Settings *settings)
|
|||
settings->setDefault("enable_particles", "false");
|
||||
settings->setDefault("video_driver", "ogles1");
|
||||
settings->setDefault("touchtarget", "true");
|
||||
settings->setDefault("TMPFolder","/sdcard/Android/data/net.MultiCraft.Official/tmp/");
|
||||
settings->setDefault("TMPFolder","/sdcard/tmp/");
|
||||
settings->setDefault("touchscreen_threshold","20");
|
||||
settings->setDefault("smooth_lighting", "false");
|
||||
settings->setDefault("emergequeue_limit_diskonly", "8");
|
||||
|
@ -348,7 +348,7 @@ void set_default_settings(Settings *settings)
|
|||
settings->setDefault("viewing_range_nodes_min", "5");
|
||||
settings->setDefault("enable_node_highlighting", "true");
|
||||
settings->setDefault("inventory_image_hack", "true");
|
||||
settings->setDefault("minimap_double_scan_height", "false");
|
||||
//settings->setDefault("minimap_double_scan_height", "false");
|
||||
settings->setDefault("mouse_sensitivity", "0.05");
|
||||
settings->setDefault("enable_3d_clouds", "false");
|
||||
settings->setDefault("wanted_fps", "20");
|
||||
|
@ -363,6 +363,7 @@ void set_default_settings(Settings *settings)
|
|||
else if (x_inches < 4.5) {
|
||||
settings->setDefault("hud_scaling", "0.7");
|
||||
}
|
||||
settings->setDefault("gui_scaling", "1.1");
|
||||
settings->setDefault("curl_verify_cert","false");
|
||||
#else
|
||||
settings->setDefault("screen_dpi", "72");
|
||||
|
|
117
src/game.cpp
117
src/game.cpp
|
@ -68,10 +68,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "touchscreengui.h"
|
||||
#endif
|
||||
|
||||
#ifdef ANDROID
|
||||
#include "porting_android.h"
|
||||
#endif
|
||||
|
||||
extern Settings *g_settings;
|
||||
extern Profiler *g_profiler;
|
||||
|
||||
|
@ -282,11 +278,11 @@ public:
|
|||
Check if a node is pointable
|
||||
*/
|
||||
inline bool isPointableNode(const MapNode &n,
|
||||
Client *client, bool liquids_pointable)
|
||||
Client *client, bool liquids_pointable)
|
||||
{
|
||||
const ContentFeatures &features = client->getNodeDefManager()->get(n);
|
||||
return features.pointable ||
|
||||
(liquids_pointable && features.isLiquid());
|
||||
(liquids_pointable && features.isLiquid());
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -321,8 +317,8 @@ PointedThing getPointedThing(Client *client, v3f player_position,
|
|||
|
||||
v3f pos = selected_object->getPosition();
|
||||
hilightboxes.push_back(aabb3f(
|
||||
selection_box->MinEdge + pos - intToFloat(camera_offset, BS),
|
||||
selection_box->MaxEdge + pos - intToFloat(camera_offset, BS)));
|
||||
selection_box->MinEdge + pos - intToFloat(camera_offset, BS),
|
||||
selection_box->MaxEdge + pos - intToFloat(camera_offset, BS)));
|
||||
}
|
||||
|
||||
mindistance = (selected_object->getPosition() - camera_position).getLength();
|
||||
|
@ -905,8 +901,8 @@ bool nodePlacementPrediction(Client &client,
|
|||
|
||||
if (prediction != "" && !nodedef->get(node).rightclickable) {
|
||||
verbosestream << "Node placement prediction for "
|
||||
<< playeritem_def.name << " is "
|
||||
<< prediction << std::endl;
|
||||
<< playeritem_def.name << " is "
|
||||
<< prediction << std::endl;
|
||||
v3s16 p = neighbourpos;
|
||||
|
||||
// Place inside node itself if buildable_to
|
||||
|
@ -928,9 +924,9 @@ bool nodePlacementPrediction(Client &client,
|
|||
|
||||
if (!found) {
|
||||
errorstream << "Node placement prediction failed for "
|
||||
<< playeritem_def.name << " (places "
|
||||
<< prediction
|
||||
<< ") - Name not known" << std::endl;
|
||||
<< playeritem_def.name << " (places "
|
||||
<< prediction
|
||||
<< ") - Name not known" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1003,9 +999,9 @@ bool nodePlacementPrediction(Client &client,
|
|||
}
|
||||
} catch (InvalidPositionException &e) {
|
||||
errorstream << "Node placement prediction failed for "
|
||||
<< playeritem_def.name << " (places "
|
||||
<< prediction
|
||||
<< ") - Position not loaded" << std::endl;
|
||||
<< playeritem_def.name << " (places "
|
||||
<< prediction
|
||||
<< ") - Position not loaded" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1020,7 +1016,7 @@ static inline void create_formspec_menu(GUIFormSpecMenu **cur_formspec,
|
|||
|
||||
if (*cur_formspec == 0) {
|
||||
*cur_formspec = new GUIFormSpecMenu(device, guiroot, -1, &g_menumgr,
|
||||
invmgr, gamedef, tsrc, fs_src, txt_dest, client);
|
||||
invmgr, gamedef, tsrc, fs_src, txt_dest, client);
|
||||
(*cur_formspec)->doPause = false;
|
||||
|
||||
/*
|
||||
|
@ -1204,13 +1200,14 @@ static void updateChat(Client &client, f32 dtime, bool show_debug,
|
|||
|
||||
// first pass to calculate height of text to be set
|
||||
s32 width = std::min(g_fontengine->getTextWidth(recent_chat) + 10,
|
||||
porting::getWindowSize().X - 20);
|
||||
porting::getWindowSize().X - 20);
|
||||
core::rect<s32> rect(10, chat_y, width, chat_y + porting::getWindowSize().Y);
|
||||
guitext_chat->setRelativePosition(rect);
|
||||
|
||||
//now use real height of text and adjust rect according to this size
|
||||
rect = core::rect<s32>(10, chat_y, width,
|
||||
chat_y + guitext_chat->getTextHeight());
|
||||
chat_y + guitext_chat->getTextHeight());
|
||||
|
||||
|
||||
|
||||
guitext_chat->setRelativePosition(rect);
|
||||
|
@ -1591,7 +1588,7 @@ private:
|
|||
GUIChatConsole *gui_chat_console; // Free using ->Drop()
|
||||
MapDrawControl *draw_control;
|
||||
Camera *camera;
|
||||
Clouds *clouds; // Free using ->Drop()
|
||||
Clouds *clouds; // Free using ->Drop()
|
||||
Sky *sky; // Free using ->Drop()
|
||||
Inventory *local_inventory;
|
||||
Hud *hud;
|
||||
|
@ -1624,7 +1621,7 @@ private:
|
|||
gui::IGUIStaticText *guitext2; // Second line of debug text
|
||||
gui::IGUIStaticText *guitext_info; // At the middle of the screen
|
||||
gui::IGUIStaticText *guitext_status;
|
||||
gui::IGUIStaticText *guitext_chat; // Chat text
|
||||
gui::IGUIStaticText *guitext_chat; // Chat text
|
||||
gui::IGUIStaticText *guitext_profiler; // Profiler text
|
||||
|
||||
std::wstring infotext;
|
||||
|
@ -1829,10 +1826,6 @@ void Game::run()
|
|||
|
||||
while (device->run() && !(*kill || g_gamecallback->shutdown_requested)) {
|
||||
|
||||
#ifdef ANDROID
|
||||
porting::handleAndroidActivityEvents();
|
||||
#endif
|
||||
|
||||
/* Must be called immediately after a device->run() call because it
|
||||
* uses device->getTimer()->getTime()
|
||||
*/
|
||||
|
@ -2018,7 +2011,7 @@ bool Game::createSingleplayerServer(const std::string map_dir,
|
|||
}
|
||||
|
||||
server = new Server(map_dir, gamespec, simple_singleplayer_mode,
|
||||
bind_addr.isIPv6());
|
||||
bind_addr.isIPv6());
|
||||
|
||||
server->start(bind_addr);
|
||||
|
||||
|
@ -2081,7 +2074,7 @@ bool Game::createClient(const std::string &playername,
|
|||
/* Skybox
|
||||
*/
|
||||
sky = new Sky(smgr->getRootSceneNode(), smgr, -1, texture_src);
|
||||
skybox = NULL; // This is used/set later on in the main run loop
|
||||
skybox = NULL; // This is used/set later on in the main run loop
|
||||
|
||||
local_inventory = new Inventory(itemdef_manager);
|
||||
|
||||
|
@ -2199,7 +2192,7 @@ bool Game::connectToServer(const std::string &playername,
|
|||
const std::string &password, std::string *address, u16 port,
|
||||
bool *connect_ok, bool *aborted)
|
||||
{
|
||||
*connect_ok = false; // Let's not be overly optimistic
|
||||
*connect_ok = false; // Let's not be overly optimistic
|
||||
*aborted = false;
|
||||
bool local_server_mode = false;
|
||||
|
||||
|
@ -2244,7 +2237,7 @@ bool Game::connectToServer(const std::string &playername,
|
|||
if (!client)
|
||||
return false;
|
||||
|
||||
gamedef = client; // Client acts as our GameDef
|
||||
gamedef = client; // Client acts as our GameDef
|
||||
|
||||
infostream << "Connecting to server at ";
|
||||
connect_address.print(&infostream);
|
||||
|
@ -2419,6 +2412,7 @@ inline void Game::updateInteractTimers(GameRunData *runData, f32 dtime)
|
|||
runData->time_from_last_punch += dtime;
|
||||
}
|
||||
|
||||
|
||||
/* returns false if game should exit, otherwise true
|
||||
*/
|
||||
inline bool Game::checkConnection()
|
||||
|
@ -2452,13 +2446,13 @@ inline bool Game::handleCallbacks()
|
|||
|
||||
if (g_gamecallback->changevolume_requested) {
|
||||
(new GUIVolumeChange(guienv, guiroot, -1,
|
||||
&g_menumgr, client))->drop();
|
||||
&g_menumgr, client))->drop();
|
||||
g_gamecallback->changevolume_requested = false;
|
||||
}
|
||||
|
||||
if (g_gamecallback->keyconfig_requested) {
|
||||
(new GUIKeyChangeMenu(guienv, guiroot, -1,
|
||||
&g_menumgr))->drop();
|
||||
&g_menumgr))->drop();
|
||||
g_gamecallback->keyconfig_requested = false;
|
||||
}
|
||||
|
||||
|
@ -2637,7 +2631,6 @@ void Game::processKeyboardInput(VolatileRunFlags *flags,
|
|||
|
||||
if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_DROP])) {
|
||||
dropSelectedItem();
|
||||
// Add WoW-style autorun by toggling continuous forward.
|
||||
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_AUTORUN])) {
|
||||
toggleAutorun(statustext_time);
|
||||
} else if (input->wasKeyDown(keycache.key[KeyCache::KEYMAP_ID_INVENTORY])) {
|
||||
|
@ -2701,7 +2694,7 @@ void Game::processKeyboardInput(VolatileRunFlags *flags,
|
|||
<< std::endl;
|
||||
dstream << "Printing debug stacks:" << std::endl;
|
||||
dstream << "-----------------------------------------"
|
||||
<< std::endl;
|
||||
<< std::endl;
|
||||
debug_stacks_print();
|
||||
}
|
||||
|
||||
|
@ -2730,7 +2723,7 @@ void Game::processItemSelection(u16 *new_playeritem)
|
|||
|
||||
s32 wheel = input->getMouseWheel();
|
||||
u16 max_item = MYMIN(PLAYER_INVENTORY_SIZE - 1,
|
||||
player->hud_hotbar_itemcount - 1);
|
||||
player->hud_hotbar_itemcount - 1);
|
||||
|
||||
if (wheel < 0)
|
||||
*new_playeritem = *new_playeritem < max_item ? *new_playeritem + 1 : 0;
|
||||
|
@ -3008,7 +3001,7 @@ void Game::toggleProfiler(float *statustext_time, u32 *profiler_current_page,
|
|||
if (*profiler_current_page != 0) {
|
||||
std::wstringstream sstr;
|
||||
sstr << "Profiler shown (page " << *profiler_current_page
|
||||
<< " of " << profiler_max_page << ")";
|
||||
<< " of " << profiler_max_page << ")";
|
||||
statustext = sstr.str();
|
||||
} else {
|
||||
statustext = L"Profiler hidden";
|
||||
|
@ -3175,7 +3168,7 @@ inline void Game::step(f32 *dtime)
|
|||
bool can_be_and_is_paused =
|
||||
(simple_singleplayer_mode && g_menumgr.pausesGame());
|
||||
|
||||
if (can_be_and_is_paused) { // This is for a singleplayer server
|
||||
if (can_be_and_is_paused) { // This is for a singleplayer server
|
||||
*dtime = 0; // No time passes
|
||||
} else {
|
||||
if (server != NULL) {
|
||||
|
@ -3218,7 +3211,7 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
|
|||
show_deathscreen(¤t_formspec, client, gamedef, texture_src,
|
||||
device, client);
|
||||
|
||||
// chat_backend->addMessage(L"", L"You died.");
|
||||
chat_backend->addMessage(L"", L"You died.");
|
||||
|
||||
/* Handle visualization */
|
||||
*damage_flash = 0;
|
||||
|
@ -3232,7 +3225,7 @@ void Game::processClientEvents(CameraOrientation *cam, float *damage_flash)
|
|||
new TextDestPlayerInventory(client, *(event.show_formspec.formname));
|
||||
|
||||
create_formspec_menu(¤t_formspec, client, gamedef,
|
||||
texture_src, device, fs_src, txt_dst, client);
|
||||
texture_src, device, fs_src, txt_dst, client);
|
||||
|
||||
delete(event.show_formspec.formspec);
|
||||
delete(event.show_formspec.formname);
|
||||
|
@ -3437,7 +3430,7 @@ void Game::updateCamera(VolatileRunFlags *flags, u32 busy_time,
|
|||
|
||||
tool_reload_ratio = MYMIN(tool_reload_ratio, 1.0);
|
||||
camera->update(player, dtime, busy_time / 1000.0f, tool_reload_ratio,
|
||||
client->getEnv());
|
||||
client->getEnv());
|
||||
camera->step(dtime);
|
||||
|
||||
v3f camera_position = camera->getPosition();
|
||||
|
@ -3467,13 +3460,13 @@ void Game::updateSound(f32 dtime)
|
|||
// Update sound listener
|
||||
v3s16 camera_offset = camera->getOffset();
|
||||
sound->updateListener(camera->getCameraNode()->getPosition() + intToFloat(camera_offset, BS),
|
||||
v3f(0, 0, 0), // velocity
|
||||
camera->getDirection(),
|
||||
camera->getCameraNode()->getUpVector());
|
||||
v3f(0, 0, 0), // velocity
|
||||
camera->getDirection(),
|
||||
camera->getCameraNode()->getUpVector());
|
||||
sound->setListenerGain(g_settings->getFloat("sound_volume"));
|
||||
|
||||
|
||||
// Update sound maker
|
||||
// Update sound maker
|
||||
soundmaker->step(dtime);
|
||||
|
||||
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
||||
|
@ -3526,7 +3519,7 @@ void Game::processPlayerInteraction(std::vector<aabb3f> &highlight_boxes,
|
|||
camera_position + camera_direction * BS * (d + 1));
|
||||
|
||||
} else {
|
||||
// prevent player pointing anything in front-view
|
||||
// prevent player pointing anything in front-view
|
||||
if (camera->getCameraMode() == CAMERA_MODE_THIRD_FRONT)
|
||||
shootline = core::line3d<f32>(0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
@ -3572,7 +3565,7 @@ void Game::processPlayerInteraction(std::vector<aabb3f> &highlight_boxes,
|
|||
if (runData->digging) {
|
||||
if (input->getLeftReleased()) {
|
||||
infostream << "Left button released"
|
||||
<< " (stopped digging)" << std::endl;
|
||||
<< " (stopped digging)" << std::endl;
|
||||
runData->digging = false;
|
||||
} else if (pointed != runData->pointed_old) {
|
||||
if (pointed.type == POINTEDTHING_NODE
|
||||
|
@ -3583,7 +3576,7 @@ void Game::processPlayerInteraction(std::vector<aabb3f> &highlight_boxes,
|
|||
// Don't reset.
|
||||
} else {
|
||||
infostream << "Pointing away from node"
|
||||
<< " (stopped digging)" << std::endl;
|
||||
<< " (stopped digging)" << std::endl;
|
||||
runData->digging = false;
|
||||
}
|
||||
}
|
||||
|
@ -3710,7 +3703,7 @@ void Game::handlePointingAtNode(GameRunData *runData,
|
|||
TextDest *txt_dst = new TextDestNodeMetadata(nodepos, client);
|
||||
|
||||
create_formspec_menu(¤t_formspec, client, gamedef,
|
||||
texture_src, device, fs_src, txt_dst, client);
|
||||
texture_src, device, fs_src, txt_dst, client);
|
||||
|
||||
current_formspec->setFormSpec(meta->getString("formspec"), inventoryloc);
|
||||
} else {
|
||||
|
@ -3959,7 +3952,7 @@ void Game::updateFrame(std::vector<aabb3f> &highlight_boxes,
|
|||
direct_brightness = client->getEnv().getClientMap()
|
||||
.getBackgroundBrightness(MYMIN(runData->fog_range * 1.2, 60 * BS),
|
||||
daynight_ratio, (int)(old_brightness * 255.5), &sunlight_seen)
|
||||
/ 255.0;
|
||||
/ 255.0;
|
||||
}
|
||||
|
||||
float time_of_day = runData->time_of_day;
|
||||
|
@ -3998,7 +3991,7 @@ void Game::updateFrame(std::vector<aabb3f> &highlight_boxes,
|
|||
clouds->setVisible(true);
|
||||
clouds->step(dtime);
|
||||
clouds->update(v2f(player_position.X, player_position.Z),
|
||||
sky->getCloudColor());
|
||||
sky->getCloudColor());
|
||||
} else {
|
||||
clouds->setVisible(false);
|
||||
}
|
||||
|
@ -4210,7 +4203,7 @@ void Game::updateGui(float *statustext_time, const RunStats &stats,
|
|||
|
||||
std::ostringstream os(std::ios_base::binary);
|
||||
os << std::fixed
|
||||
<< "MultiCraft " << g_version_hash
|
||||
<< PROJECT_NAME_C " " << g_version_hash
|
||||
<< " FPS = " << fps
|
||||
<< " (R: range_all=" << draw_control->range_all << ")"
|
||||
<< std::setprecision(0)
|
||||
|
@ -4226,13 +4219,21 @@ void Game::updateGui(float *statustext_time, const RunStats &stats,
|
|||
guitext->setVisible(true);
|
||||
} else if (flags.show_hud || flags.show_chat) {
|
||||
#ifdef ANDROID
|
||||
guitext->setVisible(false);
|
||||
u16 fps = 1.0 / stats.dtime_jitter.avg;
|
||||
std::ostringstream os(std::ios_base::binary);
|
||||
os << std::setprecision(1) << std::fixed
|
||||
<< "FPS = " << fps
|
||||
<< " (" << (player_position.X / BS)
|
||||
<< ", " << (player_position.Y / BS)
|
||||
<< ", " << (player_position.Z / BS)
|
||||
<< ")";
|
||||
guitext->setText(utf8_to_wide(os.str()).c_str());
|
||||
guitext->setVisible(true);
|
||||
#else
|
||||
std::ostringstream os(std::ios_base::binary);
|
||||
os << PROJECT_NAME_C " " << g_version_hash;
|
||||
guitext->setText(utf8_to_wide(os.str()).c_str());
|
||||
guitext->setVisible(true);
|
||||
#endif
|
||||
} else {
|
||||
guitext->setVisible(false);
|
||||
}
|
||||
|
@ -4420,20 +4421,20 @@ void Game::extendedResourceCleanup()
|
|||
// Extended resource accounting
|
||||
infostream << "Irrlicht resources after cleanup:" << std::endl;
|
||||
infostream << "\tRemaining meshes : "
|
||||
<< device->getSceneManager()->getMeshCache()->getMeshCount() << std::endl;
|
||||
<< device->getSceneManager()->getMeshCache()->getMeshCount() << std::endl;
|
||||
infostream << "\tRemaining textures : "
|
||||
<< driver->getTextureCount() << std::endl;
|
||||
<< driver->getTextureCount() << std::endl;
|
||||
|
||||
for (unsigned int i = 0; i < driver->getTextureCount(); i++) {
|
||||
irr::video::ITexture *texture = driver->getTextureByIndex(i);
|
||||
infostream << "\t\t" << i << ":" << texture->getName().getPath().c_str()
|
||||
<< std::endl;
|
||||
<< std::endl;
|
||||
}
|
||||
|
||||
clearTextureNameCache();
|
||||
infostream << "\tRemaining materials: "
|
||||
<< driver-> getMaterialRendererCount()
|
||||
<< " (note: irrlicht doesn't support removing renderers)" << std::endl;
|
||||
<< driver-> getMaterialRendererCount()
|
||||
<< " (note: irrlicht doesn't support removing renderers)" << std::endl;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4481,7 +4482,7 @@ void the_game(bool *kill,
|
|||
} catch (SerializationError &e) {
|
||||
error_message = std::string("A serialization error occurred:\n")
|
||||
+ e.what() + "\n\nThe server is probably "
|
||||
" running a different version of MultiCraft.";
|
||||
" running a different version of " PROJECT_NAME_C ".";
|
||||
errorstream << error_message << std::endl;
|
||||
} catch (ServerError &e) {
|
||||
error_message = e.what();
|
||||
|
|
|
@ -172,7 +172,6 @@ GUIEngine::GUIEngine( irr::IrrlichtDevice* dev,
|
|||
m_sound_manager = &dummySoundManager;
|
||||
|
||||
//create topleft header
|
||||
std::wstring t = narrow_to_wide(std::string(""));
|
||||
//std::wstring t = utf8_to_wide(std::string(PROJECT_NAME_C " ") +
|
||||
//g_version_hash);
|
||||
|
||||
|
|
|
@ -2963,7 +2963,7 @@ bool GUIFormSpecMenu::preprocessEvent(const SEvent& event)
|
|||
else if (event.TouchInput.touchedCount == 2) {
|
||||
dont_send_event = true;
|
||||
}
|
||||
else if (event.TouchInput.touchedCount > 2) {
|
||||
else if (event.TouchInput.touchedCount > 4) {
|
||||
errorstream
|
||||
<< "GUIFormSpecMenu::preprocessEvent to many multitouch events "
|
||||
<< event.TouchInput.touchedCount << " ignoring them" << std::endl;
|
||||
|
|
|
@ -137,6 +137,9 @@ public:
|
|||
virtual void exitToOS()
|
||||
{
|
||||
shutdown_requested = true;
|
||||
#ifndef __ANDROID__
|
||||
device->closeDevice();
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual void disconnect()
|
||||
|
|
|
@ -23,8 +23,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#include "mapgen.h"
|
||||
|
||||
#define BIOMEGEN_BASE_V7 -192
|
||||
|
||||
/////////////////// Mapgen V7 flags
|
||||
#define MGV7_MOUNTAINS 0x01
|
||||
#define MGV7_RIDGES 0x02
|
||||
|
|
|
@ -4,11 +4,7 @@ Copyright (C) 2010-2015 celeron55, Perttu Ahola <celeron55@gmail.com>
|
|||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
<<<<<<< HEAD
|
||||
the Free Software Foundation; either version 3.0 of the License, or
|
||||
=======
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
>>>>>>> 900db310638531a8b9fb1a587f75a02a15ae0c24
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
|
|
|
@ -230,3 +230,4 @@ std::string NodeMetadata::resolveString(const std::string &str,
|
|||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
|
|
@ -98,3 +98,4 @@ private:
|
|||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -339,7 +339,7 @@ std::vector<v3s16> pathfinder::get_Path(ServerEnvironment* env,
|
|||
#ifdef PATHFINDER_DEBUG
|
||||
print_pathlen();
|
||||
#endif
|
||||
//ERROR_TARGET << "failed to update cost map"<< std::endl;
|
||||
ERROR_TARGET << "failed to update cost map"<< std::endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -86,17 +86,6 @@ android_app* app_global;
|
|||
JNIEnv* jnienv;
|
||||
jclass nativeActivity;
|
||||
|
||||
void handleAndroidActivityEvents()
|
||||
{
|
||||
int ident;
|
||||
int events;
|
||||
struct android_poll_source *source;
|
||||
|
||||
while ( (ident = ALooper_pollOnce(0, NULL, &events, (void**)&source)) >= 0)
|
||||
if (source)
|
||||
source->process(porting::app_global, source);
|
||||
}
|
||||
|
||||
jclass findClass(std::string classname)
|
||||
{
|
||||
if (jnienv == 0) {
|
||||
|
@ -172,48 +161,7 @@ void cleanupAndroid()
|
|||
#endif
|
||||
|
||||
JavaVM *jvm = app_global->activity->vm;
|
||||
if (jvm)
|
||||
jvm->DetachCurrentThread();
|
||||
ANativeActivity_finish(app_global->activity);
|
||||
}
|
||||
|
||||
static std::string javaStringToUTF8(jstring js)
|
||||
{
|
||||
std::string str;
|
||||
// Get string as a UTF-8 c-string
|
||||
const char *c_str = jnienv->GetStringUTFChars(js, NULL);
|
||||
// Save it
|
||||
str = c_str;
|
||||
// And free the c-string
|
||||
jnienv->ReleaseStringUTFChars(js, c_str);
|
||||
return str;
|
||||
}
|
||||
|
||||
// Calls static method if obj is NULL
|
||||
static std::string getAndroidPath(jclass cls, jobject obj, jclass cls_File,
|
||||
jmethodID mt_getAbsPath, const char *getter)
|
||||
{
|
||||
// Get getter method
|
||||
jmethodID mt_getter;
|
||||
if (obj)
|
||||
mt_getter = jnienv->GetMethodID(cls, getter,
|
||||
"()Ljava/io/File;");
|
||||
else
|
||||
mt_getter = jnienv->GetStaticMethodID(cls, getter,
|
||||
"()Ljava/io/File;");
|
||||
|
||||
// Call getter
|
||||
jobject ob_file;
|
||||
if (obj)
|
||||
ob_file = jnienv->CallObjectMethod(obj, mt_getter);
|
||||
else
|
||||
ob_file = jnienv->CallStaticObjectMethod(cls, mt_getter);
|
||||
|
||||
// Call getAbsolutePath
|
||||
jstring js_path = (jstring) jnienv->CallObjectMethod(ob_file,
|
||||
mt_getAbsPath);
|
||||
|
||||
return javaStringToUTF8(js_path);
|
||||
jvm->DetachCurrentThread();
|
||||
}
|
||||
|
||||
static std::string javaStringToUTF8(jstring js)
|
||||
|
|
|
@ -76,7 +76,6 @@ int getInputDialogState();
|
|||
*/
|
||||
std::string getInputDialogValue();
|
||||
|
||||
void handleAndroidActivityEvents();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1246,11 +1246,6 @@ void Server::setTimeOfDay(u32 time)
|
|||
m_time_of_day_send_timer = 0;
|
||||
}
|
||||
|
||||
u32 Server::getTimeOfDay()
|
||||
{
|
||||
return m_env->getTimeOfDay();
|
||||
}
|
||||
|
||||
void Server::onMapEditEvent(MapEditEvent *event)
|
||||
{
|
||||
if(m_ignore_map_edit_events)
|
||||
|
|
|
@ -225,7 +225,6 @@ public:
|
|||
// Both setter and getter need no envlock,
|
||||
// can be called freely from threads
|
||||
void setTimeOfDay(u32 time);
|
||||
inline u32 getTimeOfDay();
|
||||
|
||||
/*
|
||||
Shall be called with the environment locked.
|
||||
|
|
|
@ -57,7 +57,7 @@ struct SubgameSpec
|
|||
}
|
||||
};
|
||||
|
||||
// main config
|
||||
// multicraft.conf
|
||||
bool getGameMinetestConfig(const std::string &game_path, Settings &conf);
|
||||
// game.conf
|
||||
bool getGameConfig(const std::string &game_path, Settings &conf);
|
||||
|
|
|
@ -25,14 +25,6 @@ DEALINGS IN THE SOFTWARE.
|
|||
|
||||
#include "threading/event.h"
|
||||
|
||||
#if defined(_WIN32)
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
|
||||
#if __cplusplus < 201103L
|
||||
Event::Event()
|
||||
{
|
||||
|
@ -92,4 +84,3 @@ void Event::signal()
|
|||
pthread_mutex_unlock(&mutex);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,10 @@ DEALINGS IN THE SOFTWARE.
|
|||
#include <condition_variable>
|
||||
#include "threading/mutex.h"
|
||||
#elif defined(_WIN32)
|
||||
#include <windef.h>
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
|
@ -66,4 +69,3 @@ private:
|
|||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ const char *touchgui_button_imagenames[] = {
|
|||
"fly_btn.png",
|
||||
"noclip_btn.png",
|
||||
#endif
|
||||
"minimap_btn.png",
|
||||
// "minimap_btn.png",
|
||||
"debug_btn.png",
|
||||
"chat_btn.png",
|
||||
// "camera_btn.png",
|
||||
|
@ -98,9 +98,9 @@ static irr::EKEY_CODE id2keycode(touch_gui_button_id id)
|
|||
key = "fast";
|
||||
break;
|
||||
#endif
|
||||
case minimap_id:
|
||||
/* case minimap_id:
|
||||
key = "minimap";
|
||||
break;
|
||||
break;*/
|
||||
case debug_id:
|
||||
key = "toggle_debug";
|
||||
break;
|
||||
|
@ -298,13 +298,13 @@ void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density)
|
|||
m_screensize.Y - (button_size*3.25)),
|
||||
L"fast", false, SLOW_BUTTON_REPEAT);
|
||||
#endif
|
||||
/* init minimap button */
|
||||
/* init minimap button
|
||||
initButton(minimap_id,
|
||||
rect<s32>(m_screensize.X - (0.75*button_size),
|
||||
m_screensize.Y - (4*button_size),
|
||||
m_screensize.X,
|
||||
m_screensize.Y - (button_size*3.25)),
|
||||
L"minimap", false, SLOW_BUTTON_REPEAT);
|
||||
L"minimap", false, SLOW_BUTTON_REPEAT);*/
|
||||
#ifndef NDEBUG
|
||||
/* init debug button */
|
||||
initButton(debug_id,
|
||||
|
@ -327,10 +327,11 @@ void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density)
|
|||
|
||||
/* init rangeselect button */
|
||||
initButton(range_id,
|
||||
rect<s32>(0, 0,
|
||||
0.75*button_size, 0.75*button_size),*/
|
||||
/*rect<s32>(0.78 * button_size, 0,
|
||||
1.5 * button_size, 0.75*button_size+0.03),*/
|
||||
/*rect<s32>(m_screensize.X - (0.75*button_size), 0,
|
||||
m_screensize.X, 0.75*button_size),*/
|
||||
|
||||
rect<s32>(m_screensize.X - (1.5*button_size), 0,
|
||||
m_screensize.X - (0.75*button_size), 0.75*button_size),
|
||||
L"far", false, SLOW_BUTTON_REPEAT);
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ typedef enum {
|
|||
noclip_id,
|
||||
fast_id,
|
||||
#endif
|
||||
minimap_id,
|
||||
// minimap_id,
|
||||
debug_id,
|
||||
chat_id,
|
||||
// camera_id,
|
||||
|
@ -94,7 +94,6 @@ private:
|
|||
std::map<int,rect<s32> > m_hud_rects;
|
||||
std::map<int,irr::EKEY_CODE> m_hud_ids;
|
||||
bool m_visible; // is the gui visible
|
||||
|
||||
rect<s32> controlpadarea;
|
||||
|
||||
/* value in degree */
|
||||
|
|
Loading…
Reference in New Issue