diff --git a/.gitignore b/.gitignore index ee7dc30..9970403 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,12 @@ tests/output_images tests/output_images/* R.py +kotonebot/tasks/sprites kotonebot-ui/node_modules kotonebot-ui/.vite dumps*/ config.json reports/ -invoke.yml -pyproject.toml tmp/ res/sprites_compiled/ messages/ diff --git a/MANIFEST.in b/MANIFEST.in index b6668a0..bf28f80 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,4 @@ -graft res -prune res/sprites \ No newline at end of file +graft kotonebot/tasks/sprites +prune tests +prune tools +prune experiments \ No newline at end of file diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 4e10548..da53941 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -16,9 +16,10 @@ 4. 编译资源:在 VSCode 中选择“Terminal” -> “Run Task” -> “Make R.py”并执行。 -## 打包 +## 打包 & 安装 ```bash -just package <版本号> +just package +pip install --find-links=dist ksaa ``` ## 截图 diff --git a/justfile b/justfile index 5010c39..de6a42e 100644 --- a/justfile +++ b/justfile @@ -43,41 +43,33 @@ env: build: env {{venv}} pyinstaller -y kotonebot-gr.spec -# Generate pyproject.toml -generate-pyproject-toml version: - #!{{shebang_python}} - from datetime import datetime - - today = datetime.now() - # version = today.strftime("%Y.%m.%d") - version = "{{version}}" - - with open("pyproject.template.toml", "r", encoding="utf-8") as f: - template = f.read() - - with open("pyproject.toml", "w", encoding="utf-8") as f: - f.write(template.replace("<<>>", version)) +@package-resource: env + Write-Host "Packaging kotonebot-resource..." + @{{venv}} python -m build -s kotonebot-resource # Package KAA -@package version: env +@package: package-resource + {{venv}} python tools/make_resources.py -p # Make R.py in production mode + Write-Host "Removing old build files..." if (Test-Path dist) { rm -r -fo dist } if (Test-Path build) { rm -r -fo build } - Write-Host "Generating pyproject.toml..." - just generate-pyproject-toml {{version}} - Write-Host "Packaging KAA {{version}}..." + Write-Host "Packaging KAA..." @{{venv}} python -m build - Write-Host "Removing pyproject.toml..." - @rm -fo pyproject.toml + + Write-Host "Copying kotonebot-resource to dist..." + Copy-Item .\kotonebot-resource\dist\* .\dist\ + + {{venv}} python tools/make_resources.py # Make R.py in development mode # Upload to PyPI -publish version: (package version) +publish: package # if (git diff-index --quiet HEAD) { } else { Write-Host "Error: Commit all changes before publishing"; exit 1 } @Write-Host "Uploading to PyPI..." twine upload dist/* -u __token__ -p $env:PYPI_TOKEN # Upload to PyPI-Test -publish-test version: (package version) +publish-test: package @Write-Host "Uploading to PyPI-Test..." twine upload --repository testpypi dist/* -u __token__ -p $env:PYPI_TEST_TOKEN diff --git a/kotonebot-resource/MANIFEST.in b/kotonebot-resource/MANIFEST.in new file mode 100644 index 0000000..c1188e8 --- /dev/null +++ b/kotonebot-resource/MANIFEST.in @@ -0,0 +1,3 @@ +graft fonts +graft models +graft ui diff --git a/res/fonts/SourceHanSansHW-Regular.otf b/kotonebot-resource/fonts/SourceHanSansHW-Regular.otf similarity index 100% rename from res/fonts/SourceHanSansHW-Regular.otf rename to kotonebot-resource/fonts/SourceHanSansHW-Regular.otf diff --git a/res/models/en_PP-OCRv3_rec_infer.onnx b/kotonebot-resource/models/en_PP-OCRv3_rec_infer.onnx similarity index 100% rename from res/models/en_PP-OCRv3_rec_infer.onnx rename to kotonebot-resource/models/en_PP-OCRv3_rec_infer.onnx diff --git a/res/models/japan_PP-OCRv3_rec_infer.onnx b/kotonebot-resource/models/japan_PP-OCRv3_rec_infer.onnx similarity index 100% rename from res/models/japan_PP-OCRv3_rec_infer.onnx rename to kotonebot-resource/models/japan_PP-OCRv3_rec_infer.onnx diff --git a/res/models/japan_PP-OCRv4_rec_infer.onnx b/kotonebot-resource/models/japan_PP-OCRv4_rec_infer.onnx similarity index 100% rename from res/models/japan_PP-OCRv4_rec_infer.onnx rename to kotonebot-resource/models/japan_PP-OCRv4_rec_infer.onnx diff --git a/kotonebot-resource/pyproject.toml b/kotonebot-resource/pyproject.toml new file mode 100644 index 0000000..b97ee1d --- /dev/null +++ b/kotonebot-resource/pyproject.toml @@ -0,0 +1,21 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "ksaa-res" +description = "This package contains the resources for ksaa." +readme = "README.md" +requires-python = ">=3.10" +dependencies = [] +version = "0.1.0" + +[tool.setuptools] +include-package-data = true + +[tool.setuptools.package-dir] +kaa = "." +"kaa.res" = "." +"kaa.res.models" = "models" +"kaa.res.fonts" = "fonts" +"kaa.res.ui" = "ui" diff --git a/res/sprites/jp/common/button_close.png b/kotonebot-resource/sprites/jp/common/button_close.png similarity index 100% rename from res/sprites/jp/common/button_close.png rename to kotonebot-resource/sprites/jp/common/button_close.png diff --git a/res/sprites/jp/common/button_commu_fastforward.png b/kotonebot-resource/sprites/jp/common/button_commu_fastforward.png similarity index 100% rename from res/sprites/jp/common/button_commu_fastforward.png rename to kotonebot-resource/sprites/jp/common/button_commu_fastforward.png diff --git a/res/sprites/jp/common/button_commu_skip.png b/kotonebot-resource/sprites/jp/common/button_commu_skip.png similarity index 100% rename from res/sprites/jp/common/button_commu_skip.png rename to kotonebot-resource/sprites/jp/common/button_commu_skip.png diff --git a/res/sprites/jp/common/button_completion.png b/kotonebot-resource/sprites/jp/common/button_completion.png similarity index 100% rename from res/sprites/jp/common/button_completion.png rename to kotonebot-resource/sprites/jp/common/button_completion.png diff --git a/res/sprites/jp/common/button_confirm.png b/kotonebot-resource/sprites/jp/common/button_confirm.png similarity index 100% rename from res/sprites/jp/common/button_confirm.png rename to kotonebot-resource/sprites/jp/common/button_confirm.png diff --git a/res/sprites/jp/common/button_confirm_no_icon.png b/kotonebot-resource/sprites/jp/common/button_confirm_no_icon.png similarity index 100% rename from res/sprites/jp/common/button_confirm_no_icon.png rename to kotonebot-resource/sprites/jp/common/button_confirm_no_icon.png diff --git a/res/sprites/jp/common/button_contest.png b/kotonebot-resource/sprites/jp/common/button_contest.png similarity index 100% rename from res/sprites/jp/common/button_contest.png rename to kotonebot-resource/sprites/jp/common/button_contest.png diff --git a/res/sprites/jp/common/button_end.png b/kotonebot-resource/sprites/jp/common/button_end.png similarity index 100% rename from res/sprites/jp/common/button_end.png rename to kotonebot-resource/sprites/jp/common/button_end.png diff --git a/res/sprites/jp/common/button_home.png b/kotonebot-resource/sprites/jp/common/button_home.png similarity index 100% rename from res/sprites/jp/common/button_home.png rename to kotonebot-resource/sprites/jp/common/button_home.png diff --git a/res/sprites/jp/common/button_icon_arrow_short.png b/kotonebot-resource/sprites/jp/common/button_icon_arrow_short.png similarity index 100% rename from res/sprites/jp/common/button_icon_arrow_short.png rename to kotonebot-resource/sprites/jp/common/button_icon_arrow_short.png diff --git a/res/sprites/jp/common/button_icon_arrow_short_disabled.png b/kotonebot-resource/sprites/jp/common/button_icon_arrow_short_disabled.png similarity index 100% rename from res/sprites/jp/common/button_icon_arrow_short_disabled.png rename to kotonebot-resource/sprites/jp/common/button_icon_arrow_short_disabled.png diff --git a/res/sprites/jp/common/button_icon_check_mark.png b/kotonebot-resource/sprites/jp/common/button_icon_check_mark.png similarity index 100% rename from res/sprites/jp/common/button_icon_check_mark.png rename to kotonebot-resource/sprites/jp/common/button_icon_check_mark.png diff --git a/res/sprites/jp/common/button_icon_close.png b/kotonebot-resource/sprites/jp/common/button_icon_close.png similarity index 100% rename from res/sprites/jp/common/button_icon_close.png rename to kotonebot-resource/sprites/jp/common/button_icon_close.png diff --git a/res/sprites/jp/common/button_next.png b/kotonebot-resource/sprites/jp/common/button_next.png similarity index 100% rename from res/sprites/jp/common/button_next.png rename to kotonebot-resource/sprites/jp/common/button_next.png diff --git a/res/sprites/jp/common/button_next_no_icon.png b/kotonebot-resource/sprites/jp/common/button_next_no_icon.png similarity index 100% rename from res/sprites/jp/common/button_next_no_icon.png rename to kotonebot-resource/sprites/jp/common/button_next_no_icon.png diff --git a/res/sprites/jp/common/button_retry.png b/kotonebot-resource/sprites/jp/common/button_retry.png similarity index 100% rename from res/sprites/jp/common/button_retry.png rename to kotonebot-resource/sprites/jp/common/button_retry.png diff --git a/res/sprites/jp/common/button_select.png b/kotonebot-resource/sprites/jp/common/button_select.png similarity index 100% rename from res/sprites/jp/common/button_select.png rename to kotonebot-resource/sprites/jp/common/button_select.png diff --git a/res/sprites/jp/common/button_start.png b/kotonebot-resource/sprites/jp/common/button_start.png similarity index 100% rename from res/sprites/jp/common/button_start.png rename to kotonebot-resource/sprites/jp/common/button_start.png diff --git a/res/sprites/jp/common/button_toolbar_home.png b/kotonebot-resource/sprites/jp/common/button_toolbar_home.png similarity index 100% rename from res/sprites/jp/common/button_toolbar_home.png rename to kotonebot-resource/sprites/jp/common/button_toolbar_home.png diff --git a/res/sprites/jp/common/checkbox_unchecked.png b/kotonebot-resource/sprites/jp/common/checkbox_unchecked.png similarity index 100% rename from res/sprites/jp/common/checkbox_unchecked.png rename to kotonebot-resource/sprites/jp/common/checkbox_unchecked.png diff --git a/res/sprites/jp/common/screenshot_binary_shop.png b/kotonebot-resource/sprites/jp/common/screenshot_binary_shop.png similarity index 100% rename from res/sprites/jp/common/screenshot_binary_shop.png rename to kotonebot-resource/sprites/jp/common/screenshot_binary_shop.png diff --git a/res/sprites/jp/common/screenshot_binary_shop.png.json b/kotonebot-resource/sprites/jp/common/screenshot_binary_shop.png.json similarity index 100% rename from res/sprites/jp/common/screenshot_binary_shop.png.json rename to kotonebot-resource/sprites/jp/common/screenshot_binary_shop.png.json diff --git a/res/sprites/jp/common/text_game_update.png b/kotonebot-resource/sprites/jp/common/text_game_update.png similarity index 100% rename from res/sprites/jp/common/text_game_update.png rename to kotonebot-resource/sprites/jp/common/text_game_update.png diff --git a/res/sprites/jp/common/text_network_error.png b/kotonebot-resource/sprites/jp/common/text_network_error.png similarity index 100% rename from res/sprites/jp/common/text_network_error.png rename to kotonebot-resource/sprites/jp/common/text_network_error.png diff --git a/res/sprites/jp/daily/buton_link_data.png b/kotonebot-resource/sprites/jp/daily/buton_link_data.png similarity index 100% rename from res/sprites/jp/daily/buton_link_data.png rename to kotonebot-resource/sprites/jp/daily/buton_link_data.png diff --git a/res/sprites/jp/daily/button_assignment_partial.png b/kotonebot-resource/sprites/jp/daily/button_assignment_partial.png similarity index 100% rename from res/sprites/jp/daily/button_assignment_partial.png rename to kotonebot-resource/sprites/jp/daily/button_assignment_partial.png diff --git a/res/sprites/jp/daily/button_claim_all_no_icon.png b/kotonebot-resource/sprites/jp/daily/button_claim_all_no_icon.png similarity index 100% rename from res/sprites/jp/daily/button_claim_all_no_icon.png rename to kotonebot-resource/sprites/jp/daily/button_claim_all_no_icon.png diff --git a/res/sprites/jp/daily/button_contest_challenge.png b/kotonebot-resource/sprites/jp/daily/button_contest_challenge.png similarity index 100% rename from res/sprites/jp/daily/button_contest_challenge.png rename to kotonebot-resource/sprites/jp/daily/button_contest_challenge.png diff --git a/res/sprites/jp/daily/button_contest_challenge_start.png b/kotonebot-resource/sprites/jp/daily/button_contest_challenge_start.png similarity index 100% rename from res/sprites/jp/daily/button_contest_challenge_start.png rename to kotonebot-resource/sprites/jp/daily/button_contest_challenge_start.png diff --git a/res/sprites/jp/daily/button_contest_ranking.png b/kotonebot-resource/sprites/jp/daily/button_contest_ranking.png similarity index 100% rename from res/sprites/jp/daily/button_contest_ranking.png rename to kotonebot-resource/sprites/jp/daily/button_contest_ranking.png diff --git a/res/sprites/jp/daily/button_contest_start.png b/kotonebot-resource/sprites/jp/daily/button_contest_start.png similarity index 100% rename from res/sprites/jp/daily/button_contest_start.png rename to kotonebot-resource/sprites/jp/daily/button_contest_start.png diff --git a/res/sprites/jp/daily/button_daily_shop.png b/kotonebot-resource/sprites/jp/daily/button_daily_shop.png similarity index 100% rename from res/sprites/jp/daily/button_daily_shop.png rename to kotonebot-resource/sprites/jp/daily/button_daily_shop.png diff --git a/res/sprites/jp/daily/button_home_current.png b/kotonebot-resource/sprites/jp/daily/button_home_current.png similarity index 100% rename from res/sprites/jp/daily/button_home_current.png rename to kotonebot-resource/sprites/jp/daily/button_home_current.png diff --git a/res/sprites/jp/daily/button_icon_pass.png b/kotonebot-resource/sprites/jp/daily/button_icon_pass.png similarity index 100% rename from res/sprites/jp/daily/button_icon_pass.png rename to kotonebot-resource/sprites/jp/daily/button_icon_pass.png diff --git a/res/sprites/jp/daily/button_icon_skip.png b/kotonebot-resource/sprites/jp/daily/button_icon_skip.png similarity index 100% rename from res/sprites/jp/daily/button_icon_skip.png rename to kotonebot-resource/sprites/jp/daily/button_icon_skip.png diff --git a/res/sprites/jp/daily/button_mission.png b/kotonebot-resource/sprites/jp/daily/button_mission.png similarity index 100% rename from res/sprites/jp/daily/button_mission.png rename to kotonebot-resource/sprites/jp/daily/button_mission.png diff --git a/res/sprites/jp/daily/button_pass.png b/kotonebot-resource/sprites/jp/daily/button_pass.png similarity index 100% rename from res/sprites/jp/daily/button_pass.png rename to kotonebot-resource/sprites/jp/daily/button_pass.png diff --git a/res/sprites/jp/daily/button_pass_claim.png b/kotonebot-resource/sprites/jp/daily/button_pass_claim.png similarity index 100% rename from res/sprites/jp/daily/button_pass_claim.png rename to kotonebot-resource/sprites/jp/daily/button_pass_claim.png diff --git a/res/sprites/jp/daily/button_presents_partial.png b/kotonebot-resource/sprites/jp/daily/button_presents_partial.png similarity index 100% rename from res/sprites/jp/daily/button_presents_partial.png rename to kotonebot-resource/sprites/jp/daily/button_presents_partial.png diff --git a/res/sprites/jp/daily/button_produce.png b/kotonebot-resource/sprites/jp/daily/button_produce.png similarity index 100% rename from res/sprites/jp/daily/button_produce.png rename to kotonebot-resource/sprites/jp/daily/button_produce.png diff --git a/res/sprites/jp/daily/button_shop.png b/kotonebot-resource/sprites/jp/daily/button_shop.png similarity index 100% rename from res/sprites/jp/daily/button_shop.png rename to kotonebot-resource/sprites/jp/daily/button_shop.png diff --git a/res/sprites/jp/daily/button_shop_count_add.png b/kotonebot-resource/sprites/jp/daily/button_shop_count_add.png similarity index 100% rename from res/sprites/jp/daily/button_shop_count_add.png rename to kotonebot-resource/sprites/jp/daily/button_shop_count_add.png diff --git a/res/sprites/jp/daily/button_shop_count_add_disabled.png b/kotonebot-resource/sprites/jp/daily/button_shop_count_add_disabled.png similarity index 100% rename from res/sprites/jp/daily/button_shop_count_add_disabled.png rename to kotonebot-resource/sprites/jp/daily/button_shop_count_add_disabled.png diff --git a/res/sprites/jp/daily/daily_shop_items_1.png b/kotonebot-resource/sprites/jp/daily/daily_shop_items_1.png similarity index 100% rename from res/sprites/jp/daily/daily_shop_items_1.png rename to kotonebot-resource/sprites/jp/daily/daily_shop_items_1.png diff --git a/res/sprites/jp/daily/daily_shop_items_1.png.json b/kotonebot-resource/sprites/jp/daily/daily_shop_items_1.png.json similarity index 100% rename from res/sprites/jp/daily/daily_shop_items_1.png.json rename to kotonebot-resource/sprites/jp/daily/daily_shop_items_1.png.json diff --git a/res/sprites/jp/daily/daily_shop_items_2.png b/kotonebot-resource/sprites/jp/daily/daily_shop_items_2.png similarity index 100% rename from res/sprites/jp/daily/daily_shop_items_2.png rename to kotonebot-resource/sprites/jp/daily/daily_shop_items_2.png diff --git a/res/sprites/jp/daily/daily_shop_items_2.png.json b/kotonebot-resource/sprites/jp/daily/daily_shop_items_2.png.json similarity index 100% rename from res/sprites/jp/daily/daily_shop_items_2.png.json rename to kotonebot-resource/sprites/jp/daily/daily_shop_items_2.png.json diff --git a/res/sprites/jp/daily/home_1.png b/kotonebot-resource/sprites/jp/daily/home_1.png similarity index 100% rename from res/sprites/jp/daily/home_1.png rename to kotonebot-resource/sprites/jp/daily/home_1.png diff --git a/res/sprites/jp/daily/home_1.png.json b/kotonebot-resource/sprites/jp/daily/home_1.png.json similarity index 100% rename from res/sprites/jp/daily/home_1.png.json rename to kotonebot-resource/sprites/jp/daily/home_1.png.json diff --git a/res/sprites/jp/daily/icon_assign_kouchou.png b/kotonebot-resource/sprites/jp/daily/icon_assign_kouchou.png similarity index 100% rename from res/sprites/jp/daily/icon_assign_kouchou.png rename to kotonebot-resource/sprites/jp/daily/icon_assign_kouchou.png diff --git a/res/sprites/jp/daily/icon_assign_mini_live.png b/kotonebot-resource/sprites/jp/daily/icon_assign_mini_live.png similarity index 100% rename from res/sprites/jp/daily/icon_assign_mini_live.png rename to kotonebot-resource/sprites/jp/daily/icon_assign_mini_live.png diff --git a/res/sprites/jp/daily/icon_assign_online_live.png b/kotonebot-resource/sprites/jp/daily/icon_assign_online_live.png similarity index 100% rename from res/sprites/jp/daily/icon_assign_online_live.png rename to kotonebot-resource/sprites/jp/daily/icon_assign_online_live.png diff --git a/res/sprites/jp/daily/icon_assign_title.png b/kotonebot-resource/sprites/jp/daily/icon_assign_title.png similarity index 100% rename from res/sprites/jp/daily/icon_assign_title.png rename to kotonebot-resource/sprites/jp/daily/icon_assign_title.png diff --git a/res/sprites/jp/daily/icon_shop_ap.png b/kotonebot-resource/sprites/jp/daily/icon_shop_ap.png similarity index 100% rename from res/sprites/jp/daily/icon_shop_ap.png rename to kotonebot-resource/sprites/jp/daily/icon_shop_ap.png diff --git a/res/sprites/jp/daily/icon_shop_money.png b/kotonebot-resource/sprites/jp/daily/icon_shop_money.png similarity index 100% rename from res/sprites/jp/daily/icon_shop_money.png rename to kotonebot-resource/sprites/jp/daily/icon_shop_money.png diff --git a/res/sprites/jp/daily/icon_shop_title.png b/kotonebot-resource/sprites/jp/daily/icon_shop_title.png similarity index 100% rename from res/sprites/jp/daily/icon_shop_title.png rename to kotonebot-resource/sprites/jp/daily/icon_shop_title.png diff --git a/res/sprites/jp/daily/icon_title_assign.png b/kotonebot-resource/sprites/jp/daily/icon_title_assign.png similarity index 100% rename from res/sprites/jp/daily/icon_title_assign.png rename to kotonebot-resource/sprites/jp/daily/icon_title_assign.png diff --git a/res/sprites/jp/daily/icon_title_pass.png b/kotonebot-resource/sprites/jp/daily/icon_title_pass.png similarity index 100% rename from res/sprites/jp/daily/icon_title_pass.png rename to kotonebot-resource/sprites/jp/daily/icon_title_pass.png diff --git a/res/sprites/jp/daily/screenshot_assignment_1.png b/kotonebot-resource/sprites/jp/daily/screenshot_assignment_1.png similarity index 100% rename from res/sprites/jp/daily/screenshot_assignment_1.png rename to kotonebot-resource/sprites/jp/daily/screenshot_assignment_1.png diff --git a/res/sprites/jp/daily/screenshot_assignment_1.png.json b/kotonebot-resource/sprites/jp/daily/screenshot_assignment_1.png.json similarity index 100% rename from res/sprites/jp/daily/screenshot_assignment_1.png.json rename to kotonebot-resource/sprites/jp/daily/screenshot_assignment_1.png.json diff --git a/res/sprites/jp/daily/text_activity_funds_max.png b/kotonebot-resource/sprites/jp/daily/text_activity_funds_max.png similarity index 100% rename from res/sprites/jp/daily/text_activity_funds_max.png rename to kotonebot-resource/sprites/jp/daily/text_activity_funds_max.png diff --git a/res/sprites/jp/daily/text_assignment_completed.png b/kotonebot-resource/sprites/jp/daily/text_assignment_completed.png similarity index 100% rename from res/sprites/jp/daily/text_assignment_completed.png rename to kotonebot-resource/sprites/jp/daily/text_assignment_completed.png diff --git a/res/sprites/jp/daily/text_contest.png b/kotonebot-resource/sprites/jp/daily/text_contest.png similarity index 100% rename from res/sprites/jp/daily/text_contest.png rename to kotonebot-resource/sprites/jp/daily/text_contest.png diff --git a/res/sprites/jp/daily/text_contest_last_ongoing.png b/kotonebot-resource/sprites/jp/daily/text_contest_last_ongoing.png similarity index 100% rename from res/sprites/jp/daily/text_contest_last_ongoing.png rename to kotonebot-resource/sprites/jp/daily/text_contest_last_ongoing.png diff --git a/res/sprites/jp/daily/text_contest_no_memory.png b/kotonebot-resource/sprites/jp/daily/text_contest_no_memory.png similarity index 100% rename from res/sprites/jp/daily/text_contest_no_memory.png rename to kotonebot-resource/sprites/jp/daily/text_contest_no_memory.png diff --git a/res/sprites/jp/daily/text_contest_overall_stats.png b/kotonebot-resource/sprites/jp/daily/text_contest_overall_stats.png similarity index 100% rename from res/sprites/jp/daily/text_contest_overall_stats.png rename to kotonebot-resource/sprites/jp/daily/text_contest_overall_stats.png diff --git a/res/sprites/jp/daily/text_shop_purchased.png b/kotonebot-resource/sprites/jp/daily/text_shop_purchased.png similarity index 100% rename from res/sprites/jp/daily/text_shop_purchased.png rename to kotonebot-resource/sprites/jp/daily/text_shop_purchased.png diff --git a/res/sprites/jp/daily/text_shop_recommended.png b/kotonebot-resource/sprites/jp/daily/text_shop_recommended.png similarity index 100% rename from res/sprites/jp/daily/text_shop_recommended.png rename to kotonebot-resource/sprites/jp/daily/text_shop_recommended.png diff --git a/res/sprites/jp/daily/text_tab_shop_ap.png b/kotonebot-resource/sprites/jp/daily/text_tab_shop_ap.png similarity index 100% rename from res/sprites/jp/daily/text_tab_shop_ap.png rename to kotonebot-resource/sprites/jp/daily/text_tab_shop_ap.png diff --git a/res/sprites/jp/in_purodyuusu/A.png b/kotonebot-resource/sprites/jp/in_purodyuusu/A.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/A.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/A.png diff --git a/res/sprites/jp/in_purodyuusu/M.png b/kotonebot-resource/sprites/jp/in_purodyuusu/M.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/M.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/M.png diff --git a/res/sprites/jp/in_purodyuusu/acquire_btn_disabled.png b/kotonebot-resource/sprites/jp/in_purodyuusu/acquire_btn_disabled.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/acquire_btn_disabled.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/acquire_btn_disabled.png diff --git a/res/sprites/jp/in_purodyuusu/action/action_study.png b/kotonebot-resource/sprites/jp/in_purodyuusu/action/action_study.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/action/action_study.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/action/action_study.png diff --git a/res/sprites/jp/in_purodyuusu/action/p_dorinku_bg.png b/kotonebot-resource/sprites/jp/in_purodyuusu/action/p_dorinku_bg.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/action/p_dorinku_bg.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/action/p_dorinku_bg.png diff --git a/res/sprites/jp/in_purodyuusu/action/p_dorinku_bg_mask.png b/kotonebot-resource/sprites/jp/in_purodyuusu/action/p_dorinku_bg_mask.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/action/p_dorinku_bg_mask.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/action/p_dorinku_bg_mask.png diff --git a/res/sprites/jp/in_purodyuusu/action/p_item.png b/kotonebot-resource/sprites/jp/in_purodyuusu/action/p_item.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/action/p_item.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/action/p_item.png diff --git a/res/sprites/jp/in_purodyuusu/action/vocal_white_bg.png b/kotonebot-resource/sprites/jp/in_purodyuusu/action/vocal_white_bg.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/action/vocal_white_bg.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/action/vocal_white_bg.png diff --git a/res/sprites/jp/in_purodyuusu/button_cancel.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_cancel.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_cancel.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_cancel.png diff --git a/res/sprites/jp/in_purodyuusu/button_complete.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_complete.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_complete.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_complete.png diff --git a/res/sprites/jp/in_purodyuusu/button_final_practice_dance.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_final_practice_dance.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_final_practice_dance.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_final_practice_dance.png diff --git a/res/sprites/jp/in_purodyuusu/button_final_practice_visual.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_final_practice_visual.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_final_practice_visual.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_final_practice_visual.png diff --git a/res/sprites/jp/in_purodyuusu/button_final_practice_vocal.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_final_practice_vocal.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_final_practice_vocal.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_final_practice_vocal.png diff --git a/res/sprites/jp/in_purodyuusu/button_follow_no_icon.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_follow_no_icon.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_follow_no_icon.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_follow_no_icon.png diff --git a/res/sprites/jp/in_purodyuusu/button_icon_study.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_icon_study.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_icon_study.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_icon_study.png diff --git a/res/sprites/jp/in_purodyuusu/button_icon_study_visual.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_icon_study_visual.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_icon_study_visual.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_icon_study_visual.png diff --git a/res/sprites/jp/in_purodyuusu/button_leave.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_leave.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_leave.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_leave.png diff --git a/res/sprites/jp/in_purodyuusu/button_next_no_icon.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_next_no_icon.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_next_no_icon.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_next_no_icon.png diff --git a/res/sprites/jp/in_purodyuusu/button_not_acquire.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_not_acquire.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_not_acquire.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_not_acquire.png diff --git a/res/sprites/jp/in_purodyuusu/button_retry.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_retry.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_retry.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_retry.png diff --git a/res/sprites/jp/in_purodyuusu/button_text_action_outing.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_text_action_outing.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_text_action_outing.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_text_action_outing.png diff --git a/res/sprites/jp/in_purodyuusu/button_text_allowance.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_text_allowance.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_text_allowance.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_text_allowance.png diff --git a/res/sprites/jp/in_purodyuusu/button_text_consult.png b/kotonebot-resource/sprites/jp/in_purodyuusu/button_text_consult.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/button_text_consult.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/button_text_consult.png diff --git a/res/sprites/jp/in_purodyuusu/icon_clear_blue.png b/kotonebot-resource/sprites/jp/in_purodyuusu/icon_clear_blue.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/icon_clear_blue.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/icon_clear_blue.png diff --git a/res/sprites/jp/in_purodyuusu/icon_title_allowance.png b/kotonebot-resource/sprites/jp/in_purodyuusu/icon_title_allowance.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/icon_title_allowance.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/icon_title_allowance.png diff --git a/res/sprites/jp/in_purodyuusu/icon_title_study.png b/kotonebot-resource/sprites/jp/in_purodyuusu/icon_title_study.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/icon_title_study.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/icon_title_study.png diff --git a/res/sprites/jp/in_purodyuusu/loot_box_skill_card.png b/kotonebot-resource/sprites/jp/in_purodyuusu/loot_box_skill_card.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/loot_box_skill_card.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/loot_box_skill_card.png diff --git a/res/sprites/jp/in_purodyuusu/lootbox_sliver_lock.png b/kotonebot-resource/sprites/jp/in_purodyuusu/lootbox_sliver_lock.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/lootbox_sliver_lock.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/lootbox_sliver_lock.png diff --git a/res/sprites/jp/in_purodyuusu/p_drink_icon.png b/kotonebot-resource/sprites/jp/in_purodyuusu/p_drink_icon.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/p_drink_icon.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/p_drink_icon.png diff --git a/res/sprites/jp/in_purodyuusu/p_item_icon_colorful.png b/kotonebot-resource/sprites/jp/in_purodyuusu/p_item_icon_colorful.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/p_item_icon_colorful.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/p_item_icon_colorful.png diff --git a/res/sprites/jp/in_purodyuusu/p_skill_card_icon_blue.png b/kotonebot-resource/sprites/jp/in_purodyuusu/p_skill_card_icon_blue.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/p_skill_card_icon_blue.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/p_skill_card_icon_blue.png diff --git a/res/sprites/jp/in_purodyuusu/p_skill_card_icon_colorful.png b/kotonebot-resource/sprites/jp/in_purodyuusu/p_skill_card_icon_colorful.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/p_skill_card_icon_colorful.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/p_skill_card_icon_colorful.png diff --git a/res/sprites/jp/in_purodyuusu/produce_action_1.png b/kotonebot-resource/sprites/jp/in_purodyuusu/produce_action_1.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/produce_action_1.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/produce_action_1.png diff --git a/res/sprites/jp/in_purodyuusu/produce_action_1.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/produce_action_1.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/produce_action_1.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/produce_action_1.png.json diff --git a/res/sprites/jp/in_purodyuusu/produce_exam_1.png b/kotonebot-resource/sprites/jp/in_purodyuusu/produce_exam_1.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/produce_exam_1.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/produce_exam_1.png diff --git a/res/sprites/jp/in_purodyuusu/produce_exam_1.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/produce_exam_1.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/produce_exam_1.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/produce_exam_1.png.json diff --git a/res/sprites/jp/in_purodyuusu/rest.png b/kotonebot-resource/sprites/jp/in_purodyuusu/rest.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/rest.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/rest.png diff --git a/res/sprites/jp/in_purodyuusu/rest_confirm_btn.png b/kotonebot-resource/sprites/jp/in_purodyuusu/rest_confirm_btn.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/rest_confirm_btn.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/rest_confirm_btn.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_lesson_no_card.png.json diff --git a/res/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_pdrink_max_confirm.png.json diff --git a/res/sprites/jp/in_purodyuusu/screenshot_select_p_item.png b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_select_p_item.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_select_p_item.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_select_p_item.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_select_p_item.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_select_p_item.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_select_p_item.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_select_p_item.png.json diff --git a/res/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_acquired.png.json diff --git a/res/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_skill_card_enhance.png.json diff --git a/res/sprites/jp/in_purodyuusu/screenshot_study.png b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_study.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_study.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_study.png diff --git a/res/sprites/jp/in_purodyuusu/screenshot_study.png.json b/kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_study.png.json similarity index 100% rename from res/sprites/jp/in_purodyuusu/screenshot_study.png.json rename to kotonebot-resource/sprites/jp/in_purodyuusu/screenshot_study.png.json diff --git a/res/sprites/jp/in_purodyuusu/text_asari_produce_end.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_asari_produce_end.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_asari_produce_end.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_asari_produce_end.png diff --git a/res/sprites/jp/in_purodyuusu/text_button_exam_skip_turn.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_button_exam_skip_turn.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_button_exam_skip_turn.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_button_exam_skip_turn.png diff --git a/res/sprites/jp/in_purodyuusu/text_clear_until.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_clear_until.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_clear_until.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_clear_until.png diff --git a/res/sprites/jp/in_purodyuusu/text_dance.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_dance.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_dance.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_dance.png diff --git a/res/sprites/jp/in_purodyuusu/text_final_produce_rating.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_final_produce_rating.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_final_produce_rating.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_final_produce_rating.png diff --git a/res/sprites/jp/in_purodyuusu/text_one_week_remaining.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_one_week_remaining.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_one_week_remaining.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_one_week_remaining.png diff --git a/res/sprites/jp/in_purodyuusu/text_p_diary.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_p_diary.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_p_diary.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_p_diary.png diff --git a/res/sprites/jp/in_purodyuusu/text_p_drink_max.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_p_drink_max.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_p_drink_max.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_p_drink_max.png diff --git a/res/sprites/jp/in_purodyuusu/text_perfect_until.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_perfect_until.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_perfect_until.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_perfect_until.png diff --git a/res/sprites/jp/in_purodyuusu/text_please_select_p_drink.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_please_select_p_drink.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_please_select_p_drink.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_please_select_p_drink.png diff --git a/res/sprites/jp/in_purodyuusu/text_sensei_tip_consult.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_consult.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_sensei_tip_consult.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_consult.png diff --git a/res/sprites/jp/in_purodyuusu/text_sensei_tip_dance.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_dance.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_sensei_tip_dance.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_dance.png diff --git a/res/sprites/jp/in_purodyuusu/text_sensei_tip_rest.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_rest.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_sensei_tip_rest.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_rest.png diff --git a/res/sprites/jp/in_purodyuusu/text_sensei_tip_visual.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_visual.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_sensei_tip_visual.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_visual.png diff --git a/res/sprites/jp/in_purodyuusu/text_sensei_tip_vocal.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_vocal.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_sensei_tip_vocal.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_sensei_tip_vocal.png diff --git a/res/sprites/jp/in_purodyuusu/text_skip_turn_dialog.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_skip_turn_dialog.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_skip_turn_dialog.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_skip_turn_dialog.png diff --git a/res/sprites/jp/in_purodyuusu/text_visual.png b/kotonebot-resource/sprites/jp/in_purodyuusu/text_visual.png similarity index 100% rename from res/sprites/jp/in_purodyuusu/text_visual.png rename to kotonebot-resource/sprites/jp/in_purodyuusu/text_visual.png diff --git a/res/sprites/jp/produce/button_auto_set.png b/kotonebot-resource/sprites/jp/produce/button_auto_set.png similarity index 100% rename from res/sprites/jp/produce/button_auto_set.png rename to kotonebot-resource/sprites/jp/produce/button_auto_set.png diff --git a/res/sprites/jp/produce/button_produce.png b/kotonebot-resource/sprites/jp/produce/button_produce.png similarity index 100% rename from res/sprites/jp/produce/button_produce.png rename to kotonebot-resource/sprites/jp/produce/button_produce.png diff --git a/res/sprites/jp/produce/button_produce_start.png b/kotonebot-resource/sprites/jp/produce/button_produce_start.png similarity index 100% rename from res/sprites/jp/produce/button_produce_start.png rename to kotonebot-resource/sprites/jp/produce/button_produce_start.png diff --git a/res/sprites/jp/produce/button_regular.png b/kotonebot-resource/sprites/jp/produce/button_regular.png similarity index 100% rename from res/sprites/jp/produce/button_regular.png rename to kotonebot-resource/sprites/jp/produce/button_regular.png diff --git a/res/sprites/jp/produce/checkbox_icon_note_boost.png b/kotonebot-resource/sprites/jp/produce/checkbox_icon_note_boost.png similarity index 100% rename from res/sprites/jp/produce/checkbox_icon_note_boost.png rename to kotonebot-resource/sprites/jp/produce/checkbox_icon_note_boost.png diff --git a/res/sprites/jp/produce/checkbox_icon_support_pt_boost.png b/kotonebot-resource/sprites/jp/produce/checkbox_icon_support_pt_boost.png similarity index 100% rename from res/sprites/jp/produce/checkbox_icon_support_pt_boost.png rename to kotonebot-resource/sprites/jp/produce/checkbox_icon_support_pt_boost.png diff --git a/res/sprites/jp/produce/produce_preparation0.png b/kotonebot-resource/sprites/jp/produce/produce_preparation0.png similarity index 100% rename from res/sprites/jp/produce/produce_preparation0.png rename to kotonebot-resource/sprites/jp/produce/produce_preparation0.png diff --git a/res/sprites/jp/produce/produce_preparation0.png.json b/kotonebot-resource/sprites/jp/produce/produce_preparation0.png.json similarity index 100% rename from res/sprites/jp/produce/produce_preparation0.png.json rename to kotonebot-resource/sprites/jp/produce/produce_preparation0.png.json diff --git a/res/sprites/jp/produce/produce_preparation1.png b/kotonebot-resource/sprites/jp/produce/produce_preparation1.png similarity index 100% rename from res/sprites/jp/produce/produce_preparation1.png rename to kotonebot-resource/sprites/jp/produce/produce_preparation1.png diff --git a/res/sprites/jp/produce/produce_preparation1.png.json b/kotonebot-resource/sprites/jp/produce/produce_preparation1.png.json similarity index 100% rename from res/sprites/jp/produce/produce_preparation1.png.json rename to kotonebot-resource/sprites/jp/produce/produce_preparation1.png.json diff --git a/res/sprites/jp/produce/produce_preparation_select_idol.png b/kotonebot-resource/sprites/jp/produce/produce_preparation_select_idol.png similarity index 100% rename from res/sprites/jp/produce/produce_preparation_select_idol.png rename to kotonebot-resource/sprites/jp/produce/produce_preparation_select_idol.png diff --git a/res/sprites/jp/produce/produce_preparation_select_idol.png.json b/kotonebot-resource/sprites/jp/produce/produce_preparation_select_idol.png.json similarity index 100% rename from res/sprites/jp/produce/produce_preparation_select_idol.png.json rename to kotonebot-resource/sprites/jp/produce/produce_preparation_select_idol.png.json diff --git a/res/sprites/jp/produce/produce_resume.png b/kotonebot-resource/sprites/jp/produce/produce_resume.png similarity index 100% rename from res/sprites/jp/produce/produce_resume.png rename to kotonebot-resource/sprites/jp/produce/produce_resume.png diff --git a/res/sprites/jp/produce/produce_resume.png.json b/kotonebot-resource/sprites/jp/produce/produce_resume.png.json similarity index 100% rename from res/sprites/jp/produce/produce_resume.png.json rename to kotonebot-resource/sprites/jp/produce/produce_resume.png.json diff --git a/res/sprites/jp/produce/radio_text_skip_commu.png b/kotonebot-resource/sprites/jp/produce/radio_text_skip_commu.png similarity index 100% rename from res/sprites/jp/produce/radio_text_skip_commu.png rename to kotonebot-resource/sprites/jp/produce/radio_text_skip_commu.png diff --git a/res/sprites/jp/produce/screenshot_no_enough_ap_1.png b/kotonebot-resource/sprites/jp/produce/screenshot_no_enough_ap_1.png similarity index 100% rename from res/sprites/jp/produce/screenshot_no_enough_ap_1.png rename to kotonebot-resource/sprites/jp/produce/screenshot_no_enough_ap_1.png diff --git a/res/sprites/jp/produce/screenshot_no_enough_ap_1.png.json b/kotonebot-resource/sprites/jp/produce/screenshot_no_enough_ap_1.png.json similarity index 100% rename from res/sprites/jp/produce/screenshot_no_enough_ap_1.png.json rename to kotonebot-resource/sprites/jp/produce/screenshot_no_enough_ap_1.png.json diff --git a/res/sprites/jp/produce/screenshot_no_enough_ap_2.png b/kotonebot-resource/sprites/jp/produce/screenshot_no_enough_ap_2.png similarity index 100% rename from res/sprites/jp/produce/screenshot_no_enough_ap_2.png rename to kotonebot-resource/sprites/jp/produce/screenshot_no_enough_ap_2.png diff --git a/res/sprites/jp/produce/text_rent_available.png b/kotonebot-resource/sprites/jp/produce/text_rent_available.png similarity index 100% rename from res/sprites/jp/produce/text_rent_available.png rename to kotonebot-resource/sprites/jp/produce/text_rent_available.png diff --git a/res/ui/p_idols/倉本千奈_Campus mode!!.png b/kotonebot-resource/ui/p_idols/倉本千奈_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/倉本千奈_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/倉本千奈_Campus mode!!.png diff --git a/res/ui/p_idols/倉本千奈_Wonder Scale.png b/kotonebot-resource/ui/p_idols/倉本千奈_Wonder Scale.png similarity index 100% rename from res/ui/p_idols/倉本千奈_Wonder Scale.png rename to kotonebot-resource/ui/p_idols/倉本千奈_Wonder Scale.png diff --git a/res/ui/p_idols/倉本千奈_ようこそ初星温泉.png b/kotonebot-resource/ui/p_idols/倉本千奈_ようこそ初星温泉.png similarity index 100% rename from res/ui/p_idols/倉本千奈_ようこそ初星温泉.png rename to kotonebot-resource/ui/p_idols/倉本千奈_ようこそ初星温泉.png diff --git a/res/ui/p_idols/倉本千奈_仮装狂騒曲.png b/kotonebot-resource/ui/p_idols/倉本千奈_仮装狂騒曲.png similarity index 100% rename from res/ui/p_idols/倉本千奈_仮装狂騒曲.png rename to kotonebot-resource/ui/p_idols/倉本千奈_仮装狂騒曲.png diff --git a/res/ui/p_idols/倉本千奈_初心.png b/kotonebot-resource/ui/p_idols/倉本千奈_初心.png similarity index 100% rename from res/ui/p_idols/倉本千奈_初心.png rename to kotonebot-resource/ui/p_idols/倉本千奈_初心.png diff --git a/res/ui/p_idols/倉本千奈_学園生活.png b/kotonebot-resource/ui/p_idols/倉本千奈_学園生活.png similarity index 100% rename from res/ui/p_idols/倉本千奈_学園生活.png rename to kotonebot-resource/ui/p_idols/倉本千奈_学園生活.png diff --git a/res/ui/p_idols/倉本千奈_日々、発見的ステップ!.png b/kotonebot-resource/ui/p_idols/倉本千奈_日々、発見的ステップ!.png similarity index 100% rename from res/ui/p_idols/倉本千奈_日々、発見的ステップ!.png rename to kotonebot-resource/ui/p_idols/倉本千奈_日々、発見的ステップ!.png diff --git a/res/ui/p_idols/倉本千奈_胸を張って一歩ずつ.png b/kotonebot-resource/ui/p_idols/倉本千奈_胸を張って一歩ずつ.png similarity index 100% rename from res/ui/p_idols/倉本千奈_胸を張って一歩ずつ.png rename to kotonebot-resource/ui/p_idols/倉本千奈_胸を張って一歩ずつ.png diff --git a/res/ui/p_idols/十王星南_Campus mode!!.png b/kotonebot-resource/ui/p_idols/十王星南_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/十王星南_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/十王星南_Campus mode!!.png diff --git a/res/ui/p_idols/十王星南_一番星.png b/kotonebot-resource/ui/p_idols/十王星南_一番星.png similarity index 100% rename from res/ui/p_idols/十王星南_一番星.png rename to kotonebot-resource/ui/p_idols/十王星南_一番星.png diff --git a/res/ui/p_idols/十王星南_学園生活.png b/kotonebot-resource/ui/p_idols/十王星南_学園生活.png similarity index 100% rename from res/ui/p_idols/十王星南_学園生活.png rename to kotonebot-resource/ui/p_idols/十王星南_学園生活.png diff --git a/res/ui/p_idols/十王星南_小さな野望.png b/kotonebot-resource/ui/p_idols/十王星南_小さな野望.png similarity index 100% rename from res/ui/p_idols/十王星南_小さな野望.png rename to kotonebot-resource/ui/p_idols/十王星南_小さな野望.png diff --git a/res/ui/p_idols/姫崎莉波_Campus mode!!.png b/kotonebot-resource/ui/p_idols/姫崎莉波_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_Campus mode!!.png diff --git a/res/ui/p_idols/姫崎莉波_L.U.V.png b/kotonebot-resource/ui/p_idols/姫崎莉波_L.U.V.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_L.U.V.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_L.U.V.png diff --git a/res/ui/p_idols/姫崎莉波_clumsy trick.png b/kotonebot-resource/ui/p_idols/姫崎莉波_clumsy trick.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_clumsy trick.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_clumsy trick.png diff --git a/res/ui/p_idols/姫崎莉波_『私らしさ』のはじまり.png b/kotonebot-resource/ui/p_idols/姫崎莉波_『私らしさ』のはじまり.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_『私らしさ』のはじまり.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_『私らしさ』のはじまり.png diff --git a/res/ui/p_idols/姫崎莉波_ようこそ初星温泉.png b/kotonebot-resource/ui/p_idols/姫崎莉波_ようこそ初星温泉.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_ようこそ初星温泉.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_ようこそ初星温泉.png diff --git a/res/ui/p_idols/姫崎莉波_キミとセミブルー.png b/kotonebot-resource/ui/p_idols/姫崎莉波_キミとセミブルー.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_キミとセミブルー.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_キミとセミブルー.png diff --git a/res/ui/p_idols/姫崎莉波_ハッピーミルフィーユ.png b/kotonebot-resource/ui/p_idols/姫崎莉波_ハッピーミルフィーユ.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_ハッピーミルフィーユ.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_ハッピーミルフィーユ.png diff --git a/res/ui/p_idols/姫崎莉波_初心.png b/kotonebot-resource/ui/p_idols/姫崎莉波_初心.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_初心.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_初心.png diff --git a/res/ui/p_idols/姫崎莉波_学園生活.png b/kotonebot-resource/ui/p_idols/姫崎莉波_学園生活.png similarity index 100% rename from res/ui/p_idols/姫崎莉波_学園生活.png rename to kotonebot-resource/ui/p_idols/姫崎莉波_学園生活.png diff --git a/res/ui/p_idols/月村手毬_Campus mode!!.png b/kotonebot-resource/ui/p_idols/月村手毬_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/月村手毬_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/月村手毬_Campus mode!!.png diff --git a/res/ui/p_idols/月村手毬_Luna say maybe.png b/kotonebot-resource/ui/p_idols/月村手毬_Luna say maybe.png similarity index 100% rename from res/ui/p_idols/月村手毬_Luna say maybe.png rename to kotonebot-resource/ui/p_idols/月村手毬_Luna say maybe.png diff --git a/res/ui/p_idols/月村手毬_アイヴイ.png b/kotonebot-resource/ui/p_idols/月村手毬_アイヴイ.png similarity index 100% rename from res/ui/p_idols/月村手毬_アイヴイ.png rename to kotonebot-resource/ui/p_idols/月村手毬_アイヴイ.png diff --git a/res/ui/p_idols/月村手毬_一匹狼.png b/kotonebot-resource/ui/p_idols/月村手毬_一匹狼.png similarity index 100% rename from res/ui/p_idols/月村手毬_一匹狼.png rename to kotonebot-resource/ui/p_idols/月村手毬_一匹狼.png diff --git a/res/ui/p_idols/月村手毬_仮装狂騒曲.png b/kotonebot-resource/ui/p_idols/月村手毬_仮装狂騒曲.png similarity index 100% rename from res/ui/p_idols/月村手毬_仮装狂騒曲.png rename to kotonebot-resource/ui/p_idols/月村手毬_仮装狂騒曲.png diff --git a/res/ui/p_idols/月村手毬_初声.png b/kotonebot-resource/ui/p_idols/月村手毬_初声.png similarity index 100% rename from res/ui/p_idols/月村手毬_初声.png rename to kotonebot-resource/ui/p_idols/月村手毬_初声.png diff --git a/res/ui/p_idols/月村手毬_学園生活.png b/kotonebot-resource/ui/p_idols/月村手毬_学園生活.png similarity index 100% rename from res/ui/p_idols/月村手毬_学園生活.png rename to kotonebot-resource/ui/p_idols/月村手毬_学園生活.png diff --git a/res/ui/p_idols/有村麻央_Campus mode!!.png b/kotonebot-resource/ui/p_idols/有村麻央_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/有村麻央_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/有村麻央_Campus mode!!.png diff --git a/res/ui/p_idols/有村麻央_Feel Jewel Dream.png b/kotonebot-resource/ui/p_idols/有村麻央_Feel Jewel Dream.png similarity index 100% rename from res/ui/p_idols/有村麻央_Feel Jewel Dream.png rename to kotonebot-resource/ui/p_idols/有村麻央_Feel Jewel Dream.png diff --git a/res/ui/p_idols/有村麻央_Fluorite.png b/kotonebot-resource/ui/p_idols/有村麻央_Fluorite.png similarity index 100% rename from res/ui/p_idols/有村麻央_Fluorite.png rename to kotonebot-resource/ui/p_idols/有村麻央_Fluorite.png diff --git a/res/ui/p_idols/有村麻央_はじまりはカッコよく.png b/kotonebot-resource/ui/p_idols/有村麻央_はじまりはカッコよく.png similarity index 100% rename from res/ui/p_idols/有村麻央_はじまりはカッコよく.png rename to kotonebot-resource/ui/p_idols/有村麻央_はじまりはカッコよく.png diff --git a/res/ui/p_idols/有村麻央_キミとセミブルー.png b/kotonebot-resource/ui/p_idols/有村麻央_キミとセミブルー.png similarity index 100% rename from res/ui/p_idols/有村麻央_キミとセミブルー.png rename to kotonebot-resource/ui/p_idols/有村麻央_キミとセミブルー.png diff --git a/res/ui/p_idols/有村麻央_初恋.png b/kotonebot-resource/ui/p_idols/有村麻央_初恋.png similarity index 100% rename from res/ui/p_idols/有村麻央_初恋.png rename to kotonebot-resource/ui/p_idols/有村麻央_初恋.png diff --git a/res/ui/p_idols/有村麻央_学園生活.png b/kotonebot-resource/ui/p_idols/有村麻央_学園生活.png similarity index 100% rename from res/ui/p_idols/有村麻央_学園生活.png rename to kotonebot-resource/ui/p_idols/有村麻央_学園生活.png diff --git a/res/ui/p_idols/篠泽广_Campus mode!!.png b/kotonebot-resource/ui/p_idols/篠泽广_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/篠泽广_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/篠泽广_Campus mode!!.png diff --git a/res/ui/p_idols/篠泽广_コントラスト.png b/kotonebot-resource/ui/p_idols/篠泽广_コントラスト.png similarity index 100% rename from res/ui/p_idols/篠泽广_コントラスト.png rename to kotonebot-resource/ui/p_idols/篠泽广_コントラスト.png diff --git a/res/ui/p_idols/篠泽广_ハッピーミルフィーユ.png b/kotonebot-resource/ui/p_idols/篠泽广_ハッピーミルフィーユ.png similarity index 100% rename from res/ui/p_idols/篠泽广_ハッピーミルフィーユ.png rename to kotonebot-resource/ui/p_idols/篠泽广_ハッピーミルフィーユ.png diff --git a/res/ui/p_idols/篠泽广_一番向いていないこと.png b/kotonebot-resource/ui/p_idols/篠泽广_一番向いていないこと.png similarity index 100% rename from res/ui/p_idols/篠泽广_一番向いていないこと.png rename to kotonebot-resource/ui/p_idols/篠泽广_一番向いていないこと.png diff --git a/res/ui/p_idols/篠泽广_仮装狂騒曲.png b/kotonebot-resource/ui/p_idols/篠泽广_仮装狂騒曲.png similarity index 100% rename from res/ui/p_idols/篠泽广_仮装狂騒曲.png rename to kotonebot-resource/ui/p_idols/篠泽广_仮装狂騒曲.png diff --git a/res/ui/p_idols/篠泽广_光景.png b/kotonebot-resource/ui/p_idols/篠泽广_光景.png similarity index 100% rename from res/ui/p_idols/篠泽广_光景.png rename to kotonebot-resource/ui/p_idols/篠泽广_光景.png diff --git a/res/ui/p_idols/篠泽广_初恋.png b/kotonebot-resource/ui/p_idols/篠泽广_初恋.png similarity index 100% rename from res/ui/p_idols/篠泽广_初恋.png rename to kotonebot-resource/ui/p_idols/篠泽广_初恋.png diff --git a/res/ui/p_idols/篠泽广_学園生活.png b/kotonebot-resource/ui/p_idols/篠泽广_学園生活.png similarity index 100% rename from res/ui/p_idols/篠泽广_学園生活.png rename to kotonebot-resource/ui/p_idols/篠泽广_学園生活.png diff --git a/res/ui/p_idols/紫云清夏_Campus mode!!.png b/kotonebot-resource/ui/p_idols/紫云清夏_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/紫云清夏_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/紫云清夏_Campus mode!!.png diff --git a/res/ui/p_idols/紫云清夏_Tame-Lie-One-Step.png b/kotonebot-resource/ui/p_idols/紫云清夏_Tame-Lie-One-Step.png similarity index 100% rename from res/ui/p_idols/紫云清夏_Tame-Lie-One-Step.png rename to kotonebot-resource/ui/p_idols/紫云清夏_Tame-Lie-One-Step.png diff --git a/res/ui/p_idols/紫云清夏_カクシタワタシ.png b/kotonebot-resource/ui/p_idols/紫云清夏_カクシタワタシ.png similarity index 100% rename from res/ui/p_idols/紫云清夏_カクシタワタシ.png rename to kotonebot-resource/ui/p_idols/紫云清夏_カクシタワタシ.png diff --git a/res/ui/p_idols/紫云清夏_キミとセミブルー.png b/kotonebot-resource/ui/p_idols/紫云清夏_キミとセミブルー.png similarity index 100% rename from res/ui/p_idols/紫云清夏_キミとセミブルー.png rename to kotonebot-resource/ui/p_idols/紫云清夏_キミとセミブルー.png diff --git a/res/ui/p_idols/紫云清夏_初恋.png b/kotonebot-resource/ui/p_idols/紫云清夏_初恋.png similarity index 100% rename from res/ui/p_idols/紫云清夏_初恋.png rename to kotonebot-resource/ui/p_idols/紫云清夏_初恋.png diff --git a/res/ui/p_idols/紫云清夏_夢へのリスタート.png b/kotonebot-resource/ui/p_idols/紫云清夏_夢へのリスタート.png similarity index 100% rename from res/ui/p_idols/紫云清夏_夢へのリスタート.png rename to kotonebot-resource/ui/p_idols/紫云清夏_夢へのリスタート.png diff --git a/res/ui/p_idols/紫云清夏_学園生活.png b/kotonebot-resource/ui/p_idols/紫云清夏_学園生活.png similarity index 100% rename from res/ui/p_idols/紫云清夏_学園生活.png rename to kotonebot-resource/ui/p_idols/紫云清夏_学園生活.png diff --git a/res/ui/p_idols/花海佑芽_Campus mode!!.png b/kotonebot-resource/ui/p_idols/花海佑芽_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/花海佑芽_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/花海佑芽_Campus mode!!.png diff --git a/res/ui/p_idols/花海佑芽_The Rolling Riceball.png b/kotonebot-resource/ui/p_idols/花海佑芽_The Rolling Riceball.png similarity index 100% rename from res/ui/p_idols/花海佑芽_The Rolling Riceball.png rename to kotonebot-resource/ui/p_idols/花海佑芽_The Rolling Riceball.png diff --git a/res/ui/p_idols/花海佑芽_White Night! White Wish!.png b/kotonebot-resource/ui/p_idols/花海佑芽_White Night! White Wish!.png similarity index 100% rename from res/ui/p_idols/花海佑芽_White Night! White Wish!.png rename to kotonebot-resource/ui/p_idols/花海佑芽_White Night! White Wish!.png diff --git a/res/ui/p_idols/花海佑芽_アイドル、はじめっ!.png b/kotonebot-resource/ui/p_idols/花海佑芽_アイドル、はじめっ!.png similarity index 100% rename from res/ui/p_idols/花海佑芽_アイドル、はじめっ!.png rename to kotonebot-resource/ui/p_idols/花海佑芽_アイドル、はじめっ!.png diff --git a/res/ui/p_idols/花海佑芽_学園生活.png b/kotonebot-resource/ui/p_idols/花海佑芽_学園生活.png similarity index 100% rename from res/ui/p_idols/花海佑芽_学園生活.png rename to kotonebot-resource/ui/p_idols/花海佑芽_学園生活.png diff --git a/res/ui/p_idols/花海咲季_Boom Boom Pow.png b/kotonebot-resource/ui/p_idols/花海咲季_Boom Boom Pow.png similarity index 100% rename from res/ui/p_idols/花海咲季_Boom Boom Pow.png rename to kotonebot-resource/ui/p_idols/花海咲季_Boom Boom Pow.png diff --git a/res/ui/p_idols/花海咲季_Campus mode!!.png b/kotonebot-resource/ui/p_idols/花海咲季_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/花海咲季_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/花海咲季_Campus mode!!.png diff --git a/res/ui/p_idols/花海咲季_Fighting My Way.png b/kotonebot-resource/ui/p_idols/花海咲季_Fighting My Way.png similarity index 100% rename from res/ui/p_idols/花海咲季_Fighting My Way.png rename to kotonebot-resource/ui/p_idols/花海咲季_Fighting My Way.png diff --git a/res/ui/p_idols/花海咲季_わたしが一番!.png b/kotonebot-resource/ui/p_idols/花海咲季_わたしが一番!.png similarity index 100% rename from res/ui/p_idols/花海咲季_わたしが一番!.png rename to kotonebot-resource/ui/p_idols/花海咲季_わたしが一番!.png diff --git a/res/ui/p_idols/花海咲季_冠菊.png b/kotonebot-resource/ui/p_idols/花海咲季_冠菊.png similarity index 100% rename from res/ui/p_idols/花海咲季_冠菊.png rename to kotonebot-resource/ui/p_idols/花海咲季_冠菊.png diff --git a/res/ui/p_idols/花海咲季_初声.png b/kotonebot-resource/ui/p_idols/花海咲季_初声.png similarity index 100% rename from res/ui/p_idols/花海咲季_初声.png rename to kotonebot-resource/ui/p_idols/花海咲季_初声.png diff --git a/res/ui/p_idols/花海咲季_古今東西ちょちょいのちょい.png b/kotonebot-resource/ui/p_idols/花海咲季_古今東西ちょちょいのちょい.png similarity index 100% rename from res/ui/p_idols/花海咲季_古今東西ちょちょいのちょい.png rename to kotonebot-resource/ui/p_idols/花海咲季_古今東西ちょちょいのちょい.png diff --git a/res/ui/p_idols/花海咲季_学園生活.png b/kotonebot-resource/ui/p_idols/花海咲季_学園生活.png similarity index 100% rename from res/ui/p_idols/花海咲季_学園生活.png rename to kotonebot-resource/ui/p_idols/花海咲季_学園生活.png diff --git a/res/ui/p_idols/葛城リーリヤ_Campus mode!!.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_Campus mode!!.png diff --git a/res/ui/p_idols/葛城リーリヤ_White Night! White Wish!.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_White Night! White Wish!.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_White Night! White Wish!.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_White Night! White Wish!.png diff --git a/res/ui/p_idols/葛城リーリヤ_一つ踏み出した先に.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_一つ踏み出した先に.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_一つ踏み出した先に.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_一つ踏み出した先に.png diff --git a/res/ui/p_idols/葛城リーリヤ_冠菊.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_冠菊.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_冠菊.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_冠菊.png diff --git a/res/ui/p_idols/葛城リーリヤ_初心.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_初心.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_初心.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_初心.png diff --git a/res/ui/p_idols/葛城リーリヤ_学園生活.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_学園生活.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_学園生活.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_学園生活.png diff --git a/res/ui/p_idols/葛城リーリヤ_白線.png b/kotonebot-resource/ui/p_idols/葛城リーリヤ_白線.png similarity index 100% rename from res/ui/p_idols/葛城リーリヤ_白線.png rename to kotonebot-resource/ui/p_idols/葛城リーリヤ_白線.png diff --git a/res/ui/p_idols/藤田ことね_Campus mode!!.png b/kotonebot-resource/ui/p_idols/藤田ことね_Campus mode!!.png similarity index 100% rename from res/ui/p_idols/藤田ことね_Campus mode!!.png rename to kotonebot-resource/ui/p_idols/藤田ことね_Campus mode!!.png diff --git a/res/ui/p_idols/藤田ことね_White Night! White Wish!.png b/kotonebot-resource/ui/p_idols/藤田ことね_White Night! White Wish!.png similarity index 100% rename from res/ui/p_idols/藤田ことね_White Night! White Wish!.png rename to kotonebot-resource/ui/p_idols/藤田ことね_White Night! White Wish!.png diff --git a/res/ui/p_idols/藤田ことね_Yellow Big Bang!.png b/kotonebot-resource/ui/p_idols/藤田ことね_Yellow Big Bang!.png similarity index 100% rename from res/ui/p_idols/藤田ことね_Yellow Big Bang!.png rename to kotonebot-resource/ui/p_idols/藤田ことね_Yellow Big Bang!.png diff --git a/res/ui/p_idols/藤田ことね_カワイイ♡はじめました.png b/kotonebot-resource/ui/p_idols/藤田ことね_カワイイ♡はじめました.png similarity index 100% rename from res/ui/p_idols/藤田ことね_カワイイ♡はじめました.png rename to kotonebot-resource/ui/p_idols/藤田ことね_カワイイ♡はじめました.png diff --git a/res/ui/p_idols/藤田ことね_世界一可愛い私.png b/kotonebot-resource/ui/p_idols/藤田ことね_世界一可愛い私.png similarity index 100% rename from res/ui/p_idols/藤田ことね_世界一可愛い私.png rename to kotonebot-resource/ui/p_idols/藤田ことね_世界一可愛い私.png diff --git a/res/ui/p_idols/藤田ことね_冠菊.png b/kotonebot-resource/ui/p_idols/藤田ことね_冠菊.png similarity index 100% rename from res/ui/p_idols/藤田ことね_冠菊.png rename to kotonebot-resource/ui/p_idols/藤田ことね_冠菊.png diff --git a/res/ui/p_idols/藤田ことね_初声.png b/kotonebot-resource/ui/p_idols/藤田ことね_初声.png similarity index 100% rename from res/ui/p_idols/藤田ことね_初声.png rename to kotonebot-resource/ui/p_idols/藤田ことね_初声.png diff --git a/res/ui/p_idols/藤田ことね_学園生活.png b/kotonebot-resource/ui/p_idols/藤田ことね_学園生活.png similarity index 100% rename from res/ui/p_idols/藤田ことね_学園生活.png rename to kotonebot-resource/ui/p_idols/藤田ことね_学園生活.png diff --git a/kotonebot/backend/__init__.py b/kotonebot/backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kotonebot/backend/ocr.py b/kotonebot/backend/ocr.py index f456ee4..580f136 100644 --- a/kotonebot/backend/ocr.py +++ b/kotonebot/backend/ocr.py @@ -13,20 +13,22 @@ from cv2.typing import MatLike from thefuzz import fuzz as _fuzz from rapidocr_onnxruntime import RapidOCR -from .util import Rect, grayscaled, res_path -from .debug import result as debug_result, debug + from .core import HintBox +from .util import Rect, grayscaled, lf_path +from .debug import result as debug_result, debug logger = logging.getLogger(__name__) +# TODO: 这个路径需要能够独立设置 _engine_jp = RapidOCR( - rec_model_path=res_path('res/models/japan_PP-OCRv4_rec_infer.onnx'), + rec_model_path=lf_path('models/japan_PP-OCRv4_rec_infer.onnx'), use_det=True, use_cls=False, use_rec=True, ) _engine_en = RapidOCR( - rec_model_path=res_path('res/models/en_PP-OCRv3_rec_infer.onnx'), + rec_model_path=lf_path('models/en_PP-OCRv3_rec_infer.onnx'), use_det=True, use_cls=False, use_rec=True, @@ -242,7 +244,7 @@ def _draw_result(image: 'MatLike', result: list[OcrResult]) -> 'MatLike': # 加载字体 try: - font = ImageFont.truetype(res_path('res/fonts/SourceHanSansHW-Regular.otf'), 16) + font = ImageFont.truetype(lf_path('res/fonts/SourceHanSansHW-Regular.otf'), 16) except: font = ImageFont.load_default() diff --git a/kotonebot/backend/util.py b/kotonebot/backend/util.py index f595cc7..213c640 100644 --- a/kotonebot/backend/util.py +++ b/kotonebot/backend/util.py @@ -238,28 +238,11 @@ class Interval: def reset(self): self.start_time = time.time() -package_mode: Literal['wheel', 'standalone'] | None = None -def res_path(path: str) -> str: - """ - 返回资源文件的绝对路径。 - - :param path: 资源文件路径。必须以 `res/` 开头。 - """ - global package_mode - if package_mode is None: - if os.path.exists('res'): - package_mode = 'standalone' - else: - package_mode = 'wheel' - ret = path - if package_mode == 'standalone': - ret = os.path.abspath(ret) - else: - # resources.files('kotonebot.res') 返回的就是 res 文件夹的路径 - # 但是 path 已经有了 res,所以这里需要去掉 res - real_path = resources.files('kotonebot.res') / '..' / path - ret = str(real_path) - return ret +def lf_path(path: str) -> str: + standalone = os.path.join('kotonebot-resource', path) + if os.path.exists(standalone): + return standalone + return str(resources.files('kaa.res') / path) class Profiler: """ diff --git a/kotonebot/client/implements/__init__.py b/kotonebot/client/implements/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kotonebot/run/__init__.py b/kotonebot/run/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kotonebot/tasks/__init__.py b/kotonebot/tasks/__init__.py index e7505d0..e69de29 100644 --- a/kotonebot/tasks/__init__.py +++ b/kotonebot/tasks/__init__.py @@ -1 +0,0 @@ -__version__ = '2025.2.14' \ No newline at end of file diff --git a/kotonebot/tasks/actions/__init__.py b/kotonebot/tasks/actions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kotonebot/tasks/common.py b/kotonebot/tasks/common.py index ea0bc1d..509415f 100644 --- a/kotonebot/tasks/common.py +++ b/kotonebot/tasks/common.py @@ -1,9 +1,12 @@ +from importlib import resources +import os from typing import Literal, Dict from enum import IntEnum, Enum from pydantic import BaseModel, ConfigDict -from kotonebot import config +# TODO: from kotonebot import config (context) 会和 kotonebot.config 冲突 +from kotonebot.backend.context import config class Priority(IntEnum): START_GAME = 1 @@ -335,5 +338,12 @@ def conf() -> BaseConfig: c = config.to(BaseConfig).current return c.options +def sprite_path(path: str) -> str: + standalone = os.path.join('kotonebot/tasks/sprites', path) + if os.path.exists(standalone): + return standalone + return str(resources.files('kotonebot.tasks.sprites') / path) + + if __name__ == '__main__': print(PurchaseConfig.model_fields['money_refresh_on'].description) \ No newline at end of file diff --git a/kotonebot/tools/__init__.py b/kotonebot/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/kotonebot/ui/__init__.py b/kotonebot/ui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d615827 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,47 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +dynamic = ["version"] +name = "ksaa" +description = "Kotones Auto Assistant(kaa) is a script for game 'Gakuen Idol M@ster' that automates the dailies and produces." +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + # Image Processing & OCR + "opencv-python==4.10.0.84", + "rapidocr_onnxruntime==1.4.3", + "av==14.0.1", + "scikit-image==0.25.0", + "thefuzz==0.22.1", + # Adb Control + "adbutils==2.8.0", + "uiautomator2==3.2.8", + # Visual Debugger + "fastapi==0.115.6", + "uvicorn==0.34.0", + "python-multipart==0.0.20", + "websockets==14.1", + "numpy==2.2.1", + "psutil==6.1.1", + # GUI + "gradio==5.12.0", + # Configuration + "pydantic==2.10.4", + # Resource + "ksaa-res==0.1.0", + # Other + "typing-extensions==4.12.2", + "python-dotenv==1.0.1" +] + + +[tool.setuptools] +package-dir = { "kotonebot" = "kotonebot" } + +[project.scripts] +kaa = "kotonebot.ui.gr:main" + +[tool.setuptools.dynamic] +version = {file = "./version"} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index daae378..966ad4d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,3 +20,4 @@ gradio==5.12.0 pydantic==2.10.4 # Other typing-extensions==4.12.2 +python-dotenv==1.0.1 diff --git a/tools/R.jinja2 b/tools/R.jinja2 index 5878f0c..92986b1 100644 --- a/tools/R.jinja2 +++ b/tools/R.jinja2 @@ -1,7 +1,9 @@ +{%- if not production %} ####### 图片资源文件 ####### ####### 此文件为自动生成,请勿编辑 ####### ####### AUTO GENERATED. DO NOT EDIT. ####### -from kotonebot.backend.util import res_path +{%- endif %} +from kotonebot.tasks.common import sprite_path from kotonebot.backend.core import Image, HintBox @@ -9,11 +11,13 @@ from kotonebot.backend.core import Image, HintBox {%- for attr in class.attributes -%} {%- if attr.type == 'image' %} {{ attr.name }} = {{ attr.value }} + {%- if not production %} """ {%- for line in attr.docstring.split('\n') %} {{ line }} {%- endfor -%} """ + {%- endif %} {% elif attr.type == 'class' %} class {{ attr.name }}: {{ render_class_attributes(attr) | indent(4) }} diff --git a/tools/make_resources.py b/tools/make_resources.py index 2b00d41..9e82137 100644 --- a/tools/make_resources.py +++ b/tools/make_resources.py @@ -5,6 +5,7 @@ import os import shutil import uuid import jinja2 +import argparse from typing import Any, TypeGuard, Literal, Union, cast from dataclasses import dataclass from dataclasses_json import dataclass_json, DataClassJsonMixin @@ -12,7 +13,7 @@ from dataclasses_json import dataclass_json, DataClassJsonMixin import cv2 from cv2.typing import MatLike -PATH = '.\\res\\sprites' +PATH = '.\\kotonebot-resource\\sprites' SpriteType = Literal['basic', 'metadata'] @@ -308,7 +309,7 @@ def make_classes(resources: list[Resource], output_path: str) -> list[OutputClas type='image', name=sprite.name, docstring=docstring, - value=f'Image(path=res_path(r"{output_path}\\{sprite.uuid}.png"), name="{sprite.display_name}")' + value=f'Image(path=sprite_path(r"{sprite.uuid}.png"), name="{sprite.display_name}")' ) current_class.attributes.append(img_attr) elif resource.type == 'hint-box': @@ -361,13 +362,18 @@ def indent(text: str, indent: int = 4) -> str: return '\n'.join(' ' * indent + line for line in lines) if __name__ == '__main__': - if os.path.exists('res\\sprites_compiled'): - shutil.rmtree('res\\sprites_compiled') + # 添加命令行参数解析 + parser = argparse.ArgumentParser(description='生成图片资源文件') + parser.add_argument('-p', '--production', action='store_true', help='生产模式:不输出注释') + args = parser.parse_args() + + if os.path.exists(r'kotonebot\tasks\sprites'): + shutil.rmtree(r'kotonebot\tasks\sprites') path = PATH + '\\jp' files = scan_png_files(path) sprites = load_sprites(path, files) - sprites = copy_sprites(sprites, 'res\\sprites_compiled') - classes = make_classes(sprites, 'res\\sprites_compiled') + sprites = copy_sprites(sprites, r'kotonebot\tasks\sprites') + classes = make_classes(sprites, r'kotonebot\tasks\sprites') env = jinja2.Environment(loader=jinja2.FileSystemLoader('./tools')) env.filters['indent'] = indent @@ -375,5 +381,8 @@ if __name__ == '__main__': template = env.get_template('R.jinja2') print(f'Rendering template: {template.name}') with open('./kotonebot/tasks/R.py', 'w', encoding='utf-8') as f: - f.write(template.render(data=classes)) + f.write(template.render(data=classes, production=args.production)) + print('Creating __init__.py') + with open('./kotonebot/tasks/sprites/__init__.py', 'w', encoding='utf-8') as f: + f.write('') print('All done!') \ No newline at end of file diff --git a/version b/version new file mode 100644 index 0000000..0988beb --- /dev/null +++ b/version @@ -0,0 +1 @@ +2025.2.14 \ No newline at end of file