mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-05 15:05:40 +02:00
commit
8af4d97664
@ -2586,7 +2586,6 @@ void CPlayerInterface::artifactDisassembled(const ArtifactLocation &al)
|
||||
void CPlayerInterface::playerStartsTurn(PlayerColor player)
|
||||
{
|
||||
EVENT_HANDLER_CALLED_BY_CLIENT;
|
||||
adventureInt->infoBar.showSelection();
|
||||
if (!vstd::contains (GH.listInt, adventureInt))
|
||||
{
|
||||
GH.popInts (GH.listInt.size()); //after map load - remove everything else
|
||||
@ -2594,6 +2593,7 @@ void CPlayerInterface::playerStartsTurn(PlayerColor player)
|
||||
}
|
||||
else
|
||||
{
|
||||
adventureInt->infoBar.showSelection();
|
||||
while (GH.listInt.front() != adventureInt && !dynamic_cast<CInfoWindow*>(GH.listInt.front())) //don't remove dialogs that expect query answer
|
||||
GH.popInts(1);
|
||||
}
|
||||
|
@ -653,20 +653,26 @@ void CClient::serialize(CISer & h, const int version, const std::set<PlayerColor
|
||||
|
||||
void CClient::handlePack( CPack * pack )
|
||||
{
|
||||
if (pack == nullptr)
|
||||
{
|
||||
logNetwork->error("Dropping nullptr CPack! You should check whether client and server ABI matches.");
|
||||
return;
|
||||
}
|
||||
CBaseForCLApply *apply = applier->apps[typeList.getTypeID(pack)]; //find the applier
|
||||
if(apply)
|
||||
{
|
||||
boost::unique_lock<boost::recursive_mutex> guiLock(*LOCPLINT->pim);
|
||||
apply->applyOnClBefore(this,pack);
|
||||
logNetwork->traceStream() << "\tMade first apply on cl";
|
||||
apply->applyOnClBefore(this, pack);
|
||||
logNetwork->trace("\tMade first apply on cl");
|
||||
gs->apply(pack);
|
||||
logNetwork->traceStream() << "\tApplied on gs";
|
||||
apply->applyOnClAfter(this,pack);
|
||||
logNetwork->traceStream() << "\tMade second apply on cl";
|
||||
logNetwork->trace("\tApplied on gs");
|
||||
apply->applyOnClAfter(this, pack);
|
||||
logNetwork->trace("\tMade second apply on cl");
|
||||
}
|
||||
else
|
||||
{
|
||||
logNetwork->errorStream() << "Message cannot be applied, cannot find applier! TypeID " << typeList.getTypeID(pack);
|
||||
logNetwork->error("Message cannot be applied, cannot find applier! type %d - %s",
|
||||
pack->type, typeList.getTypeInfo(pack)->name());
|
||||
}
|
||||
delete pack;
|
||||
}
|
||||
|
@ -465,7 +465,15 @@ CAdvMapInt::CAdvMapInt():
|
||||
townList.onSelect = std::bind(&CAdvMapInt::selectionChanged,this);
|
||||
adventureInt=this;
|
||||
bg = BitmapHandler::loadBitmap(ADVOPT.mainGraphic);
|
||||
bgWorldView = BitmapHandler::loadBitmap(ADVOPT.worldViewGraphic);
|
||||
if (ADVOPT.worldViewGraphic != "")
|
||||
{
|
||||
bgWorldView = BitmapHandler::loadBitmap(ADVOPT.worldViewGraphic);
|
||||
}
|
||||
else
|
||||
{
|
||||
bgWorldView = nullptr;
|
||||
logGlobal->warn("ADVOPT.worldViewGraphic is empty => bitmap not loaded");
|
||||
}
|
||||
scrollingDir = 0;
|
||||
updateScreen = false;
|
||||
anim=0;
|
||||
|
@ -21,6 +21,26 @@ namespace ELogLevel
|
||||
WARN,
|
||||
ERROR
|
||||
};
|
||||
|
||||
inline std::string to_string(ELogLevel level)
|
||||
{
|
||||
switch (level) {
|
||||
case NOT_SET:
|
||||
return "not set";
|
||||
case TRACE:
|
||||
return "trace";
|
||||
case DEBUG:
|
||||
return "debug";
|
||||
case INFO:
|
||||
return "info";
|
||||
case WARN:
|
||||
return "warn";
|
||||
case ERROR:
|
||||
return "error";
|
||||
default:
|
||||
return std::string("invalid (") + std::to_string(level) + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace vstd
|
||||
|
@ -225,7 +225,7 @@ CPack * CConnection::retreivePack()
|
||||
boost::unique_lock<boost::mutex> lock(*rmx);
|
||||
logNetwork->traceStream() << "Listening... ";
|
||||
iser >> ret;
|
||||
logNetwork->traceStream() << "\treceived server message of type " << typeid(*ret).name() << ", data: " << ret;
|
||||
logNetwork->traceStream() << "\treceived server message of type " << (ret? typeid(*ret).name() : "nullptr") << ", data: " << ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -599,7 +599,8 @@ int CLoadIntegrityValidator::read( void * data, unsigned size )
|
||||
controlFile->read(controlData.data(), size);
|
||||
if(std::memcmp(data, controlData.data(), size))
|
||||
{
|
||||
logGlobal->errorStream() << "Desync found! Position: " << primaryFile->sfile->tellg();
|
||||
logGlobal->error("Save game format mismatch detected! Position: %d",
|
||||
primaryFile->sfile->tellg());
|
||||
foundDesync = true;
|
||||
//throw std::runtime_error("Savegame dsynchronized!");
|
||||
}
|
||||
|
@ -1107,7 +1107,7 @@ public:
|
||||
};
|
||||
|
||||
bool saving;
|
||||
std::map<ui16,CBasicPointerLoader*> loaders; // typeID => CPointerSaver<serializer,type>
|
||||
std::map<ui16, CBasicPointerLoader*> loaders; // typeID => CPointerSaver<serializer,type>
|
||||
si32 fileVersion;
|
||||
bool reverseEndianess; //if source has different endianness than us, we reverse bytes
|
||||
|
||||
@ -1308,7 +1308,14 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
auto typeInfo = loaders[tid]->loadPtr(*this,&data, pid);
|
||||
auto loader = loaders[tid];
|
||||
if (loader == nullptr)
|
||||
{
|
||||
logGlobal->error("loadPointerHlp %d %d - no loader exists", tid, pid);
|
||||
data = nullptr;
|
||||
return;
|
||||
}
|
||||
auto typeInfo = loader->loadPtr(*this, &data, pid);
|
||||
data = reinterpret_cast<T>(typeList.castRaw((void*)data, typeInfo, &typeid(typename boost::remove_const<typename boost::remove_pointer<T>::type>::type)));
|
||||
}
|
||||
}
|
||||
|
@ -2188,7 +2188,7 @@ struct CenterView : public CPackForClient//515
|
||||
|
||||
struct CPackForSelectionScreen : public CPack
|
||||
{
|
||||
void apply(CSelectionScreen *selScreen){}; //that functions are implemented in CPreGame.cpp
|
||||
void apply(CSelectionScreen *selScreen) {} // implemented in CPreGame.cpp
|
||||
};
|
||||
|
||||
class CPregamePackToPropagate : public CPackForSelectionScreen
|
||||
|
@ -29,12 +29,13 @@ struct DLL_LINKAGE CPack
|
||||
{
|
||||
ui16 type;
|
||||
|
||||
CPack(){};
|
||||
virtual ~CPack(){};
|
||||
ui16 getType() const{return type;}
|
||||
CPack() {};
|
||||
virtual ~CPack() {};
|
||||
ui16 getType() const { return type; }
|
||||
template <typename Handler> void serialize(Handler &h, const int version)
|
||||
{
|
||||
logNetwork->errorStream() << "CPack serialized... this should not happen!";
|
||||
assert(false && "CPack serialized");
|
||||
}
|
||||
void applyGs(CGameState *gs) { }
|
||||
virtual std::string toString() const { return boost::str(boost::format("{CPack: type '%d'}") % type); }
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
std::ostream & operator<<(std::ostream & out, const CPack * pack)
|
||||
{
|
||||
return out << pack->toString();
|
||||
return out << (pack? pack->toString() : "<nullptr>");
|
||||
}
|
||||
|
||||
DLL_LINKAGE void SetResource::applyGs( CGameState *gs )
|
||||
|
@ -32,7 +32,9 @@ void CBasicLogConfigurator::configure()
|
||||
CLogger * logger = CLogger::getLogger(CLoggerDomain(name));
|
||||
|
||||
// Set log level
|
||||
logger->setLevel(getLogLevel(loggerNode["level"].String()));
|
||||
std::string level = loggerNode["level"].String();
|
||||
logger->setLevel(getLogLevel(level));
|
||||
logGlobal->debug("Set log level %s => %d", name, level);
|
||||
}
|
||||
}
|
||||
CLogger::getGlobalLogger()->clearTargets();
|
||||
@ -78,11 +80,16 @@ void CBasicLogConfigurator::configure()
|
||||
}
|
||||
catch(const std::exception & e)
|
||||
{
|
||||
logGlobal->errorStream() << "Could not initialize the logging system due to configuration error/s."
|
||||
<< "The logging system can be in a corrupted state. " << e.what();
|
||||
logGlobal->error("Could not initialize the logging system due to configuration error/s."
|
||||
"The logging system can be in a corrupted state. %s", e.what());
|
||||
}
|
||||
|
||||
logGlobal->infoStream() << "Initialized logging system based on settings successfully.";
|
||||
logGlobal->info("Initialized logging system based on settings successfully.");
|
||||
for (auto& domain : CLogManager::get().getRegisteredDomains())
|
||||
{
|
||||
logGlobal->info("[log level] %s => %s", domain,
|
||||
ELogLevel::to_string(CLogger::getLogger(CLoggerDomain(domain))->getLevel()));
|
||||
}
|
||||
}
|
||||
|
||||
ELogLevel::ELogLevel CBasicLogConfigurator::getLogLevel(const std::string & level)
|
||||
|
@ -76,8 +76,14 @@ CLogger * CLogger::getLogger(const CLoggerDomain & domain)
|
||||
{
|
||||
logger = new CLogger(domain);
|
||||
if(domain.isGlobalDomain())
|
||||
{
|
||||
logger->setLevel(ELogLevel::TRACE);
|
||||
}
|
||||
CLogManager::get().addLogger(logger);
|
||||
if (logGlobal != nullptr)
|
||||
{
|
||||
logGlobal->debug("Created logger %s", domain.getName());
|
||||
}
|
||||
}
|
||||
return logger;
|
||||
}
|
||||
@ -198,6 +204,16 @@ CLogger * CLogManager::getLogger(const CLoggerDomain & domain)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::vector<std::string> CLogManager::getRegisteredDomains() const
|
||||
{
|
||||
std::vector<std::string> domains;
|
||||
for (auto& pair : loggers)
|
||||
{
|
||||
domains.push_back(pair.second->getDomain().getName());
|
||||
}
|
||||
return std::move(domains);
|
||||
}
|
||||
|
||||
CLogFormatter::CLogFormatter() : CLogFormatter("%m") { }
|
||||
|
||||
CLogFormatter::CLogFormatter(const std::string & pattern) : pattern(pattern)
|
||||
|
@ -73,7 +73,7 @@ private:
|
||||
class DLL_LINKAGE CLogger: public vstd::CLoggerBase
|
||||
{
|
||||
public:
|
||||
inline ELogLevel::ELogLevel getLevel() const;
|
||||
ELogLevel::ELogLevel getLevel() const;
|
||||
void setLevel(ELogLevel::ELogLevel level);
|
||||
const CLoggerDomain & getDomain() const;
|
||||
|
||||
@ -159,10 +159,11 @@ public:
|
||||
|
||||
void addLogger(CLogger * logger);
|
||||
CLogger * getLogger(const CLoggerDomain & domain); /// Returns a logger or nullptr if no one is registered for the given domain.
|
||||
std::vector<std::string> getRegisteredDomains() const;
|
||||
|
||||
private:
|
||||
CLogManager();
|
||||
~CLogManager();
|
||||
virtual ~CLogManager();
|
||||
|
||||
std::map<std::string, CLogger *> loggers;
|
||||
mutable boost::mutex mx;
|
||||
|
@ -943,7 +943,7 @@ void CGameHandler::handleConnection(std::set<PlayerColor> players, CConnection &
|
||||
packType = typeList.getTypeID(pack); //get the id of type
|
||||
|
||||
logGlobal->trace("Received client message (request %d by player %d (%s)) of type with ID=%d (%s).\n",
|
||||
requestID, player, player.getStr(), packType, typeid(*pack).name());
|
||||
requestID, player, player.getStr(), packType, typeid(*pack).name());
|
||||
}
|
||||
|
||||
//prepare struct informing that action was applied
|
||||
@ -965,9 +965,9 @@ void CGameHandler::handleConnection(std::set<PlayerColor> players, CConnection &
|
||||
}
|
||||
else if(apply)
|
||||
{
|
||||
const bool result = apply->applyOnGH(this,&c,pack, player);
|
||||
const bool result = apply->applyOnGH(this, &c, pack, player);
|
||||
if(result)
|
||||
logGlobal->trace("Message successfully applied!");
|
||||
logGlobal->trace("Message %s successfully applied!", typeid(*pack).name());
|
||||
else
|
||||
complain((boost::format("Got false in applying %s... that request must have been fishy!")
|
||||
% typeid(*pack).name()).str());
|
||||
|
Loading…
x
Reference in New Issue
Block a user