Bevy
Ev rûpel ji Îngilîzî hatiye wergerandin. Heke her du ji hev cuda bin, rûpela Îngilîzî rast e. Rûpela Îngilîzî bixwîne
bevy_lingara pêvekeke Bevy ye ku li ser navika lîstikvan a Lingara hatiye avakirin. Wê li sepana xwe zêde bike, jê re bêje ka çawa ji bo tokenan bigihîje servera te, û tiştên ku Lingara dişîne wek Messages yên asayî yên Bevy bixwîne.
Pêvekê zêde bike
Crate-ê li lîstika xwe zêde bike, paşê LingaraPlugin bi LingaraConfig re li sepana xwe zêde bike.
Tokenan ji servera xwe bistîne
Pêvek qet nepeniyekê nagire. Dema ku tokenek hewce dike, ji servera te bi xwe dixwaze, ku bi kîta serverê yekê çêdike û bi token û dema qedandina wê bersiv dide.
Du rêyên bersivdanê hene. Di rewşa asayî de, rêya tokenê ya servera xwe û her sernivîsa ku danişîna te hewce dike bide mîhengan, û pêvek li şûna te bang dike. An jî rê bêdiyar bihêle û bersiva her Message-a LingaraTokenNeeded bi xwe bi ProvideToken bide, bi her têketina ku lîstika te jixwe heye.
Bûyeran di her çarçoveyê de carekê bixwîne
Navik I/O-ya xwe ya torê li ser thread-a xwe dixebitîne û qet bangî koda te nake. Pêvek rêza xwe di her çarçoveyê de carekê vala dike û tiştên ku gihîştine dike Messages ku pergalên te wan wek yên din dixwînin:
LingaraEventReceivedji bo bûyerekê derbarê lîstikvan de, wek amadebûna plana dersê;NpcTranscript, pêkhateyek li ser her karakterî ku dema bersivek bi perçeyan tê mezin dibe (binêre Diyaloga NPC);PracticeFinisheddema ku rûniştineke temrînê diqede (binêre encamên temrînê).
Tu tişt çarçoveyekê asteng nake: toreke hêdî tenê wek Message-ek ku hinekî paşê digihîje xuya dibe.
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);
}
}