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

JVM و Android

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

کیتی یاریزانی Kotlin لەسەر JVM کار دەکات، لەسەر دێسکتۆپ و لەسەر Android. یارییەکانی Java هەمان کیت لە ڕێگەی ڕووکارە Java ـیەکەیەوە بەکاردەهێنن. نموونەکان شوێن یارییەکی libGDX دەکەون، کە خولی وێنەکێشانەکەی شوێنێکی سروشتییە بۆ بەتاڵکردنی ڕووداوەکان، و هەمان بانگکردنەکان لەگەڵ هەر خولێکی یاری دەگونجێن.

کیتەکە و کتێبخانە ڕەسەنەکانی زیاد بکە

کیتەکە و کتێبخانە ڕەسەنەکانی لە Maven Central دا بەرهەمی جیاوازن، بۆیە هەردووکیان زیاد بکە. یارییەکی دێسکتۆپ lingara-embed-natives-desktop زیاد دەکات، کە کتێبخانەکانی Windows، macOS و Linux هەڵدەگرێت. مۆدیولێکی Android لە جیاتی ئەوە lingara-embed-natives-android زیاد دەکات، کە AAR ێکە. لە پرۆژەیەکی libGDX دا، کتێبخانە ڕەسەنەکانی دێسکتۆپ دەچنە مۆدیولی دێسکتۆپ و کتێبخانە ڕەسەنەکانی Android دەچنە مۆدیولی Android.

یارییەکی Kotlin پشت بە lingara-embed-kotlin دەبەستێت؛ یارییەکی Java پشت بە lingara-embed-java، کە ڕووکارەکەیە.

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

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

ڕووداوەکان لە خولی وێنەکێشاندا بەتاڵ بکە

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

بۆ ئەوەی ئەو ڕووداوانە چی هەڵدەگرن، بڕوانە گفتوگۆی NPC و ئەنجامەکانی ڕاهێنان.

زمانی نموونەی کۆد

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>
زمانی نموونەی کۆد

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();
زمانی نموونەی کۆد

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