QSP под Android
Взялся недавно за портирование QSP на андроид.
Учитывая, что под андроид нельзя “напрямую” портировать написанный с использованием wxWidgets плеер, задача оказалась довольно сложной.
Разобравшись с доступными средствами, определился, как именно сделать порт, а именно:
- Библиотека QSP собирается в NDK.
- Для библиотеки делается “биндинг под ANDROID”.
- Для доступа к интерфейсу библиотеки через jni пишется специальный класс-прослойка.
- GUI пишется на Java.
Страница на Маркете: Quest Player
Итак, на сегодня выполнено:
- Библиотека успешно собирается в NDK.
- Биндинг под андроид частично написан.
- Начата работа над jni-интерфейсом.
GUI уже умеет :
- Загрузить заранее заданный файл с sdcard(флэшка).
- Запустить игру.
- Вывести описание локации в правильной кодировке.
Nex, по идее биндинг и должен содержать jni-интерфейс.
То есть, вместо апи (в android_control.c) вида “const QSP_CHAR *QSPGetVersion()” будут jni-функции.
Или так и делаешь сейчас?
Byte,
нет, сейчас у меня раздельно. Мне пока что так удобнее.
Может, объединю потом.
Надо будет объединить потом - т.к. это часть биндинга.
Byte,
я понимаю, что по-хорошему нужно так сделать, просто по-плохому быстрее получится.
Главное, чтоб работало. Наведение красот можно смело оставлять напоследок, я не перфекционист.
GUI научился:
Выводить список действий.
GUI научился “выполнять” действия.

Сделал возможность выбрать файл.
Пока что это неудобный способ, реализованный исключительно для тестирования - плеер ищет файлы “.gam” и “.qsp” в корневой директории флэшки (”/mnt/sdcard”)
Сделал вкладки для доп. описания и инвентаря. Это тоже временное решение, в будущем надо будет как-то удобнее это разрулить.

Желающие уже могут попробовать в действии:QspAndroidPlayer.zip
Многое еще не реализовано, баги могут быть самые разные.
Какие-то большие вкладки :)
Byte,
это кажется, потому что шрифт мелковат. На девайсе все гораздо мельче, чем на экране монитора. Раза этак в два.
Шрифт я сделаю побольше.
Нереализованные “фичи”. По мере выполнения буду убирать из списка.
Движок:
- работа с файлами из игры(сохранение/загрузка состояний, загрузка доп. локаций)
- колбэки “настройки интерфейса” - SHOWACTS, SHOWINPUT, SHOWOBJS, SHOWSTAT
- картинки у действий и предметов
- BCOLOR, FCOLOR, LCOLOR, FSIZE, $FNAME, $BACKIMAGE
- поддержка HTML-таблиц
- строка ввода
Приложение:
- Привязка расширений
- Иконки для файлов
- Полка игр - просмотр каталога, скачивание, запуск, обновление
- Авто-обновление плеера
Плеер научился обрабатывать нажатие на предмет инвентаря.
Плеер научился показывать текст по команде MSG.
Плеер научился кое-как отображать HTML.