177 Commits
Author SHA1 Message Date
Azalea Gui 02dc142eea [+] Data convert script: Add ongeki 2024-02-27 18:09:06 -05:00
Azalea Gui 5973b3bfe5 [F] Fix level calculation 2024-02-26 20:06:32 -05:00
Azalea Gui f4e3be8d15 [+] Add chusan support for data convert 2024-02-26 19:36:54 -05:00
Azalea c7e493d7f5 [F] Fix null 2024-02-26 17:05:32 -05:00
Azalea 759519d374 [PR] #13 from Becods: Extra fields from bud
[+] Extra fields from bud
2024-02-26 10:40:14 -05:00
Becod 3d713b13da [+] Extra fields from bud 2024-02-26 21:42:00 +08:00
Azalea 20468e612d Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-23 00:11:05 -05:00
Azalea c175173821 Merge pull request #12 from Zaphkito/master
Add maimai 140 h041 event data
2024-02-21 05:46:55 -05:00
zaphkito 52e9285551 Add maimai 140 h041 event data 2024-02-21 18:39:39 +08:00
Azalea f4280c0768 Merge pull request #11 from Zaphkito/master
Maimai 140 h031 event data and charge data
2024-02-18 15:57:25 -05:00
zaphkito 295ae14658 Add maimai2 charge 2024-02-19 04:40:48 +08:00
zaphkito ccc2bcffce Maimai 140 h031 event data 2024-02-19 04:12:53 +08:00
Azalea a47ed71799 [F] Fix typos in readme 2024-02-16 20:49:44 -08:00
Azalea 006a49cfdb [F] Fix dependency CVE 2024-02-16 15:54:09 -05:00
Azalea 9794ee259a [U] Upgrade gradle wrapper 2024-02-16 15:52:05 -05:00
Azalea 643e0e0c1f [O] Lint 2024-02-16 01:46:11 -05:00
Azalea 6afcb364d1 [+] Add eslint 2024-02-16 01:43:32 -05:00
Azalea 6d4a38404c [O] Sort recent by date, display level 2024-02-16 01:04:29 -05:00
Azalea b925c2ef20 [U] Update readme 2024-02-12 11:26:37 -05:00
Azalea e3f931d4f5 [PR] #10 from afonsopbarros: Update readme
Update AquaiMai README
2024-02-12 09:45:24 -05:00
Afonso 01b5d63972 Update AquaiMai README 2024-02-12 12:50:01 +01:00
Azalea 97794ce7c5 [S] Responsive chart 2024-02-12 04:49:02 -05:00
Azalea ac4c66a1f7 [S] Fix home page 2024-02-12 04:48:51 -05:00
Azalea 9750e26d4b [F] Fix height 2024-02-12 04:35:02 -05:00
Azalea 4b14412190 Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-12 04:33:39 -05:00
Azalea 207c2e10e3 [F] Fix height 2024-02-12 04:33:35 -05:00
Azalea 7c73515427 [U] Add related projects 2024-02-12 00:49:07 -08:00
Azalea aea7108940 [U] Yarn upgrade 2024-02-12 03:38:34 -05:00
Azalea 2bdd97d889 [O] Center page 2024-02-12 03:38:25 -05:00
Azalea 93b6dd3374 [S] Fix song name overflow 2024-02-12 03:20:09 -05:00
Azalea bf3c123658 [S] Mobile 2024-02-12 03:03:07 -05:00
Azalea 06c0a361fd [S] Good color 2024-02-12 03:00:24 -05:00
Azalea 92510845d6 [S] Style recent 2024-02-12 03:00:16 -05:00
Azalea 8ab57859f6 [S] mobile 2024-02-12 03:00:07 -05:00
Azalea 0608b50193 [+] Display recent scores 2024-02-12 02:59:46 -05:00
Azalea e14ff26915 [+] UI helper for class 2024-02-12 02:59:33 -05:00
Azalea 8932a16468 [O] Encapsulate all music 2024-02-12 02:59:25 -05:00
Azalea 3804db142f [S] Style UserHome 2024-02-12 02:04:25 -05:00
Azalea 7e198bd7a1 [+] Display more info on user page 2024-02-12 01:48:28 -05:00
Azalea 85301c92ec [O] Import font 2024-02-12 01:48:08 -05:00
Azalea 2ca6be77ed [+] Add summary to SDK 2024-02-12 01:23:32 -05:00
Azalea 48558bec0f [+] Even more info 2024-02-12 01:11:20 -05:00
Azalea 31af8669b5 [O] More info 2024-02-12 01:05:15 -05:00
Azalea d716ee5d26 [O] Optimize query 2024-02-12 01:02:02 -05:00
Azalea 8e1c07d530 [+] maimai user summary 2024-02-12 00:53:20 -05:00
Azalea 0d7b52aadc [+] Sinmai dev notes 2024-02-11 23:30:15 -05:00
Azalea 25eb99f014 [O] Hide chartjs lables 2024-02-11 22:53:31 -05:00
Azalea ab8276df2f [S] Style chartjs 2024-02-11 22:40:12 -05:00
Azalea 68569ad875 [O] Externalize cal heatmap 2024-02-11 22:40:04 -05:00
Azalea c0e77d9eec [O] Switch to cal-heatmap 2024-02-11 22:32:10 -05:00
Azalea 27297c5d24 [O] Write readme 2024-02-10 06:43:01 -05:00
Azalea b6a7a02b23 [+] Home view 2024-02-10 06:31:11 -05:00
Azalea 534e20a072 [+] Helper to register chartjs 2024-02-10 06:30:50 -05:00
Azalea 9478da81a9 [+] Maimai api endpoints 2024-02-10 06:30:22 -05:00
Azalea ee958f20d2 [+] Declare user preview data type 2024-02-10 06:30:15 -05:00
Azalea 00edf44828 [+] Type declaration 2024-02-10 06:27:58 -05:00
Azalea f3a49533fd [+] Add ChartJS, heatmap dependencies 2024-02-10 06:27:49 -05:00
Azalea 3b6517090c [+] Add play count to trend 2024-02-10 05:50:28 -05:00
Azalea 5b2687ae83 [+] New maimai api 2024-02-10 05:30:06 -05:00
Azalea c3402e8d44 [O] Ignore errors on EOF 2024-02-10 05:29:53 -05:00
Azalea a9625dfecd [F] Fix kotlin build 2024-02-10 05:29:31 -05:00
Azalea d6c8464e97 [+] Favicon 2024-02-10 03:52:27 -05:00
Azalea 1b557d5f8c [S] Fix page height overflow 2024-02-10 03:10:21 -05:00
Azalea e1cf944db7 [S] Fix layout 2024-02-10 03:06:18 -05:00
Azalea cb873efd38 [S] Minor style issue 2024-02-10 02:59:54 -05:00
Azalea ee5acfa35f [+] Navbar 2024-02-10 02:56:29 -05:00
Azalea 2904c55f84 [S] Optimize styling 2024-02-10 01:30:19 -05:00
Azalea 4667e9652f Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-10 01:24:05 -05:00
Azalea 905b4fe92e [S] Mobile friendly :3 2024-02-10 01:24:03 -05:00
Azalea 85ccc78f8f [S] Style home page 2024-02-10 01:20:10 -05:00
Azalea ad3bb89dc9 [+] Home site 2024-02-10 00:40:56 -05:00
Azalea 106bded9b6 [F] Fix test failure 2024-02-09 19:39:09 -08:00
Azalea Gui f46c8a03d9 [+] Character convert 2024-02-09 22:36:26 -05:00
Azalea Gui 5d9693c419 [U] Combine music jsons 2024-02-09 22:35:13 -05:00
Azalea Gui 126546a938 [O] Fix crash due to duplicate keys in maimai2_user_item 2024-02-09 22:34:16 -05:00
Azalea bb3902730b [U] Update url 2024-02-09 21:55:08 -05:00
Azalea 1b9e25e81c [U] Update url 2024-02-09 21:43:53 -05:00
Azalea b11439ca87 [U] Update url 2024-02-09 21:23:03 -05:00
Azalea 66034ea407 [O] Get userid dynamically 2024-02-09 21:05:53 -05:00
Azalea 6690c665dd [+] Actually query for data 2024-02-09 20:32:13 -05:00
Azalea 4b71cd9940 [O] Responsive 2024-02-08 03:32:33 -05:00
Azalea 8b5ef24681 [+] Show rating 2024-02-08 03:18:55 -05:00
Azalea e161890eaa Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-08 02:53:58 -05:00
Azalea 348f27237b [+] Rating screen 2024-02-08 02:53:45 -05:00
Azalea c19164269a [+] Add nginx configuration 2024-02-08 02:52:47 -05:00
Azalea 071491b459 [M] Rename 2024-02-08 02:51:31 -05:00
Azalea e1180a9a14 Merge pull request #9 from hykilpikonna/tc21/fix-crash-slot-data-not-found
Fix crash during call to CommonMonitor.SetCharacterSlot
2024-02-07 23:19:28 -05:00
Tianyi Cao f76a027b32 add a few more comments 2024-02-07 20:08:33 -08:00
Tianyi Cao cc1a91e5cd Update and restore unintentionally-changed formatting 2024-02-07 20:04:15 -08:00
Tianyi Cao fcee4d13da Fix crash during call to CommonMonitor.SetCharacterSlot 2024-02-07 20:02:39 -08:00
Azalea fa567ce0e2 Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-07 22:59:58 -05:00
Azalea Gui c10085b65a [+] Maimai data format convert 2024-02-07 22:22:58 -05:00
Azalea a8465408cf [+] AquaTop: Create project 2024-02-07 20:13:53 -05:00
Azalea d123a50054 [U] Detailed instructions
Closes #8
2024-02-07 16:39:46 -05:00
Azalea bd09e4017a [F] Fix build 2024-02-07 16:36:18 -05:00
Azalea 8b5e29d29e Update nightly.yml 2024-02-07 13:35:12 -08:00
Azalea 6e427b060a [O] Better build script 2024-02-07 16:26:59 -05:00
Azalea 7d0f70f1c0 [U] Update documentation 2024-02-07 05:42:40 -05:00
Azalea 5f1ca64d65 [O] Apply patches using reflection 2024-02-07 05:40:13 -05:00
Azalea fb58f08e44 [PR] #7 from tc21: skip-to-music
Add ability to skip a bunch of stuff directly to music selection
2024-02-07 05:26:17 -05:00
Tianyi Cao 017d00371d formatting 2024-02-07 02:22:45 -08:00
Tianyi Cao abe1d3ad29 Merge branch 'master' into tc21/skip-to-music 2024-02-07 02:20:39 -08:00
Azalea fc48ba1994 [U] Update readme 2024-02-07 05:18:47 -05:00
Tianyi Cao 279fe5dcb8 Add ability to skip a bunch of stuff directly to music selection 2024-02-07 02:17:00 -08:00
Azalea ccb3f7ef34 [+] Add cheat config 2024-02-07 05:16:07 -05:00
Azalea de12ec6548 [+] Ticket unlock patch 2024-02-07 05:15:48 -05:00
Azalea 14bd2480ce [+] Fix character selection crash 2024-02-07 05:15:18 -05:00
Azalea 8152b9ab0d [M] Migrate to tomlet 2024-02-07 04:06:58 -05:00
Azalea e6e4782d51 [O] Wording consistency 2024-02-07 03:56:07 -05:00
Azalea aa5f4fb986 [+] Add option 2024-02-07 03:53:13 -05:00
Azalea aa4fe50eeb Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-07 03:50:19 -05:00
Azalea df072f1c40 [F] Use yaml instead 2024-02-07 03:49:14 -05:00
Azalea 9b3e202eb8 [PR] Merge #6: Add single player mode
Add single player mode
2024-02-07 02:40:18 -05:00
Azalea b403189afb [+] Config 2024-02-07 02:38:36 -05:00
Tianyi Cao 82d076b87d Add single player mode, enabled by default 2024-02-06 23:38:36 -08:00
Azalea dcdf951ebc [+] Add Tomlyn dependency 2024-02-07 02:37:28 -05:00
Azalea 4c1f8e4005 [F] Fix actions 2024-02-07 02:00:14 -05:00
Azalea 672ecc7f0a [+] More libs 2024-02-07 01:59:12 -05:00
Azalea 81f05528d8 [F] Fix actions 2024-02-07 01:46:45 -05:00
Azalea 57214aadfc [F] Fix actions 2024-02-07 01:45:15 -05:00
Azalea 6209a0120b [F] Fix actions 2024-02-07 01:44:06 -05:00
Azalea 98dcb3fbcb [+] Encrypted DLL 2024-02-07 01:36:06 -05:00
Azalea 2211e1c816 Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-07 01:29:36 -05:00
Azalea 36bf37da8d [F] Fix actions 2024-02-06 22:17:54 -08:00
Azalea 21be74fb05 [M] Rename dotnet-desktop.yml to aquamai.yml 2024-02-06 22:17:21 -08:00
Azalea 870ca6cd7f Create dotnet-desktop.yml 2024-02-06 22:17:02 -08:00
Azalea 4e832a5eb2 Merge branch 'master' of https://github.com/hykilpikonna/AquaDX 2024-02-07 00:48:55 -05:00
Azalea 7b9c23c203 [O] Build nightly only when src change 2024-02-06 21:48:32 -08:00
Azalea fc91807e07 [M] Move data to docs 2024-02-07 00:47:17 -05:00
Azalea 8aab359b0b [+] AquaMai: Init project 2024-02-07 00:45:47 -05:00
Azalea Gui 363c9ff028 [+] maimai DX Tickets 2024-02-06 06:13:08 -05:00
Azalea Gui 2a800a825b [U] Update readme 2024-02-06 05:52:51 -05:00
Azalea Gui 36c1b1e0dd [U] openai migrate 2024-02-06 05:26:45 -05:00
Azalea Gui 01d7cdc7de [F] Fix conflict 2024-02-06 05:26:32 -05:00
6f25cb9017 Merge Gamer2097/AquaDX : Updated game notes and added ongeki A084 to 108
99a66858 - Update game_specific_notes.md
10bf6012 - add ongeki A084 to 108

