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

JVM dan Android

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

Kit pemain Kotlin berjalan pada JVM, di desktop dan di Android. Permainan Java menggunakan kit yang sama melalui fasad Java-nya. Sampel mengikuti permainan libGDX, yang gelung pemaparannya ialah tempat semula jadi untuk mengosongkan acara, dan panggilan yang sama sesuai dengan mana-mana gelung permainan.

Tambahkan kit dan pustaka aslinya

Kit dan pustaka aslinya ialah artifak berasingan di Maven Central, jadi tambahkan kedua-duanya. Permainan desktop menambah lingara-embed-natives-desktop, yang membawa pustaka untuk Windows, macOS dan Linux. Modul Android menambah lingara-embed-natives-android, sebuah AAR, sebaliknya. Dalam projek libGDX, pustaka asli desktop diletakkan dalam modul desktop dan pustaka asli Android dalam modul Android.

Permainan Kotlin bergantung pada lingara-embed-kotlin; permainan Java pada lingara-embed-java, iaitu fasad.

Dapatkan token daripada pelayan anda

Kit tidak pernah menyimpan rahsia. Berikan laluan token pelayan anda sendiri dan pengepala yang membawa sesi pemain, dan kit menghantar ke laluan itu setiap kali ia memerlukan token. Pelayan anda mencetak dengan kit pelayan dan menjawab dengan token serta tempoh tamatnya.

Kosongkan acara dalam gelung pemaparan anda

Teras menjalankan I/O rangkaiannya pada benangnya sendiri dan tidak pernah memanggil kod anda. Dalam gelung pemaparan anda, pada benang permainan, kosongkan apa yang telah tiba, paling banyak 256 acara pada satu masa, dan kendalikan setiap satu: kemas kini latihan, balasan NPC yang distrim, ralat. Dalam Java, setiap acara pergi ke kaedah yang sepadan dalam pelawat anda. Tutup kit dalam langkah pelupusan permainan anda, yang menghentikan teras dan membebaskannya.

Lihat dialog NPC dan hasil latihan untuk apa yang dibawa oleh acara tersebut.

Bahasa contoh kod

Kotlin

// The kit, and the natives for the platform: natives-desktop in a libGDX lwjgl3 module, natives-android in its android module.
implementation("com.getlingara:lingara-embed-kotlin:0.1.0-alpha.6")
implementation("com.getlingara:lingara-embed-natives-desktop:0.1.0-alpha.6")

Java

<!-- The kit, and the natives for the platform (lingara-embed-natives-android in an Android module). -->
<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-embed-java</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>
<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-embed-natives-desktop</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>
Bahasa contoh kod

Kotlin

// Your server mints the embed token; the kit POSTs {} here whenever it needs one.
private val lingara =
    LingaraEmbed.start(
        EmbedConfig(
            tokenSource =
                TokenSourceConfig.Http(
                    url = "https://my-game.example/lingara/token",
                    headers = listOf(Header("Authorization", Secret("Bearer $session"))),
                ),
            userAgentSuffix = "my-game/1.4",
        ),
    )

Java

// Your server mints the embed token; the kit POSTs {} here whenever it needs one.
lingara =
    LingaraEmbedJava.builder()
        .httpTokenSource(
            "https://my-game.example/lingara/token",
            Map.of("Authorization", "Bearer " + session))
        .userAgentSuffix("my-game/1.4")
        .build();
Bahasa contoh kod

Kotlin

// In render(), on the game thread: one crossing, at most 256 events.
fun render() {
    lingara.drain(256) { event ->
        when (event) {
            is EmbedEvent.Practice -> showPractice(event.snapshot.question?.prompt)
            is EmbedEvent.NpcTurn -> onNpcTurn(event.update)
            is EmbedEvent.Error -> println("Lingara error: ${event.error.message}")
            else -> Unit
        }
    }
}

// In dispose(): stops the core and frees it.
fun dispose() {
    lingara.close()
}

Java

// In render(), on the game thread: one crossing, at most 256 events, each to its visitor method.
void render() {
  lingara.drain(256, event -> LingaraEmbedJava.visit(event, visitor));
}

// In dispose(), or let try-with-resources do it.
@Override
public void close() {
  lingara.close();
}