| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | /* * VisualLogger.h, 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 * */#pragma once#include "../int3.h"#include "../constants/EntityIdentifiers.h"VCMI_LIB_NAMESPACE_BEGINclass ILogVisualizer{public:	virtual void drawLine(int3 start, int3 end) = 0;};class IVisualLogBuilder{public:	virtual void addLine(int3 start, int3 end) = 0;};/// The logger is used to show screen overlayclass DLL_LINKAGE VisualLogger{private:	struct MapLine	{		int3 start;		int3 end;		MapLine(int3 start, int3 end)			:start(start), end(end)		{		}	};	class VisualLogBuilder : public IVisualLogBuilder	{	private:		std::vector<MapLine> & mapLines;	public:		VisualLogBuilder(std::vector<MapLine> & mapLines)			:mapLines(mapLines)		{		}		virtual void addLine(int3 start, int3 end) override		{			mapLines.push_back(MapLine(start, end));		}	};private:	std::map<std::string, std::vector<MapLine>> mapLines;	std::mutex mutex;	std::string keyToShow;public:	void updateWithLock(std::string channel, std::function<void(IVisualLogBuilder & logBuilder)> func);	void visualize(ILogVisualizer & visulizer);	void setKey(std::string key);};extern DLL_LINKAGE VisualLogger * logVisual;VCMI_LIB_NAMESPACE_END
 |