Skip to content

Commit

Permalink
minor AI refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ashdnazg committed Feb 19, 2019
1 parent 9b63660 commit 1d6192b
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 21 deletions.
12 changes: 6 additions & 6 deletions rts/ExternalAI/AICallback.cpp
Expand Up @@ -1822,12 +1822,12 @@ const float3* CAICallback::GetStartPos()



#define AICALLBACK_CALL_LUA(HandleName) \
const char* CAICallback::CallLua ## HandleName(const char* inData, int inSize) { \
if (lua ## HandleName == nullptr) \
return nullptr; \
\
return lua ## HandleName->RecvSkirmishAIMessage(team, inData, inSize); \
#define AICALLBACK_CALL_LUA(HandleName) \
const char* CAICallback::CallLua ## HandleName(const char* inData, int inSize, size_t* outSize) { \
if (lua ## HandleName == nullptr) \
return nullptr; \
\
return lua ## HandleName->RecvSkirmishAIMessage(team, inData, inSize, outSize); \
}

AICALLBACK_CALL_LUA(Rules)
Expand Down
4 changes: 2 additions & 2 deletions rts/ExternalAI/AICallback.h
Expand Up @@ -255,8 +255,8 @@ class CAICallback
// 2. if inSize is less than 0, the data size is calculated using strlen()
// 3. the return data is subject to lua garbage collection,
// copy it if you wish to continue using it
const char* CallLuaRules(const char* inData, int inSize = -1);
const char* CallLuaUI(const char* inData, int inSize = -1);
const char* CallLuaRules(const char* inData, int inSize, size_t* outSize);
const char* CallLuaUI(const char* inData, int inSize, size_t* outSize);

// never called, implemented in SSkirmishAICallbackImpl
std::map<std::string, std::string> GetMyInfo() { return std::map<std::string, std::string>(); }
Expand Down
17 changes: 9 additions & 8 deletions rts/ExternalAI/SSkirmishAICallbackImpl.cpp
Expand Up @@ -794,14 +794,15 @@ EXPORT(int) skirmishAiCallback_Engine_handleCommand(
#define SSAICALLBACK_CALL_LUA(HandleName, HANDLENAME) \
case COMMAND_CALL_LUA_ ## HANDLENAME: { \
SCallLua ## HandleName ## Command* cmd = static_cast<SCallLua ## HandleName ## Command*>(commandData); \
const char* outData = clb->CallLua ## HandleName(cmd->inData, cmd->inSize); \
if (cmd->ret_outData != NULL) { \
if (outData != NULL) { \
const int len = std::min(int(strlen(outData)), MAX_RESPONSE_SIZE - 1); \
strncpy(cmd->ret_outData, outData, len); \
cmd->ret_outData[len] = '\0'; \
} else { \
cmd->ret_outData[0] = '\0'; \
size_t len = 0; \
const char* outData = clb->CallLua ## HandleName(cmd->inData, cmd->inSize, &len); \
if (cmd->ret_outData != NULL) { \
if (outData != NULL) { \
len = std::min(len, size_t(MAX_RESPONSE_SIZE - 1)); \
strncpy(cmd->ret_outData, outData, len); \
cmd->ret_outData[len] = '\0'; \
} else { \
cmd->ret_outData[0] = '\0'; \
} \
} \
} break;
Expand Down
4 changes: 2 additions & 2 deletions rts/Lua/LuaHandle.cpp
Expand Up @@ -2360,7 +2360,7 @@ bool CLuaHandle::GameSetup(const string& state, bool& ready,



const char* CLuaHandle::RecvSkirmishAIMessage(int aiTeam, const char* inData, int inSize)
const char* CLuaHandle::RecvSkirmishAIMessage(int aiTeam, const char* inData, int inSize, size_t* outSize)
{
LUA_CALL_IN_CHECK(L, nullptr);
luaL_checkstack(L, 4, __func__);
Expand Down Expand Up @@ -2389,7 +2389,7 @@ const char* CLuaHandle::RecvSkirmishAIMessage(int aiTeam, const char* inData, in
return nullptr;

if (lua_isstring(L, -1))
outData = lua_tolstring(L, -1, nullptr);
outData = lua_tolstring(L, -1, outSize);

lua_pop(L, 1);
return outData;
Expand Down
2 changes: 1 addition & 1 deletion rts/Lua/LuaHandle.h
Expand Up @@ -204,7 +204,7 @@ class CLuaHandle : public CEventClient
bool GameSetup(const std::string& state, bool& ready,
const std::vector< std::pair<int, std::string> >& playerStates) override;

const char* RecvSkirmishAIMessage(int aiID, const char* data, int inSize);
const char* RecvSkirmishAIMessage(int aiID, const char* data, int inSize, size_t* outSize);

std::string WorldTooltip(const CUnit* unit,
const CFeature* feature,
Expand Down
4 changes: 2 additions & 2 deletions rts/Lua/LuaRules.h
Expand Up @@ -37,8 +37,8 @@ class CLuaRules : public CSplitLuaHandle
void Cob2Lua(const LuaHashString& funcName, const CUnit* unit,
int& argsCount, int args[MAX_LUA_COB_ARGS]);

const char* RecvSkirmishAIMessage(int aiID, const char* data, int inSize) {
return syncedLuaHandle.RecvSkirmishAIMessage(aiID, data, inSize);
const char* RecvSkirmishAIMessage(int aiID, const char* data, int inSize, size_t* outSize) {
return syncedLuaHandle.RecvSkirmishAIMessage(aiID, data, inSize, outSize);
}

private:
Expand Down

0 comments on commit 1d6192b

Please sign in to comment.