Co-authored-by: Gamer2097 <antoniomarco200564@gmail.com>
Co-authored-by: Gamer2097 <63710393+Gamer2097@users.noreply.github.com>
2024-02-06 05:25:38 -05:00
Azalea Gui c4ff479af4 [+] Maimai 140 event data 2024-02-06 05:17:15 -05:00
Azalea Gui cc8406cd79 [+] Maimai extract script 2024-02-06 05:16:56 -05:00
Azalea Gui b94c1915a8 [+] Add kotlin 2024-02-06 05:16:41 -05:00
Gamer2097 99a6685845 Update game_specific_notes.md 2024-01-10 14:31:25 +01:00
Gamer2097 10bf60126e add ongeki A084 to 108 2024-01-08 15:24:34 +01:00
Azalea 14d8f0730f [U] Update readme 2023-12-28 14:20:01 -08:00
Azalea 618503ccf2 [O] Ignore non-existent release 2023-12-22 19:10:28 -05:00
Azalea f64a837172 [O] Optimize gh actions 2023-12-22 19:06:01 -05:00
Azalea 41d4de6150 [F] Fix github actions 2023-12-22 19:01:28 -05:00
Azalea bcf3333dd2 [F] Fix github actions 2023-12-22 15:37:55 -08:00
Azalea 47fda64c90 [U] Update chusan notes 2023-12-22 16:47:04 -05:00
Azalea 4fce05b7d1 [F] Fix github actions 2023-12-21 02:13:36 -05:00
Azalea 363bcc6060 [F] Fix github actions 2023-12-21 02:10:55 -05:00
Azalea bc734a5d25 [+] Nightly build action 2023-12-21 02:10:08 -05:00
Azalea 3f95678098 [+] Example systemd service 2023-12-21 01:52:11 -05:00
Azalea e52c971aed [+] Build action 2023-12-21 01:47:48 -05:00
Azalea 1f82067752 [F] Resolve name conflict 2023-12-21 01:39:50 -05:00
Azalea 0ac1a4c088 [-] Remove deploy script 2023-12-21 01:28:46 -05:00
Azalea Gui 0fda25b482 [+] Docker 2023-12-21 01:27:18 -05:00
Azalea dd70265cb6 [U] Update readme 2023-12-21 01:24:18 -05:00
62e7d48f3c Merge rinsama/aqua : Ensure Chusan compatibility and add support for SunPlus
7a7076b1 - [chusan]Attempting to ensure compatibility with all known versions of Chusan, both before and after SunPlus
c8e1c5fb - fix BooleanStringIntDeserializer always returns false
50ceaf60 - Add Support for sunplus

