From 5a4d0cec3a70e5f6e60ade7547f59cfd0a0c03d5 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Tue, 14 Aug 2018 23:05:43 +0400 Subject: [PATCH] Use new logging system for game itself --- apps/openmw/engine.cpp | 34 ++++---- apps/openmw/main.cpp | 8 +- apps/openmw/mwclass/creature.cpp | 4 +- apps/openmw/mwclass/npc.cpp | 5 +- apps/openmw/mwdialogue/dialoguemanagerimp.cpp | 13 ++- apps/openmw/mwdialogue/scripttest.cpp | 11 +-- apps/openmw/mwgui/charactercreation.cpp | 5 +- apps/openmw/mwgui/class.cpp | 4 +- apps/openmw/mwgui/dialogue.cpp | 3 +- apps/openmw/mwgui/formatting.cpp | 3 +- apps/openmw/mwgui/loadingscreen.cpp | 5 +- apps/openmw/mwgui/messagebox.cpp | 3 +- apps/openmw/mwgui/race.cpp | 3 +- apps/openmw/mwgui/savegamedialog.cpp | 6 +- apps/openmw/mwgui/settingswindow.cpp | 6 +- apps/openmw/mwgui/sortfilteritemmodel.cpp | 6 +- apps/openmw/mwgui/spellmodel.cpp | 4 +- apps/openmw/mwgui/videowidget.cpp | 3 +- apps/openmw/mwgui/windowmanagerimp.cpp | 6 +- apps/openmw/mwinput/inputmanagerimp.cpp | 5 +- apps/openmw/mwmechanics/actors.cpp | 4 +- apps/openmw/mwmechanics/aisequence.cpp | 4 +- apps/openmw/mwmechanics/aiwander.cpp | 7 +- apps/openmw/mwmechanics/levelledlist.hpp | 5 +- apps/openmw/mwmechanics/objects.cpp | 4 +- apps/openmw/mwmechanics/summoning.cpp | 4 +- apps/openmw/mwphysics/physicssystem.cpp | 7 +- apps/openmw/mwrender/animation.cpp | 12 +-- apps/openmw/mwrender/bulletdebugdraw.cpp | 6 +- apps/openmw/mwrender/characterpreview.cpp | 4 +- apps/openmw/mwrender/creatureanimation.cpp | 6 +- apps/openmw/mwrender/globalmap.cpp | 12 +-- apps/openmw/mwrender/localmap.cpp | 14 ++-- apps/openmw/mwrender/npcanimation.cpp | 12 +-- apps/openmw/mwrender/renderingmanager.cpp | 6 +- apps/openmw/mwrender/water.cpp | 9 +- apps/openmw/mwscript/aiextensions.cpp | 19 ++--- apps/openmw/mwscript/containerextensions.cpp | 6 +- apps/openmw/mwscript/dialogueextensions.cpp | 8 +- apps/openmw/mwscript/globalscripts.cpp | 11 ++- apps/openmw/mwscript/locals.cpp | 10 +-- apps/openmw/mwscript/scriptmanagerimp.cpp | 13 +-- apps/openmw/mwscript/statsextensions.cpp | 8 +- .../mwscript/transformationextensions.cpp | 6 +- apps/openmw/mwsound/ffmpeg_decoder.cpp | 10 +-- apps/openmw/mwsound/openal_output.cpp | 83 ++++++++++--------- apps/openmw/mwsound/soundmanagerimp.cpp | 28 ++++--- apps/openmw/mwstate/statemanagerimp.cpp | 18 ++-- apps/openmw/mwworld/cellpreloader.cpp | 7 +- apps/openmw/mwworld/cells.cpp | 5 +- apps/openmw/mwworld/cellstore.cpp | 28 +++---- apps/openmw/mwworld/containerstore.cpp | 7 +- apps/openmw/mwworld/contentloader.hpp | 6 +- apps/openmw/mwworld/esmstore.cpp | 9 +- apps/openmw/mwworld/inventorystore.cpp | 3 +- apps/openmw/mwworld/livecellref.cpp | 10 +-- apps/openmw/mwworld/localscripts.cpp | 14 ++-- apps/openmw/mwworld/player.cpp | 7 +- apps/openmw/mwworld/projectilemanager.cpp | 5 +- apps/openmw/mwworld/scene.cpp | 14 ++-- apps/openmw/mwworld/store.cpp | 5 +- apps/openmw/mwworld/worldimp.cpp | 14 ++-- 62 files changed, 310 insertions(+), 297 deletions(-) diff --git a/apps/openmw/engine.cpp b/apps/openmw/engine.cpp index bd40dc1abe..2941ede1b2 100644 --- a/apps/openmw/engine.cpp +++ b/apps/openmw/engine.cpp @@ -10,6 +10,8 @@ #include +#include + #include #include @@ -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 image = result.getImage(); @@ -564,21 +566,19 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings) { std::pair result = mEnvironment.getScriptManager()->compileAll(); if (result.first) - std::cout + Log(Debug::Info) << "compiled " << result.second << " of " << result.first << " scripts (" << 100*static_cast (result.second)/result.first - << "%)" - << std::endl; + << "%)"; } if (mCompileAllDialogue) { std::pair 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 (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) diff --git a/apps/openmw/main.cpp b/apps/openmw/main.cpp index f9cf585444..176adfad03 100644 --- a/apps/openmw/main.cpp +++ b/apps/openmw/main.cpp @@ -1,5 +1,3 @@ -#include - #include #include #include @@ -202,8 +200,8 @@ bool parseOptions (int argc, char** argv, OMW::Engine& engine, Files::Configurat StringsVector content = variables["content"].as().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().toStdString()); engine.setSkipMenu (variables["skip-menu"].as(), variables["new-game"].as()); if (!variables["skip-menu"].as() && variables["new-game"].as()) - 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()); diff --git a/apps/openmw/mwclass/creature.cpp b/apps/openmw/mwclass/creature.cpp index 02a8a17ef0..161711751d 100644 --- a/apps/openmw/mwclass/creature.cpp +++ b/apps/openmw/mwclass/creature.cpp @@ -1,7 +1,7 @@ #include "creature.hpp" #include - +#include #include #include #include @@ -146,7 +146,7 @@ namespace MWClass if (const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().get().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 diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index 1c293f1e41..c06c3f67c6 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -4,6 +4,7 @@ #include +#include #include #include #include @@ -365,7 +366,7 @@ namespace MWClass if (const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().get().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 << "'"; } } diff --git a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp index df214ce863..c3e56c0bf5 100644 --- a/apps/openmw/mwdialogue/dialoguemanagerimp.cpp +++ b/apps/openmw/mwdialogue/dialoguemanagerimp.cpp @@ -5,7 +5,8 @@ #include #include #include -#include + +#include #include #include @@ -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(); } } } diff --git a/apps/openmw/mwdialogue/scripttest.cpp b/apps/openmw/mwdialogue/scripttest.cpp index 54b4d8cd9f..4f0b7422c7 100644 --- a/apps/openmw/mwdialogue/scripttest.cpp +++ b/apps/openmw/mwdialogue/scripttest.cpp @@ -1,7 +1,5 @@ #include "scripttest.hpp" -#include - #include "../mwworld/manualref.hpp" #include "../mwworld/esmstore.hpp" #include "../mwworld/class.hpp" @@ -12,6 +10,7 @@ #include "../mwscript/compilercontext.hpp" +#include #include #include #include @@ -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"; } } } diff --git a/apps/openmw/mwgui/charactercreation.cpp b/apps/openmw/mwgui/charactercreation.cpp index 2deb622151..e3effa995b 100644 --- a/apps/openmw/mwgui/charactercreation.cpp +++ b/apps/openmw/mwgui/charactercreation.cpp @@ -1,5 +1,6 @@ #include "charactercreation.hpp" +#include #include #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"; } } diff --git a/apps/openmw/mwgui/class.cpp b/apps/openmw/mwgui/class.cpp index 4d2a15c820..6ed7a44915 100644 --- a/apps/openmw/mwgui/class.cpp +++ b/apps/openmw/mwgui/class.cpp @@ -12,6 +12,8 @@ #include "../mwworld/esmstore.hpp" +#include + #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); diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index 7b177fdb03..aeb6dfc0f5 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -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; } diff --git a/apps/openmw/mwgui/formatting.cpp b/apps/openmw/mwgui/formatting.cpp index edcb94eed9..663bd73380 100644 --- a/apps/openmw/mwgui/formatting.cpp +++ b/apps/openmw/mwgui/formatting.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -300,7 +301,7 @@ namespace MWGui if (!exists) { - std::cerr << "Warning: Could not find \"" << src << "\" referenced by an tag." << std::endl; + Log(Debug::Warning) << "Warning: Could not find \"" << src << "\" referenced by an tag."; break; } diff --git a/apps/openmw/mwgui/loadingscreen.cpp b/apps/openmw/mwgui/loadingscreen.cpp index 28f4b88901..be3d477e1e 100644 --- a/apps/openmw/mwgui/loadingscreen.cpp +++ b/apps/openmw/mwgui/loadingscreen.cpp @@ -10,9 +10,8 @@ #include #include - +#include #include - #include #include @@ -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) diff --git a/apps/openmw/mwgui/messagebox.cpp b/apps/openmw/mwgui/messagebox.cpp index a79112b9f0..2fbce97d46 100644 --- a/apps/openmw/mwgui/messagebox.cpp +++ b/apps/openmw/mwgui/messagebox.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #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; diff --git a/apps/openmw/mwgui/race.cpp b/apps/openmw/mwgui/race.cpp index 64609cbe69..96c0d7de4f 100644 --- a/apps/openmw/mwgui/race.cpp +++ b/apps/openmw/mwgui/race.cpp @@ -6,6 +6,7 @@ #include +#include #include #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(); } } diff --git a/apps/openmw/mwgui/savegamedialog.cpp b/apps/openmw/mwgui/savegamedialog.cpp index 43e5111447..45790cbf5f 100644 --- a/apps/openmw/mwgui/savegamedialog.cpp +++ b/apps/openmw/mwgui/savegamedialog.cpp @@ -12,6 +12,8 @@ #include #include +#include + #include #include @@ -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; } diff --git a/apps/openmw/mwgui/settingswindow.cpp b/apps/openmw/mwgui/settingswindow.cpp index 677ddefb3a..80ed9202a0 100644 --- a/apps/openmw/mwgui/settingswindow.cpp +++ b/apps/openmw/mwgui/settingswindow.cpp @@ -12,6 +12,7 @@ #include +#include #include #include @@ -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: "< - #include - +#include #include #include #include @@ -245,7 +243,7 @@ namespace MWGui const ESM::Enchantment* ench = MWBase::Environment::get().getWorld()->getStore().get().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; } diff --git a/apps/openmw/mwgui/spellmodel.cpp b/apps/openmw/mwgui/spellmodel.cpp index a2710b633f..0933737ca2 100644 --- a/apps/openmw/mwgui/spellmodel.cpp +++ b/apps/openmw/mwgui/spellmodel.cpp @@ -1,6 +1,6 @@ #include "spellmodel.hpp" -#include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -94,7 +94,7 @@ namespace MWGui const ESM::Enchantment* enchant = esmStore.get().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; } diff --git a/apps/openmw/mwgui/videowidget.cpp b/apps/openmw/mwgui/videowidget.cpp index 5a4bb981f4..516f5cfcc6 100644 --- a/apps/openmw/mwgui/videowidget.cpp +++ b/apps/openmw/mwgui/videowidget.cpp @@ -6,6 +6,7 @@ #include +#include #include #include @@ -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; } diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index c97efed34d..e1bf9627de 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -21,6 +21,8 @@ #include #include +#include + #include #include @@ -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().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()) diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index 242058c5f7..709c611963 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -10,6 +10,7 @@ #include +#include #include #include #include @@ -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); } } diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index 2d535f57b2..d1f4e47df6 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -8,7 +8,7 @@ #include #include - +#include #include #include "../mwworld/esmstore.hpp" @@ -1720,7 +1720,7 @@ namespace MWMechanics } else { - std::cerr<< "Warning: Actors::playAnimationGroup: Unable to find " << ptr.getCellRef().getRefId() << std::endl; + Log(Debug::Warning) << "Warning: Actors::playAnimationGroup: Unable to find " << ptr.getCellRef().getRefId(); return false; } } diff --git a/apps/openmw/mwmechanics/aisequence.cpp b/apps/openmw/mwmechanics/aisequence.cpp index 0851748200..753dc240ed 100644 --- a/apps/openmw/mwmechanics/aisequence.cpp +++ b/apps/openmw/mwmechanics/aisequence.cpp @@ -1,8 +1,8 @@ #include "aisequence.hpp" #include -#include +#include #include #include "../mwbase/environment.hpp" @@ -282,7 +282,7 @@ void AiSequence::execute (const MWWorld::Ptr& actor, CharacterController& charac } catch (std::exception& e) { - std::cerr << "Error during AiSequence::execute: " << e.what() << std::endl; + Log(Debug::Error) << "Error during AiSequence::execute: " << e.what(); } } } diff --git a/apps/openmw/mwmechanics/aiwander.cpp b/apps/openmw/mwmechanics/aiwander.cpp index 928b09cf9a..67468453ab 100644 --- a/apps/openmw/mwmechanics/aiwander.cpp +++ b/apps/openmw/mwmechanics/aiwander.cpp @@ -1,10 +1,9 @@ #include "aiwander.hpp" #include -#include +#include #include - #include #include "../mwbase/world.hpp" @@ -24,8 +23,6 @@ #include "coordinateconverter.hpp" #include "actorutil.hpp" - - namespace MWMechanics { static const int COUNT_BEFORE_RESET = 10; @@ -677,7 +674,7 @@ namespace MWMechanics } else { - std::cerr<< "Error: Attempted to play out of range idle animation \""< - +#include #include #include "../mwworld/ptr.hpp" @@ -63,7 +62,7 @@ namespace MWMechanics // Vanilla doesn't fail on nonexistent items in levelled lists if (!MWBase::Environment::get().getWorld()->getStore().find(Misc::StringUtils::lowerCase(item))) { - std::cerr << "Warning: ignoring nonexistent item '" << item << "' in levelled list '" << levItem->mId << "'" << std::endl; + Log(Debug::Warning) << "Warning: ignoring nonexistent item '" << item << "' in levelled list '" << levItem->mId << "'"; return std::string(); } diff --git a/apps/openmw/mwmechanics/objects.cpp b/apps/openmw/mwmechanics/objects.cpp index 7d7a5f14ff..d8821276e4 100644 --- a/apps/openmw/mwmechanics/objects.cpp +++ b/apps/openmw/mwmechanics/objects.cpp @@ -1,6 +1,6 @@ #include "objects.hpp" -#include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -88,7 +88,7 @@ bool Objects::playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& gro } else { - std::cerr<< "Warning: Objects::playAnimationGroup: Unable to find " << ptr.getCellRef().getRefId() << std::endl; + Log(Debug::Warning) << "Warning: Objects::playAnimationGroup: Unable to find " << ptr.getCellRef().getRefId(); return false; } } diff --git a/apps/openmw/mwmechanics/summoning.cpp b/apps/openmw/mwmechanics/summoning.cpp index 71c49f9df8..b3f7afc531 100644 --- a/apps/openmw/mwmechanics/summoning.cpp +++ b/apps/openmw/mwmechanics/summoning.cpp @@ -1,6 +1,6 @@ #include "summoning.hpp" -#include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -76,7 +76,7 @@ namespace MWMechanics } catch (std::exception& e) { - std::cerr << "Failed to spawn summoned creature: " << e.what() << std::endl; + Log(Debug::Error) << "Failed to spawn summoned creature: " << e.what(); // still insert into creatureMap so we don't try to spawn again every frame, that would spam the warning log } diff --git a/apps/openmw/mwphysics/physicssystem.cpp b/apps/openmw/mwphysics/physicssystem.cpp index ae8d76a809..13a0f23ac3 100644 --- a/apps/openmw/mwphysics/physicssystem.cpp +++ b/apps/openmw/mwphysics/physicssystem.cpp @@ -1,6 +1,5 @@ #include "physicssystem.hpp" -#include #include #include @@ -20,7 +19,7 @@ #include #include #include - +#include #include #include #include @@ -638,7 +637,7 @@ namespace MWPhysics mPtr.getRefData().getBaseNode()->accept(visitor); if (!visitor.mFound) { - std::cerr << "Error: animateCollisionShapes can't find node " << recIndex << " for " << mPtr.getCellRef().getRefId() << std::endl; + Log(Debug::Warning) << "Warning: animateCollisionShapes can't find node " << recIndex << " for " << mPtr.getCellRef().getRefId(); // Remove nonexistent nodes from animated shapes map and early out mShapeInstance->mAnimatedShapes.erase(recIndex); @@ -708,7 +707,7 @@ namespace MWPhysics if (physFramerate > 0) { mPhysicsDt = 1.f / physFramerate; - std::cerr << "Warning: physics framerate was overridden (a new value is " << physFramerate << ")." << std::endl; + Log(Debug::Warning) << "Warning: using custom physics framerate (" << physFramerate << " FPS)."; } } } diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index ff31e1cfb2..8e1105b9f1 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -12,6 +12,8 @@ #include #include +#include + #include #include @@ -192,7 +194,7 @@ namespace for (RemoveVec::iterator it = mToRemove.begin(); it != mToRemove.end(); ++it) { if (!it->second->removeChild(it->first)) - std::cerr << "error removing " << it->first->getName() << std::endl; + Log(Debug::Error) << "Error removing " << it->first->getName(); } } @@ -612,7 +614,7 @@ namespace MWRender NodeMap::const_iterator found = nodeMap.find(bonename); if (found == nodeMap.end()) { - std::cerr << "Warning: addAnimSource: can't find bone '" + bonename << "' in " << baseModel << " (referenced by " << kfname << ")" << std::endl; + Log(Debug::Warning) << "Warning: addAnimSource: can't find bone '" + bonename << "' in " << baseModel << " (referenced by " << kfname << ")"; continue; } @@ -724,7 +726,7 @@ namespace MWRender } catch (std::exception& e) { - std::cerr << "Error handling text key " << evt << ": " << e.what() << std::endl; + Log(Debug::Error) << "Error handling text key " << evt << ": " << e.what(); } } } @@ -1767,12 +1769,12 @@ namespace MWRender PartHolder::~PartHolder() { if (mNode.get() && !mNode->getNumParents()) - std::cerr << "Error: part has no parents " << std::endl; + Log(Debug::Verbose) << "Part has no parents" ; if (mNode.get() && mNode->getNumParents()) { if (mNode->getNumParents() > 1) - std::cerr << "Error: part has multiple parents " << mNode->getNumParents() << " " << mNode.get() << std::endl; + Log(Debug::Verbose) << "Part has multiple (" << mNode->getNumParents() << ") parents"; mNode->getParent(0)->removeChild(mNode); } } diff --git a/apps/openmw/mwrender/bulletdebugdraw.cpp b/apps/openmw/mwrender/bulletdebugdraw.cpp index d35c3ac5de..eb3775cb46 100644 --- a/apps/openmw/mwrender/bulletdebugdraw.cpp +++ b/apps/openmw/mwrender/bulletdebugdraw.cpp @@ -1,12 +1,12 @@ #include "bulletdebugdraw.hpp" -#include - #include #include #include +#include + #include "vismask.hpp" namespace @@ -91,7 +91,7 @@ void DebugDrawer::drawContactPoint(const btVector3 &PointOnB, const btVector3 &n void DebugDrawer::reportErrorWarning(const char *warningString) { - std::cerr << warningString << std::endl; + Log(Debug::Warning) << warningString; } void DebugDrawer::setDebugMode(int isOn) diff --git a/apps/openmw/mwrender/characterpreview.cpp b/apps/openmw/mwrender/characterpreview.cpp index faaa3799eb..2e0249e608 100644 --- a/apps/openmw/mwrender/characterpreview.cpp +++ b/apps/openmw/mwrender/characterpreview.cpp @@ -1,7 +1,6 @@ #include "characterpreview.hpp" #include -#include #include #include @@ -14,6 +13,7 @@ #include #include +#include #include #include @@ -474,7 +474,7 @@ namespace MWRender mCamera->addUpdateCallback(mUpdateCameraCallback); } else - std::cerr << "Error: Bip01 Head node not found" << std::endl; + Log(Debug::Error) << "Error: Bip01 Head node not found"; } } diff --git a/apps/openmw/mwrender/creatureanimation.cpp b/apps/openmw/mwrender/creatureanimation.cpp index 827b576c33..6db223bd54 100644 --- a/apps/openmw/mwrender/creatureanimation.cpp +++ b/apps/openmw/mwrender/creatureanimation.cpp @@ -1,11 +1,9 @@ #include "creatureanimation.hpp" -#include - #include #include - +#include #include #include #include @@ -155,7 +153,7 @@ void CreatureWeaponAnimation::updatePart(PartHolderPtr& scene, int slot) } catch (std::exception& e) { - std::cerr << "Can not add creature part: " << e.what() << std::endl; + Log(Debug::Error) << "Can not add creature part: " << e.what(); } } diff --git a/apps/openmw/mwrender/globalmap.cpp b/apps/openmw/mwrender/globalmap.cpp index af2bb101a8..fae524faa7 100644 --- a/apps/openmw/mwrender/globalmap.cpp +++ b/apps/openmw/mwrender/globalmap.cpp @@ -15,6 +15,8 @@ #include #include +#include + #include #include @@ -411,14 +413,14 @@ namespace MWRender osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("png"); if (!readerwriter) { - std::cerr << "Error: Can't write map overlay: no png readerwriter found" << std::endl; + Log(Debug::Error) << "Error: Can't write map overlay: no png readerwriter found"; return; } osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*mOverlayImage, ostream); if (!result.success()) { - std::cerr << "Error: Can't write map overlay: " << result.message() << " code " << result.status() << std::endl; + Log(Debug::Warning) << "Error: Can't write map overlay: " << result.message() << " code " << result.status(); return; } @@ -463,14 +465,14 @@ namespace MWRender osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("png"); if (!readerwriter) { - std::cerr << "Error: Can't read map overlay: no png readerwriter found" << std::endl; + Log(Debug::Error) << "Error: Can't read map overlay: no png readerwriter found"; return; } osgDB::ReaderWriter::ReadResult result = readerwriter->readImage(istream); if (!result.success()) { - std::cerr << "Error: Can't read map overlay: " << result.message() << " code " << result.status() << std::endl; + Log(Debug::Error) << "Error: Can't read map overlay: " << result.message() << " code " << result.status(); return; } @@ -572,7 +574,7 @@ namespace MWRender CameraVector::iterator found = std::find(mActiveCameras.begin(), mActiveCameras.end(), camera); if (found == mActiveCameras.end()) { - std::cerr << "Error: GlobalMap trying to remove an inactive camera" << std::endl; + Log(Debug::Error) << "Error: GlobalMap trying to remove an inactive camera"; return; } mActiveCameras.erase(found); diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 0b65a6b13d..5e501ecf86 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -1,6 +1,5 @@ #include "localmap.hpp" -#include #include #include @@ -12,6 +11,7 @@ #include +#include #include #include #include @@ -320,7 +320,7 @@ void LocalMap::markForRemoval(osg::Camera *cam) CameraVector::iterator found = std::find(mActiveCameras.begin(), mActiveCameras.end(), cam); if (found == mActiveCameras.end()) { - std::cerr << "Error: trying to remove an inactive camera" << std::endl; + Log(Debug::Error) << "Error: trying to remove an inactive camera"; return; } mActiveCameras.erase(found); @@ -492,7 +492,7 @@ void LocalMap::requestInteriorMap(const MWWorld::CellStore* cell) // We are using the same bounds and angle as we were using when the textures were originally made. Segments should come out the same. if (i >= int(fog->mFogTextures.size())) { - std::cout << "Error: fog texture count mismatch" << std::endl; + Log(Debug::Warning) << "Warning: fog texture count mismatch"; break; } @@ -684,7 +684,7 @@ void LocalMap::MapSegment::loadFogOfWar(const ESM::FogTexture &esm) osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("tga"); if (!readerwriter) { - std::cerr << "Error: Unable to load fog, can't find a tga ReaderWriter" << std::endl; + Log(Debug::Error) << "Error: Unable to load fog, can't find a tga ReaderWriter" ; return; } @@ -693,7 +693,7 @@ void LocalMap::MapSegment::loadFogOfWar(const ESM::FogTexture &esm) osgDB::ReaderWriter::ReadResult result = readerwriter->readImage(in); if (!result.success()) { - std::cerr << "Error: Failed to read fog: " << result.message() << " code " << result.status() << std::endl; + Log(Debug::Error) << "Error: Failed to read fog: " << result.message() << " code " << result.status(); return; } @@ -716,7 +716,7 @@ void LocalMap::MapSegment::saveFogOfWar(ESM::FogTexture &fog) const osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("tga"); if (!readerwriter) { - std::cerr << "Error: Unable to write fog, can't find a tga ReaderWriter" << std::endl; + Log(Debug::Error) << "Error: Unable to write fog, can't find a tga ReaderWriter"; return; } @@ -725,7 +725,7 @@ void LocalMap::MapSegment::saveFogOfWar(ESM::FogTexture &fog) const osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*mFogOfWarImage, ostream); if (!result.success()) { - std::cerr << "Error: Unable to write fog: " << result.message() << " code " << result.status() << std::endl; + Log(Debug::Error) << "Error: Unable to write fog: " << result.message() << " code " << result.status(); return; } mFogOfWarImage->flipVertical(); diff --git a/apps/openmw/mwrender/npcanimation.cpp b/apps/openmw/mwrender/npcanimation.cpp index baf6cb8229..98f8ce892d 100644 --- a/apps/openmw/mwrender/npcanimation.cpp +++ b/apps/openmw/mwrender/npcanimation.cpp @@ -7,6 +7,8 @@ #include #include +#include + #include #include @@ -435,7 +437,7 @@ void NpcAnimation::updateNpcBase() if (bp) mHeadModel = "meshes\\" + bp->mModel; else - std::cerr << "Warning: Failed to load body part '" << mNpc->mHead << "'" << std::endl; + Log(Debug::Warning) << "Warning: Failed to load body part '" << mNpc->mHead << "'"; } mHairModel = ""; @@ -445,7 +447,7 @@ void NpcAnimation::updateNpcBase() if (bp) mHairModel = "meshes\\" + bp->mModel; else - std::cerr << "Warning: Failed to load body part '" << mNpc->mHair << "'" << std::endl; + Log(Debug::Warning) << "Warning: Failed to load body part '" << mNpc->mHair << "'"; } } @@ -758,7 +760,7 @@ bool NpcAnimation::addOrReplaceIndividualPart(ESM::PartReferenceType type, int g } catch (std::exception& e) { - std::cerr << "Error adding NPC part: " << e.what() << std::endl; + Log(Debug::Error) << "Error adding NPC part: " << e.what(); return false; } @@ -845,7 +847,7 @@ void NpcAnimation::addPartGroup(int group, int priority, const std::vectormFemale << "'" << std::endl; + Log(Debug::Warning) << "Warning: Failed to find body part '" << part->mFemale << "'"; } if(!bodypart && !part->mMale.empty()) { @@ -860,7 +862,7 @@ void NpcAnimation::addPartGroup(int group, int priority, const std::vectormMale << "'" << std::endl; + Log(Debug::Warning) << "Warning: Failed to find body part '" << part->mMale << "'"; } if(bodypart) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 03863000ff..e17fe3191e 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -22,6 +22,8 @@ #include +#include + #include #include #include @@ -709,7 +711,7 @@ namespace MWRender if (!found) { - std::cerr << "Wrong screenshot type: " << settingArgs[0] << "." << std::endl; + Log(Debug::Warning) << "Wrong screenshot type: " << settingArgs[0] << "."; return false; } } @@ -728,7 +730,7 @@ namespace MWRender if (mCamera->isVanityOrPreviewModeEnabled()) { - std::cerr << "Spherical screenshots are not allowed in preview mode." << std::endl; + Log(Debug::Warning) << "Spherical screenshots are not allowed in preview mode."; return false; } diff --git a/apps/openmw/mwrender/water.cpp b/apps/openmw/mwrender/water.cpp index 3c617f794e..52832ad874 100644 --- a/apps/openmw/mwrender/water.cpp +++ b/apps/openmw/mwrender/water.cpp @@ -19,6 +19,8 @@ #include #include +#include + #include #include #include @@ -29,7 +31,6 @@ #include - #include #include @@ -193,16 +194,16 @@ osg::ref_ptr readPngImage (const std::string& file) boost::filesystem::ifstream inStream; inStream.open(file, std::ios_base::in | std::ios_base::binary); if (inStream.fail()) - std::cerr << "Error: Failed to open " << file << std::endl; + Log(Debug::Error) << "Error: Failed to open " << file; osgDB::ReaderWriter* reader = osgDB::Registry::instance()->getReaderWriterForExtension("png"); if (!reader) { - std::cerr << "Error: Failed to read " << file << ", no png readerwriter found" << std::endl; + Log(Debug::Error) << "Error: Failed to read " << file << ", no png readerwriter found"; return osg::ref_ptr(); } osgDB::ReaderWriter::ReadResult result = reader->readImage(inStream); if (!result.success()) - std::cerr << "Error: Failed to read " << file << ": " << result.message() << " code " << result.status() << std::endl; + Log(Debug::Error) << "Error: Failed to read " << file << ": " << result.message() << " code " << result.status(); return result.getImage(); } diff --git a/apps/openmw/mwscript/aiextensions.cpp b/apps/openmw/mwscript/aiextensions.cpp index c51a55b508..0bb94a1342 100644 --- a/apps/openmw/mwscript/aiextensions.cpp +++ b/apps/openmw/mwscript/aiextensions.cpp @@ -1,7 +1,8 @@ #include "aiextensions.hpp" #include -#include + +#include #include #include @@ -50,7 +51,7 @@ namespace MWScript MWMechanics::AiActivate activatePackage(objectID); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(activatePackage, ptr); - std::cout << "AiActivate" << std::endl; + Log(Debug::Info) << "AiActivate"; } }; @@ -78,7 +79,7 @@ namespace MWScript MWMechanics::AiTravel travelPackage(x, y, z); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(travelPackage, ptr); - std::cout << "AiTravel: " << x << ", " << y << ", " << z << std::endl; + Log(Debug::Info) << "AiTravel: " << x << ", " << y << ", " << z; } }; @@ -112,8 +113,7 @@ namespace MWScript MWMechanics::AiEscort escortPackage(actorID, static_cast(duration), x, y, z); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(escortPackage, ptr); - std::cout << "AiEscort: " << x << ", " << y << ", " << z << ", " << duration - << std::endl; + Log(Debug::Info) << "AiEscort: " << x << ", " << y << ", " << z << ", " << duration; } }; @@ -155,8 +155,7 @@ namespace MWScript MWMechanics::AiEscort escortPackage(actorID, cellID, static_cast(duration), x, y, z); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(escortPackage, ptr); - std::cout << "AiEscort: " << x << ", " << y << ", " << z << ", " << duration - << std::endl; + Log(Debug::Info) << "AiEscort: " << x << ", " << y << ", " << z << ", " << duration; } }; @@ -316,8 +315,7 @@ namespace MWScript MWMechanics::AiFollow followPackage(actorID, duration, x, y ,z); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(followPackage, ptr); - std::cout << "AiFollow: " << actorID << ", " << x << ", " << y << ", " << z << ", " << duration - << std::endl; + Log(Debug::Info) << "AiFollow: " << actorID << ", " << x << ", " << y << ", " << z << ", " << duration; } }; @@ -353,8 +351,7 @@ namespace MWScript MWMechanics::AiFollow followPackage(actorID, cellID, duration, x, y ,z); ptr.getClass().getCreatureStats (ptr).getAiSequence().stack(followPackage, ptr); - std::cout << "AiFollow: " << actorID << ", " << x << ", " << y << ", " << z << ", " << duration - << std::endl; + Log(Debug::Info) << "AiFollow: " << actorID << ", " << x << ", " << y << ", " << z << ", " << duration; } }; diff --git a/apps/openmw/mwscript/containerextensions.cpp b/apps/openmw/mwscript/containerextensions.cpp index 0feadaa59d..dd3e54a88a 100644 --- a/apps/openmw/mwscript/containerextensions.cpp +++ b/apps/openmw/mwscript/containerextensions.cpp @@ -6,6 +6,8 @@ #include +#include + #include #include @@ -190,8 +192,8 @@ namespace MWScript if (it == invStore.end()) { it = ptr.getClass().getContainerStore (ptr).add (item, 1, ptr); - std::cerr << "Implicitly adding one " << item << " to container " - "to fulfil requirements of Equip instruction" << std::endl; + Log(Debug::Warning) << "Implicitly adding one " << item << " to container " + "to fulfil requirements of Equip instruction"; } if (ptr == MWMechanics::getPlayer()) diff --git a/apps/openmw/mwscript/dialogueextensions.cpp b/apps/openmw/mwscript/dialogueextensions.cpp index 4b6ddcf9fb..135cb787e3 100644 --- a/apps/openmw/mwscript/dialogueextensions.cpp +++ b/apps/openmw/mwscript/dialogueextensions.cpp @@ -1,10 +1,8 @@ -#include - #include "dialogueextensions.hpp" #include #include - +#include #include #include #include @@ -139,8 +137,8 @@ namespace MWScript if (!ptr.getClass().isActor()) { const std::string error = "Warning: \"forcegreeting\" command works only for actors."; - runtime.getContext().report (error); - std::cerr << error << std::endl; + runtime.getContext().report(error); + Log(Debug::Warning) << error; return; } diff --git a/apps/openmw/mwscript/globalscripts.cpp b/apps/openmw/mwscript/globalscripts.cpp index 6074a12d0e..a52a4938ad 100644 --- a/apps/openmw/mwscript/globalscripts.cpp +++ b/apps/openmw/mwscript/globalscripts.cpp @@ -1,8 +1,8 @@ #include "globalscripts.hpp" #include -#include +#include #include #include #include @@ -113,9 +113,9 @@ namespace MWScript } catch (const std::exception& exception) { - std::cerr + Log(Debug::Error) << "Failed to add start script " << *iter << " because an exception has " - << "been thrown: " << exception.what() << std::endl; + << "been thrown: " << exception.what(); } } } @@ -169,10 +169,9 @@ namespace MWScript } catch (const std::exception& exception) { - std::cerr + Log(Debug::Error) << "Failed to add start script " << script.mId - << " because an exception has been thrown: " << exception.what() - << std::endl; + << " because an exception has been thrown: " << exception.what(); return true; } diff --git a/apps/openmw/mwscript/locals.cpp b/apps/openmw/mwscript/locals.cpp index 64f3058eb2..4c55731688 100644 --- a/apps/openmw/mwscript/locals.cpp +++ b/apps/openmw/mwscript/locals.cpp @@ -3,7 +3,7 @@ #include #include #include - +#include #include #include @@ -229,10 +229,10 @@ namespace MWScript } catch (std::exception& e) { - std::cerr << "Failed to read local variable state for script '" - << script << "' (legacy format): " << e.what() - << "\nNum shorts: " << numshorts << " / " << mShorts.size() - << " Num longs: " << numlongs << " / " << mLongs.size() << std::endl; + Log(Debug::Error) << "Failed to read local variable state for script '" + << script << "' (legacy format): " << e.what() + << "\nNum shorts: " << numshorts << " / " << mShorts.size() + << " Num longs: " << numlongs << " / " << mLongs.size(); } } else diff --git a/apps/openmw/mwscript/scriptmanagerimp.cpp b/apps/openmw/mwscript/scriptmanagerimp.cpp index 7c1f9bf4df..80496d6dbf 100644 --- a/apps/openmw/mwscript/scriptmanagerimp.cpp +++ b/apps/openmw/mwscript/scriptmanagerimp.cpp @@ -1,11 +1,12 @@ #include "scriptmanagerimp.hpp" #include -#include #include #include #include +#include + #include #include @@ -65,14 +66,14 @@ namespace MWScript } catch (const std::exception& error) { - std::cerr << "Error: An exception has been thrown: " << error.what() << std::endl; + Log(Debug::Error) << "Error: An exception has been thrown: " << error.what(); Success = false; } if (!Success) { - std::cerr - << "Warning: compiling failed: " << name << std::endl; + Log(Debug::Warning) + << "Warning: compiling failed: " << name; } if (Success) @@ -121,8 +122,8 @@ namespace MWScript } catch (const std::exception& e) { - std::cerr << "Execution of script " << name << " failed:" << std::endl; - std::cerr << e.what() << std::endl; + Log(Debug::Error) << "Execution of script " << name << " failed:"; + Log(Debug::Error) << e.what(); iter->second.first.clear(); // don't execute again. } diff --git a/apps/openmw/mwscript/statsextensions.cpp b/apps/openmw/mwscript/statsextensions.cpp index fadc99b663..2ff5035ae3 100644 --- a/apps/openmw/mwscript/statsextensions.cpp +++ b/apps/openmw/mwscript/statsextensions.cpp @@ -1,6 +1,5 @@ #include "statsextensions.hpp" -#include #include #include @@ -9,7 +8,7 @@ #include #include - +#include #include #include #include @@ -246,9 +245,10 @@ namespace MWScript if (R()(runtime, false, true).isEmpty()) { - std::cerr + Log(Debug::Warning) << "Warning: Compensating for broken script in Morrowind.esm by " - << "ignoring remote access to dagoth_ur_1" << std::endl; + << "ignoring remote access to dagoth_ur_1"; + return; } } diff --git a/apps/openmw/mwscript/transformationextensions.cpp b/apps/openmw/mwscript/transformationextensions.cpp index 611199f723..8f0c725193 100644 --- a/apps/openmw/mwscript/transformationextensions.cpp +++ b/apps/openmw/mwscript/transformationextensions.cpp @@ -1,4 +1,4 @@ -#include +#include #include @@ -317,7 +317,7 @@ namespace MWScript { std::string error = "Warning: PositionCell: unknown interior cell (" + cellID + "), moving to exterior instead"; runtime.getContext().report (error); - std::cerr << error << std::endl; + Log(Debug::Warning) << error; } } if(store) @@ -429,7 +429,7 @@ namespace MWScript if(!cell) { runtime.getContext().report ("unknown cell (" + cellID + ")"); - std::cerr << "unknown cell (" << cellID << ")\n"; + Log(Debug::Error) << "Error: unknown cell (" << cellID << ")"; } } if(store) diff --git a/apps/openmw/mwsound/ffmpeg_decoder.cpp b/apps/openmw/mwsound/ffmpeg_decoder.cpp index f458c0a978..7dffd685a3 100644 --- a/apps/openmw/mwsound/ffmpeg_decoder.cpp +++ b/apps/openmw/mwsound/ffmpeg_decoder.cpp @@ -3,9 +3,9 @@ #include #include -#include #include +#include #include namespace MWSound @@ -28,7 +28,7 @@ int FFmpeg_Decoder::readPacket(void *user_data, uint8_t *buf, int buf_size) int FFmpeg_Decoder::writePacket(void *, uint8_t *, int) { - std::cerr<< "can't write to read-only stream" <codec->channels, (*mStream)->codec->channel_layout); - std::cerr<< "Unsupported channel layout: "<codec->channels == 1) { @@ -385,7 +385,7 @@ size_t FFmpeg_Decoder::read(char *buffer, size_t bytes) { if(!mStream) { - std::cerr<< "No audio stream" < &output) { if(!mStream) { - std::cerr<< "No audio stream" < #include -#include #include #include #include @@ -8,6 +7,7 @@ #include +#include #include #include @@ -44,8 +44,7 @@ ALCenum checkALCError(ALCdevice *device, const char *func, int line) { ALCenum err = alcGetError(device); if(err != ALC_NO_ERROR) - std::cerr<< ">>>>>>>>> ALC error "<>>>>>>>> AL error "<getInfo(&mSampleRate, &chans, &type); mFormat = getALFormat(chans, type); } - catch(std::exception &e) { - std::cerr<< "Failed to get stream info: "<getName()<<"\"" <getName() << "\""; mIsFinished = true; } return !mIsFinished; @@ -593,17 +591,18 @@ bool OpenAL_Output::init(const std::string &devname, const std::string &hrtfname { deinit(); - std::cout<< "Initializing OpenAL..." < OpenAL_Output::loadSound(const std::string &fname } catch(std::exception &e) { - std::cerr<< "Failed to load audio from "<getIsLooping()) - std::cout <<"Warning: cannot loop stream \""<getName()<<"\""<< std::endl; + Log(Debug::Warning) << "Warning: cannot loop stream \"" << decoder->getName() << "\""; + initCommon2D(source, sound->getPosition(), sound->getRealVolume(), sound->getPitch(), false, sound->getUseEnv()); if(getALError() != AL_NO_ERROR) @@ -1266,13 +1266,14 @@ bool OpenAL_Output::streamSound3D(DecoderPtr decoder, Stream *sound, bool getLou { if(mFreeSources.empty()) { - std::cerr<< "No free sources!" <getIsLooping()) - std::cout <<"Warning: cannot loop stream \""<getName()<<"\""<< std::endl; + Log(Debug::Warning) << "Warning: cannot loop stream \"" << decoder->getName() << "\""; + initCommon3D(source, sound->getPosition(), sound->getMinDistance(), sound->getMaxDistance(), sound->getRealVolume(), sound->getPitch(), false, sound->getUseEnv()); if(getALError() != AL_NO_ERROR) diff --git a/apps/openmw/mwsound/soundmanagerimp.cpp b/apps/openmw/mwsound/soundmanagerimp.cpp index 8c71ab61b1..d6dc2ba99c 100644 --- a/apps/openmw/mwsound/soundmanagerimp.cpp +++ b/apps/openmw/mwsound/soundmanagerimp.cpp @@ -1,6 +1,5 @@ #include "soundmanagerimp.hpp" -#include #include #include #include @@ -8,7 +7,7 @@ #include #include - +#include #include #include "../mwbase/environment.hpp" @@ -81,7 +80,7 @@ namespace MWSound if(!useSound) { - std::cout<< "Sound disabled." <init(devname, hrtfname, hrtfmode)) { - std::cerr<< "Failed to initialize audio output, sound disabled" < names = mOutput->enumerate(); - std::cout <<"Enumerated output devices:\n"; + std::stringstream stream; + + stream << "Enumerated output devices:\n"; for(const std::string &name : names) - std::cout <<" "<enumerateHrtf(); if(!names.empty()) { - std::cout<< "Enumerated HRTF names:\n"; + stream << "Enumerated HRTF names:\n"; for(const std::string &name : names) - std::cout <<" "<isInitialized()) return; - std::cout <<"Playing "< + #include #include #include @@ -157,7 +159,7 @@ void MWState::StateManager::newGame (bool bypass) std::stringstream error; error << "Failed to start new game: " << e.what(); - std::cerr << error.str() << std::endl; + Log(Debug::Error) << error.str(); cleanup (true); MWBase::Environment::get().getWindowManager()->pushGuiMode (MWGui::GM_MainMenu); @@ -283,7 +285,7 @@ void MWState::StateManager::saveGame (const std::string& description, const Slot // Ensure we have written the number of records that was estimated if (writer.getRecordCount() != recordCount+1) // 1 extra for TES3 record - std::cerr << "Warning: number of written savegame records does not match. Estimated: " << recordCount+1 << ", written: " << writer.getRecordCount() << std::endl; + Log(Debug::Warning) << "Warning: number of written savegame records does not match. Estimated: " << recordCount+1 << ", written: " << writer.getRecordCount(); writer.close(); @@ -305,7 +307,7 @@ void MWState::StateManager::saveGame (const std::string& description, const Slot std::stringstream error; error << "Failed to save game: " << e.what(); - std::cerr << error.str() << std::endl; + Log(Debug::Error) << error.str(); std::vector buttons; buttons.push_back("#{sOk}"); @@ -483,7 +485,7 @@ void MWState::StateManager::loadGame (const Character *character, const std::str default: // ignore invalid records - std::cerr << "Warning: Ignoring unknown record: " << n.toString() << std::endl; + Log(Debug::Warning) << "Warning: Ignoring unknown record: " << n.toString(); reader.skipRecord(); } int progressPercent = static_cast(float(reader.getFileOffset())/total*100); @@ -549,7 +551,7 @@ void MWState::StateManager::loadGame (const Character *character, const std::str std::stringstream error; error << "Failed to load saved game: " << e.what(); - std::cerr << error.str() << std::endl; + Log(Debug::Error) << error.str(); cleanup (true); MWBase::Environment::get().getWindowManager()->pushGuiMode (MWGui::GM_MainMenu); @@ -625,7 +627,7 @@ bool MWState::StateManager::verifyProfile(const ESM::SavedGame& profile) const if (std::find(selectedContentFiles.begin(), selectedContentFiles.end(), *it) == selectedContentFiles.end()) { - std::cerr << "Warning: Savegame dependency " << *it << " is missing." << std::endl; + Log(Debug::Warning) << "Warning: Savegame dependency " << *it << " is missing."; notFound = true; } } @@ -653,7 +655,7 @@ void MWState::StateManager::writeScreenshot(std::vector &imageData) const osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("jpg"); if (!readerwriter) { - std::cerr << "Error: Unable to write screenshot, can't find a jpg ReaderWriter" << std::endl; + Log(Debug::Error) << "Error: Unable to write screenshot, can't find a jpg ReaderWriter"; return; } @@ -661,7 +663,7 @@ void MWState::StateManager::writeScreenshot(std::vector &imageData) const osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*screenshot, ostream); if (!result.success()) { - std::cerr << "Error: Unable to write screenshot: " << result.message() << " code " << result.status() << std::endl; + Log(Debug::Error) << "Error: Unable to write screenshot: " << result.message() << " code " << result.status(); return; } diff --git a/apps/openmw/mwworld/cellpreloader.cpp b/apps/openmw/mwworld/cellpreloader.cpp index 700b91b373..9163f1f2e3 100644 --- a/apps/openmw/mwworld/cellpreloader.cpp +++ b/apps/openmw/mwworld/cellpreloader.cpp @@ -1,7 +1,6 @@ #include "cellpreloader.hpp" -#include - +#include #include #include #include @@ -229,12 +228,12 @@ namespace MWWorld { if (!mWorkQueue) { - std::cerr << "Error: can't preload, no work queue set " << std::endl; + Log(Debug::Error) << "Error: can't preload, no work queue set"; return; } if (cell->getState() == CellStore::State_Unloaded) { - std::cerr << "Error: can't preload objects for unloaded cell" << std::endl; + Log(Debug::Error) << "Error: can't preload objects for unloaded cell"; return; } diff --git a/apps/openmw/mwworld/cells.cpp b/apps/openmw/mwworld/cells.cpp index 752659eb6e..5cac12b9c9 100644 --- a/apps/openmw/mwworld/cells.cpp +++ b/apps/openmw/mwworld/cells.cpp @@ -1,7 +1,6 @@ #include "cells.hpp" -#include - +#include #include #include #include @@ -350,7 +349,7 @@ bool MWWorld::Cells::readRecord (ESM::ESMReader& reader, uint32_t type, catch (...) { // silently drop cells that don't exist anymore - std::cerr << "Warning: Dropping state for cell " << state.mId.mWorldspace << " (cell no longer exists)" << std::endl; + Log(Debug::Warning) << "Warning: Dropping state for cell " << state.mId.mWorldspace << " (cell no longer exists)"; reader.skipRecord(); return true; } diff --git a/apps/openmw/mwworld/cellstore.cpp b/apps/openmw/mwworld/cellstore.cpp index fc3c2e245f..40e904ec2b 100644 --- a/apps/openmw/mwworld/cellstore.cpp +++ b/apps/openmw/mwworld/cellstore.cpp @@ -1,8 +1,9 @@ #include "cellstore.hpp" -#include #include +#include + #include #include #include @@ -138,7 +139,7 @@ namespace return; } - std::cerr << "Warning: Dropping reference to " << state.mRef.mRefID << " (invalid content file link)" << std::endl; + Log(Debug::Warning) << "Warning: Dropping reference to " << state.mRef.mRefID << " (invalid content file link)"; return; } @@ -196,9 +197,9 @@ namespace MWWorld } else { - std::cerr + Log(Debug::Warning) << "Warning: could not resolve cell reference '" << ref.mRefID << "'" - << " (dropping reference)" << std::endl; + << " (dropping reference)"; } } @@ -497,7 +498,7 @@ namespace MWWorld } catch (std::exception& e) { - std::cerr << "An error occurred listing references for cell " << getCell()->getDescription() << ": " << e.what() << std::endl; + Log(Debug::Error) << "An error occurred listing references for cell " << getCell()->getDescription() << ": " << e.what(); } } @@ -553,7 +554,7 @@ namespace MWWorld } catch (std::exception& e) { - std::cerr << "An error occurred loading references for cell " << getCell()->getDescription() << ": " << e.what() << std::endl; + Log(Debug::Error) << "An error occurred loading references for cell " << getCell()->getDescription() << ": " << e.what(); } } @@ -659,11 +660,10 @@ namespace MWWorld case ESM::REC_WEAP: mWeapons.load(ref, deleted, store); break; case ESM::REC_BODY: mBodyParts.load(ref, deleted, store); break; - case 0: std::cerr << "Cell reference '" + ref.mRefID + "' not found!\n"; return; + case 0: Log(Debug::Error) << "Cell reference '" + ref.mRefID + "' not found!"; return; default: - std::cerr - << "Error: Ignoring reference '" << ref.mRefID << "' of unhandled type\n"; + Log(Debug::Error) << "Error: Ignoring reference '" << ref.mRefID << "' of unhandled type"; return; } @@ -756,7 +756,7 @@ namespace MWWorld int type = MWBase::Environment::get().getWorld()->getStore().find(cref.mRefID); if (type == 0) { - std::cerr << "Dropping reference to '" << cref.mRefID << "' (object no longer exists)" << std::endl; + Log(Debug::Warning) << "Dropping reference to '" << cref.mRefID << "' (object no longer exists)"; reader.skipHSubUntil("OBJE"); continue; } @@ -892,7 +892,7 @@ namespace MWWorld if (!visitor.mFound) { - std::cerr << "Warning: Dropping moved ref tag for " << refnum.mIndex << " (moved object no longer exists)" << std::endl; + Log(Debug::Warning) << "Warning: Dropping moved ref tag for " << refnum.mIndex << " (moved object no longer exists)"; continue; } @@ -902,8 +902,8 @@ namespace MWWorld if (otherCell == NULL) { - std::cerr << "Warning: Dropping moved ref tag for " << movedRef->mRef.getRefId() - << " (target cell " << movedTo.mWorldspace << " no longer exists). Reference moved back to its original location." << std::endl; + Log(Debug::Warning) << "Warning: Dropping moved ref tag for " << movedRef->mRef.getRefId() + << " (target cell " << movedTo.mWorldspace << " no longer exists). Reference moved back to its original location."; // Note by dropping tag the object will automatically re-appear in its original cell, though potentially at inapproriate coordinates. // Restore original coordinates: movedRef->mData.setPosition(movedRef->mRef.getPosition()); @@ -913,7 +913,7 @@ namespace MWWorld if (otherCell == this) { // Should never happen unless someone's tampering with files. - std::cerr << "Found invalid moved ref, ignoring" << std::endl; + Log(Debug::Warning) << "Found invalid moved ref, ignoring"; continue; } diff --git a/apps/openmw/mwworld/containerstore.cpp b/apps/openmw/mwworld/containerstore.cpp index 6c369a1548..8fa16ff515 100644 --- a/apps/openmw/mwworld/containerstore.cpp +++ b/apps/openmw/mwworld/containerstore.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include "../mwbase/environment.hpp" @@ -502,7 +503,7 @@ void MWWorld::ContainerStore::addInitialItem (const std::string& id, const std:: } catch (const std::exception& e) { - std::cerr << "Warning: MWWorld::ContainerStore::addInitialItem: " << e.what() << std::endl; + Log(Debug::Warning) << "Warning: MWWorld::ContainerStore::addInitialItem: " << e.what(); } } @@ -826,10 +827,10 @@ void MWWorld::ContainerStore::readState (const ESM::InventoryState& inventory) case ESM::REC_WEAP: readEquipmentState (getState (weapons, state), thisIndex, inventory); break; case ESM::REC_LIGH: readEquipmentState (getState (lights, state), thisIndex, inventory); break; case 0: - std::cerr << "Dropping inventory reference to '" << state.mRef.mRefID << "' (object no longer exists)" << std::endl; + Log(Debug::Warning) << "Dropping inventory reference to '" << state.mRef.mRefID << "' (object no longer exists)"; break; default: - std::cerr << "Warning: Invalid item type in inventory state, refid " << state.mRef.mRefID << std::endl; + Log(Debug::Warning) << "Warning: Invalid item type in inventory state, refid " << state.mRef.mRefID; break; } } diff --git a/apps/openmw/mwworld/contentloader.hpp b/apps/openmw/mwworld/contentloader.hpp index 0f2d807aae..2069a78fc8 100644 --- a/apps/openmw/mwworld/contentloader.hpp +++ b/apps/openmw/mwworld/contentloader.hpp @@ -2,10 +2,10 @@ #define CONTENTLOADER_HPP #include -#include #include #include +#include #include "components/loadinglistener/loadinglistener.hpp" namespace MWWorld @@ -24,8 +24,8 @@ struct ContentLoader virtual void load(const boost::filesystem::path& filepath, int& index) { - std::cout << "Loading content file " << filepath.string() << std::endl; - mListener.setLabel(MyGUI::TextIterator::toTagsString(filepath.string())); + Log(Debug::Info) << "Loading content file " << filepath.string(); + mListener.setLabel(MyGUI::TextIterator::toTagsString(filepath.string())); } protected: diff --git a/apps/openmw/mwworld/esmstore.cpp b/apps/openmw/mwworld/esmstore.cpp index ac5608b8e2..01d8e4b820 100644 --- a/apps/openmw/mwworld/esmstore.cpp +++ b/apps/openmw/mwworld/esmstore.cpp @@ -1,12 +1,11 @@ #include "esmstore.hpp" #include -#include #include +#include #include - #include #include @@ -84,7 +83,7 @@ void ESMStore::load(ESM::ESMReader &esm, Loading::Listener* listener) } else { - std::cerr << "error: info record without dialog" << std::endl; + Log(Debug::Error) << "Error: info record without dialog"; esm.skipRecord(); } } else if (n.intval == ESM::REC_MGEF) { @@ -170,7 +169,7 @@ void ESMStore::validate() const ESM::Faction *fact = mFactions.search(npcFaction); if (!fact) { - std::cerr << "NPC '" << npc.mId << "' (" << npc.mName << ") has nonexistent faction '" << npc.mFaction << "', ignoring it." << std::endl; + Log(Debug::Verbose) << "NPC '" << npc.mId << "' (" << npc.mName << ") has nonexistent faction '" << npc.mFaction << "', ignoring it."; npc.mFaction = ""; npc.mNpdt.mRank = -1; changed = true; @@ -183,7 +182,7 @@ void ESMStore::validate() const ESM::Class *cls = mClasses.search(npcClass); if (!cls) { - std::cerr << "NPC '" << npc.mId << "' (" << npc.mName << ") has nonexistent class '" << npc.mClass << "', using '" << defaultCls << "' class as replacement." << std::endl; + Log(Debug::Verbose) << "NPC '" << npc.mId << "' (" << npc.mName << ") has nonexistent class '" << npc.mClass << "', using '" << defaultCls << "' class as replacement."; npc.mClass = defaultCls; changed = true; } diff --git a/apps/openmw/mwworld/inventorystore.cpp b/apps/openmw/mwworld/inventorystore.cpp index ba3ea23817..6cfffcde6a 100644 --- a/apps/openmw/mwworld/inventorystore.cpp +++ b/apps/openmw/mwworld/inventorystore.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -895,7 +896,7 @@ void MWWorld::InventoryStore::updateRechargingItems() enchantmentId); if (!enchantment) { - std::cerr << "Warning: Can't find enchantment '" << enchantmentId << "' on item " << it->getCellRef().getRefId() << std::endl; + Log(Debug::Warning) << "Warning: Can't find enchantment '" << enchantmentId << "' on item " << it->getCellRef().getRefId(); continue; } diff --git a/apps/openmw/mwworld/livecellref.cpp b/apps/openmw/mwworld/livecellref.cpp index b8178f7746..9cf8a0fe04 100644 --- a/apps/openmw/mwworld/livecellref.cpp +++ b/apps/openmw/mwworld/livecellref.cpp @@ -1,7 +1,6 @@ #include "livecellref.hpp" -#include - +#include #include #include "../mwbase/environment.hpp" @@ -38,10 +37,9 @@ void MWWorld::LiveCellRefBase::loadImp (const ESM::ObjectState& state) } catch (const std::exception& exception) { - std::cerr + Log(Debug::Error) << "Error: failed to load state for local script " << scriptId - << " because an exception has been thrown: " << exception.what() - << std::endl; + << " because an exception has been thrown: " << exception.what(); } } } @@ -51,7 +49,7 @@ void MWWorld::LiveCellRefBase::loadImp (const ESM::ObjectState& state) if (!mRef.getSoul().empty() && !MWBase::Environment::get().getWorld()->getStore().get().search(mRef.getSoul())) { - std::cerr << "Soul '" << mRef.getSoul() << "' not found, removing the soul from soul gem" << std::endl; + Log(Debug::Warning) << "Soul '" << mRef.getSoul() << "' not found, removing the soul from soul gem"; mRef.setSoul(std::string()); } } diff --git a/apps/openmw/mwworld/localscripts.cpp b/apps/openmw/mwworld/localscripts.cpp index 4ed83bf11d..ff47d3e564 100644 --- a/apps/openmw/mwworld/localscripts.cpp +++ b/apps/openmw/mwworld/localscripts.cpp @@ -1,14 +1,12 @@ #include "localscripts.hpp" -#include +#include #include "esmstore.hpp" #include "cellstore.hpp" - #include "class.hpp" #include "containerstore.hpp" - namespace { @@ -93,7 +91,7 @@ void MWWorld::LocalScripts::add (const std::string& scriptName, const Ptr& ptr) for (std::list >::iterator iter = mScripts.begin(); iter!=mScripts.end(); ++iter) if (iter->second==ptr) { - std::cerr << "Error: tried to add local script twice for " << ptr.getCellRef().getRefId() << std::endl; + Log(Debug::Warning) << "Error: tried to add local script twice for " << ptr.getCellRef().getRefId(); remove(ptr); break; } @@ -102,15 +100,15 @@ void MWWorld::LocalScripts::add (const std::string& scriptName, const Ptr& ptr) } catch (const std::exception& exception) { - std::cerr + Log(Debug::Error) << "failed to add local script " << scriptName - << " because an exception has been thrown: " << exception.what() << std::endl; + << " because an exception has been thrown: " << exception.what(); } } else - std::cerr + Log(Debug::Warning) << "failed to add local script " << scriptName - << " because the script does not exist." << std::endl; + << " because the script does not exist."; } void MWWorld::LocalScripts::addCell (CellStore *cell) diff --git a/apps/openmw/mwworld/player.cpp b/apps/openmw/mwworld/player.cpp index 5439447fd0..44b78336d9 100644 --- a/apps/openmw/mwworld/player.cpp +++ b/apps/openmw/mwworld/player.cpp @@ -1,7 +1,8 @@ #include "player.hpp" #include -#include + +#include #include #include @@ -364,7 +365,7 @@ namespace MWWorld if (!player.mObject.mEnabled) { - std::cerr << "Warning: Savegame attempted to disable the player." << std::endl; + Log(Debug::Warning) << "Warning: Savegame attempted to disable the player."; player.mObject.mEnabled = true; } @@ -391,7 +392,7 @@ namespace MWWorld } catch (...) { - std::cerr << "Warning: Player cell '" << player.mCellId.mWorldspace << "' no longer exists" << std::endl; + Log(Debug::Warning) << "Warning: Player cell '" << player.mCellId.mWorldspace << "' no longer exists"; // Cell no longer exists. The loader will have to choose a default cell. mCellStore = NULL; } diff --git a/apps/openmw/mwworld/projectilemanager.cpp b/apps/openmw/mwworld/projectilemanager.cpp index a4a22ea4a3..f150ff0bab 100644 --- a/apps/openmw/mwworld/projectilemanager.cpp +++ b/apps/openmw/mwworld/projectilemanager.cpp @@ -1,11 +1,12 @@ #include "projectilemanager.hpp" #include -#include #include #include +#include + #include #include @@ -647,7 +648,7 @@ namespace MWWorld } catch(...) { - std::cerr << "Warning: Failed to recreate magic projectile from saved data (id \"" << state.mSpellId << "\" no longer exists?)" << std::endl; + Log(Debug::Warning) << "Warning: Failed to recreate magic projectile from saved data (id \"" << state.mSpellId << "\" no longer exists?)"; return true; } diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 2c2d401d18..ed6dde310c 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -1,8 +1,8 @@ #include "scene.hpp" #include -#include +#include #include #include #include @@ -56,7 +56,7 @@ namespace { if (ptr.getRefData().getBaseNode() || physics.getActor(ptr)) { - std::cerr << "Warning: Tried to add " << ptr.getCellRef().getRefId() << " to the scene twice" << std::endl; + Log(Debug::Warning) << "Warning: Tried to add " << ptr.getCellRef().getRefId() << " to the scene twice"; return; } @@ -160,7 +160,7 @@ namespace catch (const std::exception& e) { std::string error ("failed to render '" + ptr.getCellRef().getRefId() + "': "); - std::cerr << error + e.what() << std::endl; + Log(Debug::Error) << error + e.what(); } } @@ -232,7 +232,7 @@ namespace MWWorld void Scene::unloadCell (CellStoreCollection::iterator iter) { - std::cout << "Unloading cell\n"; + Log(Debug::Info) << "Unloading cell " << (*iter)->getCell()->getDescription(); ListAndResetObjectsVisitor visitor; (*iter)->forEach(visitor); @@ -270,7 +270,7 @@ namespace MWWorld if(result.second) { - std::cout << "Loading cell " << cell->getCell()->getDescription() << std::endl; + Log(Debug::Info) << "Loading cell " << cell->getCell()->getDescription(); float verts = ESM::Land::LAND_SIZE; float worldsize = ESM::Land::REAL_SIZE; @@ -546,7 +546,7 @@ namespace MWWorld return; } - std::cout << "Changing to interior\n"; + Log(Debug::Info) << "Changing to interior"; // unload CellStoreCollection::iterator active = mActiveCells.begin(); @@ -624,7 +624,7 @@ namespace MWWorld } catch (std::exception& e) { - std::cerr << "failed to render '" << ptr.getCellRef().getRefId() << "': " << e.what() << std::endl; + Log(Debug::Error) << "failed to render '" << ptr.getCellRef().getRefId() << "': " << e.what(); } } diff --git a/apps/openmw/mwworld/store.cpp b/apps/openmw/mwworld/store.cpp index 6f0a1b49f8..2ac78bb85d 100644 --- a/apps/openmw/mwworld/store.cpp +++ b/apps/openmw/mwworld/store.cpp @@ -1,5 +1,7 @@ #include "store.hpp" +#include + #include #include @@ -8,7 +10,6 @@ #include #include -#include namespace { @@ -692,7 +693,7 @@ namespace MWWorld if (it_lease != wipecell->mLeasedRefs.end()) wipecell->mLeasedRefs.erase(it_lease); else - std::cerr << "Error: can't find " << it->mRefNum.mIndex << " " << it->mRefNum.mContentFile << " in leasedRefs " << std::endl; + Log(Debug::Error) << "Error: can't find " << it->mRefNum.mIndex << " " << it->mRefNum.mContentFile << " in leasedRefs"; } *itold = *it; } diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index f4c2a75f3d..3e4f3ccd0b 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -3,6 +3,8 @@ #include #include +#include + #include #include #include @@ -1794,7 +1796,7 @@ namespace MWWorld } catch (std::exception& e) { - std::cerr << "Error updating window manager: " << e.what() << std::endl; + Log(Debug::Error) << "Error updating window manager: " << e.what(); } } @@ -3075,7 +3077,7 @@ namespace MWWorld if ( closestMarker.isEmpty() ) { - std::cerr << "Failed to teleport: no closest marker found" << std::endl; + Log(Debug::Warning) << "Failed to teleport: no closest marker found"; return; } @@ -3250,19 +3252,19 @@ namespace MWWorld MWWorld::ConstPtr prisonMarker = getClosestMarker( ptr, "prisonmarker" ); if ( prisonMarker.isEmpty() ) { - std::cerr << "Failed to confiscate items: no closest prison marker found." << std::endl; + Log(Debug::Warning) << "Failed to confiscate items: no closest prison marker found."; return; } std::string prisonName = prisonMarker.getCellRef().getDestCell(); if ( prisonName.empty() ) { - std::cerr << "Failed to confiscate items: prison marker not linked to prison interior" << std::endl; + Log(Debug::Warning) << "Failed to confiscate items: prison marker not linked to prison interior"; return; } MWWorld::CellStore *prison = getInterior( prisonName ); if ( !prison ) { - std::cerr << "Failed to confiscate items: failed to load cell " << prisonName << std::endl; + Log(Debug::Warning) << "Failed to confiscate items: failed to load cell " << prisonName; return; } @@ -3272,7 +3274,7 @@ namespace MWWorld MWBase::Environment::get().getMechanicsManager()->confiscateStolenItems(ptr, closestChest); } else - std::cerr << "Failed to confiscate items: no stolen_goods container found" << std::endl; + Log(Debug::Warning) << "Failed to confiscate items: no stolen_goods container found"; } void World::goToJail()