Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Bina Benam Apl web
Bahasa: Bahasa Melayu

Bevy

Halaman ini diterjemahkan daripada bahasa Inggeris. Jika kedua-duanya berbeza, halaman bahasa Inggeris adalah yang betul. Baca halaman bahasa Inggeris

bevy_lingara ialah pemalam Bevy di atas teras pemain Lingara. Tambahkannya pada aplikasi anda, beritahu cara untuk sampai ke pelayan anda bagi mendapatkan token, dan baca apa yang dihantar oleh Lingara sebagai Bevy Messages biasa.

Tambahkan pemalam

Tambahkan crate pada permainan anda, kemudian tambahkan LingaraPlugin pada aplikasi anda dengan LingaraConfig.

Dapatkan token daripada pelayan anda

Pemalam tidak pernah menyimpan rahsia. Apabila ia memerlukan token, ia meminta daripada pelayan anda sendiri, yang mencetak token dengan kit pelayan dan menjawab dengan token serta tempoh tamatnya.

Terdapat dua cara untuk menjawab. Dalam kes biasa, berikan konfigurasi laluan token pelayan anda dan sebarang pengepala yang diperlukan oleh sesi anda, dan pemalam memanggilnya untuk anda. Atau biarkan laluan itu tidak ditetapkan dan jawab setiap Message LingaraTokenNeeded sendiri dengan ProvideToken, menggunakan apa jua log masuk yang sudah ada pada permainan anda.

Baca acara sekali setiap bingkai

Teras menjalankan I/O rangkaiannya pada benangnya sendiri dan tidak pernah memanggil kod anda. Pemalam mengosongkan barisannya sekali setiap bingkai dan menukar apa yang tiba menjadi Messages yang dibaca oleh sistem anda seperti Message lain:

  • LingaraEventReceived untuk acara tentang pemain, seperti pelan pelajaran yang sudah sedia;
  • NpcTranscript, komponen pada setiap watak yang bertambah semasa balasan distrim masuk (lihat dialog NPC);
  • PracticeFinished apabila sesi latihan tamat (lihat hasil latihan).

Tiada apa-apa yang menyekat bingkai: rangkaian yang perlahan hanya kelihatan sebagai Message yang tiba sedikit lewat.

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