Bevy
دا پاڼه له انګلیسي ژبې ژباړل شوې ده. که دواړه سره توپیر ولري، انګلیسي پاڼه سمه ده. انګلیسي پاڼه ولولئ
bevy_lingara د Bevy یو پلګان دی چې د Lingara د لوبغاړي پر هسته ولاړ دی. هغه خپل اپلیکیشن ته ور زیات کړئ، ورته ووایئ چې د ټوکنونو لپاره ستاسو سرور ته څنګه ورسېږي، او هغه څه چې Lingara یې لېږي د Bevy د عادي Messages په توګه ولولئ.
پلګان ور زیات کړئ
کرېټ خپلې لوبې ته ور زیات کړئ، بیا LingaraPlugin د یوه LingaraConfig سره خپل اپلیکیشن ته ور زیات کړئ.
ټوکنونه له خپل سرور څخه واخلئ
پلګان هېڅکله راز نه ساتي. کله چې ټوکن ته اړتیا ولري، ستاسو له خپل سرور څخه یې غواړي، چې د یوه سرور کیټ په مرسته یو ټوکن جوړوي او د ټوکن او د هغه د پای ته رسېدو د وخت په لېږلو ځواب ورکوي.
د ځواب ورکولو دوه لارې شته. په عام حالت کې، تنظیماتو ته د خپل سرور د ټوکن لاره او هر هغه سرلیک ورکړئ چې ستاسو ناستې ته اړین وي، او پلګان یې ستاسو پر ځای ورته کال کوي. یا لاره نا ټاکلې پرېږدئ او هر LingaraTokenNeeded Message ته پخپله د یوه ProvideToken په مرسته ځواب ورکړئ، د هغه ننوتلو په کارولو چې ستاسو لوبه یې دمخه لري.
پېښې په هر چوکاټ کې یو ځل ولولئ
هسته د شبکې خپل I/O په خپل جلا تار کې چلوي او هېڅکله ستاسو کوډ ته کال نه کوي. پلګان خپل قطار په هر چوکاټ کې یو ځل خالي کوي او هغه څه چې رارسېدلي وي په داسې Messages بدلوي چې ستاسو سیسټمونه یې د نورو هر یوه په څېر لولي:
LingaraEventReceivedد لوبغاړي په اړه د یوې پېښې لپاره، لکه د یوه لوست پلان چمتو کېدل؛NpcTranscript، په هر کرکټر یوه برخه چې د ځواب د راتګ په اوږدو کې وده کوي (وګورئ د NPC خبرې اترې)؛PracticeFinishedکله چې د تمرین یوه ناسته پای ته ورسېږي (وګورئ د تمرین پایلې).
هېڅ شی یو چوکاټ نه دروي: ورو شبکه یوازې په دې ښکاره کېږي چې یو Message لږ څه وروسته رارسي.
Bevy
cargo add bevy_lingara@0.1.0-alpha.6Bevy
/// The common case: the plugin POSTs to your own server's token route, with
/// your game's session as a header, and reads `{token, expires_at}`.
fn lingara_config(session_header: bevy_lingara::lingara_embed::Header) -> LingaraConfig {
LingaraConfig::new()
.token_endpoint("https://game.example.com/lingara-token", vec![session_header])
.source_lang("en")
}
/// Or keep the session in ECS: leave the token endpoint unset, answer each
/// `LingaraTokenNeeded` with what your server returned.
fn answer_token_requests(mut needed: MessageReader<LingaraTokenNeeded>, mut provide: MessageWriter<ProvideToken>) {
for _request in needed.read() {
let (token, expires_at) = fetch_from_your_server();
provide.write(ProvideToken::new(token, expires_at));
}
}Bevy
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(LingaraPlugin::new(lingara_config(header)))
.add_systems(Update, on_lingara_event)
/// The plugin drains Lingara's events once per frame: read them as Messages.
fn on_lingara_event(mut events: MessageReader<LingaraEventReceived>) {
for LingaraEventReceived(event) in events.read() {
info!("{}: {}", event.event_type, event.data_json);
}
}