Co-authored-by: Sanheiii <35133371+Sanheiii@users.noreply.github.com>
Co-authored-by: HoshimiRIN <admin@sakuramoe.dev>
2023-12-21 01:05:06 -05:00
Azalea 4905106953 [O] Optimize merge script 2023-12-21 01:04:55 -05:00
Azalea 48edab452d [+] Merge script 2023-12-21 00:44:36 -05:00
HoshimiRIN 7a7076b174 [chusan]Attempting to ensure compatibility with all known versions of Chusan, both before and after SunPlus 2023-12-17 21:50:09 +08:00
Sanheiii c8e1c5fbb7 fix BooleanStringIntDeserializer always returns false 2023-12-16 15:39:49 +08:00
HoshimiRIN 50ceaf6097 Add Support for sunplus 2023-12-16 15:39:49 +08:00
Azalea 722d415e75 Merge pull request #4 from FeiZhaixiage/master
[API] Add a feature to get user photos.
2023-12-08 05:12:09 +09:00
肥宅虾哥 0d4221203b [API] Add a feature to retrieve user photos. 2023-12-08 02:49:19 +08:00
肥宅虾哥 4a64895e81 [api] Add maimai2 userPhoto API 2023-12-08 02:45:24 +08:00
肥宅虾哥 e271cb4555 [API] Add a feature to retrieve user photos.
Add:
Add a feature to retrieve user photos.
Fix bug:
Missing dependency: ObjectMapper
2023-12-08 02:21:49 +08:00
肥宅虾哥 0bf54e666b [API] Let web music list read from database
Add a feature to retrieve user photos.
2023-12-08 02:18:35 +08:00
肥宅虾哥 0913ef2060 [api] Add maimai2 userPhoto API 2023-12-08 02:14:20 +08:00
肥宅虾哥 7cc9fb11b6 Revert "New API to return user photos."
This reverts commit ba1f458907.
2023-12-08 02:10:49 +08:00
肥宅虾哥 9c51b1e0ee Revert "Add API - Get user photos (mai)"
This reverts commit e7848cb965.
2023-12-08 02:07:18 +08:00
肥宅虾哥 ba1f458907 New API to return user photos.
New API to return user photos.
2023-12-08 02:02:19 +08:00
肥宅虾哥 e7848cb965 Add API - Get user photos (mai)
Add:
New API to return  user photos.
Fix bug:
Missing dependency: ObjectMapper
2023-12-07 19:13:13 +08:00
Azalea 564ada10f5 Merge pull request #2 from FeiZhaixiage/patch-1 2023-12-06 03:07:40 +09:00
肥宅虾哥 48721ef7a9 Update Api - Add item list output by ItemKind.
Add item list output by ItemKind.
2023-12-05 23:56:32 +08:00
Azalea bae06e2187 Merge pull request #1 from FeiZhaixiage/master 2023-12-05 09:53:08 +09:00
肥宅虾哥 8b8e6cb422 Update ApiMaimai2PlayerDataController.java
Add API to save options settings.
2023-12-05 06:24:46 +08:00
Azalea Gui 2ecc990aae [F] Fix Found more than one migration with version 241 2023-11-15 00:35:20 -05:00
Azalea b47a841207 [F] chmod +x 2023-11-15 00:25:33 -05:00
199 changed files with 79269 additions and 144 deletions
Binary file not shown.
+26
View File
@@ -0,0 +1,26 @@
name: AquaMai Build
on:
push:
branches: [ master ]
jobs:
build:
runs-on: windows-latest
defaults:
run:
working-directory: ./AquaMai
steps:
- uses: actions/checkout@v4
- name: Setup MSBuild Path
uses: microsoft/setup-msbuild@v1.0.2
- name: Decrypt DLL
run: gpg -d --batch --passphrase "${{ secrets.DLL_PASSPHRASE }}" -o .\Libs\Assembly-CSharp.dll ..\.github\workflows\DATA
- name: Build with MSBuild
run: msbuild.exe .\AquaMai.csproj
+27
View File
@@ -0,0 +1,27 @@
name: Gradle Build
on:
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
server-id: github
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Build with Gradle
run: |
mkdir data
./gradlew build
+51
View File
@@ -0,0 +1,51 @@
# Build script credit to https://github.com/OpenIntelWireless/itlwm/blob/master/.github/workflows/main.yml
name: Nightly Build
on:
push:
branches: [master]
paths: ['src/**']
workflow_dispatch:
jobs:
build:
permissions: write-all
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: '10'
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
server-id: github
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
- name: Build Artifact
run: bash ./tools/build.sh
- name: Delete previous nightly release
run: |
gh release delete --cleanup-tag --yes --repo $GITHUB_REPOSITORY nightly || true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish GitHub Release
uses: ncipollo/release-action@v1
with:
bodyFile: "build/release/ReleaseNotes.md"
artifacts: "build/libs/aqua-nightly.jar,build/aqua-nightly.zip"
tag: "nightly"
token: ${{ secrets.GITHUB_TOKEN }}
draft: false
- name: Mark release undraft
run: |
gh release edit nightly --draft=false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+376
View File
@@ -0,0 +1,376 @@
# Created by https://www.toptal.com/developers/gitignore/api/git,visualstudio
# Edit at https://www.toptal.com/developers/gitignore?templates=git,visualstudio
### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*[.json, .xml, .info]
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# End of https://www.toptal.com/developers/gitignore/api/git,visualstudio
Output
.idea
Libs/Assembly-CSharp.dll
packages
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="mscorlib" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Xml" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+282
View File
@@ -0,0 +1,282 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{788BC472-59F7-46F6-B760-65C18BA74389}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AquaMai</RootNamespace>
<AssemblyName>AquaMai</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>false</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>true</Optimize>
<OutputPath>$(SolutionDir)Output\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Prefer32Bit>false</Prefer32Bit>
<DebugSymbols>false</DebugSymbols>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="0Harmony">
<HintPath>Libs\0Harmony.dll</HintPath>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>Libs\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="MelonLoader">
<HintPath>Libs\MelonLoader.dll</HintPath>
</Reference>
<Reference Include="Mono.Posix">
<HintPath>Libs\Mono.Posix.dll</HintPath>
</Reference>
<Reference Include="Mono.Security">
<HintPath>Libs\Mono.Security.dll</HintPath>
</Reference>
<Reference Include="mscorlib">
<HintPath>Libs\mscorlib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration">
<HintPath>Libs\System.Configuration.dll</HintPath>
</Reference>
<Reference Include="System.Core">
<HintPath>Libs\System.Core.dll</HintPath>
</Reference>
<Reference Include="System.Security">
<HintPath>Libs\System.Security.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<HintPath>Libs\System.Xml.dll</HintPath>
</Reference>
<Reference Include="Tomlet">
<HintPath>Libs\Tomlet.dll</HintPath>
</Reference>
<Reference Include="Unity.Analytics.DataPrivacy">
<HintPath>Libs\Unity.Analytics.DataPrivacy.dll</HintPath>
</Reference>
<Reference Include="Unity.TextMeshPro">
<HintPath>Libs\Unity.TextMeshPro.dll</HintPath>
</Reference>
<Reference Include="UnityEngine">
<HintPath>Libs\UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AccessibilityModule">
<HintPath>Libs\UnityEngine.AccessibilityModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AIModule">
<HintPath>Libs\UnityEngine.AIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AnimationModule">
<HintPath>Libs\UnityEngine.AnimationModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ARModule">
<HintPath>Libs\UnityEngine.ARModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AssetBundleModule">
<HintPath>Libs\UnityEngine.AssetBundleModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AudioModule">
<HintPath>Libs\UnityEngine.AudioModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.BaselibModule">
<HintPath>Libs\UnityEngine.BaselibModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ClothModule">
<HintPath>Libs\UnityEngine.ClothModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ClusterInputModule">
<HintPath>Libs\UnityEngine.ClusterInputModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ClusterRendererModule">
<HintPath>Libs\UnityEngine.ClusterRendererModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule">
<HintPath>Libs\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CrashReportingModule">
<HintPath>Libs\UnityEngine.CrashReportingModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.DirectorModule">
<HintPath>Libs\UnityEngine.DirectorModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.FileSystemHttpModule">
<HintPath>Libs\UnityEngine.FileSystemHttpModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.GameCenterModule">
<HintPath>Libs\UnityEngine.GameCenterModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.GridModule">
<HintPath>Libs\UnityEngine.GridModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.HotReloadModule">
<HintPath>Libs\UnityEngine.HotReloadModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ImageConversionModule">
<HintPath>Libs\UnityEngine.ImageConversionModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.IMGUIModule">
<HintPath>Libs\UnityEngine.IMGUIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.InputModule">
<HintPath>Libs\UnityEngine.InputModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.JSONSerializeModule">
<HintPath>Libs\UnityEngine.JSONSerializeModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.LocalizationModule">
<HintPath>Libs\UnityEngine.LocalizationModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.Networking">
<HintPath>Libs\UnityEngine.Networking.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ParticleSystemModule">
<HintPath>Libs\UnityEngine.ParticleSystemModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.PerformanceReportingModule">
<HintPath>Libs\UnityEngine.PerformanceReportingModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.Physics2DModule">
<HintPath>Libs\UnityEngine.Physics2DModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.PhysicsModule">
<HintPath>Libs\UnityEngine.PhysicsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ProfilerModule">
<HintPath>Libs\UnityEngine.ProfilerModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.ScreenCaptureModule">
<HintPath>Libs\UnityEngine.ScreenCaptureModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.SharedInternalsModule">
<HintPath>Libs\UnityEngine.SharedInternalsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.SpatialTracking">
<HintPath>Libs\UnityEngine.SpatialTracking.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.SpriteMaskModule">
<HintPath>Libs\UnityEngine.SpriteMaskModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.SpriteShapeModule">
<HintPath>Libs\UnityEngine.SpriteShapeModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.StreamingModule">
<HintPath>Libs\UnityEngine.StreamingModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.StyleSheetsModule">
<HintPath>Libs\UnityEngine.StyleSheetsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.SubstanceModule">
<HintPath>Libs\UnityEngine.SubstanceModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TerrainModule">
<HintPath>Libs\UnityEngine.TerrainModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TerrainPhysicsModule">
<HintPath>Libs\UnityEngine.TerrainPhysicsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TextCoreModule">
<HintPath>Libs\UnityEngine.TextCoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TextRenderingModule">
<HintPath>Libs\UnityEngine.TextRenderingModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TilemapModule">
<HintPath>Libs\UnityEngine.TilemapModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.Timeline">
<HintPath>Libs\UnityEngine.Timeline.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TimelineModule">
<HintPath>Libs\UnityEngine.TimelineModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.TLSModule">
<HintPath>Libs\UnityEngine.TLSModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>Libs\UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UIElementsModule">
<HintPath>Libs\UnityEngine.UIElementsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UIModule">
<HintPath>Libs\UnityEngine.UIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UmbraModule">
<HintPath>Libs\UnityEngine.UmbraModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UNETModule">
<HintPath>Libs\UnityEngine.UNETModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityAnalyticsModule">
<HintPath>Libs\UnityEngine.UnityAnalyticsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityConnectModule">
<HintPath>Libs\UnityEngine.UnityConnectModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityTestProtocolModule">
<HintPath>Libs\UnityEngine.UnityTestProtocolModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestAssetBundleModule">
<HintPath>Libs\UnityEngine.UnityWebRequestAssetBundleModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestAudioModule">
<HintPath>Libs\UnityEngine.UnityWebRequestAudioModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestModule">
<HintPath>Libs\UnityEngine.UnityWebRequestModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestTextureModule">
<HintPath>Libs\UnityEngine.UnityWebRequestTextureModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestWWWModule">
<HintPath>Libs\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.VehiclesModule">
<HintPath>Libs\UnityEngine.VehiclesModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.VFXModule">
<HintPath>Libs\UnityEngine.VFXModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.VideoModule">
<HintPath>Libs\UnityEngine.VideoModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.VRModule">
<HintPath>Libs\UnityEngine.VRModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.WindModule">
<HintPath>Libs\UnityEngine.WindModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.XRModule">
<HintPath>Libs\UnityEngine.XRModule.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Cheat\TicketUnlock.cs" />
<Compile Include="Config.cs" />
<Compile Include="Fix\FixCharaCrash.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Main.cs" />
<Compile Include="UX\SinglePlayer.cs" />
<Compile Include="UX\SkipWarningScreen.cs" />
<Compile Include="UX\SkipToMusicSelection.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="AquaMai.toml" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
+25
View File
@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33815.320
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AquaMai", "AquaMai.csproj", "{788BC472-59F7-46F6-B760-65C18BA74389}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{788BC472-59F7-46F6-B760-65C18BA74389}.Debug|Any CPU.ActiveCfg = Release|Any CPU
{788BC472-59F7-46F6-B760-65C18BA74389}.Debug|Any CPU.Build.0 = Release|Any CPU
{788BC472-59F7-46F6-B760-65C18BA74389}.Release|Any CPU.ActiveCfg = Release|Any CPU
{788BC472-59F7-46F6-B760-65C18BA74389}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DDF15A6C-2A44-4EBE-BD85-F3EE61DCD8BF}
EndGlobalSection
EndGlobal
+16
View File
@@ -0,0 +1,16 @@
# ===================================
# Cheat: You control the buttons you press
[Cheat]
# Unlock normally event-only tickets
TicketUnlock=true
# ===================================
# UX: User Experience Improvements
[UX]
# Skip the warning screen and logo shown after the POST sequence
SkipWarningScreen=true
# Single player: Show 1P only, at the center of the screen
SinglePlayer=true
# !!EXPERIMENTAL!! Skip from the card-scanning screen directly to music selection screen
SkipToMusicSelection=false
+40
View File
@@ -0,0 +1,40 @@
using Manager.MaiStudio;
using HarmonyLib;
namespace AquaMai.Cheat
{
/**
* Unlock tickets that are typically locked unless a specific event is open.
*/
public class TicketUnlock
{
// For any ticket, return the event ID 1 to unlock it
[HarmonyPrefix]
[HarmonyPatch(typeof(TicketData), "get_ticketEvent")]
public static bool get_ticketEvent(ref StringID __result)
{
var id = new Manager.MaiStudio.Serialize.StringID
{
id = 1,
str = "無期限常時解放"
};
var sid = new StringID();
sid.Init(id);
__result = sid;
return false;
}
// Modify the maxTicketNum to 0
// this is because TicketManager.GetTicketData adds the ticket to the list if either
// the player owns at least one ticket or the maxTicketNum = 0
[HarmonyPrefix]
[HarmonyPatch(typeof(TicketData), "get_maxCount")]
public static bool get_maxCount(ref int __result)
{
__result = 0;
return false;
}
}
}
+23
View File
@@ -0,0 +1,23 @@
using System.Diagnostics.CodeAnalysis;
namespace AquaMai
{
[SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")]
public class Config
{
public UXConfig UX { get; set; }
public CheatConfig Cheat { get; set; }
public class CheatConfig
{
public bool TicketUnlock { get; set; }
}
public class UXConfig
{
public bool SkipWarningScreen { get; set; }
public bool SinglePlayer { get; set; }
public bool SkipToMusicSelection { get; set; }
}
}
}
+44
View File
@@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using HarmonyLib;
using Process;
using Util;
namespace AquaMai.Fix
{
/**
* Fix character selection crashing due to missing character data
*/
public class FixCharaCrash
{
// Check if the return is null. If it is, make up a color
[HarmonyPostfix]
[HarmonyPatch(typeof(CharacterSelectProces), "GetMapColorData")]
public static void GetMapColorData(ref CharacterSelectProces __instance, ref CharacterMapColorData __result)
{
if (__result != null) return;
// 1 is a color that definitely exists
if (MapMaster.GetSlotData(1) == null)
{
MapMaster.GetSlotData(1).Load();
}
__result = MapMaster.GetSlotData(1);
}
// This is called when loading the music selection screen, to display characters on the top screen
[HarmonyPrefix]
[HarmonyPatch(typeof(Monitor.CommonMonitor), "SetCharacterSlot", new Type[] { typeof(MessageCharactorInfomationData) })]
public static bool SetCharacterSlot(ref MessageCharactorInfomationData data, Dictionary<int, CharacterSlotData> ____characterSlotData)
{
// Some characters are not found in this dictionary. We simply skip loading those characters
if (!____characterSlotData.ContainsKey(data.MapKey))
{
Console.Log($"Could not get CharacterSlotData for character [Index={data.Index}, MapKey={data.MapKey}], ignoring...");
return false;
}
return true;
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+84
View File
@@ -0,0 +1,84 @@
using System;
using AquaMai.Fix;
using MelonLoader;
using Tomlet;
namespace AquaMai
{
public static class BuildInfo
{
public const string Name = "AquaMai";
public const string Description = "Mod for Sinmai";
public const string Author = "Aza";
public const string Company = null;
public const string Version = "1.0.0";
public const string DownloadLink = null;
}
public class AquaMai : MelonMod
{
public static Config AppConfig { get; private set; }
private static void Patch(Type type)
{
MelonLogger.Msg($"> Patching {type}");
HarmonyLib.Harmony.CreateAndPatchAll(type);
}
/**
* Apply patches using reflection, based on the settings
*/
private static void ApplyPatches()
{
// Iterate over all properties of AppConfig
foreach (var categoryProp in AppConfig.GetType().GetProperties())
{
// Get the value of the category property (e.g., UX, Cheat)
var categoryValue = categoryProp.GetValue(AppConfig);
if (categoryValue == null) continue;
var categoryType = categoryValue.GetType();
// Iterate over properties in the category (e.g., SkipWarningScreen, SinglePlayer)
foreach (var settingProp in categoryType.GetProperties())
{
// The property should be a boolean
if (settingProp.PropertyType != typeof(bool)) continue;
// Check if the boolean value is true
if (!(bool) settingProp.GetValue(categoryValue)) continue;
// Get the Type from the config directive name
var directiveType = Type.GetType($"AquaMai.{categoryProp.Name}.{settingProp.Name}");
// If the type is found, call the Patch method
if (directiveType != null) Patch(directiveType);
else MelonLogger.Error($"Type not found for {categoryProp.Name}.{settingProp.Name}");
}
}
}
public override void OnInitializeMelon()
{
MelonLogger.Msg("Loading mod settings...");
// Check if AquaMai.toml exists
if (!System.IO.File.Exists("AquaMai.toml"))
{
MelonLogger.Error("AquaMai.toml not found! Please create it.");
return;
}
// Read AquaMai.toml to load settings
AppConfig = TomletMain.To<Config>(System.IO.File.ReadAllText("AquaMai.toml"));
// Apply patches based on the settings
ApplyPatches();
// Fixes that does not have side effects
// These don't need to be configurable
Patch(typeof(FixCharaCrash));
MelonLogger.Msg("Loaded!");
}
}
}
+18
View File
@@ -0,0 +1,18 @@
using System.Reflection;
using MelonLoader;
[assembly: AssemblyTitle(AquaMai.BuildInfo.Description)]
[assembly: AssemblyDescription(AquaMai.BuildInfo.Description)]
[assembly: AssemblyCompany(AquaMai.BuildInfo.Company)]
[assembly: AssemblyProduct(AquaMai.BuildInfo.Name)]
[assembly: AssemblyCopyright("Created by " + AquaMai.BuildInfo.Author)]
[assembly: AssemblyTrademark(AquaMai.BuildInfo.Company)]
[assembly: AssemblyVersion(AquaMai.BuildInfo.Version)]
[assembly: AssemblyFileVersion(AquaMai.BuildInfo.Version)]
[assembly: MelonInfo(typeof(AquaMai.AquaMai), AquaMai.BuildInfo.Name, AquaMai.BuildInfo.Version, AquaMai.BuildInfo.Author, AquaMai.BuildInfo.DownloadLink)]
[assembly: MelonColor()]
// Create and Setup a MelonGame Attribute to mark a Melon as Universal or Compatible with specific Games.
// If no MelonGame Attribute is found or any of the Values for any MelonGame Attribute on the Melon is null or empty it will be assumed the Melon is Universal.
// Values for MelonGame Attribute can be found in the Game's app.info file or printed at the top of every log directly beneath the Unity version.
[assembly: MelonGame(null, null)]
+33
View File
@@ -0,0 +1,33 @@
## AquaMai
This mod is heavily WIP. More details will be added as the development progresses.
### Features
**Cheats**
* Unlock all tickets
**UX Optimization**
* Remove the starting logo and warning cutscene
* Single Player (1P) mode
* Skip from card scanning directly to music selection (experimental)
**Bug Fixes**
* Fix crash in the character selection screen
### Development
1. Copy `Assembly-CSharp.dll` to `Libs` folder.
2. Install [.NET Framework 4.7.2 Developer Pack](https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net472-developer-pack-offline-installer)
3. Open `AquaMai.sln` in JetBrains Rider.
4. Build the solution.
5. Copy `Output/AquaMai.dll` to `Mods` folder.
6. Configure and copy `AquaMai.toml` to the same folder as your game executable: `Sinmai.exe`
### Relevant Links
* [MelonLoader Wiki](https://melonwiki.xyz/#/modders/quickstart)
* [Harmony Docs](https://harmony.pardeike.net/articles/patching-prefix.html)
+32
View File
@@ -0,0 +1,32 @@
using System;
using HarmonyLib;
using UnityEngine;
namespace AquaMai.UX
{
// Hides the 2p (right hand side) UI.
// Note: this is not my original work. I simply interpreted the code and rewrote it as a mod.
public class SinglePlayer
{
[HarmonyPrefix]
[HarmonyPatch(typeof(Main.GameMain), "LateInitialize", new Type[] { typeof(MonoBehaviour), typeof(Transform), typeof(Transform) })]
public static bool LateInitialize(MonoBehaviour gameMainObject, ref Transform left, ref Transform right)
{
left.transform.position = Vector3.zero;
right.localScale = Vector3.zero;
GameObject.Find("Mask").SetActive(false);
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(MeshButton), "IsPointInPolygon", new Type[] { typeof(Vector2[]), typeof(Vector2) })]
public static bool IsPointInPolygon(Vector2[] polygon, ref Vector2 point)
{
var screenWidth = Screen.width;
point = new Vector2(point.x - (screenWidth / 2), point.y);
return true;
}
}
}
+26
View File
@@ -0,0 +1,26 @@
using HarmonyLib;
using Manager;
using Process;
using Process.Information;
namespace AquaMai.UX
{
public class SkipToMusicSelection
{
/*
* Highly experimental, may well break some stuff
* Works by overriding the info screen (where it shows new events and stuff)
* to directly exit to the music selection screen, skipping character and
* event selection, among others
*/
[HarmonyPrefix]
[HarmonyPatch(typeof(InformationProcess), "OnUpdate")]
public static bool OnUpdate(InformationProcess __instance, ProcessDataContainer ___container)
{
GameManager.SetMaxTrack();
___container.processManager.AddProcess(new MusicSelectProcess(___container));
___container.processManager.ReleaseProcess(__instance);
return false;
}
}
}
+28
View File
@@ -0,0 +1,28 @@
using HarmonyLib;
using Monitor;
namespace AquaMai.UX
{
public class SkipWarningScreen
{
/*
* Patch PlayLogo to disable the warning screen
*/
[HarmonyPrefix]
[HarmonyPatch(typeof (WarningMonitor), "PlayLogo")]
public static bool PlayLogo()
{
// Return false to block the original method
return false;
}
[HarmonyPrefix]
[HarmonyPatch(typeof (WarningMonitor), "IsLogoAnimationEnd")]
public static bool IsLogoAnimationEnd(ref bool __result)
{
// Always return true to indicate the animation has ended
__result = true;
return false;
}
}
}
+41
View File
@@ -0,0 +1,41 @@
// ..eslintrc.cjs example
module.exports = {
root: true,
env: {
browser: true,
es2023: true
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:svelte/recommended',
],
ignorePatterns: ['dist', '..eslintrc.cjs'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module'
},
rules: {
// Custom styling rules
'comma-dangle': ['warn', 'only-multiline'],
'indent': ['warn', 2],
'semi': ['warn', 'never'],
'quotes': ['warn', 'single'],
'arrow-parens': ['warn', 'as-needed'],
'linebreak-style': ['warn', 'unix'],
'object-curly-spacing': ['warn', 'always'],
'array-bracket-spacing': ["error", "always", {
"singleValue": false,
"objectsInArrays": false,
"arraysInArrays": false
}],
// Disabled rules
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'no-constant-condition': 'off',
'@typescript-eslint/no-explicit-any': 'off',
},
}
+24
View File
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
+22
View File
@@ -0,0 +1,22 @@
# AquaNet
This is the codebase for the new frontend of AquaDX.
This project is also heavily WIP, so more details will be added later on.
## Development
This project uses Svelte (NOT SvelteKit) + TypeScript + Sass, built using Vite.
The preferred editor is IntelliJ IDEA, but VSCode can pass as well.
Please check out [SVELTE.md](SVELTE.md) for more details on the technical aspects of the project.
### Running locally
First, you would need to install Node.js and yarn.
Then, you would need to start your testing AquaDX server and configure the `aqua_host` in `src/libs/config.ts` to use your URL.
Please leave `data_host` unchanged if you're not sure what it is.
Finally, run:
```shell
yarn install
yarn dev
```
+35
View File
@@ -0,0 +1,35 @@
## Technical considerations
**Why use this over SvelteKit?**
- It brings its own routing solution which might not be preferable for some users.
- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.
**Why include `.vscode/extensions.json`?**
Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
**Why enable `allowJs` in the TS template?**
While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.
**Why is HMR not preserving my local component state?**
HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr).
If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
```ts
// store.ts
// An extremely simple external store
import { writable } from 'svelte/store'
export default writable(0)
```
+43
View File
@@ -0,0 +1,43 @@
# Data server for Aqua frontend
server
{
listen 443 ssl;
listen [::]:443 ssl;
server_name aqua-data.example.com;
# / should redirect to the actual website aquadx.hydev.org
location / {
return 301 https://example.com;
}
# /maimai should be a file server on /etc/nginx/aqua-data/maimai
# These are generated using:
# cd Package/Sinmai_Data/StreamingAssets/A000
# mkdir -p /etc/nginx/aqua-data/maimai
# python3 AquaDX/tools/data_convert.py .. /etc/nginx/aqua-data/maimai/meta
# rm -rf MovieData SoundData
# (Open AssetRipper and open folder Package/Sinmai_Data)
# (Export all assets to /tmp/maimai)
# cd /tmp/maimai/ExportedProject/Assets
# find -name "*.meta" -delete -print
# find -name "*.asset" -delete -print
# cp -r assetbundle Texture2D Resources/common/sprites /etc/nginx/aqua-data/maimai
# rm -rf /tmp/maimai
location /maimai {
root /etc/nginx/aqua-data;
# Specify UTF-8 encoding
charset utf-8;
# CORS allow all
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
autoindex on;
}
ssl_certificate /dev/null;
ssl_certificate_key /dev/null;
}

Some files were not shown because too many files have changed in this diff Show More