Предыдущую неделю просидел дома. Из‑за высокой температуры особо на рабочих задачах сконцентрироваться шансов не было. Но вот сторонними проектами удалось позаниматься. В очередной раз порадовался связке LibGDX и Kotlin.

Задачка такая: прочитать список объектов из JSON. Я уже приготовился писать много строк кода. Оказалось, что инструменты чтения JSON уже встроены в LibGDX. Это немного странно. Я ожидал, что для этой задачи потребуется сторонняя библиотека. Хотя, с другой стороны, скин для UI описывается JSON, так что, по сути, разработчики LibGDX вытащили используемые хелперы в публичный API.

На Kotlin получается такой код для чтения списка в массив:

data class Word(val word: String = "", val translation: String = "")


fun initWords() {
    var json = Json()
    var list: ArrayList<*> = json.fromJson(ArrayList::class.java, Gdx.files.internal("words.json"))
    words = Array(list.size) { i -> json.readValue(Word::class.java, list[i] as JsonValue) }
}

Вообще это API отлично подходит для создания сейвов. Нужно только поверху навернуть шифрование (иначе игроки будут портить сейвы, а ловить потом такие ошибки очень сложно).