1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-05 15:05:40 +02:00

Merge pull request #233 from vmarkovtsev/develop

Bunch of random stuff
This commit is contained in:
ArseniyShestakov 2016-10-03 22:25:39 +03:00 committed by GitHub
commit 8af4d97664
13 changed files with 93 additions and 26 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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

View File

@ -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!");
}

View File

@ -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)));
}
}

View File

@ -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

View File

@ -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); }

View File

@ -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 )

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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());