diff --git a/client/CBitmapHandler.cpp b/client/CBitmapHandler.cpp index 556334ed5..94096da33 100644 --- a/client/CBitmapHandler.cpp +++ b/client/CBitmapHandler.cpp @@ -130,7 +130,7 @@ SDL_Surface * BitmapHandler::loadBitmapFromDir(std::string path, std::string fna } else { - logGlobal->errorStream()<<"Failed to open "<error("Failed to open %s as H3 PCX!", fname); return nullptr; } } @@ -151,8 +151,8 @@ SDL_Surface * BitmapHandler::loadBitmapFromDir(std::string path, std::string fna } else { - logGlobal->errorStream() << "Failed to open " << fname << " via SDL_Image"; - logGlobal->errorStream() << "Reason: " << IMG_GetError(); + logGlobal->error("Failed to open %s via SDL_Image", fname); + logGlobal->error("Reason: %s", IMG_GetError()); return nullptr; } } @@ -183,7 +183,7 @@ SDL_Surface * BitmapHandler::loadBitmap(std::string fname, bool setKey) if (!(bitmap = loadBitmapFromDir("DATA/", fname, setKey)) && !(bitmap = loadBitmapFromDir("SPRITES/", fname, setKey))) { - logGlobal->errorStream() << "Error: Failed to find file " << fname; + logGlobal->error("Error: Failed to find file %s", fname); } return bitmap; diff --git a/client/CDefHandler.cpp b/client/CDefHandler.cpp index ee83ba753..c04ec4218 100644 --- a/client/CDefHandler.cpp +++ b/client/CDefHandler.cpp @@ -67,7 +67,7 @@ void CDefHandler::openFromMemory(ui8 *table, const std::string & name) palette[it].r = de.palette[it].R; palette[it].g = de.palette[it].G; palette[it].b = de.palette[it].B; - palette[it].a = SDL_ALPHA_OPAQUE; + palette[it].a = SDL_ALPHA_OPAQUE; } // The SDefEntryBlock starts just after the SDefEntry @@ -163,22 +163,22 @@ SDL_Surface * CDefHandler::getSprite (int SIndex, const ui8 * FDef, const SDL_Co add=0; ret = SDL_CreateRGBSurface(SDL_SWSURFACE, FullWidth, FullHeight, 8, 0, 0, 0, 0); - + if(nullptr == ret) { - logGlobal->errorStream() << __FUNCTION__ <<": Unable to create surface"; - logGlobal->errorStream() << FullWidth << "X" << FullHeight; - logGlobal->errorStream() << SDL_GetError(); - throw std::runtime_error("Unable to create surface"); + logGlobal->error("%s: Unable to create surface", __FUNCTION__); + logGlobal->error("%dX%d", FullWidth, FullHeight); + logGlobal->error(SDL_GetError()); + throw std::runtime_error("Unable to create surface"); } BaseOffset += sizeof(SSpriteDef); int BaseOffsetor = BaseOffset; - - SDL_Palette * p = SDL_AllocPalette(256); + + SDL_Palette * p = SDL_AllocPalette(256); SDL_SetPaletteColors(p, palette, 0, 256); SDL_SetSurfacePalette(ret, p); - SDL_FreePalette(p); + SDL_FreePalette(p); int ftcp=0; @@ -344,8 +344,8 @@ SDL_Surface * CDefHandler::getSprite (int SIndex, const ui8 * FDef, const SDL_Co } SDL_Color ttcol = ret->format->palette->colors[0]; - Uint32 keycol = SDL_MapRGBA(ret->format, ttcol.r, ttcol.b, ttcol.g, ttcol.a); - SDL_SetColorKey(ret, SDL_TRUE, keycol); + Uint32 keycol = SDL_MapRGBA(ret->format, ttcol.r, ttcol.b, ttcol.g, ttcol.a); + SDL_SetColorKey(ret, SDL_TRUE, keycol); return ret; } diff --git a/client/CMT.cpp b/client/CMT.cpp index e138bb4b9..c84b3329a 100644 --- a/client/CMT.cpp +++ b/client/CMT.cpp @@ -151,8 +151,7 @@ void startGameFromFile(const bfs::path &fname) } catch(std::exception &e) { - logGlobal->errorStream() << "Failed to start from the file: " << fname << ". Error: " << e.what() - << " Falling back to main menu."; + logGlobal->error("Failed to start from the file: %s. Error: %s. Falling back to main menu.", fname, e.what()); GH.curInt = CGPreGame::create(); return; } @@ -217,7 +216,7 @@ static void SDLLogCallback(void* userdata, //todo: convert SDL log priority to vcmi log priority //todo: make separate log domain for SDL - logGlobal->debugStream() << "SDL(category " << category << "; priority " <debug("SDL(category %d; priority %d) %s", category, priority, message); } #ifdef VCMI_APPLE @@ -320,9 +319,9 @@ int main(int argc, char * argv[]) const bfs::path logPath = VCMIDirs::get().userCachePath() / "VCMI_Client_log.txt"; CBasicLogConfigurator logConfig(logPath, console); logConfig.configureDefault(); - logGlobal->infoStream() << NAME; + logGlobal->info(NAME); logGlobal->info("Creating console and configuring logger: %d ms", pomtime.getDiff()); - logGlobal->infoStream() << "The log file will be saved to " << logPath; + logGlobal->info("The log file will be saved to %s", logPath); // Init filesystem and settings preinitDLL(::console); @@ -355,7 +354,7 @@ int main(int argc, char * argv[]) if (CResourceHandler::get()->existsResource(ResourceID(filename))) return true; - logGlobal->errorStream() << "Error: " << message << " was not found!"; + logGlobal->error("Error: %s was not found!", message); return false; }; @@ -383,8 +382,8 @@ int main(int argc, char * argv[]) { logGlobal->error("Fatal error: failed to load settings!"); logGlobal->error("Possible reasons:"); - logGlobal->errorStream() << "\tCorrupted local configuration file at " << VCMIDirs::get().userConfigPath() << "/settings.json"; - logGlobal->errorStream() << "\tMissing or corrupted global configuration file at " << VCMIDirs::get().userConfigPath() << "/schemas/settings.json"; + logGlobal->error("\tCorrupted local configuration file at %s/settings.json", VCMIDirs::get().userConfigPath()); + logGlobal->error("\tMissing or corrupted global configuration file at %s/schemas/settings.json", VCMIDirs::get().userConfigPath()); logGlobal->error("VCMI will now exit..."); exit(EXIT_FAILURE); } @@ -393,7 +392,7 @@ int main(int argc, char * argv[]) { if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO|SDL_INIT_NOPARACHUTE)) { - logGlobal->errorStream()<<"Something was wrong: "<< SDL_GetError(); + logGlobal->error("Something was wrong: %s", SDL_GetError()); exit(-1); } @@ -413,7 +412,7 @@ int main(int argc, char * argv[]) int driversCount = SDL_GetNumRenderDrivers(); std::string preferredDriverName = video["driver"].String(); - logGlobal->infoStream() << "Found " << driversCount << " render drivers"; + logGlobal->info("Found %d render drivers", driversCount); for(int it = 0; it < driversCount; it++) { @@ -425,17 +424,17 @@ int main(int argc, char * argv[]) if(!preferredDriverName.empty() && driverName == preferredDriverName) { preferredDriverIndex = it; - logGlobal->infoStream() << "\t" << driverName << " (active)"; + logGlobal->info("\t%s (active)", driverName); } else - logGlobal->infoStream() << "\t" << driverName; + logGlobal->info("\t%s", driverName); } config::CConfigHandler::GuiOptionsMap::key_type resPair(res["width"].Float(), res["height"].Float()); if (conf.guiOptions.count(resPair) == 0) { // selected resolution was not found - complain & fallback to something that we do have. - logGlobal->errorStream() << "Selected resolution " << resPair.first << "x" << resPair.second << " was not found!"; + logGlobal->error("Selected resolution %dx%d was not found!", resPair.first, resPair.second); if (conf.guiOptions.empty()) { logGlobal->error("Unable to continue - no valid resolutions found! Please reinstall VCMI to fix this"); @@ -448,7 +447,7 @@ int main(int argc, char * argv[]) newRes["height"].Float() = conf.guiOptions.begin()->first.second; conf.SetResolution(newRes["width"].Float(), newRes["height"].Float()); - logGlobal->errorStream() << "Falling back to " << newRes["width"].Float() << "x" << newRes["height"].Float(); + logGlobal->error("Falling back to %dx%d", newRes["width"].Integer(), newRes["height"].Integer()); } } @@ -548,8 +547,7 @@ int main(int argc, char * argv[]) { if(!fileToStartFrom.empty()) { - logGlobal->warnStream() << "Warning: cannot find given file to start from (" << fileToStartFrom - << "). Falling back to main menu."; + logGlobal->warn("Warning: cannot find given file to start from (%s). Falling back to main menu.", fileToStartFrom.string()); } GH.curInt = CGPreGame::create(); //will set CGP pointer to itself } @@ -592,7 +590,7 @@ void printInfoAboutIntObject(const CIntObject *obj, int level) sbuffer << "inactive"; sbuffer << " at " << obj->pos.x <<"x"<< obj->pos.y; sbuffer << " (" << obj->pos.w <<"x"<< obj->pos.h << ")"; - logGlobal->infoStream() << sbuffer.str(); + logGlobal->info(sbuffer.str()); for(const CIntObject *child : obj->children) printInfoAboutIntObject(child, level+1); @@ -862,7 +860,7 @@ void processCommand(const std::string &message) } catch(std::exception &e) { - logGlobal->warnStream() << "Failed opening " << fname << ": " << e.what(); + logGlobal->warn("Failed opening %s: %s", fname, e.what()); logGlobal->warn("Setting not changes, AI not found or invalid!"); } } @@ -1062,7 +1060,7 @@ static bool recreateWindow(int w, int h, int bpp, bool fullscreen, int displayIn } if(!checkVideoMode(displayIndex, w, h)) { - logGlobal->errorStream() << "Error: SDL says that " << w << "x" << h << " resolution is not available!"; + logGlobal->error("Error: SDL says that %dx%d resolution is not available!", w, h); return false; } @@ -1105,8 +1103,8 @@ static bool recreateWindow(int w, int h, int bpp, bool fullscreen, int displayIn } SDL_RendererInfo info; - SDL_GetRendererInfo(mainRenderer,&info); - logGlobal->infoStream() << "Created renderer " << info.name; + SDL_GetRendererInfo(mainRenderer, &info); + logGlobal->info("Created renderer %s", info.name); if(!(fullscreen && realFullscreen)) { @@ -1134,10 +1132,7 @@ static bool recreateWindow(int w, int h, int bpp, bool fullscreen, int displayIn screen = SDL_CreateRGBSurface(0,w,h,bpp,rmask,gmask,bmask,amask); if(nullptr == screen) { - logGlobal->error("Unable to create surface"); - logGlobal->errorStream() << w << " "<< h << " "<< bpp; - - logGlobal->errorStream() << SDL_GetError(); + logGlobal->error("Unable to create surface %dx%d with %d bpp: %s", w, h, bpp, SDL_GetError()); throw std::runtime_error("Unable to create surface"); } //No blending for screen itself. Required for proper cursor rendering. @@ -1151,7 +1146,7 @@ static bool recreateWindow(int w, int h, int bpp, bool fullscreen, int displayIn if(nullptr == screenTexture) { logGlobal->error("Unable to create screen texture"); - logGlobal->errorStream() << SDL_GetError(); + logGlobal->error(SDL_GetError()); throw std::runtime_error("Unable to create screen texture"); } @@ -1269,7 +1264,7 @@ static void handleEvent(SDL_Event & ev) fullScreenChanged(); break; default: - logGlobal->errorStream() << "Unknown user event. Code " << ev.user.code; + logGlobal->error("Unknown user event. Code %d", ev.user.code); break; } diff --git a/client/CMusicHandler.cpp b/client/CMusicHandler.cpp index 1b1b3ce01..110979a83 100644 --- a/client/CMusicHandler.cpp +++ b/client/CMusicHandler.cpp @@ -51,7 +51,7 @@ void CAudioBase::init() if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)==-1) { - logGlobal->errorStream() << "Mix_OpenAudio error: " << Mix_GetError(); + logGlobal->error("Mix_OpenAudio error: %s", Mix_GetError()); return; } @@ -154,7 +154,7 @@ Mix_Chunk *CSoundHandler::GetSoundChunk(std::string &sound, bool cache) } catch(std::exception &e) { - logGlobal->warnStream() << "Cannot get sound " << sound << " chunk: " << e.what(); + logGlobal->warn("Cannot get sound %s chunk: %s", sound, e.what()); return nullptr; } } @@ -164,7 +164,7 @@ int CSoundHandler::playSound(soundBase::soundID soundID, int repeats) { assert(soundID < soundBase::sound_after_last); auto sound = sounds[soundID]; - logGlobal->traceStream() << "Attempt to play sound " << soundID << " with file name " << sound << " with cache"; + logGlobal->trace("Attempt to play sound %d with file name %s with cache", soundID, sound); return playSound(sound, repeats, true); } @@ -182,7 +182,7 @@ int CSoundHandler::playSound(std::string sound, int repeats, bool cache) channel = Mix_PlayChannel(-1, chunk, repeats); if (channel == -1) { - logGlobal->errorStream() << "Unable to play sound file " << sound << " , error " << Mix_GetError(); + logGlobal->error("Unable to play sound file %s , error %s", sound, Mix_GetError()); if (!cache) Mix_FreeChunk(chunk); } @@ -314,7 +314,7 @@ void CMusicHandler::playMusicFromSet(std::string whichSet, bool loop) auto selectedSet = musicsSet.find(whichSet); if (selectedSet == musicsSet.end()) { - logGlobal->errorStream() << "Error: playing music from non-existing set: " << whichSet; + logGlobal->error("Error: playing music from non-existing set: %s", whichSet); return; } @@ -331,14 +331,14 @@ void CMusicHandler::playMusicFromSet(std::string whichSet, int entryID, bool loo auto selectedSet = musicsSet.find(whichSet); if (selectedSet == musicsSet.end()) { - logGlobal->errorStream() << "Error: playing music from non-existing set: " << whichSet; + logGlobal->error("Error: playing music from non-existing set: %s", whichSet); return; } auto selectedEntry = selectedSet->second.find(entryID); if (selectedEntry == selectedSet->second.end()) { - logGlobal->errorStream() << "Error: playing non-existing entry " << entryID << " from set: " << whichSet; + logGlobal->error("Error: playing non-existing entry %d from set: %s", entryID, whichSet); return; } @@ -373,8 +373,8 @@ void CMusicHandler::queueNext(CMusicHandler *owner, std::string setName, std::st } catch(std::exception &e) { - logGlobal->errorStream() << "Failed to queue music. setName=" << setName << "\tmusicURI=" << musicURI; - logGlobal->errorStream() << "Exception: " << e.what(); + logGlobal->error("Failed to queue music. setName=%s\tmusicURI=%s", setName, musicURI); + logGlobal->error("Exception: %s", e.what()); } } @@ -429,7 +429,7 @@ MusicEntry::MusicEntry(CMusicHandler *owner, std::string setName, std::string mu } MusicEntry::~MusicEntry() { - logGlobal->traceStream()<<"Del-ing music file "<trace("Del-ing music file %s", currentName); if (music) Mix_FreeMusic(music); } @@ -438,14 +438,14 @@ void MusicEntry::load(std::string musicURI) { if (music) { - logGlobal->traceStream()<<"Del-ing music file "<trace("Del-ing music file %s", currentName); Mix_FreeMusic(music); music = nullptr; } currentName = musicURI; - logGlobal->traceStream()<<"Loading music file "<trace("Loading music file %s", musicURI); auto musicFile = MakeSDLRWops(CResourceHandler::get()->load(ResourceID(std::move(musicURI), EResType::MUSIC))); @@ -453,7 +453,7 @@ void MusicEntry::load(std::string musicURI) if(!music) { - logGlobal->warnStream() << "Warning: Cannot open " << currentName << ": " << Mix_GetError(); + logGlobal->warn("Warning: Cannot open %s: %s", currentName, Mix_GetError()); return; } } @@ -469,10 +469,10 @@ bool MusicEntry::play() load(RandomGeneratorUtil::nextItem(set, CRandomGenerator::getDefault())->second); } - logGlobal->traceStream()<<"Playing music file "<trace("Playing music file %s", currentName); if(Mix_PlayMusic(music, 1) == -1) { - logGlobal->errorStream() << "Unable to play music (" << Mix_GetError() << ")"; + logGlobal->error("Unable to play music (%s)", Mix_GetError()); return false; } return true; @@ -482,7 +482,7 @@ bool MusicEntry::stop(int fade_ms) { if (Mix_PlayingMusic()) { - logGlobal->traceStream()<<"Stopping music file "<trace("Stopping music file %s", currentName); loop = 0; Mix_FadeOutMusic(fade_ms); return true; diff --git a/client/CPlayerInterface.cpp b/client/CPlayerInterface.cpp index 4f948181e..f39f85756 100644 --- a/client/CPlayerInterface.cpp +++ b/client/CPlayerInterface.cpp @@ -110,7 +110,7 @@ struct HeroObjectRetriever : boost::static_visitor CPlayerInterface::CPlayerInterface(PlayerColor Player) { - logGlobal->traceStream() << "\tHuman player interface for player " << Player << " being constructed"; + logGlobal->trace("\tHuman player interface for player %s being constructed", Player.getStr(false)); destinationTeleport = ObjectInstanceID(); destinationTeleportPos = int3(-1); howManyPeople++; @@ -136,7 +136,7 @@ CPlayerInterface::CPlayerInterface(PlayerColor Player) CPlayerInterface::~CPlayerInterface() { - logGlobal->traceStream() << "\tHuman player interface for player " << playerID << " being destructed"; + logGlobal->trace("\tHuman player interface for player %s being destructed", playerID.getStr(false)); //howManyPeople--; delete showingDialog; delete cingconsole; @@ -358,10 +358,10 @@ void CPlayerInterface::heroMoved(const TryMoveHero & details) { //evil returns here ... //todo: get rid of it - logGlobal->traceStream() << "before [un]locks in " << __FUNCTION__; + logGlobal->trace("before [un]locks in %s", __FUNCTION__); auto unlockPim = vstd::makeUnlockGuard(*pim); //let frame to be rendered GH.mainFPSmng->framerateDelay(); //for animation purposes - logGlobal->traceStream() << "after [un]locks in " << __FUNCTION__; + logGlobal->trace("after [un]locks in %s", __FUNCTION__); } //CSDL_Ext::update(screen); @@ -808,7 +808,7 @@ void CPlayerInterface::actionFinished(const BattleAction &action) BattleAction CPlayerInterface::activeStack(const CStack * stack) //called when it's turn of that stack { THREAD_CREATED_BY_CLIENT; - logGlobal->traceStream() << "Awaiting command for " << stack->nodeName(); + logGlobal->trace("Awaiting command for %s", stack->nodeName()); auto stackId = stack->ID; auto stackName = stack->nodeName(); if (autofightingAI) @@ -856,10 +856,10 @@ BattleAction CPlayerInterface::activeStack(const CStack * stack) //called when i { if (stackId != ret.stackNumber) logGlobal->error("Not current active stack action canceled"); - logGlobal->traceStream() << "Canceled command for " << stackName; + logGlobal->trace("Canceled command for %s", stackName); } else - logGlobal->traceStream() << "Giving command for " << stackName; + logGlobal->trace("Giving command for %s", stackName); return ret; } @@ -1362,7 +1362,7 @@ template void CPlayerInterface::serializeTempl( Handler &h, c if (p.second.nodes.size()) pathsMap[p.first] = p.second.endPos(); else - logGlobal->errorStream() << p.first->name << " has assigned an empty path! Ignoring it..."; + logGlobal->debug("%s has assigned an empty path! Ignoring it...", p.first->name); } h & pathsMap; } @@ -1398,7 +1398,7 @@ void CPlayerInterface::loadGame( BinaryDeserializer & h, const int version ) void CPlayerInterface::moveHero( const CGHeroInstance *h, CGPath path ) { - logGlobal->traceStream() << __FUNCTION__; + LOG_TRACE(logGlobal); if (!LOCPLINT->makingTurn) return; if (!h) @@ -2857,7 +2857,7 @@ void CPlayerInterface::doMoveHero(const CGHeroInstance * h, CGPath path) assert(h->pos.z == nextCoord.z); // Z should change only if it's movement via teleporter and in this case this code shouldn't be executed at all int3 endpos(nextCoord.x, nextCoord.y, h->pos.z); - logGlobal->traceStream() << "Requesting hero movement to " << endpos; + logGlobal->trace("Requesting hero movement to %s", endpos()); bool useTransit = false; if ((i-2 >= 0) // Check there is node after next one; otherwise transit is pointless @@ -2871,7 +2871,7 @@ void CPlayerInterface::doMoveHero(const CGHeroInstance * h, CGPath path) doMovement(endpos, useTransit); - logGlobal->traceStream() << "Resuming " << __FUNCTION__; + logGlobal->trace("Resuming %s", __FUNCTION__); bool guarded = cb->isInTheMap(cb->getGuardingCreaturePosition(endpos - int3(1, 0, 0))); if ((!useTransit && guarded) || showingDialog->get() == true) // Abort movement if a guard was fought or there is a dialog to display (Mantis #1136) break; diff --git a/client/CPreGame.cpp b/client/CPreGame.cpp index b942b5b21..0881b4284 100644 --- a/client/CPreGame.cpp +++ b/client/CPreGame.cpp @@ -358,7 +358,7 @@ static std::function genCommand(CMenuScreen* menu, std::vectorerrorStream()<<"Failed to parse command: "<error("Failed to parse command: %s", string); return std::function(); } @@ -538,7 +538,7 @@ void CGPreGame::openCampaignScreen(std::string name) GH.pushInt(new CCampaignScreen(CGPreGameConfig::get().getCampaigns()[name])); return; } - logGlobal->errorStream()<<"Unknown campaign set: "<error("Unknown campaign set: %s", name); } CGPreGame *CGPreGame::create() @@ -942,7 +942,7 @@ void CSelectionScreen::handleConnection() { CPackForSelectionScreen *pack = nullptr; *serv >> pack; - logNetwork->traceStream() << "Received a pack of type " << typeid(*pack).name(); + logNetwork->trace("Received a pack of type %s", typeid(*pack).name()); assert(pack); if(QuitMenuWithoutStarting *endingPack = dynamic_cast(pack)) { @@ -1130,7 +1130,7 @@ void SelectionTab::parseMaps(const std::unordered_set &files) } catch(std::exception & e) { - logGlobal->errorStream() << "Map " << file.getName() << " is invalid. Message: " << e.what(); + logGlobal->error("Map %s is invalid. Message: %s", file.getName(), e.what()); } } } @@ -1183,7 +1183,7 @@ void SelectionTab::parseGames(const std::unordered_set &files, CMenu } catch(const std::exception & e) { - logGlobal->errorStream() << "Error: Failed to process " << file.getName() <<": " << e.what(); + logGlobal->error("Error: Failed to process %s: %s", file.getName(), e.what()); } } } @@ -1494,7 +1494,7 @@ void SelectionTab::printMaps(SDL_Surface *to) break; default: // Unknown version. Be safe and ignore that map - logGlobal->warnStream() << "Warning: " << currentItem->fileURI << " has wrong version!"; + logGlobal->warn("Warning: %s has wrong version!", currentItem->fileURI); continue; } IImage * icon = formatIcons->getImage(frame,group); @@ -1824,7 +1824,7 @@ void CRandomMapTab::addButtonsToGroup(CToggleGroup * group, const std::vectorinfoStream() << "Blocking buttons from " << startId; + logGlobal->debug("Blocking buttons from %d", startId); for(auto toggle : group->buttons) { if (auto button = dynamic_cast(toggle.second)) @@ -3722,7 +3722,7 @@ void CBonusSelection::startMap() { auto exitCb = [=]() { - logGlobal->infoStream() << "Starting scenario " << selectedMap; + logGlobal->info("Starting scenario %d", selectedMap); CGP->showLoadingScreen(std::bind(&startGame, si, (CConnection *)nullptr)); }; diff --git a/client/CVideoHandler.cpp b/client/CVideoHandler.cpp index 2eb881f62..bf7e65c2b 100644 --- a/client/CVideoHandler.cpp +++ b/client/CVideoHandler.cpp @@ -99,7 +99,7 @@ bool CVideoPlayer::open(std::string fname, bool loop, bool useOverlay, bool scal if (!CResourceHandler::get()->existsResource(resource)) { - logGlobal->errorStream() << "Error: video " << resource.getName() << " was not found"; + logGlobal->error("Error: video %s was not found", resource.getName()); return false; } diff --git a/client/Client.cpp b/client/Client.cpp index ec188c665..0a5fabee1 100644 --- a/client/Client.cpp +++ b/client/Client.cpp @@ -152,7 +152,7 @@ void CClient::waitForMoveAndSend(PlayerColor color) BattleAction ba = battleints[color]->activeStack(gs->curB->battleGetStackByID(gs->curB->activeStack, false)); if(ba.actionType != Battle::CANCEL) { - logNetwork->traceStream() << "Send battle action to server: " << ba; + logNetwork->trace("Send battle action to server: %s", ba.toString()); MakeAction temp_action(ba); sendRequest(&temp_action, color); } @@ -301,7 +301,7 @@ void CClient::loadGame(const std::string & fname, const bool server, const std:: } catch(std::exception &e) { - logGlobal->errorStream() << "Cannot load game " << fname << ". Error: " << e.what(); + logGlobal->error("Cannot load game %s. Error: %s", fname, e.what()); throw; //obviously we cannot continue here } @@ -367,7 +367,7 @@ void CClient::loadGame(const std::string & fname, const bool server, const std:: // { // auto o = gs->map->objects[i]; // if(o) -// logGlobal->traceStream() << boost::format("\tindex=%5d, id=%5d; address=%5d, pos=%s, name=%s") % i % o->id % (int)o.get() % o->pos % o->getHoverText(); +// logGlobal->trace("\tindex=%5d, id=%5d; address=%5d, pos=%s, name=%s", i, o->id, (int)o.get(), o->pos, o->getHoverText()); // else // logGlobal->trace("\tindex=%5d --- nullptr", i); // } @@ -454,7 +454,7 @@ void CClient::newGame( CConnection *con, StartInfo *si ) if(!vstd::contains(myPlayers, color)) continue; - logNetwork->traceStream() << "Preparing interface for player " << color; + logNetwork->trace("Preparing interface for player %s", color.getStr(false)); if(elem.second.playerID == PlayerSettings::PLAYER_AI) { auto AiToGive = aiNameForPlayer(elem.second, false); @@ -882,8 +882,7 @@ int CClient::sendRequest(const CPack *request, PlayerColor player) static ui32 requestCounter = 0; ui32 requestID = requestCounter++; - logNetwork->traceStream() << boost::format("Sending a request \"%s\". It'll have an ID=%d.") - % typeid(*request).name() % requestID; + logNetwork->trace("Sending a request \"%s\". It'll have an ID=%d.", typeid(*request).name(), requestID); waitingRequest.pushBack(requestID); serv->sendPackToServer(*request, player, requestID); @@ -1118,7 +1117,7 @@ void CServerHandler::callServer() else { logNetwork->error("Error: server failed to close correctly or crashed!"); - logNetwork->errorStream() << "Check " << logName << " for more info"; + logNetwork->error("Check %s for more info", logName); exit(1);// exit in case of error. Othervice without working server VCMI will hang } #endif diff --git a/client/Graphics.cpp b/client/Graphics.cpp index 58d561737..9dcf2d23f 100644 --- a/client/Graphics.cpp +++ b/client/Graphics.cpp @@ -291,7 +291,7 @@ void Graphics::blueToPlayersAdv(SDL_Surface * sur, PlayerColor player) } else { - logGlobal->errorStream() << "Wrong player id in blueToPlayersAdv (" << player << ")!"; + logGlobal->error("Wrong player id in blueToPlayersAdv (%s)!", player.getStr(false)); return; } SDL_SetColors(sur, palette, 224, 32); diff --git a/client/NetPacksClient.cpp b/client/NetPacksClient.cpp index f1cf3bee5..b02ffc01f 100644 --- a/client/NetPacksClient.cpp +++ b/client/NetPacksClient.cpp @@ -122,7 +122,7 @@ void SetPrimSkill::applyCl(CClient *cl) const CGHeroInstance *h = cl->getHero(id); if(!h) { - logNetwork->errorStream() << "Cannot find hero with ID " << id.getNum(); + logNetwork->error("Cannot find hero with ID %d", id.getNum()); return; } INTERFACE_CALL_IF_PRESENT(h->tempOwner,heroPrimarySkillChanged,h,which,val); @@ -133,7 +133,7 @@ void SetSecSkill::applyCl(CClient *cl) const CGHeroInstance *h = cl->getHero(id); if(!h) { - logNetwork->errorStream() << "Cannot find hero with ID " << id; + logNetwork->error("Cannot find hero with ID %d", id.getNum()); return; } INTERFACE_CALL_IF_PRESENT(h->tempOwner,heroSecondarySkillChanged,h,which,val); @@ -784,7 +784,7 @@ void SystemMessage::applyCl(CClient *cl) std::ostringstream str; str << "System message: " << text; - logNetwork->errorStream() << str.str(); // usually used to receive error messages from server + logNetwork->error(str.str()); // usually used to receive error messages from server if(LOCPLINT && !settings["session"]["hideSystemMessages"].Bool()) LOCPLINT->cingconsole->print(str.str()); } @@ -813,13 +813,13 @@ void SaveGame::applyCl(CClient *cl) } catch(std::exception &e) { - logNetwork->errorStream() << "Failed to save game:" << e.what(); + logNetwork->error("Failed to save game:%s", e.what()); } } void PlayerMessage::applyCl(CClient *cl) { - logNetwork->debugStream() << "Player "<< player <<" sends a message: " << text; + logNetwork->debug("Player %s sends a message: %s", player.getStr(false), text); std::ostringstream str; if(player.isSpectator()) diff --git a/client/battle/CBattleAnimations.cpp b/client/battle/CBattleAnimations.cpp index b85776cae..f6d4eb2a4 100644 --- a/client/battle/CBattleAnimations.cpp +++ b/client/battle/CBattleAnimations.cpp @@ -283,7 +283,7 @@ void CDefenceAnimation::endAnim() CDummyAnimation::CDummyAnimation(CBattleInterface * _owner, int howManyFrames) : CBattleAnimation(_owner), counter(0), howMany(howManyFrames) { - logAnim->debugStream() << "Created dummy animation for " << howManyFrames <<" frames"; + logAnim->debug("Created dummy animation for %d frames", howManyFrames); } bool CDummyAnimation::init() @@ -360,7 +360,7 @@ bool CMeleeAttackAnimation::init() group = mutPosToGroup[mutPos]; break; default: - logGlobal->errorStream()<<"Critical Error! Wrong dest in stackAttacking! dest: "<error("Critical Error! Wrong dest in stackAttacking! dest: %d; attacking stack pos: %d; mutual pos: %d", dest.hex, attackingStackPosBeforeReturn, mutPos); group = CCreatureAnim::ATTACK_FRONT; break; } @@ -875,19 +875,19 @@ void CShootingAnimation::endAnim() CSpellEffectAnimation::CSpellEffectAnimation(CBattleInterface * _owner, ui32 _effect, BattleHex _destTile, int _dx, int _dy, bool _Vflip, bool _alignToBottom) :CBattleAnimation(_owner), effect(_effect), destTile(_destTile), customAnim(""), x(-1), y(-1), dx(_dx), dy(_dy), Vflip(_Vflip), alignToBottom(_alignToBottom) { - logAnim->debugStream() << "Created spell anim for effect #" << effect; + logAnim->debug("Created spell anim for effect #%d", effect); } CSpellEffectAnimation::CSpellEffectAnimation(CBattleInterface * _owner, std::string _customAnim, int _x, int _y, int _dx, int _dy, bool _Vflip, bool _alignToBottom) :CBattleAnimation(_owner), effect(-1), destTile(BattleHex::INVALID), customAnim(_customAnim), x(_x), y(_y), dx(_dx), dy(_dy), Vflip(_Vflip), alignToBottom(_alignToBottom) { - logAnim->debugStream() << "Created spell anim for " << customAnim; + logAnim->debug("Created spell anim for %s", customAnim); } CSpellEffectAnimation::CSpellEffectAnimation(CBattleInterface * _owner, std::string _customAnim, BattleHex _destTile, bool _Vflip, bool _alignToBottom) :CBattleAnimation(_owner), effect(-1), destTile(_destTile), customAnim(_customAnim), x(-1), y(-1), dx(0), dy(0), Vflip(_Vflip), alignToBottom(_alignToBottom) { - logAnim->debugStream() << "Created spell anim for " << customAnim; + logAnim->debug("Created spell anim for %s", customAnim); } diff --git a/client/battle/CBattleInterface.cpp b/client/battle/CBattleInterface.cpp index 162d05372..add4babdc 100644 --- a/client/battle/CBattleInterface.cpp +++ b/client/battle/CBattleInterface.cpp @@ -189,9 +189,9 @@ CBattleInterface::CBattleInterface(const CCreatureSet *army1, const CCreatureSet { auto bfieldType = (int)curInt->cb->battleGetBattlefieldType(); if (graphics->battleBacks.size() <= bfieldType || bfieldType < 0) - logGlobal->errorStream() << bfieldType << " is not valid battlefield type index!"; + logGlobal->error("%d is not valid battlefield type index!", bfieldType); else if (graphics->battleBacks[bfieldType].empty()) - logGlobal->errorStream() << bfieldType << " battlefield type does not have any backgrounds!"; + logGlobal->error("%d battlefield type does not have any backgrounds!", bfieldType); else { const std::string bgName = *RandomGeneratorUtil::nextItem(graphics->battleBacks[bfieldType], CRandomGenerator::getDefault()); @@ -718,7 +718,7 @@ void CBattleInterface::setBattleCursor(const int myNumber) // Generally should NEVER happen, but to avoid the possibility of having endless loop below... [#1016] if (!vstd::contains_if (sectorCursor, [](int sc) { return sc != -1; })) { - logGlobal->errorStream() << "Error: for hex " << myNumber << " cannot find a hex to attack from!"; + logGlobal->error("Error: for hex %d cannot find a hex to attack from!", myNumber); attackingHex = -1; return; } @@ -1143,7 +1143,7 @@ void CBattleInterface::giveCommand(Battle::ActionType action, BattleHex tile, ui if (!tacticsMode) { - logGlobal->traceStream() << "Setting command for " << (stack ? stack->nodeName() : "hero"); + logGlobal->trace("Setting command for %s", (stack ? stack->nodeName() : "hero")); myTurn = false; setActiveStack(nullptr); givenCommand.setn(ba); @@ -1926,7 +1926,7 @@ void CBattleInterface::startAction(const BattleAction* action) } if (!stack) { - logGlobal->errorStream()<<"Something wrong with stackNumber in actionStarted. Stack number: "<stackNumber; + logGlobal->error("Something wrong with stackNumber in actionStarted. Stack number: %d", action->stackNumber); return; } @@ -2715,13 +2715,13 @@ void CBattleInterface::obstaclePlaced(const CObstacleInstance & oi) sound = soundBase::fireWall; break; default: - logGlobal->errorStream() << "I don't know how to animate appearing obstacle of type " << (int)oi.obstacleType; + logGlobal->error("I don't know how to animate appearing obstacle of type %d", (int)oi.obstacleType); return; } if (effectID >= 0 && graphics->battleACToDef[effectID].empty()) { - logGlobal->errorStream() << "Cannot find def for effect type " << effectID; + logGlobal->error("Cannot find def for effect type %d", effectID); return; } diff --git a/client/battle/CBattleInterfaceClasses.cpp b/client/battle/CBattleInterfaceClasses.cpp index 67d08efd8..688991469 100644 --- a/client/battle/CBattleInterfaceClasses.cpp +++ b/client/battle/CBattleInterfaceClasses.cpp @@ -69,7 +69,7 @@ void CBattleConsole::showAll(SDL_Surface * to) bool CBattleConsole::addText(const std::string & text) { - logGlobal->traceStream() <<"CBattleConsole message: "<trace("CBattleConsole message: %s", text); if(text.size()>70) return false; //text too long! int firstInToken = 0; diff --git a/client/battle/CCreatureAnimation.cpp b/client/battle/CCreatureAnimation.cpp index a03ba1dfd..bbd94eb50 100644 --- a/client/battle/CCreatureAnimation.cpp +++ b/client/battle/CCreatureAnimation.cpp @@ -385,7 +385,7 @@ void CCreatureAnimation::nextFrame(SDL_Surface *dest, bool attacker) case 3: return nextFrameT<3>(dest, !attacker); case 4: return nextFrameT<4>(dest, !attacker); default: - logGlobal->errorStream() << (int)dest->format->BitsPerPixel << " bpp is not supported!!!"; + logGlobal->error("%d bpp is not supported!", (int)dest->format->BitsPerPixel); } } diff --git a/client/gui/CAnimation.cpp b/client/gui/CAnimation.cpp index d5e917db7..37563b7ac 100644 --- a/client/gui/CAnimation.cpp +++ b/client/gui/CAnimation.cpp @@ -445,7 +445,7 @@ void CDefFile::loadFrame(size_t frame, size_t group, ImageLoader &loader) const break; } default: - logGlobal->errorStream()<<"Error: unsupported format of def file: "<error("Error: unsupported format of def file: %d", sprite.format); break; } } @@ -741,7 +741,7 @@ SDLImage::SDLImage(std::string filename, bool compressed): if (surf == nullptr) { - logGlobal->errorStream() << "Error: failed to load image "<error("Error: failed to load image %s", filename); return; } else @@ -1373,8 +1373,7 @@ CDefFile * CAnimation::getFile() const void CAnimation::printError(size_t frame, size_t group, std::string type) const { - logGlobal->errorStream() << type << " error: Request for frame not present in CAnimation! " - << "\tFile name: " << name << " Group: " << group << " Frame: " << frame; + logGlobal->error("%s error: Request for frame not present in CAnimation! File name: %s, Group: %d, Frame: %d", type, name, group, frame); } CAnimation::CAnimation(std::string Name, bool Compressed): @@ -1406,7 +1405,7 @@ CAnimation::~CAnimation() if(!images.empty()) { - logGlobal->warnStream()<<"Warning: not all frames were unloaded from "<warn("Warning: not all frames were unloaded from %s", name); for (auto & elem : images) for (auto & _image : elem.second) delete _image.second; @@ -1579,7 +1578,7 @@ void CFadeAnimation::init(EMode mode, SDL_Surface * sourceSurface, bool freeSurf } if (animDelta <= 0.0f) { - logGlobal->warnStream() << "Fade anim: delta should be positive; " << animDelta << " given."; + logGlobal->warn("Fade anim: delta should be positive; %f given.", animDelta); animDelta = DEFAULT_DELTA; } diff --git a/client/gui/CGuiHandler.cpp b/client/gui/CGuiHandler.cpp index 4b8486a90..f7c459b92 100644 --- a/client/gui/CGuiHandler.cpp +++ b/client/gui/CGuiHandler.cpp @@ -461,7 +461,7 @@ void CGuiHandler::renderFrame() CCS->curh->render(); if(0 != SDL_RenderCopy(mainRenderer, screenTexture, nullptr, nullptr)) - logGlobal->errorStream() << __FUNCTION__ << " SDL_RenderCopy " << SDL_GetError(); + logGlobal->error("%s SDL_RenderCopy %s", __FUNCTION__, SDL_GetError()); SDL_RenderPresent(mainRenderer); } diff --git a/client/gui/SDL_Extensions.cpp b/client/gui/SDL_Extensions.cpp index e73ddc89b..37b707650 100644 --- a/client/gui/SDL_Extensions.cpp +++ b/client/gui/SDL_Extensions.cpp @@ -26,11 +26,11 @@ void SDL_UpdateRect(SDL_Surface *surface, int x, int y, int w, int h) { Rect rect(x,y,w,h); if(0 !=SDL_UpdateTexture(screenTexture, &rect, surface->pixels, surface->pitch)) - logGlobal->errorStream() << __FUNCTION__ << "SDL_UpdateTexture " << SDL_GetError(); + logGlobal->error("%sSDL_UpdateTexture %s", __FUNCTION__, SDL_GetError()); SDL_RenderClear(mainRenderer); if(0 != SDL_RenderCopy(mainRenderer, screenTexture, NULL, NULL)) - logGlobal->errorStream() << __FUNCTION__ << "SDL_RenderCopy " << SDL_GetError(); + logGlobal->error("%sSDL_RenderCopy %s", __FUNCTION__, SDL_GetError()); SDL_RenderPresent(mainRenderer); } @@ -326,7 +326,7 @@ int CSDL_Ext::blit8bppAlphaTo24bpp(const SDL_Surface * src, const SDL_Rect * src case 3: return blit8bppAlphaTo24bppT<3>(src, srcRect, dst, dstRect); case 4: return blit8bppAlphaTo24bppT<4>(src, srcRect, dst, dstRect); default: - logGlobal->errorStream() << (int)dst->format->BitsPerPixel << " bpp is not supported!!!"; + logGlobal->error("%d bpp is not supported!", (int)dst->format->BitsPerPixel); return -1; } } @@ -349,7 +349,7 @@ void CSDL_Ext::update(SDL_Surface * what) if(!what) return; if(0 !=SDL_UpdateTexture(screenTexture, nullptr, what->pixels, what->pitch)) - logGlobal->errorStream() << __FUNCTION__ << "SDL_UpdateTexture " << SDL_GetError(); + logGlobal->error("%s SDL_UpdateTexture %s", __FUNCTION__, SDL_GetError()); } void CSDL_Ext::drawBorder(SDL_Surface * sur, int x, int y, int w, int h, const int3 &color) { @@ -428,7 +428,7 @@ case BytesPerPixel: \ CASE_BPP(3) CASE_BPP(4) default: - logGlobal->errorStream() << (int)dest->format->BitsPerPixel << "bpp is not supported!"; + logGlobal->error("%d bpp is not supported!", (int)dest->format->BitsPerPixel); return nullptr; } @@ -442,7 +442,7 @@ TColorPutterAlpha CSDL_Ext::getPutterAlphaFor(SDL_Surface * const &dest, int inc CASE_BPP(3) CASE_BPP(4) default: - logGlobal->errorStream() << (int)dest->format->BitsPerPixel << "bpp is not supported!"; + logGlobal->error("%d bpp is not supported!", (int)dest->format->BitsPerPixel); return nullptr; } #undef CASE_BPP diff --git a/client/mapHandler.cpp b/client/mapHandler.cpp index ba514f633..ec307605f 100644 --- a/client/mapHandler.cpp +++ b/client/mapHandler.cpp @@ -755,7 +755,7 @@ void CMapHandler::CMapBlitter::drawObjects(SDL_Surface * targetSurf, const Terra fade->draw(targetSurf, nullptr, &r2); continue; } - logGlobal->errorStream() << "Fading map object with missing fade anim : " << object.fadeAnimKey; + logGlobal->error("Fading map object with missing fade anim : %d", object.fadeAnimKey); continue; } @@ -967,7 +967,7 @@ CMapHandler::AnimBitmapHolder CMapHandler::CMapBlitter::findHeroBitmap(const CGH { if(hero->tempOwner >= PlayerColor::PLAYER_LIMIT) //Neutral hero? { - logGlobal->errorStream() << "A neutral hero (" << hero->name << ") at " << hero->pos << ". Should not happen!"; + logGlobal->error("A neutral hero (%s) at %s. Should not happen!", hero->name, hero->pos()); return CMapHandler::AnimBitmapHolder(); } @@ -1025,7 +1025,7 @@ IImage * CMapHandler::CMapBlitter::findBoatFlagBitmap(const CGBoat * boat, int a int boatType = boat->subID; if(boatType < 0 || boatType >= graphics->boatFlagAnimations.size()) { - logGlobal->errorStream() << "Not supported boat subtype: " << boat->subID; + logGlobal->error("Not supported boat subtype: %d", boat->subID); return nullptr; } @@ -1035,7 +1035,7 @@ IImage * CMapHandler::CMapBlitter::findBoatFlagBitmap(const CGBoat * boat, int a if(colorIndex < 0 || colorIndex >= subtypeFlags.size()) { - logGlobal->errorStream() << "Invalid player color " << colorIndex; + logGlobal->error("Invalid player color %d", colorIndex); return nullptr; } @@ -1138,7 +1138,7 @@ bool CMapHandler::updateObjectsFade() { if ((*objIter).fadeAnimKey == (*iter).first) { - logAnim->traceStream() << "Fade anim finished for obj at " << pos << "; remaining: " << (fadeAnims.size() - 1); + logAnim->trace("Fade anim finished for obj at %s; remaining: %d", pos(), fadeAnims.size() - 1); if (anim->fadingMode == CFadeAnimation::EMode::OUT) objs.erase(objIter); // if this was fadeout, remove the object from the map else @@ -1185,8 +1185,7 @@ bool CMapHandler::startObjectFade(TerrainTileObject & obj, bool in, int3 pos) fadeAnims[++fadeAnimCounter] = std::pair(pos, anim); obj.fadeAnimKey = fadeAnimCounter; - logAnim->traceStream() << "Fade anim started for obj " << obj.obj->ID - << " at " << pos << "; anim count: " << fadeAnims.size(); + logAnim->trace("Fade anim started for obj %d at %s; anim count: %d", obj.obj->ID, pos(), fadeAnims.size()); return true; } diff --git a/client/widgets/AdventureMapClasses.cpp b/client/widgets/AdventureMapClasses.cpp index 9b1191df9..270d93fc3 100644 --- a/client/widgets/AdventureMapClasses.cpp +++ b/client/widgets/AdventureMapClasses.cpp @@ -503,7 +503,7 @@ std::map > CMinimap::loadColors(std::string auto index = boost::find(GameConstants::TERRAIN_NAMES, m.first); if (index == std::end(GameConstants::TERRAIN_NAMES)) { - logGlobal->errorStream() << "Error: unknown terrain in terrains.json: " << m.first; + logGlobal->error("Error: unknown terrain in terrains.json: %s", m.first); continue; } int terrainID = index - std::begin(GameConstants::TERRAIN_NAMES); diff --git a/client/widgets/Buttons.cpp b/client/widgets/Buttons.cpp index f727cacda..b838254d2 100644 --- a/client/widgets/Buttons.cpp +++ b/client/widgets/Buttons.cpp @@ -117,12 +117,12 @@ void CButton::block(bool on) void CButton::onButtonClicked() { // debug logging to figure out pressed button (and as result - player actions) in case of crash - logAnim->traceStream() << "Button clicked at " << pos.x << "x" << pos.y; + logAnim->trace("Button clicked at %dx%d", pos.x, pos.y); CIntObject * parent = this->parent; std::string prefix = "Parent is"; while (parent) { - logAnim->traceStream() << prefix << typeid(*parent).name() << " at " << parent->pos.x << "x" << parent->pos.y; + logAnim->trace("%s%s at %dx%d", prefix, typeid(*parent).name(), parent->pos.x, parent->pos.y); parent = parent->parent; prefix = '\t' + prefix; } diff --git a/client/widgets/CArtifactHolder.cpp b/client/widgets/CArtifactHolder.cpp index e114ebc4e..df7267236 100644 --- a/client/widgets/CArtifactHolder.cpp +++ b/client/widgets/CArtifactHolder.cpp @@ -229,11 +229,7 @@ bool CHeroArtPlace::askToAssemble(const CArtifactInstance *art, ArtifactPosition 0); if(assemblyPossibilities.size() > 2) - { - logGlobal->warnStream() << boost::format( - "More than one possibility of assembling on %s... taking only first") - % art->artType->Name(); - } + logGlobal->warn("More than one possibility of assembling on %s... taking only first", art->artType->Name()); return true; } return false; @@ -821,7 +817,7 @@ CHeroArtPlace * CArtifactsOfHero::getArtPlace(int slot) { if(artWorn.find(ArtifactPosition(slot)) == artWorn.end()) { - logGlobal->errorStream() << "CArtifactsOfHero::getArtPlace: invalid slot " << slot; + logGlobal->error("CArtifactsOfHero::getArtPlace: invalid slot %d", slot); return nullptr; } diff --git a/client/widgets/CGarrisonInt.cpp b/client/widgets/CGarrisonInt.cpp index a4baad0be..92cffa6a9 100644 --- a/client/widgets/CGarrisonInt.cpp +++ b/client/widgets/CGarrisonInt.cpp @@ -63,7 +63,7 @@ void CGarrisonSlot::hover (bool on) } else { - logGlobal->warnStream() << "Warning - shouldn't be - highlighted void slot "<getSelection(); + logGlobal->warn("Warning - shouldn't be - highlighted void slot %d", owner->getSelection()->ID.getNum()); logGlobal->warn("Highlighted set to nullptr"); owner->selectSlot(nullptr); } diff --git a/client/widgets/Images.cpp b/client/widgets/Images.cpp index 22f14ff74..fc01ec3d5 100644 --- a/client/widgets/Images.cpp +++ b/client/widgets/Images.cpp @@ -297,7 +297,7 @@ void CAnimImage::setFrame(size_t Frame, size_t Group) } } else - logGlobal->errorStream() << "Error: accessing unavailable frame " << Group << ":" << Frame << " in CAnimation!"; + logGlobal->error("Error: accessing unavailable frame %d:%d in CAnimation!", Group, Frame); } void CAnimImage::playerColored(PlayerColor currPlayer) diff --git a/client/widgets/MiscWidgets.cpp b/client/widgets/MiscWidgets.cpp index 9c095a974..775d196ce 100644 --- a/client/widgets/MiscWidgets.cpp +++ b/client/widgets/MiscWidgets.cpp @@ -234,7 +234,7 @@ void CArmyTooltip::init(const InfoAboutArmy &army) { if(slot.first.getNum() >= GameConstants::ARMY_SIZE) { - logGlobal->warnStream() << "Warning: " << army.name << " has stack in slot " << slot.first; + logGlobal->warn("%s has stack in slot %d", army.name, slot.first.getNum()); continue; } diff --git a/client/widgets/TextControls.cpp b/client/widgets/TextControls.cpp index 770e29b20..1a57f1b9c 100644 --- a/client/widgets/TextControls.cpp +++ b/client/widgets/TextControls.cpp @@ -592,7 +592,7 @@ void CTextInput::numberFilter(std::string & text, const std::string & oldText, i catch(boost::bad_lexical_cast &) { //Should never happen. Unless I missed some cases - logGlobal->warnStream() << "Warning: failed to convert "<< text << " to number!"; + logGlobal->warn("Warning: failed to convert %s to number!", text); text = oldText; } } diff --git a/client/windows/CAdvmapInterface.cpp b/client/windows/CAdvmapInterface.cpp index 99f4ba8bd..5e3192c2c 100644 --- a/client/windows/CAdvmapInterface.cpp +++ b/client/windows/CAdvmapInterface.cpp @@ -440,7 +440,7 @@ int3 CTerrainRect::tileCountOnScreen() switch (adventureInt->mode) { default: - logGlobal->errorStream() << "Unhandled map mode " << (int)adventureInt->mode; + logGlobal->error("Unknown map mode %d", (int)adventureInt->mode); return int3(); case EAdvMapMode::NORMAL: return int3(tilesw, tilesh, 1); diff --git a/client/windows/CCastleInterface.cpp b/client/windows/CCastleInterface.cpp index d96031493..c0e86553e 100644 --- a/client/windows/CCastleInterface.cpp +++ b/client/windows/CCastleInterface.cpp @@ -229,7 +229,7 @@ std::string CBuildingRect::getSubtitle()//hover text for building } else { - logGlobal->warnStream() << "Problem: dwelling with id " << bid << " offers no creatures!"; + logGlobal->warn("Dwelling with id %d offers no creatures!", bid); return "#ERROR#"; } } @@ -600,7 +600,7 @@ const CGHeroInstance* CCastleBuildings::getHero() void CCastleBuildings::buildingClicked(BuildingID building) { - logGlobal->traceStream()<<"You've clicked on "<trace("You've clicked on %d", (int)building.toEnum()); const CBuilding *b = town->town->buildings.find(building)->second; if(building >= BuildingID::DWELL_FIRST) @@ -1183,7 +1183,7 @@ void CCastleInterface::keyPressed( const SDL_KeyboardEvent & key ) for(const CStructure * str : town->town->clientInfo.structures) { if (str->building) - logGlobal->errorStream() << int(str->building->bid) << " -> " << int(str->pos.z); + logGlobal->error("%d -> %d", int(str->building->bid), int(str->pos.z)); } } break; @@ -1199,7 +1199,7 @@ void CCastleInterface::keyPressed( const SDL_KeyboardEvent & key ) for(const CStructure * str : town->town->clientInfo.structures) { if (str->building) - logGlobal->errorStream() << int(str->building->bid) << " -> " << int(str->pos.z); + logGlobal->error("%d -> %d", int(str->building->bid), int(str->pos.z)); } } diff --git a/lib/battle/BattleAction.cpp b/lib/battle/BattleAction.cpp index 93abb64a7..3853807cd 100644 --- a/lib/battle/BattleAction.cpp +++ b/lib/battle/BattleAction.cpp @@ -92,11 +92,18 @@ BattleAction BattleAction::makeEndOFTacticPhase(ui8 side) return ba; } -std::ostream & operator<<(std::ostream & os, const BattleAction & ba) +std::string BattleAction::toString() const { std::stringstream actionTypeStream; - actionTypeStream << ba.actionType; + actionTypeStream << actionType; - return os << boost::str(boost::format("{BattleAction: side '%d', stackNumber '%d', actionType '%s', destinationTile '%s', additionalInfo '%d', selectedStack '%d'}") - % static_cast(ba.side) % ba.stackNumber % actionTypeStream.str() % ba.destinationTile % ba.additionalInfo % ba.selectedStack); + boost::format fmt("{BattleAction: side '%d', stackNumber '%d', actionType '%s', destinationTile '%s', additionalInfo '%d', selectedStack '%d'}"); + fmt % static_cast(side) % stackNumber % actionTypeStream.str() % destinationTile % additionalInfo % selectedStack; + return fmt.str(); +} + +std::ostream & operator<<(std::ostream & os, const BattleAction & ba) +{ + os << ba.toString(); + return os; } diff --git a/lib/battle/BattleAction.h b/lib/battle/BattleAction.h index 2d35bf61f..06e541136 100644 --- a/lib/battle/BattleAction.h +++ b/lib/battle/BattleAction.h @@ -42,6 +42,8 @@ struct DLL_LINKAGE BattleAction static BattleAction makeShotAttack(const CStack * shooter, const CStack * target); static BattleAction makeMove(const CStack * stack, BattleHex dest); static BattleAction makeEndOFTacticPhase(ui8 side); + + std::string toString() const; }; -DLL_EXPORT std::ostream & operator<<(std::ostream & os, const BattleAction & ba); +DLL_EXPORT std::ostream & operator<<(std::ostream & os, const BattleAction & ba); //todo: remove diff --git a/lib/filesystem/CArchiveLoader.cpp b/lib/filesystem/CArchiveLoader.cpp index c90ad7198..9f3ba9b5e 100644 --- a/lib/filesystem/CArchiveLoader.cpp +++ b/lib/filesystem/CArchiveLoader.cpp @@ -45,7 +45,7 @@ CArchiveLoader::CArchiveLoader(std::string _mountPoint, boost::filesystem::path else throw std::runtime_error("LOD archive format unknown. Cannot deal with " + archive.string()); - logGlobal->traceStream() << ext << "Archive \""<trace("%sArchive \"%s\" loaded (%d files found).", ext, archive.filename(), entries.size()); } void CArchiveLoader::initLODArchive(const std::string &mountPoint, CFileInputStream & fileStream)