#include "stdafx.h" #include "CGameInterface.h" #include "lib/BattleState.h" #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN //excludes rarely used stuff from windows headers - delete this line if something is missing #include //for .dll libs #else #include #endif /* * CGameInterface.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 * */ template rett * createAny(std::string dllname, std::string methodName) { char temp[50]; rett * ret=NULL; rett*(*getAI)(); void(*getName)(char*); std::string dllPath; //TODO unify at least partially (code duplication) #ifdef _WIN32 dllPath = dllname; HINSTANCE dll = LoadLibraryA(dllPath.c_str()); if (!dll) { tlog1 << "Cannot open dynamic library ("< rett * createAnyAI(std::string dllname, std::string methodName) { rett* ret = createAny(LIB_DIR "/" + dllname + '.' + LIB_EXT, methodName); ret->dllName = dllname; return ret; } CGlobalAI * CDynLibHandler::getNewAI(std::string dllname) { return createAnyAI(dllname, "GetNewAI"); } CBattleGameInterface * CDynLibHandler::getNewBattleAI(std::string dllname ) { return createAnyAI(dllname, "GetNewBattleAI"); } CScriptingModule * CDynLibHandler::getNewScriptingModule(std::string dllname) { return createAny(dllname, "GetNewModule"); } BattleAction CGlobalAI::activeStack( const CStack * stack ) { BattleAction ba; ba.actionType = BattleAction::DEFEND; ba.stackNumber = stack->ID; return ba; }