// Show locally
if (message[0] == L'/')
{
- m_chat_queue.push_back(
- (std::wstring)L"issued command: "+message);
+ m_chat_queue.push_back((std::wstring)L"issued command: " + message);
}
else
{
LocalPlayer *player = m_env.getLocalPlayer();
assert(player != NULL);
std::wstring name = narrow_to_wide(player->getName());
- m_chat_queue.push_back(
- (std::wstring)L"<"+name+L"> "+message);
+ m_chat_queue.push_back((std::wstring)L"<" + name + L"> " + message);
}
}
m_con.getLocalStat(con::AVG_DL_RATE));
}
+void Client::makeScreenshot(IrrlichtDevice *device)
+{
+ irr::video::IVideoDriver *driver = device->getVideoDriver();
+ irr::video::IImage* const raw_image = driver->createScreenShot();
+ if (raw_image) {
+ irr::video::IImage* const image = driver->createImage(video::ECF_R8G8B8,
+ raw_image->getDimension());
+
+ if (image) {
+ raw_image->copyTo(image);
+ irr::c8 filename[256];
+ snprintf(filename, sizeof(filename), "%s" DIR_DELIM "screenshot_%u.png",
+ g_settings->get("screenshot_path").c_str(),
+ device->getTimer()->getRealTime());
+ std::stringstream sstr;
+ if (driver->writeImageToFile(image, filename)) {
+ sstr << "Saved screenshot to '" << filename << "'";
+ } else {
+ sstr << "Failed to save screenshot '" << filename << "'";
+ }
+ m_chat_queue.push_back(narrow_to_wide(sstr.str()));
+ infostream << sstr << std::endl;
+ image->drop();
+ }
+ raw_image->drop();
+ }
+}
+
// IGameDef interface
// Under envlock
IItemDefManager* Client::getItemDefManager()
static inline void create_formspec_menu(GUIFormSpecMenu** cur_formspec,
InventoryManager *invmgr, IGameDef *gamedef,
IWritableTextureSource* tsrc, IrrlichtDevice * device,
- IFormSource* fs_src, TextDest* txt_dest
+ IFormSource* fs_src, TextDest* txt_dest, Client* client
) {
if (*cur_formspec == 0) {
*cur_formspec = new GUIFormSpecMenu(device, guiroot, -1, &g_menumgr,
- invmgr, gamedef, tsrc, fs_src, txt_dest, cur_formspec );
+ invmgr, gamedef, tsrc, fs_src, txt_dest, cur_formspec, client);
(*cur_formspec)->doPause = false;
(*cur_formspec)->drop();
}
FormspecFormSource* fs_src = new FormspecFormSource(formspec);
LocalFormspecHandler* txt_dst = new LocalFormspecHandler("MT_CHAT_MENU", client);
- create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst);
+ create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst, NULL);
}
static void show_deathscreen(GUIFormSpecMenu** cur_formspec,
FormspecFormSource* fs_src = new FormspecFormSource(formspec);
LocalFormspecHandler* txt_dst = new LocalFormspecHandler("MT_DEATH_SCREEN", client);
- create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst);
+ create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst, NULL);
}
/******************************************************************************/
FormspecFormSource* fs_src = new FormspecFormSource(os.str());
LocalFormspecHandler* txt_dst = new LocalFormspecHandler("MT_PAUSE_MENU");
- create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst);
+ create_formspec_menu(cur_formspec, invmgr, gamedef, tsrc, device, fs_src, txt_dst, NULL);
(*cur_formspec)->doPause = true;
}
PlayerInventoryFormSource* fs_src = new PlayerInventoryFormSource(&client);
TextDest* txt_dst = new TextDestPlayerInventory(&client);
- create_formspec_menu(¤t_formspec, &client, gamedef, tsrc, device, fs_src, txt_dst);
+ create_formspec_menu(¤t_formspec, &client, gamedef, tsrc, device, fs_src, txt_dst, &client);
InventoryLocation inventoryloc;
inventoryloc.setCurrentPlayer();
}
else if(input->wasKeyDown(getKeySetting("keymap_screenshot")))
{
- irr::video::IImage* const raw_image = driver->createScreenShot();
- if (raw_image) {
- irr::video::IImage* const image = driver->createImage(video::ECF_R8G8B8,
- raw_image->getDimension());
-
- if (image) {
- raw_image->copyTo(image);
- irr::c8 filename[256];
- snprintf(filename, sizeof(filename), "%s" DIR_DELIM "screenshot_%u.png",
- g_settings->get("screenshot_path").c_str(),
- device->getTimer()->getRealTime());
- if (driver->writeImageToFile(image, filename)) {
- std::wstringstream sstr;
- sstr << "Saved screenshot to '" << filename << "'";
- infostream << "Saved screenshot to '" << filename << "'" << std::endl;
- statustext = sstr.str();
- statustext_time = 0;
- } else {
- infostream << "Failed to save screenshot '" << filename << "'" << std::endl;
- }
- image->drop();
- }
- raw_image->drop();
- }
+ client.makeScreenshot(device);
}
else if(input->wasKeyDown(getKeySetting("keymap_toggle_hud")))
{
new TextDestPlayerInventory(&client,*(event.show_formspec.formname));
create_formspec_menu(¤t_formspec, &client, gamedef,
- tsrc, device, fs_src, txt_dst);
+ tsrc, device, fs_src, txt_dst, &client);
delete(event.show_formspec.formspec);
delete(event.show_formspec.formname);
TextDest* txt_dst = new TextDestNodeMetadata(nodepos, &client);
create_formspec_menu(¤t_formspec, &client, gamedef,
- tsrc, device, fs_src, txt_dst);
+ tsrc, device, fs_src, txt_dst, &client);
current_formspec->setFormSpec(meta->getString("formspec"), inventoryloc);
}
#include "porting.h"
#include "main.h"
#include "settings.h"
+#include "client.h"
#define MY_CHECKPOS(a,b) \
if (v_pos.size() != 2) { \
gui::IGUIElement* parent, s32 id, IMenuManager *menumgr,
InventoryManager *invmgr, IGameDef *gamedef,
ISimpleTextureSource *tsrc, IFormSource* fsrc, TextDest* tdst,
- GUIFormSpecMenu** ext_ptr) :
+ GUIFormSpecMenu** ext_ptr, Client* client) :
GUIModalMenu(dev->getGUIEnvironment(), parent, id, menumgr),
m_device(dev),
m_invmgr(invmgr),
m_text_dst(tdst),
m_ext_ptr(ext_ptr),
m_font(dev->getGUIEnvironment()->getSkin()->getFont()),
- m_formspec_version(0)
+ m_formspec_version(0),
+ m_client(client)
#ifdef __ANDROID__
,m_JavaDialogFieldName(L"")
#endif
m_text_dst->gotText(narrow_to_wide("MenuQuit"));
}
return true;
+ } else if (m_client != NULL && event.KeyInput.PressedDown &&
+ (kp == getKeySetting("keymap_screenshot"))) {
+ m_client->makeScreenshot(m_device);
}
if (event.KeyInput.PressedDown &&
(event.KeyInput.Key==KEY_RETURN ||