Lingara Lingara بەڵگەنامەکان ڕێنماییەکان API کتێبخانەکان ئەپەکان دروستکردن جێگیرکردن ئەپی وێب
زمان: سۆرانی

Bevy

ئەم پەڕەیە لە ئینگلیزییەوە وەرگێڕدراوە. ئەگەر هەردووکیان جیاواز بوون، پەڕە ئینگلیزییەکە ڕاستە. پەڕە ئینگلیزییەکە بخوێنەوە

bevy_lingara پلەگینێکی Bevy ـە لەسەر ناوکی یاریزانی Lingara. زیادی بکە بۆ ئەپەکەت، پێی بڵێ چۆن بۆ تۆکن بگاتە سێرڤەرەکەت، و ئەوەی Lingara دەینێرێت وەک Messages ـی ئاسایی Bevy بخوێنەرەوە.

پلەگینەکە زیاد بکە

Crate ـەکە بۆ یارییەکەت زیاد بکە، پاشان LingaraPlugin لەگەڵ LingaraConfig بۆ ئەپەکەت زیاد بکە.

تۆکن لە سێرڤەرەکەی خۆت وەربگرە

پلەگینەکە هەرگیز نهێنییەک هەڵناگرێت. کاتێک پێویستی بە تۆکنێک بێت، لە سێرڤەرەکەی خۆت داوای دەکات، کە بە کیتی سێرڤەر یەکێک دروست دەکات و بە تۆکنەکە و کاتی بەسەرچوونی وەڵام دەداتەوە.

دوو ڕێگا بۆ وەڵامدانەوە هەن. لە حاڵەتی ئاساییدا، ڕێڕەوی تۆکنی سێرڤەرەکەت و هەر سەرپەڕەیەک کە دانیشتنەکەت پێویستی پێیەتی بدە بە ڕێکخستنەکان، و پلەگینەکە لە جیاتی تۆ بانگی دەکات. یان ڕێڕەوەکە دیاری مەکە و خۆت وەڵامی هەر Message ێکی LingaraTokenNeeded بە ProvideToken بدەرەوە، بە بەکارهێنانی هەر چوونەژوورەوەیەک کە یارییەکەت پێشتر هەیەتی.

ڕووداوەکان لە هەر چوارچێوەیەکدا یەک جار بخوێنەرەوە

ناوکەکە I/O ـی تۆڕەکەی لەسەر thread ـی خۆی کار پێدەکات و هەرگیز بانگی کۆدەکەت ناکات. پلەگینەکە ڕیزەکەی لە هەر چوارچێوەیەکدا یەک جار بەتاڵ دەکات و ئەوەی گەیشتووە دەیکات بە Messages کە سیستەمەکانت وەک هەر یەکێکی تر دەیخوێننەوە:

  • LingaraEventReceived بۆ ڕووداوێک دەربارەی یاریزانەکە، وەک ئامادەبوونی پلانی وانەیەک؛
  • NpcTranscript، پێکهاتەیەک لەسەر هەر کارەکتەرێک کە لە کاتی هاتنی وەڵامێکدا بە پارچە گەورە دەبێت (بڕوانە گفتوگۆی NPC)؛
  • PracticeFinished کاتێک دانیشتنێکی ڕاهێنان کۆتایی دێت (بڕوانە ئەنجامەکانی ڕاهێنان).

هیچ شتێک چوارچێوەیەک ڕاناگرێت: تۆڕێکی خاو تەنها وەک Message ێک دەردەکەوێت کە کەمێک درەنگتر دەگات.

Bevy

cargo add bevy_lingara@0.1.0-alpha.6

Bevy

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