mirror of
https://github.com/edubart/otclient.git
synced 2025-10-16 20:43:26 +02:00
Compilation for MSVC2013, thanks @dalkon
OTclient now compiles in "Microsoft Visual Studio 2013 Express for Windows Desktop" All the needed libraries you can download at https://www.dropbox.com/s/2yfb1c763io8efy/otclient-msvc13-libs.zip NOTE: You have to change VC++ Directories to the properly directories NOTE: Latested MSVC 2013 or greated is required
This commit is contained in:
@@ -351,17 +351,10 @@ void Map::setShowZone(tileflags_t zone, bool show)
|
||||
|
||||
void Map::setShowZones(bool show)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
static const uint32 defaultZoneFlags
|
||||
= TILESTATE_HOUSE | TILESTATE_PROTECTIONZONE;
|
||||
#else
|
||||
static constexpr uint32 defaultZoneFlags
|
||||
= TILESTATE_HOUSE | TILESTATE_PROTECTIONZONE;
|
||||
#endif
|
||||
if(!show)
|
||||
m_zoneFlags = 0;
|
||||
else if(m_zoneFlags == 0)
|
||||
m_zoneFlags = defaultZoneFlags;
|
||||
m_zoneFlags = TILESTATE_HOUSE | TILESTATE_PROTECTIONZONE;
|
||||
}
|
||||
|
||||
void Map::setZoneColor(tileflags_t zone, const Color& color)
|
||||
|
@@ -52,13 +52,8 @@
|
||||
|
||||
namespace Fw
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
static const float pi = 3.14159265;
|
||||
static const float MIN_ALPHA = 0.003f;
|
||||
#else
|
||||
constexpr float pi = 3.14159265;
|
||||
constexpr float MIN_ALPHA = 0.003f;
|
||||
#endif
|
||||
enum Key : unsigned char {
|
||||
KeyUnknown = 0,
|
||||
KeyEscape = 1,
|
||||
|
@@ -83,7 +83,7 @@ bool Shader::compileSourceFile(const std::string& sourceFile)
|
||||
std::string sourceCode = g_resources.readFileContents(sourceFile);
|
||||
return compileSourceCode(sourceCode);
|
||||
} catch(stdext::exception& e) {
|
||||
g_logger.error(stdext::format("unable to load shader source form file: %s", sourceFile));
|
||||
g_logger.error(stdext::format("unable to load shader source form file '%s': %s", sourceFile, e.what()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@@ -53,8 +53,8 @@ void LuaInterface::init()
|
||||
m_globalEnv = ref();
|
||||
pop();
|
||||
|
||||
// check if demangle_type is working as expected
|
||||
assert(stdext::demangle_type<LuaObject>() == "LuaObject");
|
||||
// check if demangle_class is working as expected
|
||||
assert(stdext::demangle_class<LuaObject>() == "LuaObject");
|
||||
|
||||
// register LuaObject, the base of all other objects
|
||||
registerClass<LuaObject>();
|
||||
|
@@ -64,24 +64,24 @@ public:
|
||||
// register shortcuts using templates
|
||||
template<class C, class B = LuaObject>
|
||||
void registerClass() {
|
||||
registerClass(stdext::demangle_type<C>(), stdext::demangle_type<B>());
|
||||
registerClass(stdext::demangle_class<C>(), stdext::demangle_class<B>());
|
||||
}
|
||||
|
||||
template<class C>
|
||||
void registerClassStaticFunction(const std::string& functionName, const LuaCppFunction& function) {
|
||||
registerClassStaticFunction(stdext::demangle_type<C>(), functionName, function);
|
||||
registerClassStaticFunction(stdext::demangle_class<C>(), functionName, function);
|
||||
}
|
||||
|
||||
template<class C>
|
||||
void registerClassMemberFunction(const std::string& functionName, const LuaCppFunction& function) {
|
||||
registerClassMemberFunction(stdext::demangle_type<C>(), functionName, function);
|
||||
registerClassMemberFunction(stdext::demangle_class<C>(), functionName, function);
|
||||
}
|
||||
|
||||
template<class C>
|
||||
void registerClassMemberField(const std::string& field,
|
||||
const LuaCppFunction& getFunction,
|
||||
const LuaCppFunction& setFunction) {
|
||||
registerClassMemberField(stdext::demangle_type<C>(), field, getFunction, setFunction);
|
||||
registerClassMemberField(stdext::demangle_class<C>(), field, getFunction, setFunction);
|
||||
}
|
||||
|
||||
// methods for binding functions
|
||||
|
@@ -117,5 +117,9 @@ int LuaObject::getUseCount()
|
||||
std::string LuaObject::getClassName()
|
||||
{
|
||||
// TODO: this could be cached for more performance
|
||||
#ifdef _MSC_VER
|
||||
return stdext::demangle_name(typeid(*this).name()) + 6;
|
||||
#else
|
||||
return stdext::demangle_name(typeid(*this).name());
|
||||
#endif
|
||||
}
|
||||
|
@@ -148,10 +148,10 @@ LONG CALLBACK ExceptionHandler(LPEXCEPTION_POINTERS e)
|
||||
MessageBox(NULL, msg.c_str(), "Application crashed", 0);
|
||||
|
||||
// this seems to silently close the application
|
||||
return EXCEPTION_EXECUTE_HANDLER;
|
||||
//return EXCEPTION_EXECUTE_HANDLER;
|
||||
|
||||
// this triggers the microsoft "application has crashed" error dialog
|
||||
//return EXCEPTION_CONTINUE_SEARCH;
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
|
||||
void installCrashHandler()
|
||||
|
@@ -48,7 +48,7 @@ class WIN32Window : public PlatformWindow
|
||||
bool isExtensionSupported(const char *ext);
|
||||
|
||||
LRESULT windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
friend class WindowProcProxy;
|
||||
friend struct WindowProcProxy;
|
||||
|
||||
Fw::Key retranslateVirtualKey(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
|
@@ -121,7 +121,7 @@ template<>
|
||||
inline bool cast(const std::string& in, float& f) {
|
||||
double d;
|
||||
if(cast(in, d)) {
|
||||
f=d;
|
||||
f=(float)d;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@@ -38,7 +38,7 @@ const char* demangle_name(const char* name)
|
||||
#ifdef _MSC_VER
|
||||
static char buffer[1024];
|
||||
UnDecorateSymbolName(name, buffer, sizeof(buffer), UNDNAME_COMPLETE);
|
||||
return &buffer[6];
|
||||
return buffer;
|
||||
#else
|
||||
size_t len;
|
||||
int status;
|
||||
|
@@ -31,6 +31,15 @@ namespace stdext {
|
||||
/// Demangle names for GNU g++ compiler
|
||||
const char* demangle_name(const char* name);
|
||||
|
||||
/// Returns the name of a class
|
||||
template<typename T> std::string demangle_class() {
|
||||
#ifdef _MSC_VER
|
||||
return demangle_name(typeid(T).name()) + 6;
|
||||
#else
|
||||
return demangle_name(typeid(T).name());
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Returns the name of a type
|
||||
template<typename T> std::string demangle_type() { return demangle_name(typeid(T).name()); }
|
||||
|
||||
|
@@ -55,13 +55,13 @@ template<int N> struct expand_snprintf {
|
||||
template<typename Tuple, typename... Args> static int call(char *s, size_t maxlen, const char *format, const Tuple& tuple, const Args&... args) {
|
||||
return expand_snprintf<N-1>::call(s, maxlen, format, tuple, sprintf_cast(std::get<N-1>(tuple)), args...); }};
|
||||
template<> struct expand_snprintf<0> {
|
||||
template<typename Tuple, typename... Args> static int call(char *s, size_t maxlen, const char *format, const Tuple& tuple, const Args&... args) {
|
||||
#ifdef _MSC_VER
|
||||
template<typename Tuple, typename... Args> static int call(char *s, size_t maxlen, const char *format, const Tuple& tuple, const Args&... args) {
|
||||
return _snprintf(s, maxlen, format, args...); }
|
||||
return _snprintf(s, maxlen, format, args...);
|
||||
#else
|
||||
template<typename Tuple, typename... Args> static int call(char *s, size_t maxlen, const char *format, const Tuple& tuple, const Args&... args) {
|
||||
return snprintf(s, maxlen, format, args...); }
|
||||
return snprintf(s, maxlen, format, args...);
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
// Improved snprintf that accepts std::string and other types
|
||||
|
@@ -36,7 +36,7 @@ void microsleep(size_t us);
|
||||
struct timer {
|
||||
public:
|
||||
timer() { restart(); }
|
||||
float elapsed_seconds() { return (stdext::micros() - m_start)/1000000.0; }
|
||||
float elapsed_seconds() { return (float)((stdext::micros() - m_start)/1000000.0); }
|
||||
ticks_t elapsed_millis() { return (stdext::micros() - m_start)/1000; }
|
||||
ticks_t elapsed_micros() { return stdext::micros() - m_start; }
|
||||
void restart() { m_start = stdext::micros(); }
|
||||
|
@@ -172,11 +172,7 @@ enum TiXmlEncoding
|
||||
TIXML_ENCODING_UTF8,
|
||||
TIXML_ENCODING_LEGACY
|
||||
};
|
||||
#ifdef _MSC_VER
|
||||
static const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN;
|
||||
#else
|
||||
constexpr TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN;
|
||||
#endif
|
||||
/** TiXmlBase is a base class for every class in TinyXml.
|
||||
It does little except to establish that TinyXml classes
|
||||
can be printed and provide some utility functions.
|
||||
|
Reference in New Issue
Block a user