RustSetonixPlugin.build constructor
Implementation
factory RustSetonixPlugin.build(
RustPlugin Function(PluginCallback) builder,
PluginSystem pluginSystem, {
void Function(String)? onPrint,
}) {
final callback = PluginCallback.default_();
final plugin = builder(callback);
final instance = RustSetonixPlugin._(plugin);
if (onPrint != null) {
callback.changeOnPrint(onPrint: onPrint);
}
callback.changeProcessEvent(processEvent: (eventSerizalized, force) {
final event = WorldEventMapper.fromJson(eventSerizalized);
instance.process(event, force: force ?? false);
});
callback.changeSendEvent(sendEvent: (eventSerizalized, target) {
final event = PlayableWorldEventMapper.fromJson(eventSerizalized);
instance.sendEvent(event, target ?? kAnyChannel);
});
callback.changeStateFieldAccess(stateFieldAccess: (field) {
final state = pluginSystem.stateGetter();
return switch (field) {
StateFieldAccess.info => state.info.toJson(),
StateFieldAccess.table => state.table.toJson(),
StateFieldAccess.tableName => jsonEncode(state.tableName),
StateFieldAccess.players => jsonEncode(pluginSystem.playersGetter()),
StateFieldAccess.teamMembers => jsonEncode(state.teamMembers),
};
});
instance.eventSystem.on<WorldEvent>((e) {
instance.plugin.runEvent(
eventType: e.clientEvent.runtimeType.toString(),
event: e.clientEvent.toJson(),
serverEvent: e.serverEvent.toJson(),
target: e.target,
source: e.source,
);
});
return instance;
}