Commit 5a4d0cec authored by Andrei Kortunov's avatar Andrei Kortunov

Use new logging system for game itself

parent c7a55484
......@@ -10,6 +10,8 @@
#include <SDL.h>
#include <components/debug/debuglog.hpp>
#include <components/misc/rng.hpp>
#include <components/vfs/manager.hpp>
......@@ -61,7 +63,7 @@ namespace
void checkSDLError(int ret)
{
if (ret != 0)
std::cerr << "SDL error: " << SDL_GetError() << std::endl;
Log(Debug::Error) << "SDL error: " << SDL_GetError();
}
}
......@@ -189,7 +191,7 @@ bool OMW::Engine::frame(float frametime)
}
catch (const std::exception& e)
{
std::cerr << "Error in frame: " << e.what() << std::endl;
Log(Debug::Error) << "Error in frame: " << e.what();
}
return true;
}
......@@ -364,7 +366,7 @@ void OMW::Engine::createWindow(Settings::Manager& settings)
// Try with a lower AA
if (antialiasing > 0)
{
std::cout << "Note: " << antialiasing << "x antialiasing not supported, trying " << antialiasing/2 << std::endl;
Log(Debug::Warning) << "Warning: " << antialiasing << "x antialiasing not supported, trying " << antialiasing/2;
antialiasing /= 2;
Settings::Manager::setInt("antialiasing", "Video", antialiasing);
checkSDLError(SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, antialiasing));
......@@ -373,7 +375,7 @@ void OMW::Engine::createWindow(Settings::Manager& settings)
else
{
std::stringstream error;
error << "Failed to create SDL window: " << SDL_GetError() << std::endl;
error << "Failed to create SDL window: " << SDL_GetError();
throw std::runtime_error(error.str());
}
}
......@@ -420,16 +422,16 @@ void OMW::Engine::setWindowIcon()
std::string windowIcon = (mResDir / "mygui" / "openmw.png").string();
windowIconStream.open(windowIcon, std::ios_base::in | std::ios_base::binary);
if (windowIconStream.fail())
std::cerr << "Error: Failed to open " << windowIcon << std::endl;
Log(Debug::Error) << "Error: Failed to open " << windowIcon;
osgDB::ReaderWriter* reader = osgDB::Registry::instance()->getReaderWriterForExtension("png");
if (!reader)
{
std::cerr << "Error: Failed to read window icon, no png readerwriter found" << std::endl;
Log(Debug::Error) << "Error: Failed to read window icon, no png readerwriter found";
return;
}
osgDB::ReaderWriter::ReadResult result = reader->readImage(windowIconStream);
if (!result.success())
std::cerr << "Error: Failed to read " << windowIcon << ": " << result.message() << " code " << result.status() << std::endl;
Log(Debug::Error) << "Error: Failed to read " << windowIcon << ": " << result.message() << " code " << result.status();
else
{
osg::ref_ptr<osg::Image> image = result.getImage();
......@@ -564,21 +566,19 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
{
std::pair<int, int> result = mEnvironment.getScriptManager()->compileAll();
if (result.first)
std::cout
Log(Debug::Info)
<< "compiled " << result.second << " of " << result.first << " scripts ("
<< 100*static_cast<double> (result.second)/result.first
<< "%)"
<< std::endl;
<< "%)";
}
if (mCompileAllDialogue)
{
std::pair<int, int> result = MWDialogue::ScriptTest::compileAll(&mExtensions, mWarningsMode);
if (result.first)
std::cout
Log(Debug::Info)
<< "compiled " << result.second << " of " << result.first << " dialogue script/actor combinations a("
<< 100*static_cast<double> (result.second)/result.first
<< "%)"
<< std::endl;
<< "%)";
}
}
......@@ -614,14 +614,14 @@ public:
osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension(mScreenshotFormat);
if (!readerwriter)
{
std::cerr << "Error: Can't write screenshot, no '" << mScreenshotFormat << "' readerwriter found" << std::endl;
Log(Debug::Error) << "Error: Can't write screenshot, no '" << mScreenshotFormat << "' readerwriter found";
return;
}
osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(image, outStream);
if (!result.success())
{
std::cerr << "Error: Can't write screenshot: " << result.message() << " code " << result.status() << std::endl;
Log(Debug::Error) << "Error: Can't write screenshot: " << result.message() << " code " << result.status();
}
}
......@@ -636,7 +636,7 @@ void OMW::Engine::go()
{
assert (!mContentFiles.empty());
std::cout << "OSG version: " << osgGetVersion() << std::endl;
Log(Debug::Info) << "OSG version: " << osgGetVersion();
// Load settings
Settings::Manager settings;
......@@ -738,7 +738,7 @@ void OMW::Engine::go()
// Save user settings
settings.saveUser(settingspath);
std::cout << "Quitting peacefully." << std::endl;
Log(Debug::Info) << "Quitting peacefully.";
}
void OMW::Engine::setCompileAll (bool all)
......
#include <iostream>
#include <components/version/version.hpp>
#include <components/files/configurationmanager.hpp>
#include <components/files/escape.hpp>
......@@ -202,8 +200,8 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat
StringsVector content = variables["content"].as<Files::EscapeStringVector>().toStdStringVector();
if (content.empty())
{
std::cout << "No content file given (esm/esp, nor omwgame/omwaddon). Aborting..." << std::endl;
return false;
Log(Debug::Error) << "No content file given (esm/esp, nor omwgame/omwaddon). Aborting...";
return false;
}
StringsVector::const_iterator it(content.begin());
......@@ -217,7 +215,7 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat
engine.setCell(variables["start"].as<Files::EscapeHashString>().toStdString());
engine.setSkipMenu (variables["skip-menu"].as<bool>(), variables["new-game"].as<bool>());
if (!variables["skip-menu"].as<bool>() && variables["new-game"].as<bool>())
std::cerr << "Warning: new-game used without skip-menu -> ignoring it" << std::endl;
Log(Debug::Warning) << "Warning: new-game used without skip-menu -> ignoring it";
// scripts
engine.setCompileAll(variables["script-all"].as<bool>());
......
#include "creature.hpp"
#include <components/misc/rng.hpp>
#include <components/debug/debuglog.hpp>
#include <components/esm/loadcrea.hpp>
#include <components/esm/creaturestate.hpp>
#include <components/settings/settings.hpp>
......@@ -146,7 +146,7 @@ namespace MWClass
if (const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().get<ESM::Spell>().search(*iter))
data->mCreatureStats.getSpells().add (spell);
else /// \todo add option to make this a fatal error message pop-up, but default to warning for vanilla compatibility
std::cerr << "Warning: ignoring nonexistent spell '" << *iter << "' on creature '" << ref->mBase->mId << "'" << std::endl;
Log(Debug::Warning) << "Warning: ignoring nonexistent spell '" << *iter << "' on creature '" << ref->mBase->mId << "'";
}
// inventory
......
......@@ -4,6 +4,7 @@
#include <components/misc/rng.hpp>
#include <components/debug/debuglog.hpp>
#include <components/esm/loadmgef.hpp>
#include <components/esm/loadnpc.hpp>
#include <components/esm/npcstate.hpp>
......@@ -365,7 +366,7 @@ namespace MWClass
if (const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().get<ESM::Spell>().search(*iter))
data->mNpcStats.getSpells().add (spell);
else
std::cerr << "Warning: ignoring nonexistent race power '" << *iter << "' on NPC '" << ref->mBase->mId << "'" << std::endl;
Log(Debug::Warning) << "Warning: ignoring nonexistent race power '" << *iter << "' on NPC '" << ref->mBase->mId << "'";
}
if (!ref->mBase->mFaction.empty())
......@@ -395,7 +396,7 @@ namespace MWClass
else
{
/// \todo add option to make this a fatal error message pop-up, but default to warning for vanilla compatibility
std::cerr << "Warning: ignoring nonexistent spell '" << *iter << "' on NPC '" << ref->mBase->mId << "'" << std::endl;
Log(Debug::Warning) << "Warning: ignoring nonexistent spell '" << *iter << "' on NPC '" << ref->mBase->mId << "'";
}
}
......
......@@ -5,7 +5,8 @@
#include <algorithm>
#include <iterator>
#include <list>
#include <iostream>
#include <components/debug/debuglog.hpp>
#include <components/esm/loaddial.hpp>
#include <components/esm/loadinfo.hpp>
......@@ -203,16 +204,14 @@ namespace MWDialogue
}
catch (const std::exception& error)
{
std::cerr << std::string ("Dialogue error: An exception has been thrown: ") + error.what() << std::endl;
Log(Debug::Error) << std::string ("Dialogue error: An exception has been thrown: ") + error.what();
success = false;
}
if (!success)
{
std::cerr
<< "Warning: compiling failed (dialogue script)" << std::endl
<< cmd
<< std::endl << std::endl;
Log(Debug::Warning)
<< "Warning: compiling failed (dialogue script)\n" << cmd << "\n\n";
}
return success;
......@@ -232,7 +231,7 @@ namespace MWDialogue
}
catch (const std::exception& error)
{
std::cerr << std::string ("Dialogue error: An exception has been thrown: ") + error.what() << std::endl;
Log(Debug::Error) << std::string ("Dialogue error: An exception has been thrown: ") + error.what();
}
}
}
......
#include "scripttest.hpp"
#include <iostream>
#include "../mwworld/manualref.hpp"
#include "../mwworld/esmstore.hpp"
#include "../mwworld/class.hpp"
......@@ -12,6 +10,7 @@
#include "../mwscript/compilercontext.hpp"
#include <components/debug/debuglog.hpp>
#include <components/compiler/exception.hpp>
#include <components/compiler/streamerrorhandler.hpp>
#include <components/compiler/scanner.hpp>
......@@ -80,16 +79,14 @@ void test(const MWWorld::Ptr& actor, int &compiled, int &total, const Compiler::
}
catch (const std::exception& error)
{
std::cerr << std::string ("Dialogue error: An exception has been thrown: ") + error.what() << std::endl;
Log(Debug::Error) << std::string ("Dialogue error: An exception has been thrown: ") + error.what();
success = false;
}
if (!success)
{
std::cerr
<< "compiling failed (dialogue script)" << std::endl
<< info->mResultScript
<< std::endl << std::endl;
Log(Debug::Warning)
<< "compiling failed (dialogue script)\n" << info->mResultScript << "\n\n";
}
}
}
......
#include "charactercreation.hpp"
#include <components/debug/debuglog.hpp>
#include <components/fallback/fallback.hpp>
#include "../mwbase/environment.hpp"
......@@ -284,7 +285,7 @@ namespace MWGui
}
catch (std::exception& e)
{
std::cerr << "Error: Failed to create chargen window: " << e.what() << std::endl;
Log(Debug::Error) << "Error: Failed to create chargen window: " << e.what();
}
}
......@@ -602,7 +603,7 @@ namespace MWGui
mGenerateClass = "Mage";
else
{
std::cout << "Failed to deduce class from chosen answers in generate class dialog" << std::endl;
Log(Debug::Warning) << "Failed to deduce class from chosen answers in generate class dialog.";
mGenerateClass = "Thief";
}
}
......
......@@ -12,6 +12,8 @@
#include "../mwworld/esmstore.hpp"
#include <components/debug/debuglog.hpp>
#include "tooltips.hpp"
namespace
......@@ -924,7 +926,7 @@ namespace MWGui
std::string classImage = std::string("textures\\levelup\\") + classId + ".dds";
if (!MWBase::Environment::get().getWindowManager()->textureExists(classImage))
{
std::cout << "No class image for " << classId << ", falling back to default" << std::endl;
Log(Debug::Warning) << "No class image for " << classId << ", falling back to default";
classImage = "textures\\levelup\\warrior.dds";
}
imageBox->setImageTexture(classImage);
......
......@@ -6,6 +6,7 @@
#include <MyGUI_ScrollBar.h>
#include <MyGUI_Button.h>
#include <components/debug/debuglog.hpp>
#include <components/widgets/list.hpp>
#include <components/translation/translation.hpp>
......@@ -411,7 +412,7 @@ namespace MWGui
{
if (!actor.getClass().isActor())
{
std::cerr << "Warning: can not talk with non-actor object." << std::endl;
Log(Debug::Warning) << "Warning: can not talk with non-actor object.";
return;
}
......
......@@ -13,6 +13,7 @@
#include <boost/algorithm/string/replace.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <components/debug/debuglog.hpp>
#include <components/interpreter/defines.hpp>
#include <components/misc/stringops.hpp>
......@@ -300,7 +301,7 @@ namespace MWGui
if (!exists)
{
std::cerr << "Warning: Could not find \"" << src << "\" referenced by an <img> tag." << std::endl;
Log(Debug::Warning) << "Warning: Could not find \"" << src << "\" referenced by an <img> tag.";
break;
}
......
......@@ -10,9 +10,8 @@
#include <MyGUI_TextBox.h>
#include <components/misc/rng.hpp>
#include <components/debug/debuglog.hpp>
#include <components/myguiplatform/myguitexture.hpp>
#include <components/settings/settings.hpp>
#include <components/vfs/manager.hpp>
......@@ -94,7 +93,7 @@ namespace MWGui
++found;
}
if (mSplashScreens.empty())
std::cerr << "No splash screens found!" << std::endl;
Log(Debug::Warning) << "Warning: no splash screens found!";
}
void LoadingScreen::setLabel(const std::string &label, bool important)
......
......@@ -5,6 +5,7 @@
#include <MyGUI_RenderManager.h>
#include <MyGUI_Button.h>
#include <components/debug/debuglog.hpp>
#include <components/misc/stringops.hpp>
#include "../mwbase/environment.hpp"
......@@ -125,7 +126,7 @@ namespace MWGui
{
if (mInterMessageBoxe != NULL)
{
std::cerr << "Warning: replacing an interactive message box that was not answered yet" << std::endl;
Log(Debug::Warning) << "Warning: replacing an interactive message box that was not answered yet";
mInterMessageBoxe->setVisible(false);
delete mInterMessageBoxe;
mInterMessageBoxe = NULL;
......
......@@ -6,6 +6,7 @@
#include <osg/Texture2D>
#include <components/debug/debuglog.hpp>
#include <components/myguiplatform/myguitexture.hpp>
#include "../mwworld/esmstore.hpp"
......@@ -340,7 +341,7 @@ namespace MWGui
}
catch (std::exception& e)
{
std::cerr << "Error creating preview: " << e.what() << std::endl;
Log(Debug::Error) << "Error creating preview: " << e.what();
}
}
......
......@@ -12,6 +12,8 @@
#include <osgDB/ReadFile>
#include <osg/Texture2D>
#include <components/debug/debuglog.hpp>
#include <components/myguiplatform/myguitexture.hpp>
#include <components/misc/stringops.hpp>
......@@ -438,14 +440,14 @@ namespace MWGui
osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("jpg");
if (!readerwriter)
{
std::cerr << "Error: Can't open savegame screenshot, no jpg readerwriter found" << std::endl;
Log(Debug::Error) << "Error: Can't open savegame screenshot, no jpg readerwriter found";
return;
}
osgDB::ReaderWriter::ReadResult result = readerwriter->readImage(instream);
if (!result.success())
{
std::cerr << "Error: Failed to read savegame screenshot: " << result.message() << " code " << result.status() << std::endl;
Log(Debug::Error) << "Error: Failed to read savegame screenshot: " << result.message() << " code " << result.status();
return;
}
......
......@@ -12,6 +12,7 @@
#include <SDL_video.h>
#include <components/debug/debuglog.hpp>
#include <components/widgets/sharedstatebutton.hpp>
#include <components/settings/settings.hpp>
......@@ -31,7 +32,8 @@ namespace
if (val == "linear") return "Trilinear";
if (val == "nearest") return "Bilinear";
if (val != "none")
std::cerr<< "Warning: Invalid texture mipmap option: "<<val <<std::endl;
Log(Debug::Warning) << "Warning: Invalid texture mipmap option: "<< val;
return "Other";
}
......@@ -398,7 +400,7 @@ namespace MWGui
else if(pos == 1)
Settings::Manager::setString("texture mipmap", "General", "linear");
else
std::cerr<< "Unexpected option pos "<<pos <<std::endl;
Log(Debug::Warning) << "Unexpected option pos " << pos;
apply();
}
......
#include "sortfilteritemmodel.hpp"
#include <iostream>
#include <components/misc/stringops.hpp>
#include <components/debug/debuglog.hpp>
#include <components/esm/loadalch.hpp>
#include <components/esm/loadappa.hpp>
#include <components/esm/loadarmo.hpp>
......@@ -245,7 +243,7 @@ namespace MWGui
const ESM::Enchantment* ench = MWBase::Environment::get().getWorld()->getStore().get<ESM::Enchantment>().search(enchId);
if (!ench)
{
std::cerr << "Warning: Can't find enchantment '" << enchId << "' on item " << base.getCellRef().getRefId() << std::endl;
Log(Debug::Warning) << "Warning: Can't find enchantment '" << enchId << "' on item " << base.getCellRef().getRefId();
return false;
}
......
#include "spellmodel.hpp"
#include <iostream>
#include <components/debug/debuglog.hpp>
#include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp"
......@@ -94,7 +94,7 @@ namespace MWGui
const ESM::Enchantment* enchant = esmStore.get<ESM::Enchantment>().search(enchantId);
if (!enchant)
{
std::cerr << "Warning: Can't find enchantment '" << enchantId << "' on item " << item.getCellRef().getRefId() << std::endl;
Log(Debug::Warning) << "Warning: Can't find enchantment '" << enchantId << "' on item " << item.getCellRef().getRefId();
continue;
}
......
......@@ -6,6 +6,7 @@
#include <osg/Texture2D>
#include <components/debug/debuglog.hpp>
#include <components/vfs/manager.hpp>
#include <components/myguiplatform/myguitexture.hpp>
......@@ -37,7 +38,7 @@ void VideoWidget::playVideo(const std::string &video)
}
catch (std::exception& e)
{
std::cerr << "Failed to open video: " << e.what() << std::endl;
Log(Debug::Error) << "Failed to open video: " << e.what();
return;
}
......
......@@ -21,6 +21,8 @@
#include <SDL_keyboard.h>
#include <SDL_clipboard.h>
#include <components/debug/debuglog.hpp>
#include <components/sdlutil/sdlcursormanager.hpp>
#include <components/esm/esmreader.hpp>
......@@ -1082,7 +1084,7 @@ namespace MWGui
{
if (!mStore)
{
std::cerr << "Error: WindowManager::onRetrieveTag: no Store set up yet, can not replace '" << tag << "'" << std::endl;
Log(Debug::Error) << "Error: WindowManager::onRetrieveTag: no Store set up yet, can not replace '" << tag << "'";
return;
}
const ESM::GameSetting *setting = mStore->get<ESM::GameSetting>().find(tag);
......@@ -1788,7 +1790,7 @@ namespace MWGui
if (found != mCurrentModals.end())
mCurrentModals.erase(found);
else
std::cerr << " warning: can't find modal window " << input << std::endl;
Log(Debug::Warning) << "Warning: can't find modal window " << input;
}
}
if (mCurrentModals.empty())
......
......@@ -10,6 +10,7 @@
#include <SDL_version.h>
#include <components/debug/debuglog.hpp>
#include <components/sdlutil/sdlinputwrapper.hpp>
#include <components/sdlutil/sdlvideowrapper.hpp>
#include <components/esm/esmwriter.hpp>
......@@ -120,11 +121,11 @@ namespace MWInput
SDL_ControllerDeviceEvent evt;
evt.which = i;
controllerAdded(mFakeDeviceID, evt);
std::cout << "Detected game controller: " << SDL_GameControllerNameForIndex(i) << std::endl;
Log(Debug::Info) << "Detected game controller: " << SDL_GameControllerNameForIndex(i);
}
else
{
std::cout << "Detected unusable controller: " << SDL_JoystickNameForIndex(i) << std::endl;
Log(Debug::Info) << "Detected unusable controller: " << SDL_JoystickNameForIndex(i);
}
}
......
......@@ -8,7 +8,7 @@
#include <components/esm/loadnpc.hpp>
#include <components/sceneutil/positionattitudetransform.hpp>
#include <components/debug/debuglog.hpp>
#include <components/settings/settings.hpp>
#include "../mwworld/esmstore.hpp"
......@@ -1720,7 +1720,7 @@ namespace MWMechanics
}
else