123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /*
- * CLogger.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #include "StdInc.h"
- #include "VisualLogger.h"
- VCMI_LIB_NAMESPACE_BEGIN
- DLL_LINKAGE VisualLogger * logVisual = new VisualLogger();
- void VisualLogger::updateWithLock(const std::string & channel, const std::function<void(IVisualLogBuilder & logBuilder)> & func)
- {
- std::lock_guard lock(mutex);
- mapLines[channel].clear();
- mapTexts[channel].clear();
- battleTexts[channel].clear();
- VisualLogBuilder builder(mapLines[channel], mapTexts[channel], battleTexts[channel]);
-
- func(builder);
- }
- void VisualLogger::visualize(IMapOverlayLogVisualizer & visulizer)
- {
- std::lock_guard lock(mutex);
- for(const auto & line : mapLines[keyToShow])
- {
- visulizer.drawLine(line.start, line.end);
- }
- std::map<int3, std::vector<Text<int3>>> textMap;
- for(const auto & line : mapTexts[keyToShow])
- {
- textMap[line.tile].push_back(line);
- }
- for(const auto & pair : textMap)
- {
- for(int i = 0; i < pair.second.size(); i++)
- {
- visulizer.drawText(pair.first, i, pair.second[i].text, pair.second[i].background);
- }
- }
- }
- void VisualLogger::visualize(IBattleOverlayLogVisualizer & visulizer)
- {
- std::lock_guard lock(mutex);
- std::map<BattleHex, std::vector<std::string>> textMap;
- for(auto line : battleTexts[keyToShow])
- {
- textMap[line.tile].push_back(line.text);
- }
- for(auto & pair : textMap)
- {
- for(int i = 0; i < pair.second.size(); i++)
- {
- visulizer.drawText(pair.first, i, pair.second[i]);
- }
- }
- }
- void VisualLogger::setKey(const std::string & key)
- {
- keyToShow = key;
- }
- void IVisualLogBuilder::addText(int3 tile, const std::string & text, PlayerColor background)
- {
- std::optional<ColorRGBA> rgbColor;
- switch(background)
- {
- case 0:
- rgbColor = ColorRGBA(255, 0, 0);
- break;
- case 1:
- rgbColor = ColorRGBA(0, 0, 255);
- break;
- case 2:
- rgbColor = ColorRGBA(128, 128, 128);
- break;
- case 3:
- rgbColor = ColorRGBA(0, 255, 0);
- break;
- case 4:
- rgbColor = ColorRGBA(255, 128, 0);
- break;
- case 5:
- rgbColor = ColorRGBA(128, 0, 128);
- break;
- case 6:
- rgbColor = ColorRGBA(0, 255, 255);
- break;
- case 7:
- rgbColor = ColorRGBA(255, 128, 255);
- break;
- }
- addText(tile, text, rgbColor);
- }
- VCMI_LIB_NAMESPACE_END
|