diff --git a/.gitignore b/.gitignore index 979e132..7f1f4b2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ out android/.gradle android/app/.externalNativeBuild android/app/build +android/app/src/main/assets android/build .ccls-cache .dir-locals.el diff --git a/android/app/build.gradle b/android/app/build.gradle index 4499d16..521982f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -39,7 +39,6 @@ android { if (!project.hasProperty('EXCLUDE_NATIVE_LIBS')) { sourceSets.main { jniLibs.srcDir 'libs' - assets.srcDir '../../fonts' } aaptOptions { // Disable asset compression for fonts. diff --git a/android/app/jni/CMakeLists.txt b/android/app/jni/CMakeLists.txt index 4803f45..8e84ae4 100644 --- a/android/app/jni/CMakeLists.txt +++ b/android/app/jni/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(GAME) +set(PROJECT_ROOT_DIR ../../..) include(FetchContent) FetchContent_Declare( @@ -46,4 +47,18 @@ if(NOT sdl_mixer_POPULATED) endif() # The main CMakeLists.txt of xsystem35 -add_subdirectory(../../.. xsystem35) +add_subdirectory(${PROJECT_ROOT_DIR} xsystem35) + +# Copy asset files +set(ASSETS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/main/assets) +file(MAKE_DIRECTORY ${ASSETS_DIR}/licenses) +file(COPY_FILE ${PROJECT_ROOT_DIR}/fonts/MTLc3m.ttf ${ASSETS_DIR}/MTLc3m.ttf) +file(COPY_FILE ${PROJECT_ROOT_DIR}/fonts/mincho.otf ${ASSETS_DIR}/mincho.otf) +file(COPY_FILE ${PROJECT_ROOT_DIR}/COPYING ${ASSETS_DIR}/licenses/xsystem35) +file(COPY_FILE ${PROJECT_ROOT_DIR}/fonts/MTLc3m.ttf.license ${ASSETS_DIR}/licenses/MTLc3m) +file(COPY_FILE ${PROJECT_ROOT_DIR}/fonts/mincho.otf.license ${ASSETS_DIR}/licenses/mincho) +file(COPY_FILE ${sdl_SOURCE_DIR}/LICENSE.txt ${ASSETS_DIR}/licenses/SDL) +file(COPY_FILE ${sdl_ttf_SOURCE_DIR}/LICENSE.txt ${ASSETS_DIR}/licenses/SDL_ttf) +file(COPY_FILE ${sdl_ttf_SOURCE_DIR}/external/freetype/docs/GPLv2.TXT ${ASSETS_DIR}/licenses/freetype) +file(COPY_FILE ${sdl_ttf_SOURCE_DIR}/external/harfbuzz/COPYING ${ASSETS_DIR}/licenses/harfbuzz) +file(COPY_FILE ${sdl_mixer_SOURCE_DIR}/LICENSE.txt ${ASSETS_DIR}/licenses/SDL_mixer) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index d13334b..50209af 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -94,6 +94,17 @@ --> + + + + + + diff --git a/android/app/src/main/java/io/github/kichikuou/xsystem35/LauncherActivity.kt b/android/app/src/main/java/io/github/kichikuou/xsystem35/LauncherActivity.kt index cf8ac49..3547c2e 100644 --- a/android/app/src/main/java/io/github/kichikuou/xsystem35/LauncherActivity.kt +++ b/android/app/src/main/java/io/github/kichikuou/xsystem35/LauncherActivity.kt @@ -106,6 +106,11 @@ class LauncherActivity : Activity(), LauncherObserver { SAVEDATA_IMPORT_REQUEST) true } + R.id.licenses -> { + val intent = Intent(this, LicensesMenuActivity::class.java) + startActivity(intent) + true + } else -> super.onOptionsItemSelected(item) } } diff --git a/android/app/src/main/java/io/github/kichikuou/xsystem35/LicensesActivity.kt b/android/app/src/main/java/io/github/kichikuou/xsystem35/LicensesActivity.kt new file mode 100644 index 0000000..1a2556a --- /dev/null +++ b/android/app/src/main/java/io/github/kichikuou/xsystem35/LicensesActivity.kt @@ -0,0 +1,23 @@ +package io.github.kichikuou.xsystem35 + +import android.app.Activity +import android.os.Bundle +import android.widget.TextView +import java.io.BufferedReader + +class LicensesActivity : Activity() { + companion object { + const val EXTRA_DISPLAY_NAME = "DISPLAY_NAME" + const val EXTRA_FILE_NAME = "FILE_NAME" + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_licenses) + + actionBar?.title = intent.getStringExtra(EXTRA_DISPLAY_NAME) + val path = "licenses/" + intent.getStringExtra(EXTRA_FILE_NAME) + val text = assets.open(path).bufferedReader().use(BufferedReader::readText) + findViewById(R.id.license_text).text = text + } +} \ No newline at end of file diff --git a/android/app/src/main/java/io/github/kichikuou/xsystem35/LicensesMenuActivity.kt b/android/app/src/main/java/io/github/kichikuou/xsystem35/LicensesMenuActivity.kt new file mode 100644 index 0000000..d5c7ded --- /dev/null +++ b/android/app/src/main/java/io/github/kichikuou/xsystem35/LicensesMenuActivity.kt @@ -0,0 +1,38 @@ +package io.github.kichikuou.xsystem35 + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.widget.ListView +import android.widget.SimpleAdapter + +class LicensesMenuActivity : Activity() { + class Entry(val displayName: String, val fileName: String, val url: String) + private val entries: ArrayList = arrayListOf( + Entry("xsystem35-sdl2", "xsystem35", "https://github.com/kichikuou/xsystem35-sdl2"), + Entry("SDL", "SDL", "https://www.libsdl.org/"), + Entry("SDL_mixer", "SDL_mixer", "https://github.com/libsdl-org/SDL_mixer"), + Entry("SDL_ttf", "SDL_ttf", "https://github.com/libsdl-org/SDL_ttf"), + Entry("FreeType", "freetype", "https://freetype.org/"), + Entry("HarfBuzz", "harfbuzz", "https://harfbuzz.github.io/"), + Entry("MotoyaLCedar W3 mono", "MTLc3m", "https://github.com/aosp-mirror/platform_frameworks_base/tree/lollipop-release/data/fonts"), + Entry("Source Han Serif", "mincho", "https://github.com/adobe-fonts/source-han-serif/"), + ) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_licenses_menu) + + val items = entries.map { mapOf("name" to it.displayName, "url" to it.url)} + val listView = findViewById(R.id.list) + listView.adapter = SimpleAdapter(this, items, android.R.layout.simple_list_item_2, + arrayOf("name", "url"), intArrayOf(android.R.id.text1, android.R.id.text2)) + listView.setOnItemClickListener { _, _, pos, _ -> + val intent = Intent(this, LicensesActivity::class.java).apply { + putExtra(LicensesActivity.EXTRA_DISPLAY_NAME, entries[pos].displayName) + putExtra(LicensesActivity.EXTRA_FILE_NAME, entries[pos].fileName) + } + startActivity(intent) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_licenses.xml b/android/app/src/main/res/layout/activity_licenses.xml new file mode 100644 index 0000000..a4200f7 --- /dev/null +++ b/android/app/src/main/res/layout/activity_licenses.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_licenses_menu.xml b/android/app/src/main/res/layout/activity_licenses_menu.xml new file mode 100644 index 0000000..df3ab57 --- /dev/null +++ b/android/app/src/main/res/layout/activity_licenses_menu.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/menu/launcher_menu.xml b/android/app/src/main/res/menu/launcher_menu.xml index d77b28b..194085b 100644 --- a/android/app/src/main/res/menu/launcher_menu.xml +++ b/android/app/src/main/res/menu/launcher_menu.xml @@ -6,4 +6,7 @@ + \ No newline at end of file diff --git a/android/app/src/main/res/values-ja/strings.xml b/android/app/src/main/res/values-ja/strings.xml index 1c597b8..ae22c52 100644 --- a/android/app/src/main/res/values-ja/strings.xml +++ b/android/app/src/main/res/values-ja/strings.xml @@ -3,6 +3,7 @@ xsystem35 セーブデータをエクスポート セーブデータをインポート + オープンソースライセンス キャンセル System 3.x のファイル (*.ald) が見つかりません。 ファイルを選択 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 1e2c095..9113823 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -2,6 +2,7 @@ xsystem35 Export Save Files Import Save Files + Open source licenses Cancel Cannot find System 3.x game files (*.ald). Choose a file