Compare commits
74 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a3d062e5c | ||
|
|
2ee9ed237f | ||
|
|
9159661945 | ||
|
|
0efd2c8044 | ||
|
|
0aaa5822fb | ||
|
|
2b258aeaed | ||
|
|
0d7a80f2b5 | ||
|
|
d433d98c04 | ||
|
|
180dc12460 | ||
|
|
dd1d0b4126 | ||
|
|
f1517fad1a | ||
|
|
62ed279f07 | ||
|
|
6925d59f87 | ||
|
|
848cc41c72 | ||
|
|
f212076604 | ||
|
|
ee4fd51e0f | ||
|
|
f96b4f6724 | ||
|
|
7b6f2f826a | ||
|
|
8ed4fd6cba | ||
|
|
b914cb26be | ||
|
|
97472e9a17 | ||
|
|
dece8c0daa | ||
|
|
5796d1af32 | ||
|
|
06d7a1df6b | ||
|
|
ed293ddad8 | ||
|
|
d7a92344e5 | ||
|
|
3fa020fe91 | ||
|
|
ce19af7da0 | ||
|
|
e558a9fc9d | ||
|
|
fb5544ce0f | ||
|
|
051f0d484c | ||
|
|
108cbea686 | ||
|
|
8b61bd7d8a | ||
|
|
1699a2b68a | ||
|
|
2fca95e81b | ||
|
|
969aa87a10 | ||
|
|
b3dfa7d7ce | ||
|
|
483de50169 | ||
|
|
96762ffa5c | ||
|
|
88d05c2354 | ||
|
|
8aac152ee6 | ||
|
|
d83779662a | ||
|
|
c19e656d46 | ||
|
|
4631a2f440 | ||
|
|
338f5811a1 | ||
|
|
bc634b2eeb | ||
|
|
23cbb9e261 | ||
|
|
fbfbf3c32b | ||
|
|
3073a2e90d | ||
|
|
29e4dc93ab | ||
|
|
2b16a20032 | ||
|
|
59b412899d | ||
|
|
e656ab5e1d | ||
|
|
b90c06da72 | ||
|
|
f62f3652e2 | ||
|
|
dbbec9d2bd | ||
|
|
1be8189058 | ||
|
|
b8b3160ccd | ||
|
|
54fd3995e6 | ||
|
|
e506190c7f | ||
|
|
8f418a0da9 | ||
|
|
0403ee91ea | ||
|
|
47d1856143 | ||
|
|
e521f0fea0 | ||
|
|
eb1e7fd15a | ||
|
|
c9e0a58232 | ||
|
|
9acd8b54e3 | ||
|
|
acd66b1634 | ||
|
|
3820855812 | ||
|
|
056abe7b68 | ||
|
|
bf05b1bda2 | ||
|
|
77a3c146c0 | ||
|
|
5761f7f543 | ||
|
|
5ed5b543ce |
10
.github/build/linux/dev/template.desktop
vendored
10
.github/build/linux/dev/template.desktop
vendored
@@ -1,10 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Techmino Development
|
||||
Comment=Techmino is fun!
|
||||
MimeType=application/x-love-game;
|
||||
Exec=app %f
|
||||
Type=Application
|
||||
Categories=Game;
|
||||
Terminal=false
|
||||
Icon=icon
|
||||
NoDisplay=false
|
||||
1
.github/build/linux/release/.gitattributes
vendored
1
.github/build/linux/release/.gitattributes
vendored
@@ -1 +0,0 @@
|
||||
*.template text eol=lf
|
||||
10
.github/build/linux/release/template.desktop
vendored
10
.github/build/linux/release/template.desktop
vendored
@@ -1,10 +0,0 @@
|
||||
[Desktop Entry]
|
||||
Name=Techmino
|
||||
Comment=Techmino is fun!
|
||||
MimeType=application/x-love-game;
|
||||
Exec=app %f
|
||||
Type=Application
|
||||
Categories=Game;
|
||||
Terminal=false
|
||||
Icon=icon
|
||||
NoDisplay=false
|
||||
7
.github/build/windows/dev/template.rc
vendored
7
.github/build/windows/dev/template.rc
vendored
@@ -8,9 +8,12 @@ FILETYPE 0x1
|
||||
{
|
||||
BLOCK "040904B0"
|
||||
{
|
||||
VALUE "FileDescription", "Techmino Development"
|
||||
VALUE "CompanyName", "26F Studio"
|
||||
VALUE "LegalCopyright", "Copyright @ 26F Studio"
|
||||
VALUE "FileDescription", "Techmino Development"
|
||||
VALUE "FileVersion", "@Version"
|
||||
VALUE "InternalName", "Techmino"
|
||||
VALUE "LegalCopyright", "Copyright © 2019-2023 26F-Studio. Some Rights Reserved."
|
||||
VALUE "OriginalFilename", "Techmino.exe"
|
||||
VALUE "ProductName", "Techmino"
|
||||
VALUE "ProductVersion", "@Version"
|
||||
}
|
||||
|
||||
7
.github/build/windows/release/template.rc
vendored
7
.github/build/windows/release/template.rc
vendored
@@ -8,9 +8,12 @@ FILETYPE 0x1
|
||||
{
|
||||
BLOCK "040904B0"
|
||||
{
|
||||
VALUE "FileDescription", "Techmino"
|
||||
VALUE "CompanyName", "26F Studio"
|
||||
VALUE "LegalCopyright", "Copyright @ 26F Studio"
|
||||
VALUE "FileDescription", "Techmino"
|
||||
VALUE "FileVersion", "@Version"
|
||||
VALUE "InternalName", "Techmino"
|
||||
VALUE "LegalCopyright", "Copyright © 2019-2023 26F-Studio. Some Rights Reserved."
|
||||
VALUE "OriginalFilename", "Techmino.exe"
|
||||
VALUE "ProductName", "Techmino"
|
||||
VALUE "ProductVersion", "@Version"
|
||||
}
|
||||
|
||||
189
.github/workflows/main.yml
vendored
189
.github/workflows/main.yml
vendored
@@ -99,6 +99,11 @@ jobs:
|
||||
with:
|
||||
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
|
||||
path: ${{ env.CORE_LOVE_PACKAGE_PATH }}
|
||||
- name: Add icon to love package
|
||||
run: |
|
||||
cp ./.github/build/linux/${{ env.BUILD_TYPE }}/icon.png media/image/icon.png
|
||||
zip -u ${{ env.CORE_LOVE_PACKAGE_PATH }} media/image/icon.png
|
||||
rm media/image/icon.png
|
||||
- name: Rename love package
|
||||
run: |
|
||||
mkdir -p ${{ env.OUTPUT_FOLDER }}
|
||||
@@ -123,12 +128,20 @@ jobs:
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
- name: Get transfer
|
||||
shell: bash
|
||||
run: |
|
||||
curl -sL --retry 5 https://raw.githubusercontent.com/Mikubill/transfer/master/install.sh | sh
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
run: |
|
||||
curl -sL https://git.io/file-transfer | sh
|
||||
./transfer wet -s -p 16 --no-progress ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.love 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer wet -s -p 16 --no-progress ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.love 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
|
||||
auto-test:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -163,12 +176,12 @@ jobs:
|
||||
import os
|
||||
import re
|
||||
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
|
||||
if "${{ env.BUILD_TYPE }}" == "dev":
|
||||
if "${{ env.BUILD_TYPE }}" == "dev":
|
||||
f.write('bundle-id=org.f26_studio.' + re.sub(r'[^A-Za-z0-9]+', '_', '${{ needs.get-info.outputs.app-name }}') + '.snapshot\n')
|
||||
f.write('product-name=' + re.sub(r'[^A-Za-z0-9]+', '_', '${{ needs.get-info.outputs.app-name }}') + '_Snapshot\n')
|
||||
f.write('product-name=' + re.sub(r'[^A-Za-z0-9]+', '-', '${{ needs.get-info.outputs.app-name }}') + '_Snapshot\n')
|
||||
else:
|
||||
f.write('bundle-id=org.f26_studio.' + re.sub(r'[^A-Za-z0-9]+', '_', '${{ needs.get-info.outputs.app-name }}') + '\n')
|
||||
f.write('product-name=' + re.sub(r'[^A-Za-z0-9]+', '_', '${{ needs.get-info.outputs.app-name }}') + '\n')
|
||||
f.write('product-name=' + re.sub(r'[^A-Za-z0-9]+', '-', '${{ needs.get-info.outputs.app-name }}') + '\n')
|
||||
- name: Download core love package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
@@ -180,7 +193,7 @@ jobs:
|
||||
dir: ./libAndroid
|
||||
- name: Build Android packages
|
||||
id: build-packages
|
||||
uses: love-actions/love-actions-android@v1
|
||||
uses: love-actions/love-actions-android@main
|
||||
with:
|
||||
app-name: ${{ needs.get-info.outputs.app-name }}
|
||||
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
|
||||
@@ -192,6 +205,7 @@ jobs:
|
||||
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
|
||||
resource-path: ./.github/build/android/${{ env.BUILD_TYPE }}/res
|
||||
extra-assets: ./libAndroid/
|
||||
custom-scheme: studio26f://oauth
|
||||
product-name: ${{ steps.process-app-name.outputs.product-name }}
|
||||
version-string: ${{ needs.get-info.outputs.version-string }}
|
||||
version-code: ${{ needs.get-info.outputs.version-code }}
|
||||
@@ -216,12 +230,20 @@ jobs:
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
- name: Get transfer
|
||||
shell: bash
|
||||
run: |
|
||||
curl -sL --retry 5 https://raw.githubusercontent.com/Mikubill/transfer/master/install.sh | sh
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
run: |
|
||||
curl -sL https://git.io/file-transfer | sh
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
|
||||
build-ios:
|
||||
runs-on: macos-latest
|
||||
@@ -260,7 +282,7 @@ jobs:
|
||||
with:
|
||||
app-name: ${{ needs.get-info.outputs.app-name }}
|
||||
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
|
||||
copyright: "Copyright © 2019-2022 26F-Studio. Some Rights Reserved."
|
||||
copyright: "Copyright © 2019-2023 26F-Studio. Some Rights Reserved."
|
||||
icon-path: ./.github/build/iOS/${{ env.BUILD_TYPE }}/icon
|
||||
love-patch: ./.github/build/iOS/love.patch
|
||||
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
|
||||
@@ -305,12 +327,20 @@ jobs:
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
- name: Get transfer
|
||||
shell: bash
|
||||
run: |
|
||||
wget -qO- https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_darwin_amd64.tar.gz | tar xvz
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
|
||||
build-linux:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -330,12 +360,20 @@ jobs:
|
||||
run: |
|
||||
import os
|
||||
import re
|
||||
|
||||
product_name = re.sub(r'[^A-Za-z0-9]+', '-', '${{ needs.get-info.outputs.app-name }}').strip('-').lower()
|
||||
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
|
||||
f.write('product-name=' + re.sub(r'[^A-Za-z0-9]+', '_', '${{ needs.get-info.outputs.app-name }}') + '\n')
|
||||
f.write('bundle-id=org.26f-studio.' + product_name + '\n')
|
||||
f.write('product-name=' + product_name + '\n')
|
||||
- name: Download core love package
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
|
||||
- name: Add icon to love package
|
||||
run: |
|
||||
cp ./.github/build/linux/${{ env.BUILD_TYPE }}/icon.png media/image/icon.png
|
||||
zip -u ${{ env.CORE_LOVE_PACKAGE_PATH }} media/image/icon.png
|
||||
rm media/image/icon.png
|
||||
- name: Download ColdClear
|
||||
uses: ./.github/actions/get-cc
|
||||
with:
|
||||
@@ -351,8 +389,10 @@ jobs:
|
||||
id: build-packages
|
||||
uses: love-actions/love-actions-linux@v1
|
||||
with:
|
||||
desktop-file-path: ./.github/build/linux/${{ env.BUILD_TYPE }}/template.desktop
|
||||
executable-name: app
|
||||
app-name: ${{ needs.get-info.outputs.app-name }}
|
||||
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
|
||||
description: Techmino is fun!
|
||||
version-string: ${{ needs.get-info.outputs.version-string }}
|
||||
icon-path: ./.github/build/linux/${{ env.BUILD_TYPE }}/icon.png
|
||||
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
|
||||
lib-path: ./ColdClear/lib
|
||||
@@ -363,27 +403,43 @@ jobs:
|
||||
with:
|
||||
name: ${{ needs.get-info.outputs.base-name }}_Linux_AppImage
|
||||
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.AppImage
|
||||
- name: Upload Debian artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ needs.get-info.outputs.base-name }}_Linux_Debian
|
||||
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.deb
|
||||
- name: Prepare for release
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p ${{ env.RELEASE_FOLDER }}
|
||||
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.AppImage ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Linux.AppImage
|
||||
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.deb ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Linux.deb
|
||||
- name: Upload release
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Linux.AppImage
|
||||
artifacts: |
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Linux.AppImage
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Linux.deb
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
- name: Get transfer
|
||||
shell: bash
|
||||
run: |
|
||||
curl -sL --retry 5 https://raw.githubusercontent.com/Mikubill/transfer/master/install.sh | sh
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
run: |
|
||||
curl -sL https://git.io/file-transfer | sh
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
|
||||
build-macos-appstore:
|
||||
runs-on: macos-latest
|
||||
@@ -426,7 +482,7 @@ jobs:
|
||||
with:
|
||||
app-name: ${{ needs.get-info.outputs.app-name }}
|
||||
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
|
||||
copyright: "Copyright © 2019-2022 26F-Studio. Some Rights Reserved."
|
||||
copyright: "Copyright © 2019-2023 26F-Studio. Some Rights Reserved."
|
||||
icon-path: ./.github/build/macOS/${{ env.BUILD_TYPE }}/icon.icns
|
||||
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
|
||||
libs-path: ./ColdClear/universal/
|
||||
@@ -470,12 +526,20 @@ jobs:
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
- name: Get transfer
|
||||
shell: bash
|
||||
run: |
|
||||
wget -qO- https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_darwin_amd64.tar.gz | tar xvz
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
|
||||
build-macos-portable:
|
||||
runs-on: macos-latest
|
||||
@@ -518,7 +582,7 @@ jobs:
|
||||
with:
|
||||
app-name: ${{ needs.get-info.outputs.app-name }}
|
||||
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
|
||||
copyright: "Copyright © 2019-2022 26F-Studio. Some Rights Reserved."
|
||||
copyright: "Copyright © 2019-2023 26F-Studio. Some Rights Reserved."
|
||||
icon-path: ./.github/build/macOS/${{ env.BUILD_TYPE }}/icon.icns
|
||||
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
|
||||
libs-path: ./ColdClear/universal/
|
||||
@@ -568,16 +632,26 @@ jobs:
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_portable.pkg, ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_portable.dmg
|
||||
artifacts: |
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_portable.pkg
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_portable.dmg
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
- name: Get transfer
|
||||
shell: bash
|
||||
run: |
|
||||
wget -qO- https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_darwin_amd64.tar.gz | tar xvz
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
|
||||
|
||||
build-windows:
|
||||
runs-on: windows-latest
|
||||
@@ -608,6 +682,19 @@ jobs:
|
||||
with:
|
||||
platform: Windows
|
||||
dir: ./ColdClear
|
||||
- name: Update Windows template
|
||||
shell: python3 {0}
|
||||
run: |
|
||||
version_string = "${{ needs.get-info.outputs.version-string }}"
|
||||
file_version = (f"{version_string.replace('.', ',')},0")
|
||||
with open("./.github/build/windows/${{ env.BUILD_TYPE }}/template.rc", "r+", encoding="utf8") as file:
|
||||
data = file.read()
|
||||
data = data\
|
||||
.replace("@Version", version_string)\
|
||||
.replace("@FileVersion", file_version)
|
||||
file.seek(0)
|
||||
file.truncate()
|
||||
file.write(data)
|
||||
- name: Build Windows packages
|
||||
id: build-packages
|
||||
uses: love-actions/love-actions-windows@v1
|
||||
@@ -618,7 +705,9 @@ jobs:
|
||||
extra-assets-x86: ./ColdClear/x86/CCloader.dll ./ColdClear/x86/cold_clear.dll
|
||||
extra-assets-x64: ./ColdClear/x64/CCloader.dll ./ColdClear/x64/cold_clear.dll
|
||||
product-name: ${{ steps.process-app-name.outputs.product-name }}
|
||||
version-string: ${{ needs.get-info.outputs.version-string }}
|
||||
app-id: ${{ secrets.WINDOWS_APP_ID }}
|
||||
project-website: https://www.studio26f.org/
|
||||
installer-languages: ChineseSimplified.isl ChineseTraditional.isl English.isl Spanish.isl French.isl Indonesian.isl Japanese.isl Portuguese.isl
|
||||
output-folder: ${{ env.OUTPUT_FOLDER }}
|
||||
- name: Upload 32-bit artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
@@ -630,6 +719,11 @@ jobs:
|
||||
with:
|
||||
name: ${{ needs.get-info.outputs.base-name }}_Windows_x64
|
||||
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_x64.zip
|
||||
- name: Upload installer artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ needs.get-info.outputs.base-name }}_Windows_installer
|
||||
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_installer.exe
|
||||
- name: Prepare for release
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
|
||||
shell: bash
|
||||
@@ -637,12 +731,16 @@ jobs:
|
||||
mkdir -p ${{ env.RELEASE_FOLDER }}
|
||||
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_x86.zip ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_x86.zip
|
||||
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_x64.zip ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_x64.zip
|
||||
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_installer.exe ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_installer.exe
|
||||
- name: Upload release
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_x86.zip, ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_x64.zip
|
||||
artifacts: |
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_x86.zip
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_x64.zip
|
||||
${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Windows_installer.exe
|
||||
body: ${{ needs.get-info.outputs.update-note }}
|
||||
name: ${{ needs.get-info.outputs.update-title }}
|
||||
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
|
||||
@@ -651,15 +749,20 @@ jobs:
|
||||
TEMP_PATH: ./temp.zip
|
||||
shell: bash
|
||||
run: |
|
||||
curl -L --retry 5 https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_windows_amd64.zip -o ${{ env.TEMP_PATH }}
|
||||
curl -sL --retry 5 https://github.com/Mikubill/transfer/releases/download/v0.4.17/transfer_0.4.17_windows_amd64.zip -o ${{ env.TEMP_PATH }}
|
||||
7z x ${{ env.TEMP_PATH }} -o./
|
||||
rm ${{ env.TEMP_PATH }}
|
||||
- name: Upload to WeTransfer
|
||||
id: transfer
|
||||
shell: pwsh
|
||||
run: |
|
||||
./transfer.exe wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
"download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $env:GITHUB_OUTPUT
|
||||
uses: nick-fields/retry@v2
|
||||
with:
|
||||
max_attempts: 5
|
||||
retry_wait_seconds: 10
|
||||
shell: pwsh
|
||||
timeout_minutes: 5
|
||||
command: |
|
||||
./transfer.exe wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
|
||||
"download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $env:GITHUB_OUTPUT
|
||||
|
||||
post-build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
69
conf.lua
69
conf.lua
@@ -1,28 +1,63 @@
|
||||
SYSTEM=love._os if SYSTEM=='OS X' then SYSTEM='macOS' end
|
||||
MOBILE=SYSTEM=='Android' or SYSTEM=='iOS'
|
||||
FNNS=SYSTEM:find'\79\83'-- What does FNSF stand for? IDK so don't ask me lol
|
||||
|
||||
function love.conf(t)
|
||||
t.identity='Techmino'-- Saving folder
|
||||
t.version="11.1"
|
||||
local identity='Techmino'
|
||||
local msaa=0
|
||||
local portrait=false
|
||||
|
||||
local fs=love.filesystem
|
||||
fs.setIdentity(identity)
|
||||
do -- Load grapgic settings from conf/settings
|
||||
local fileData=fs.read('conf/settings')
|
||||
if fileData then
|
||||
msaa=tonumber(fileData:match('"msaa":(%d+)')) or 0;
|
||||
portrait=MOBILE and fileData:find('"portrait":true') and true
|
||||
end
|
||||
end
|
||||
|
||||
t.identity=identity -- Saving folder
|
||||
t.version="11.4"
|
||||
t.gammacorrect=false
|
||||
t.appendidentity=true-- Search files in source then in save directory
|
||||
t.accelerometerjoystick=false-- Accelerometer=joystick on ios/android
|
||||
t.appendidentity=true -- Search files in source then in save directory
|
||||
t.accelerometerjoystick=false -- Accelerometer=joystick on ios/android
|
||||
if t.audio then
|
||||
t.audio.mic=false
|
||||
t.audio.mixwithsystem=true
|
||||
end
|
||||
|
||||
local W=t.window
|
||||
W.title="Techmino "..require"version".string
|
||||
W.width,W.height=1280,720
|
||||
W.minwidth,W.minheight=640,360
|
||||
W.borderless=false
|
||||
W.resizable=true
|
||||
W.fullscreen=false
|
||||
W.vsync=0-- Unlimited FPS
|
||||
W.msaa=0-- Multi-sampled antialiasing
|
||||
W.depth=0-- Bits/samp of depth buffer
|
||||
W.stencil=1-- Bits/samp of stencil buffer
|
||||
W.display=1-- Monitor ID
|
||||
W.highdpi=true-- High-dpi mode for the window on a Retina display
|
||||
W.x,W.y=nil
|
||||
W.title="Techmino "..require "version".string
|
||||
if portrait then
|
||||
W.width,W.height=720,1280
|
||||
W.minwidth,W.minheight=360,640
|
||||
else
|
||||
W.width,W.height=1280,720
|
||||
W.minwidth,W.minheight=640,360
|
||||
end
|
||||
|
||||
W.vsync=0 -- Unlimited FPS
|
||||
W.msaa=msaa -- Multi-sampled antialiasing
|
||||
W.depth=0 -- Bits/samp of depth buffer
|
||||
W.stencil=1 -- Bits/samp of stencil buffer
|
||||
W.display=1 -- Monitor ID
|
||||
W.highdpi=true -- High-dpi mode for the window on a Retina display
|
||||
W.x,W.y=nil,nil -- Position of the window
|
||||
|
||||
if fs.getInfo('media/image/icon.png') then
|
||||
W.icon='media/image/icon.png'
|
||||
end
|
||||
|
||||
if MOBILE then
|
||||
W.borderless=true
|
||||
W.resizable=false
|
||||
W.fullscreen=true
|
||||
else
|
||||
W.borderless=false
|
||||
W.resizable=true
|
||||
W.fullscreen=false
|
||||
end
|
||||
|
||||
local M=t.modules
|
||||
M.window,M.system,M.event,M.thread=true,true,true,true
|
||||
|
||||
26
main.lua
26
main.lua
@@ -22,13 +22,10 @@
|
||||
local fs=love.filesystem
|
||||
VERSION=require"version"
|
||||
TIME=love.timer.getTime
|
||||
SYSTEM=love.system.getOS() if SYSTEM=='OS X' then SYSTEM='macOS' end
|
||||
FNNS=SYSTEM:find'\79\83'-- What does FNSF stand for? IDK so don't ask me lol
|
||||
MOBILE=SYSTEM=='Android' or SYSTEM=='iOS'
|
||||
|
||||
-- Global Vars & Settings
|
||||
SFXPACKS={'chiptune'}
|
||||
VOCPACKS={'miya','mono','xiaoya','miku'}
|
||||
VOCPACKS={'miya','mono','xiaoya','miku','zundamon'}
|
||||
FIRSTLAUNCH=false
|
||||
DAILYLAUNCH=false
|
||||
|
||||
@@ -37,11 +34,6 @@ math.randomseed(os.time()*626)
|
||||
love.setDeprecationOutput(false)
|
||||
love.keyboard.setKeyRepeat(true)
|
||||
love.keyboard.setTextInput(false)
|
||||
if MOBILE then
|
||||
local w,h,f=love.window.getMode()
|
||||
f.resizable=false
|
||||
love.window.setMode(w,h,f)
|
||||
end
|
||||
|
||||
local _LOADTIMELIST_={}
|
||||
local _LOADTIME_=TIME()
|
||||
@@ -183,7 +175,7 @@ Z.setOnFnKeys({
|
||||
function() MES.new('error',"挂了") end,
|
||||
function()
|
||||
if GAME.playing and not GAME.net then
|
||||
for _=1,8 do
|
||||
for _=1,1 do
|
||||
if #PLY_ALIVE>1 then
|
||||
local P=PLY_ALIVE[math.random(2,#PLY_ALIVE)]
|
||||
P.lastRecv=PLAYERS[1]
|
||||
@@ -197,9 +189,11 @@ Z.setOnFnKeys({
|
||||
function() if love['_openConsole'] then love['_openConsole']() end end,
|
||||
})
|
||||
Z.setOnGlobalKey('f11',function()
|
||||
SETTING.fullscreen=not SETTING.fullscreen
|
||||
applySettings()
|
||||
saveSettings()
|
||||
if not MOBILE then
|
||||
SETTING.fullscreen=not SETTING.fullscreen
|
||||
applySettings()
|
||||
saveSettings()
|
||||
end
|
||||
end)
|
||||
Z.setVersionText(VERSION.string)
|
||||
Z.setDebugInfo{
|
||||
@@ -278,6 +272,7 @@ IMG.init{
|
||||
xiaoyaCH='media/image/characters/xiaoya.png',
|
||||
xiaoyaOmino='media/image/characters/xiaoya_Omino.png',
|
||||
mikuCH='media/image/characters/miku.png',
|
||||
zundamonCH='media/image/characters/zundamon.png',
|
||||
z={
|
||||
character='media/image/characters/z_character.png',
|
||||
screen1='media/image/characters/z_screen1.png',
|
||||
@@ -508,6 +503,7 @@ LANG.init('zh',
|
||||
ja=require'parts.language.lang_ja',
|
||||
symbol=require'parts.language.lang_symbol',
|
||||
zh_code=require'parts.language.lang_zh_code',
|
||||
vi=require'parts.language.lang_vi',
|
||||
-- 1. Add language file to LANG folder;
|
||||
-- 2. Require it;
|
||||
-- 3. Add a button in parts/scenes/lang.lua;
|
||||
@@ -523,7 +519,7 @@ LANG.init('zh',
|
||||
local mes="No Text ("..SETTING.locale.."): "..k
|
||||
LOG(mes)
|
||||
MES.new('warn',mes)
|
||||
self[k]=CHAR.zChan.thinking
|
||||
self[k]="["..k.."]"
|
||||
return self[k]
|
||||
end})
|
||||
end
|
||||
@@ -607,6 +603,8 @@ for _,fileName in next,fs.getDirectoryItems('replay') do
|
||||
end
|
||||
table.sort(REPLAY,function(a,b) return a.fileName>b.fileName end)
|
||||
|
||||
AUTHURL="https://studio26f.org/oauth?product=techmino"
|
||||
AUTHHOST="cafuuchino1.3322.org:8081"
|
||||
WS.switchHost('cafuuchino1.3322.org','10026','/techmino/ws/v1')
|
||||
HTTP.setHost("cafuuchino1.3322.org:10026")
|
||||
HTTP.setThreadCount(1)
|
||||
|
||||
BIN
media/image/characters/zundamon.png
Normal file
BIN
media/image/characters/zundamon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
Binary file not shown.
BIN
media/vocal/zundamon/air.ogg
Normal file
BIN
media/vocal/zundamon/air.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/b2b.ogg
Normal file
BIN
media/vocal/zundamon/b2b.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/b3b.ogg
Normal file
BIN
media/vocal/zundamon/b3b.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/bye.ogg
Normal file
BIN
media/vocal/zundamon/bye.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/color.ogg
Normal file
BIN
media/vocal/zundamon/color.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/cspin.ogg
Normal file
BIN
media/vocal/zundamon/cspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/cspin0.ogg
Normal file
BIN
media/vocal/zundamon/cspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/decacrash.ogg
Normal file
BIN
media/vocal/zundamon/decacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/deep.ogg
Normal file
BIN
media/vocal/zundamon/deep.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/dodecacrash.ogg
Normal file
BIN
media/vocal/zundamon/dodecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/double.ogg
Normal file
BIN
media/vocal/zundamon/double.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/doubt.ogg
Normal file
BIN
media/vocal/zundamon/doubt.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/espin.ogg
Normal file
BIN
media/vocal/zundamon/espin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/espin0.ogg
Normal file
BIN
media/vocal/zundamon/espin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/fspin.ogg
Normal file
BIN
media/vocal/zundamon/fspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/fspin0.ogg
Normal file
BIN
media/vocal/zundamon/fspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/half_clear_1.ogg
Normal file
BIN
media/vocal/zundamon/half_clear_1.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/half_clear_2.ogg
Normal file
BIN
media/vocal/zundamon/half_clear_2.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/happy.ogg
Normal file
BIN
media/vocal/zundamon/happy.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/heptacrash.ogg
Normal file
BIN
media/vocal/zundamon/heptacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/heptadecacrash.ogg
Normal file
BIN
media/vocal/zundamon/heptadecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/hexacrash.ogg
Normal file
BIN
media/vocal/zundamon/hexacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/hexadecacrash.ogg
Normal file
BIN
media/vocal/zundamon/hexadecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/hspin.ogg
Normal file
BIN
media/vocal/zundamon/hspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/hspin0.ogg
Normal file
BIN
media/vocal/zundamon/hspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/impossicrash.ogg
Normal file
BIN
media/vocal/zundamon/impossicrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/ispin.ogg
Normal file
BIN
media/vocal/zundamon/ispin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/ispin0.ogg
Normal file
BIN
media/vocal/zundamon/ispin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/jspin.ogg
Normal file
BIN
media/vocal/zundamon/jspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/jspin0.ogg
Normal file
BIN
media/vocal/zundamon/jspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/lose_1.ogg
Normal file
BIN
media/vocal/zundamon/lose_1.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/lose_2.ogg
Normal file
BIN
media/vocal/zundamon/lose_2.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/lspin.ogg
Normal file
BIN
media/vocal/zundamon/lspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/lspin0.ogg
Normal file
BIN
media/vocal/zundamon/lspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/mini.ogg
Normal file
BIN
media/vocal/zundamon/mini.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/mis.ogg
Normal file
BIN
media/vocal/zundamon/mis.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/nonacrash.ogg
Normal file
BIN
media/vocal/zundamon/nonacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/nonadecacrash.ogg
Normal file
BIN
media/vocal/zundamon/nonadecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/nspin.ogg
Normal file
BIN
media/vocal/zundamon/nspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/nspin0.ogg
Normal file
BIN
media/vocal/zundamon/nspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/octacrash.ogg
Normal file
BIN
media/vocal/zundamon/octacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/octadecacrash.ogg
Normal file
BIN
media/vocal/zundamon/octadecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/ospin.ogg
Normal file
BIN
media/vocal/zundamon/ospin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/ospin0.ogg
Normal file
BIN
media/vocal/zundamon/ospin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/pentacrash.ogg
Normal file
BIN
media/vocal/zundamon/pentacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/pentadecacrash.ogg
Normal file
BIN
media/vocal/zundamon/pentadecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/perfect_clear_1.ogg
Normal file
BIN
media/vocal/zundamon/perfect_clear_1.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/perfect_clear_2.ogg
Normal file
BIN
media/vocal/zundamon/perfect_clear_2.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/pspin.ogg
Normal file
BIN
media/vocal/zundamon/pspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/pspin0.ogg
Normal file
BIN
media/vocal/zundamon/pspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/qspin.ogg
Normal file
BIN
media/vocal/zundamon/qspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/qspin0.ogg
Normal file
BIN
media/vocal/zundamon/qspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/rspin.ogg
Normal file
BIN
media/vocal/zundamon/rspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/rspin0.ogg
Normal file
BIN
media/vocal/zundamon/rspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/single.ogg
Normal file
BIN
media/vocal/zundamon/single.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/split.ogg
Normal file
BIN
media/vocal/zundamon/split.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/sspin.ogg
Normal file
BIN
media/vocal/zundamon/sspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/sspin0.ogg
Normal file
BIN
media/vocal/zundamon/sspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/techrash.ogg
Normal file
BIN
media/vocal/zundamon/techrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/test.ogg
Normal file
BIN
media/vocal/zundamon/test.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/tetradecacrash.ogg
Normal file
BIN
media/vocal/zundamon/tetradecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/tridecacrash.ogg
Normal file
BIN
media/vocal/zundamon/tridecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/triple.ogg
Normal file
BIN
media/vocal/zundamon/triple.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/tspin.ogg
Normal file
BIN
media/vocal/zundamon/tspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/tspin0.ogg
Normal file
BIN
media/vocal/zundamon/tspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/ultracrash.ogg
Normal file
BIN
media/vocal/zundamon/ultracrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/undecacrash.ogg
Normal file
BIN
media/vocal/zundamon/undecacrash.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/uspin.ogg
Normal file
BIN
media/vocal/zundamon/uspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/uspin0.ogg
Normal file
BIN
media/vocal/zundamon/uspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/vspin.ogg
Normal file
BIN
media/vocal/zundamon/vspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/vspin0.ogg
Normal file
BIN
media/vocal/zundamon/vspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/welcome_1.ogg
Normal file
BIN
media/vocal/zundamon/welcome_1.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/welcome_2.ogg
Normal file
BIN
media/vocal/zundamon/welcome_2.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/win_1.ogg
Normal file
BIN
media/vocal/zundamon/win_1.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/win_2.ogg
Normal file
BIN
media/vocal/zundamon/win_2.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/wspin.ogg
Normal file
BIN
media/vocal/zundamon/wspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/wspin0.ogg
Normal file
BIN
media/vocal/zundamon/wspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/xspin.ogg
Normal file
BIN
media/vocal/zundamon/xspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/xspin0.ogg
Normal file
BIN
media/vocal/zundamon/xspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/yspin.ogg
Normal file
BIN
media/vocal/zundamon/yspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/yspin0.ogg
Normal file
BIN
media/vocal/zundamon/yspin0.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/zspin.ogg
Normal file
BIN
media/vocal/zundamon/zspin.ogg
Normal file
Binary file not shown.
BIN
media/vocal/zundamon/zspin0.ogg
Normal file
BIN
media/vocal/zundamon/zspin0.ogg
Normal file
Binary file not shown.
@@ -938,6 +938,40 @@ do
|
||||
}
|
||||
end
|
||||
|
||||
local N64
|
||||
do
|
||||
local R={'+0+0','+0-1','+1+0','-1+0','+0+1'}
|
||||
local L={'+0+0','+0-1','-1+0','+1+0','+0+1'}
|
||||
N64={
|
||||
centerTex=GC.DO{10,10,
|
||||
{'setLW',2},
|
||||
{'line',2,9,2,1,8,9,8,1},
|
||||
},
|
||||
kickTable=TABLE.new({
|
||||
[01]=R,[10]=L,[12]=R,[21]=L,
|
||||
[23]=R,[32]=L,[30]=R,[03]=L,
|
||||
},29)
|
||||
}
|
||||
end
|
||||
|
||||
local N64_plus
|
||||
do
|
||||
local R={'+0+0','+0-1','+1+0','-1+0','+0+1'}
|
||||
local L={'+0+0','+0-1','-1+0','+1+0','+0+1'}
|
||||
local F={'+0+0','+0-1','+0+1'}
|
||||
N64_plus={
|
||||
centerTex=GC.DO{10,10,
|
||||
{'setLW',2},
|
||||
{'line',4,9,2,9,2,1,8,9,8,1,6,1},
|
||||
},
|
||||
kickTable=TABLE.new({
|
||||
[01]=R,[10]=L,[12]=R,[21]=L,
|
||||
[23]=R,[32]=L,[30]=R,[03]=L,
|
||||
[02]=F,[20]=F,[13]=F,[31]=F,
|
||||
},29)
|
||||
}
|
||||
end
|
||||
|
||||
local Classic do
|
||||
local centerPos=TABLE.copy(defaultCenterPos)
|
||||
centerPos[1]={[0]={1,1},{1,0},{1,1},{1,0}}
|
||||
@@ -978,7 +1012,7 @@ local None={
|
||||
{'setLW',2},
|
||||
{'line',2,2,6,6},
|
||||
},
|
||||
kickTable=TABLE.new(noKickSet_180,29)
|
||||
kickTable=TABLE.new(noKickSet,29)
|
||||
}
|
||||
|
||||
local None_plus={
|
||||
@@ -987,7 +1021,7 @@ local None_plus={
|
||||
{'line',1,1,7,7},
|
||||
{'fRect',2,2,4,4},
|
||||
},
|
||||
kickTable=TABLE.new(noKickSet,29)
|
||||
kickTable=TABLE.new(noKickSet_180,29)
|
||||
}
|
||||
|
||||
local RSlist={
|
||||
@@ -1002,6 +1036,8 @@ local RSlist={
|
||||
ASC_plus=ASC_plus,
|
||||
C2=C2,
|
||||
C2_sym=C2_sym,
|
||||
N64=N64,
|
||||
N64_plus=N64_plus,
|
||||
Classic=Classic,
|
||||
Classic_plus=Classic_plus,
|
||||
None=None,
|
||||
|
||||
@@ -30,11 +30,11 @@ function back.draw()
|
||||
for i=1,#sDist do
|
||||
local d,r=sDist[i],sRev[i]
|
||||
if d<5 then
|
||||
setColor(hsv(.088,(d-2)/7,1,.7))
|
||||
setColor(hsv(.088,(d-2)/7,1,.2))
|
||||
else
|
||||
setColor(hsv(.572,d/70+.1,(22-d)/12,.7))
|
||||
setColor(hsv(.572,d/70+.1,(22-d)/12,.2))
|
||||
end
|
||||
circle('fill',8*d*cos(r),24*d*sin(r),3)
|
||||
circle('fill',8*d*cos(r),24*d*sin(r),5)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
local gc=love.graphics
|
||||
local hsv=COLOR.hsv
|
||||
local circle,push,pop,rot,translate,setColor=gc.circle,gc.push,gc.pop,gc.rotate,gc.translate,gc.setColor
|
||||
local rnd,sin,cos,log,ceil=math.random,math.sin,math.cos,math.log,math.ceil
|
||||
local rnd,sin,cos,log=math.random,math.sin,math.cos,math.log
|
||||
local back={}
|
||||
|
||||
local qX,qY,qdX,qdY={},{},{},{} -- quark data in SoA [size, X, Y, dx, dy, color]
|
||||
|
||||
local ptcclr={{1,0,0},{0,1,0},{0,0,1}}
|
||||
local apcclr={{0,1,1},{1,0,1},{1,1,0}}
|
||||
local ptcclr={{1,0,0,.5},{0,1,0,.5},{0,0,1,.5}}
|
||||
local apcclr={{0,1,1,.5},{1,0,1,.5},{1,1,0,.5}}
|
||||
|
||||
local blasts={} -- data about annihilation blasts from particles and antiparticles colliding
|
||||
local ptc={} -- particle-antiparticle data (antiparticle is a mirror of particle)
|
||||
@@ -115,9 +115,9 @@ function back.draw()
|
||||
translate(-10,-10)
|
||||
|
||||
-- Draw quarks in R/G/B
|
||||
setColor(1,0,0,.8) for i=1, math.floor(quarkCount/3) do circle('fill',qX[i],qY[i],size) end
|
||||
setColor(0,1,0,.8) for i=math.floor(quarkCount/3)+1, math.floor(quarkCount*2/3) do circle('fill',qX[i],qY[i],size) end
|
||||
setColor(0,0,1,.8) for i=math.floor(quarkCount*2/3)+1,quarkCount do circle('fill',qX[i],qY[i],size) end
|
||||
setColor(1,0,0,.5) for i=1, math.floor(quarkCount/3) do circle('fill',qX[i],qY[i],size) end
|
||||
setColor(0,1,0,.5) for i=math.floor(quarkCount/3)+1, math.floor(quarkCount*2/3) do circle('fill',qX[i],qY[i],size) end
|
||||
setColor(0,0,1,.5) for i=math.floor(quarkCount*2/3)+1,quarkCount do circle('fill',qX[i],qY[i],size) end
|
||||
|
||||
for i=1,#ptc do
|
||||
local p=ptc[i]
|
||||
|
||||
@@ -22,7 +22,7 @@ function bot_cc:checkDest(b2b,atk,exblock,yomi)
|
||||
for k=1,#dest,2 do
|
||||
local r=CB[dest[k+1]-self.P.curY+2]
|
||||
if not r or not r[dest[k]-self.P.curX+2] then
|
||||
print('wrong place')
|
||||
-- print('wrong place')
|
||||
self:lockWrongPlace()
|
||||
self.P.destFX=nil
|
||||
return
|
||||
@@ -31,8 +31,8 @@ function bot_cc:checkDest(b2b,atk,exblock,yomi)
|
||||
local should_spawn = self.P:getNextSpawn() - 1
|
||||
if dest.spawn ~= should_spawn then
|
||||
assert(dest.spawn > should_spawn)
|
||||
print('wrong spawn: should be '..dest.spawn..' but '..should_spawn)
|
||||
print('-- should only happen when camera is going down')
|
||||
-- print('wrong spawn: should be '..dest.spawn..' but '..should_spawn)
|
||||
-- print('-- should only happen when camera is going down')
|
||||
self:lockWrongPlace()
|
||||
self.P.destFX=nil
|
||||
return
|
||||
|
||||
Binary file not shown.
@@ -608,68 +608,296 @@ function trySave()
|
||||
end
|
||||
end
|
||||
do-- function freshPlayerPosition(sudden)
|
||||
local posLists={
|
||||
-- 1~5
|
||||
{
|
||||
{340,75,1},
|
||||
{965,390,.5},
|
||||
{965,30,.5},
|
||||
{20,390,.5},
|
||||
{20,30,.5},
|
||||
local posLists=setmetatable({
|
||||
alive={
|
||||
[1]={main={340,75,1}},
|
||||
[3]={main={340,75,1},
|
||||
{25,210,.5},
|
||||
{955,210,.5},
|
||||
},
|
||||
[4]={main={340,75,1},
|
||||
{25,210,.5},
|
||||
{970,90,.45},{970,410,.45},
|
||||
},
|
||||
[5]={main={340,75,1},
|
||||
{40,90,.45},{40,410,.45},
|
||||
{970,90,.45},{970,410,.45},
|
||||
},
|
||||
[6]={main={340,75,1},
|
||||
{40,90,.45},{40,410,.45},
|
||||
{1010,80,.305},{1010,290,.305},{1010,500,.305},
|
||||
},
|
||||
[7]={main={340,75,1},
|
||||
{100,80,.305},{100,290,.305},{100,500,.305},
|
||||
{1010,80,.305},{1010,290,.305},{1010,500,.305},
|
||||
},
|
||||
[10]={main={340,75,1},
|
||||
{100,80,.305},{100,290,.305},{100,500,.305},
|
||||
{935,90,.275},{935,300,.275},{935,510,.275},
|
||||
{1105,90,.275},{1105,300,.275},{1105,510,.275},
|
||||
},
|
||||
[13]={main={340,75,1},
|
||||
{10,90,.275},{10,300,.275},{10,510,.275},
|
||||
{180,90,.275},{180,300,.275},{180,510,.275},
|
||||
{935,90,.275},{935,300,.275},{935,510,.275},
|
||||
{1105,90,.275},{1105,300,.275},{1105,510,.275},
|
||||
},
|
||||
[14]={main={340,75,1},
|
||||
{10,90,.275},{10,300,.275},{10,510,.275},
|
||||
{180,90,.275},{180,300,.275},{180,510,.275},
|
||||
{935,90,.275},{935,300,.275},{935,510,.275},
|
||||
{1120,80,.225},{1120,240,.225},{1120,400,.225},{1120,560,.225},
|
||||
},
|
||||
[15]={main={340,75,1},
|
||||
{10,90,.275},{10,300,.275},{10,510,.275},
|
||||
{180,90,.275},{180,300,.275},{180,510,.275},
|
||||
{960,80,.225},{960,240,.225},{960,400,.225},{960,560,.225},
|
||||
{1120,80,.225},{1120,240,.225},{1120,400,.225},{1120,560,.225},
|
||||
},
|
||||
[16]={main={340,75,1},
|
||||
{10,90,.275},{10,300,.275},{10,510,.275},
|
||||
{190,80,.225},{190,240,.225},{190,400,.225},{190,560,.225},
|
||||
{960,80,.225},{960,240,.225},{960,400,.225},{960,560,.225},
|
||||
{1120,80,.225},{1120,240,.225},{1120,400,.225},{1120,560,.225},
|
||||
},
|
||||
[17]={main={340,75,1},
|
||||
{30,80,.225},{30,240,.225},{30,400,.225},{30,560,.225},
|
||||
{190,80,.225},{190,240,.225},{190,400,.225},{190,560,.225},
|
||||
{960,80,.225},{960,240,.225},{960,400,.225},{960,560,.225},
|
||||
{1120,80,.225},{1120,240,.225},{1120,400,.225},{1120,560,.225},
|
||||
},
|
||||
[24]={main={340,75,1},
|
||||
{30,80,.225},{30,240,.225},{30,400,.225},{30,560,.225},
|
||||
{190,80,.225},{190,240,.225},{190,400,.225},{190,560,.225},
|
||||
{940,80,.175},{940,205,.175},{940,330,.175},{940,455,.175},{940,580,.175},
|
||||
{1050,80,.175},{1050,205,.175},{1050,330,.175},{1050,455,.175},{1050,580,.175},
|
||||
{1160,80,.175},{1160,205,.175},{1160,330,.175},{1160,455,.175},{1160,580,.175},
|
||||
},
|
||||
[31]={main={340,75,1},
|
||||
{10,80,.175},{10,205,.175},{10,330,.175},{10,455,.175},{10,580,.175},
|
||||
{120,80,.175},{120,205,.175},{120,330,.175},{120,455,.175},{120,580,.175},
|
||||
{230,80,.175},{230,205,.175},{230,330,.175},{230,455,.175},{230,580,.175},
|
||||
{940,80,.175},{940,205,.175},{940,330,.175},{940,455,.175},{940,580,.175},
|
||||
{1050,80,.175},{1050,205,.175},{1050,330,.175},{1050,455,.175},{1050,580,.175},
|
||||
{1160,80,.175},{1160,205,.175},{1160,330,.175},{1160,455,.175},{1160,580,.175},
|
||||
},
|
||||
[33]=(function()
|
||||
local l={main={340,75,1}}
|
||||
for y=-1.5,1.5 do for x=0,3 do
|
||||
table.insert(l,{265-85*x,310+160*y,.125})
|
||||
table.insert(l,{940+85*x,310+160*y,.125})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[51]=(function()
|
||||
local l={main={340,75,1}}
|
||||
for y=-2,2 do for x=0,4 do
|
||||
table.insert(l,{275-65*x,315+125*y,.1})
|
||||
table.insert(l,{945+65*x,315+125*y,.1})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[75]=(function()
|
||||
local l={main={340,75,1}}
|
||||
for y=-2,2 do for x=0,4 do
|
||||
table.insert(l,{275-65*x,310+125*y,.1})
|
||||
end end
|
||||
for y=-3,3 do for x=0,6 do
|
||||
table.insert(l,{940+47*x,340+92*y,.075})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[99]=(function()
|
||||
local l={main={340,75,1}}
|
||||
for y=-3,3 do for x=0,6 do
|
||||
table.insert(l,{290-47*x,340+92*y,.075})
|
||||
table.insert(l,{940+47*x,340+92*y,.075})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[MATH.inf]={main={340,75,1}},
|
||||
},
|
||||
-- 6~17
|
||||
(function()
|
||||
local L={{340,75,1}}
|
||||
for i=1,4 do ins(L,{15,-160+180*i,.25}) end
|
||||
for i=1,4 do ins(L,{180,-160+180*i,.25}) end
|
||||
for i=1,4 do ins(L,{950,-160+180*i,.25}) end
|
||||
for i=1,4 do ins(L,{1120,-160+180*i,.25}) end
|
||||
return L
|
||||
end)(),
|
||||
-- 18~31
|
||||
(function()
|
||||
local L={{340,75,1}}
|
||||
for i=1,5 do ins(L,{10, -100+135*i,.18}) end
|
||||
for i=1,5 do ins(L,{120, -100+135*i,.18}) end
|
||||
for i=1,5 do ins(L,{230, -100+135*i,.18}) end
|
||||
for i=1,5 do ins(L,{940, -100+135*i,.18}) end
|
||||
for i=1,5 do ins(L,{1050,-100+135*i,.18}) end
|
||||
for i=1,5 do ins(L,{1160,-100+135*i,.18}) end
|
||||
return L
|
||||
end)(),
|
||||
-- 32~49
|
||||
(function()
|
||||
local L={{340,75,1}}
|
||||
for i=1,4 do for j=1,6 do ins(L,{78*i-54,115*j-98,.09}) end end
|
||||
for i=9,12 do for j=1,6 do ins(L,{78*i+267,115*j-98,.09}) end end
|
||||
return L
|
||||
end)(),
|
||||
-- 50~99
|
||||
(function()
|
||||
local L={{340,75,1}}
|
||||
for i=1,7 do for j=1,7 do ins(L,{46*i-36,97*j-72,.068}) end end
|
||||
for i=15,21 do for j=1,7 do ins(L,{46*i+264,97*j-72,.068}) end end
|
||||
return L
|
||||
end)(),
|
||||
}
|
||||
function freshPlayerPosition(sudden)-- Set initial position for every player
|
||||
dead={
|
||||
[1]={{340,75,1}},
|
||||
[2]={
|
||||
{50,130,.925},{670,130,.925},
|
||||
},
|
||||
[3]={
|
||||
{25,160,.675},{440,160,.675},{855,160,.675},
|
||||
},
|
||||
[4]={
|
||||
{13,200,.525},{328,200,.525},{643,200,.525},{948,200,.525},
|
||||
},
|
||||
[5]={
|
||||
{8,230,.425},{260,230,.425},{512,230,.425},{764,230,.425},{1016,230,.425},
|
||||
},
|
||||
[10]={
|
||||
{8,110,.425},{260,110,.425},{512,110,.425},{764,110,.425},{1016,110,.425},
|
||||
{8,410,.425},{260,410,.425},{512,410,.425},{764,410,.425},{1016,410,.425},
|
||||
},
|
||||
[12]={
|
||||
{10,120,.35},{220,120,.35},{430,120,.35},{640,120,.35},{850,120,.35},{1060,120,.35},
|
||||
{10,400,.35},{220,400,.35},{430,400,.35},{640,400,.35},{850,400,.35},{1060,400,.35},
|
||||
},
|
||||
[18]={
|
||||
{10,90,.305},{220,90,.305},{430,90,.305},{640,90,.305},{850,90,.305},{1060,90,.305},
|
||||
{10,300,.305},{220,300,.305},{430,300,.305},{640,300,.305},{850,300,.305},{1060,300,.305},
|
||||
{10,510,.305},{220,510,.305},{430,510,.305},{640,510,.305},{850,510,.305},{1060,510,.305},
|
||||
},
|
||||
[21]={
|
||||
{10,90,.295},{190,90,.295},{370,90,.295},{550,90,.295},{730,90,.295},{910,90,.295},{1090,90,.295},
|
||||
{10,300,.295},{190,300,.295},{370,300,.295},{550,300,.295},{730,300,.295},{910,300,.295},{1090,300,.295},
|
||||
{10,510,.295},{190,510,.295},{370,510,.295},{550,510,.295},{730,510,.295},{910,510,.295},{1090,510,.295},
|
||||
},
|
||||
[24]={
|
||||
{20,100,.25},{175,100,.25},{330,100,.25},{485,100,.25},{640,100,.25},{795,100,.25},{950,100,.25},{1105,100,.25},
|
||||
{20,300,.25},{175,300,.25},{330,300,.25},{485,300,.25},{640,300,.25},{795,300,.25},{950,300,.25},{1105,300,.25},
|
||||
{20,500,.25},{175,500,.25},{330,500,.25},{485,500,.25},{640,500,.25},{795,500,.25},{950,500,.25},{1105,500,.25},
|
||||
},
|
||||
[27]={
|
||||
{10,100,.225},{150,100,.225},{290,100,.225},{430,100,.225},{570,100,.225},{710,100,.225},{850,100,.225},{990,100,.225},{1130,100,.225},
|
||||
{10,300,.225},{150,300,.225},{290,300,.225},{430,300,.225},{570,300,.225},{710,300,.225},{850,300,.225},{990,300,.225},{1130,300,.225},
|
||||
{10,500,.225},{150,500,.225},{290,500,.225},{430,500,.225},{570,500,.225},{710,500,.225},{850,500,.225},{990,500,.225},{1130,500,.225},
|
||||
},
|
||||
[36]={
|
||||
{10,90,.225},{150,90,.225},{290,90,.225},{430,90,.225},{570,90,.225},{710,90,.225},{850,90,.225},{990,90,.225},{1130,90,.225},
|
||||
{10,245,.225},{150,245,.225},{290,245,.225},{430,245,.225},{570,245,.225},{710,245,.225},{850,245,.225},{990,245,.225},{1130,245,.225},
|
||||
{10,400,.225},{150,400,.225},{290,400,.225},{430,400,.225},{570,400,.225},{710,400,.225},{850,400,.225},{990,400,.225},{1130,400,.225},
|
||||
{10,555,.225},{150,555,.225},{290,555,.225},{430,555,.225},{570,555,.225},{710,555,.225},{850,555,.225},{990,555,.225},{1130,555,.225},
|
||||
},
|
||||
[39]=(function()
|
||||
local l={}
|
||||
for y=0,2 do for x=0,12 do
|
||||
table.insert(l,{13+97*x,110+190*y,.15})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[42]=(function()
|
||||
local l={}
|
||||
for y=0,2 do for x=0,13 do
|
||||
table.insert(l,{15+90*x,120+190*y,.135})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[45]=(function()
|
||||
local l={}
|
||||
for y=0,2 do for x=0,14 do
|
||||
table.insert(l,{8+85*x,120+190*y,.125})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[60]=(function()
|
||||
local l={}
|
||||
for y=0,3 do for x=0,14 do
|
||||
table.insert(l,{8+85*x,85+155*y,.125})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[64]=(function()
|
||||
local l={}
|
||||
for y=0,3 do for x=0,15 do
|
||||
table.insert(l,{13+79*x,85+155*y,.115})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[68]=(function()
|
||||
local l={}
|
||||
for y=0,3 do for x=0,16 do
|
||||
table.insert(l,{6+75*x,85+155*y,.115})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[72]=(function()
|
||||
local l={}
|
||||
for y=0,3 do for x=0,17 do
|
||||
table.insert(l,{15+70*x,95+155*y,.1})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[90]=(function()
|
||||
local l={}
|
||||
for y=0,4 do for x=0,17 do
|
||||
table.insert(l,{15+70*x,82+127*y,.1})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[95]=(function()
|
||||
local l={}
|
||||
for y=0,4 do for x=0,18 do
|
||||
table.insert(l,{15+66*x,82+127*y,.1})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[100]=(function()
|
||||
local l={}
|
||||
for y=0,4 do for x=0,19 do
|
||||
table.insert(l,{12+63*x,82+127*y,.1})
|
||||
end end
|
||||
return l
|
||||
end)(),
|
||||
[MATH.inf]={},
|
||||
},
|
||||
}, {
|
||||
__call=function(self,alive,count)
|
||||
local lastTested=MATH.inf
|
||||
for k in next,self[alive and 'alive' or 'dead'] do
|
||||
if k<lastTested and k>=count then
|
||||
lastTested=k
|
||||
end
|
||||
end
|
||||
return self[alive and 'alive' or 'dead'][lastTested]
|
||||
end,
|
||||
})
|
||||
|
||||
function freshPlayerPosition(mode)-- Set initial position for every player, mode: 'normal'|'quick'|'update'
|
||||
assert(mode=='normal' or mode=='quick' or mode=='update',"Wrong freshPlyPos mode")
|
||||
local L=PLY_ALIVE
|
||||
if not sudden then
|
||||
if mode~='update' then
|
||||
for i=1,#L do
|
||||
L[i]:setPosition(640,#L<=5 and 360 or -62,0)
|
||||
end
|
||||
end
|
||||
|
||||
local posList
|
||||
if #L<=5 then posList=posLists[1]
|
||||
elseif #L<=17 then posList=posLists[2]
|
||||
elseif #L<=31 then posList=posLists[3]
|
||||
elseif #L<=49 then posList=posLists[4]
|
||||
elseif #L<=99 then posList=posLists[5]
|
||||
else error("TOO MANY PLAYERS!")
|
||||
local alive=PLAYERS[1].alive
|
||||
|
||||
if mode=='update' then
|
||||
if alive then
|
||||
if #L<=31 then
|
||||
for i=2,#L do
|
||||
L[i].miniMode=false
|
||||
L[i].draw=require"parts.player.draw".norm
|
||||
end
|
||||
end
|
||||
else
|
||||
if #L<=36 then
|
||||
for i=1,#L do
|
||||
L[i].miniMode=false
|
||||
L[i].draw=require"parts.player.draw".norm
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local posList=posLists(alive,#L)
|
||||
local method=mode=='normal' and 'setPosition' or 'movePosition'
|
||||
|
||||
if alive then
|
||||
for i=1,#L do
|
||||
if i==1 then
|
||||
if SETTING.portrait then-- WARNING: Brutly scaling up to 2x only for 1P, will cause many other visual issues.
|
||||
L[i][method](L[i],36,-260,2)
|
||||
else
|
||||
L[i][method](L[i],unpack(posList['main']))
|
||||
end
|
||||
else
|
||||
L[i][method](L[i],unpack(posList[i-1]))
|
||||
end
|
||||
end
|
||||
else
|
||||
for i=1,#L do
|
||||
L[i][method](L[i],unpack(posList[i]))
|
||||
end
|
||||
end
|
||||
local method=sudden and 'setPosition' or 'movePosition'
|
||||
for i=1,#L do L[i][method](L[i],unpack(posList[i])) end
|
||||
end
|
||||
end
|
||||
do-- function dumpBasicConfig()
|
||||
@@ -772,7 +1000,7 @@ do-- function resetGameData(args)
|
||||
else
|
||||
PLY.newPlayer(1)
|
||||
end
|
||||
freshPlayerPosition(args:find'q')
|
||||
freshPlayerPosition((args:find'q') and 'quick' or 'normal')
|
||||
VK.restore()
|
||||
|
||||
local bg=GAME.modeEnv.bg
|
||||
|
||||
@@ -587,10 +587,8 @@ do-- Userdata tables
|
||||
USER=setmetatable({-- User infomation
|
||||
__data={
|
||||
uid=false,
|
||||
email=false,
|
||||
password=false,
|
||||
rToken=false,
|
||||
aToken=false,
|
||||
oToken=false,
|
||||
},
|
||||
},{
|
||||
__index=function(self,k)
|
||||
@@ -655,6 +653,8 @@ do-- Userdata tables
|
||||
highCam=true,
|
||||
nextPos=true,
|
||||
fullscreen=true,
|
||||
portrait=false,
|
||||
msaa=0,
|
||||
bg='on',
|
||||
bgAlpha=.26,
|
||||
powerInfo=false,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user