diff --git a/.gitignore b/.gitignore
index 67b3f57..4bed892 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ out
android/.gradle
android/app/.externalNativeBuild
android/app/build
+android/app/src/main/assets
diff --git a/android/app/jni/CMakeLists.txt b/android/app/jni/CMakeLists.txt
index 7781f2e..5c645cb 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(
@@ -30,4 +31,14 @@ if(NOT sdl_ttf_POPULATED)
endif()
# The main CMakeLists.txt of system3
-add_subdirectory(../../../src src)
+add_subdirectory(${PROJECT_ROOT_DIR}/src src)
+
+# 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}/COPYING.txt ${ASSETS_DIR}/licenses/system3)
+file(COPY_FILE ${PROJECT_ROOT_DIR}/resources/fonts/MTLc3m.ttf.license ${ASSETS_DIR}/licenses/MTLc3m)
+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)
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index a5c07b9..264de77 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/system3/LauncherActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt
index 2e12edd..40d4ca4 100644
--- a/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt
+++ b/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt
@@ -104,6 +104,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/system3/LicensesActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/LicensesActivity.kt
new file mode 100644
index 0000000..3dec41f
--- /dev/null
+++ b/android/app/src/main/java/io/github/kichikuou/system3/LicensesActivity.kt
@@ -0,0 +1,23 @@
+package io.github.kichikuou.system3
+
+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/system3/LicensesMenuActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/LicensesMenuActivity.kt
new file mode 100644
index 0000000..c9f7bc3
--- /dev/null
+++ b/android/app/src/main/java/io/github/kichikuou/system3/LicensesMenuActivity.kt
@@ -0,0 +1,36 @@
+package io.github.kichikuou.system3
+
+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("system3-sdl2", "system3", "https://github.com/kichikuou/system3-sdl2"),
+ Entry("SDL", "SDL", "https://www.libsdl.org/"),
+ 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"),
+ )
+
+ 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 d7dd781..f2392ef 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 @@
System3
セーブデータをエクスポート
セーブデータをインポート
+ オープンソースライセンス
ゲーム終了
キャンセル
System3 のファイル (*.dat) が見つかりません。
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 96ee1f1..7233b80 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -2,6 +2,7 @@
System3
Export Save Files
Import Save Files
+ Open source licenses
Quit Game
Cancel
Cannot find System3 game files (*.dat).