You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
3.2 KiB

#pragma once
#include "IVariantProcessor.h"
class IXLuaParamCallback {
public:
virtual ~IXLuaParamCallback() = default;
virtual unsigned int pushParam(IVariantProcessor* proc) = 0;
virtual void getReturnValues(unsigned int count, IVariantProcessor* proc) = 0;
};
class IXLuaValueObject {
public:
virtual ~IXLuaValueObject() = default;
virtual void setCount(unsigned int count) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, bool value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, short value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, int value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, long long value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, float value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, double value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, char value) = 0;
virtual void setValue(unsigned int objIndex, unsigned int varIndex, const char* value) = 0;
};
/// @Brief Lua管理接口类
class IXLua
{
public:
// @function 析构
//
virtual ~IXLua() {}
// @function 初始化
//
// @return 成功返回true
virtual bool init() = 0;
// @function 释放对象
//
virtual void release() = 0;
// @function 加载脚本文件
//
// @param file 脚本文件名
// @param isisRun 是否要运行文件
// @return 成功返回true
virtual bool loadFile(const char* file, bool isRun = true) = 0;
// @function 运行脚本文件
//
// @return 成功返回true
// @note 先要加载文件,且没有运行过
// @see loadFile方法
virtual bool runFile() = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableChar(const char* name, char& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableBool(const char* name, bool& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableShort(const char* name, short& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableInt(const char* name, int& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableInt64(const char* name, long long& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableFloat(const char* name, float& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableDouble(const char* name, double& outValue) = 0;
// @function 获取脚本全局变量
//
// @param name 变量名
// @param bufLen 输出缓冲的长度
// @param outValue 输出值
// @return 是否成功
virtual bool getLuaVariableString(const char* name, size_t bufLen, char* outValue) = 0;
// 调用函数
virtual bool callFunction(const char* funName, unsigned int retValueCount, IXLuaParamCallback* callback) = 0;
};