WorldBloc constructor
Implementation
WorldBloc(SetonixData data, this.server, this.worldName)
: super(
WorldState(
data: data,
table: data.getTableOrDefault(),
metadata: data.getMetadataOrDefault(),
info: data.getInfoOrDefault(),
),
) {
_pluginSystem = PluginSystem(server: this);
_serverPlugin = _pluginSystem.registerPlugin('', SetonixPlugin.new);
on<ServerWorldEvent>((event, emit) async {
final signature = assetManager.createSignature();
final processed = await _computeEvent(
event,
state,
signature: signature.values.toList(),
);
final newState = processed.state;
processed.responses.forEach(process);
if (event is WorldInitialized) {
server.log(
"World initialized${(event.info?.script != null) ? " with script ${event.info?.script}" : ""}",
level: LogLevel.info,
);
await _loadScript((newState ?? state).info.script);
}
if (newState == null) return;
emit(newState);
return save();
}, transformer: sequential());
on<ImagesUpdated>((event, emit) {
emit(state.copyWith(images: event.images));
});
}