将大量常量导出到Lua状态

时间:2012-07-23 08:57:35

标签: c lua

使用C(99),我有一个从Lua脚本加载Lua表的游戏。

技术方面没有问题,一切按预期工作。但是,C内核使用许多常量来定义项类型等。该脚本实际上提供了要加载的武器数据,并且为了清楚起见应该使用相同的常量名称/值。 常量是在C中,例如#define ITEM_TYPE_EDIBLE 2。

所以,我的问题是:如何从C中轻松地将一个long-ish(~300定义)整数列表导出到Lua?不止一个脚本应该使用该列表,虽然内存中的大小并不是真正的问题,但我主要是为了方便。

我已经想到了这些可能的解决方案,但不确定从长远来看哪一个更好:

  • A)在处理所需脚本的Lua状态下手动创建嵌套表。
  • B)手动创建一个包含常量的lua脚本,并在每个使用它们的脚本中导入它。

那么,您认为最方便的方法是什么?因为,方便更新和在Lua方面使用,所以mods可以很容易地编写。项目加载都是在启动时完成的,所以如果它不是超快的方法并不重要(例如,它不会滞后于动作,只是启动时间)

哦,我正在使用Lua 5.1,但如果它让我的任务变得更容易,那就不要反对使用5.2了。如果可能的话,也不反对以编程方式更新列表。

2 个答案:

答案 0 :(得分:0)

我编写了一个脚本,生成一个C头,所有整数常量都设置为enum s。另一个C文件,它具有一个通过添加所有这些常量的表来改变Lua状态的函数,或者在全局范围内将它们作为预定义的数字变量单独添加。

答案 1 :(得分:0)

  
      
  • A)在处理所需脚本的Lua状态下手动创建嵌套表。
  •   
  • B)手动创建一个包含常量的lua脚本,并在每个使用它们的脚本中导入它。
  •   

你忘了:

  • C)手动创建一个包含常量的Lua脚本,然后当我创建我的lua_State时,立即导入它。这样,使用它们的每个脚本都可以假定它已被导入。

实际上,我通常会将此脚本放在可执行文件本身或可执行文件加载的特殊文件中。