Lingara Lingara Belge Rêbername API Pirtûkxane Sepan Avakirin Bicihkirin Sepana webê
Ziman: Kurdî

JVM û Android

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

Kîta lîstikvan a Kotlin li ser JVM, li ser sermaseyê û li ser Android dixebite. Lîstikên Java heman kîtê bi rêya rûyê wê yê Java bi kar tînin. Nimûne li dû lîstikeke libGDX diçin, ku xeleka wê ya renderê cihekî xwezayî ye ji bo valakirina bûyeran, û heman bang li her xeleka lîstikê tên.

Kît û pirtûkxaneyên wê yên xwecih zêde bike

Kît û pirtûkxaneyên wê yên xwecih li Maven Central artefaktên cuda ne, ji ber vê yekê herduyan zêde bike. Lîstikeke sermaseyê lingara-embed-natives-desktop zêde dike, ku pirtûkxaneyên ji bo Windows, macOS û Linux hildigire. Modulek Android li şûna wê lingara-embed-natives-android zêde dike, ku AAR e. Di projeyeke libGDX de, pirtûkxaneyên xwecih ên sermaseyê diçin modula sermaseyê û yên Android diçin modula Android.

Lîstikeke Kotlin bi lingara-embed-kotlin ve girêdayî ye; lîstikeke Java bi lingara-embed-java ve, ku rû ye.

Tokenan ji servera xwe bistîne

Kît qet nepeniyekê nagire. Rêya tokenê ya servera xwe û sernivîsa ku danişîna lîstikvan hildigire bide wê, û kît her gava ku tokenek hewce dike daxwazekê dişîne wê. Servera te bi kîta serverê tokenê çêdike û bi token û dema qedandina wê bersiv dide.

Bûyeran di xeleka renderê de vala bike

Navik I/O-ya xwe ya torê li ser thread-a xwe dixebitîne û qet bangî koda te nake. Di xeleka renderê de, li ser thread-a lîstikê, tiştên ku gihîştine vala bike, herî zêde 256 bûyer di carekê de, û her yekê bi rê ve bibe: nûkirineke temrînê, bersiveke NPC ya ku bi perçeyan tê, xeletiyek. Di Java de, her bûyer diçe rêbaza têkildar a visitor-a te. Kîtê di gava dispose ya lîstika xwe de bigire, ku navikê radiwestîne û azad dike.

Ji bo tiştên ku ew bûyer hildigirin, binêre Diyaloga NPC û encamên temrînê.

Zimanê mînaka 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>
Zimanê mînaka 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();
Zimanê mînaka 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();
}