defVar method

LuaObject defVar(
  1. String id,
  2. Object? value
)

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;
}