defVar method
Implementation
LuaObject defVar(String id, Object? value) {
final LuaObject luaObject;
if (value is LuaObject) {
if (value.skipSemanitcs) {
luaObject = value.toRef();
} else if (value.isFunc) {
final closure = value.fieldValueAs<Function>('__call')!;
final def = value.funcDef;
if (def == null) {
throw '''A programmer forgot to use LuaFuncBuilder. '''
'''Please report this error!.''';
}
luaObject = LuaObject.func(id, def, closure);
// meta method __call is on a special table.
// therefore we may also have other table fields.
luaObject.writeFields(value.fields!);
/*} else if (value.isTable) {
luaObject = LuaObject.table(id, value.fields);*/
} else {
/*luaObject = LuaObject(id);
luaObject.value = value;*/
luaObject = value;
}
} else /* not LuaObject */ {
luaObject = LuaObject.variable(id, value);
}
vars[id] = luaObject;
return luaObject;
}