1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#pragma once
#include "ai/ailua.h"
#include "parse/sexp/LuaSEXP.h"
#include "scripting/lua/LuaFunction.h"
#include "scripting/lua/LuaTable.h"
#include "parse/sexp.h"
namespace sexp {
class LuaAISEXP : public LuaSEXP {
int _arg_type = -1;
bool needsTarget = false;
const char* hudText = nullptr;
luacpp::LuaFunction _actionEnter;
luacpp::LuaFunction _achievable;
luacpp::LuaFunction _targetRestrict;
std::unique_ptr<player_order_lua> playerOrder = nullptr;
// just a helper for parseTable
static bool parseCheckEndOfDescription();
public:
explicit LuaAISEXP(const SCP_string& name);
void initialize() override;
int getMinimumArguments() const override;
int getMaximumArguments() const override;
int getArgumentType(int argnum) const override;
int execute(int node, int parent_node = -1) override;
void parseTable();
void setActionEnter(const luacpp::LuaFunction& action);
luacpp::LuaFunction getActionEnter() const;
void setAchievable(const luacpp::LuaFunction& action);
luacpp::LuaFunction getAchievable() const;
void setTargetRestrict(const luacpp::LuaFunction& action);
luacpp::LuaFunction getTargetRestrict() const;
void registerAIMode(int sexp_id) const;
void maybeRegisterPlayerOrder(int sexp_id) const;
};
}
|