Compare commits

...

261 Commits

Author SHA1 Message Date
MrZ_26
86654689da 修改更新历史 2023-09-19 14:15:00 +08:00
MrZ_26
b4901add94 暂时不使用越南语词典,等待翻译更新 2023-09-19 14:14:48 +08:00
MrZ_26
8df321b84d 修复swap模式hold和无限hold的冲突 2023-09-19 14:05:28 +08:00
MrZ_26
6a4dfb47bb 续上一块的das不再计一次操作次数 2023-09-19 12:14:48 +08:00
MrZ_26
dd8a810591 离开录像菜单时会清空mod选择状态 2023-09-19 01:58:30 +08:00
NOT_A_ROBOT
009858e2f8 Improve Tech Finesse Lock and add some other minor things (#950)
* Fix VK and overhang detection in Tech Finesse Lock

* Make Tech Finesse Lock overhang logic more lenient

* Add finesse kill to Tech Finesse Lock
(at this point if you still make a finesse error even after getting limited inputs then you have a huge skill issue)

* Disable O rotation in Tech Finesse Lock if no O-spin
+ Added RS name (RS.name, P.RS.name)
+ Added hook_spawn and hook_hold

* Update Zframework

* Fix weird backfire location
2023-09-19 01:15:16 +08:00
Imple Lee
337293dbe1 add hold i_s (#971)
* hold with i_s!

* fix hold i_s in swap mode

* Only draw `holdCount` holds

* bump room version

hold i_s is not back-compatible
2023-09-16 01:35:20 +08:00
sakurw
5e0be0d463 Update lang_ja.lua (#967)
* Update lang_ja.lua

* Update lang_ja.lua
2023-09-14 16:47:57 +08:00
Imple Lee
cf147be119 fix swap bagline (#970)
* fix bagline for swap mode

* remove bagline when a block leaves nextqueue
2023-09-14 16:47:39 +08:00
MrZ_26
c695596285 添加代码格式化风格文件
试着格式化一些文件
2023-09-12 20:01:16 +08:00
NOT_A_ROBOT
7b97aefa0a Vectorize and redesign some modeicons (#966) 2023-09-11 18:04:47 +08:00
NOT_A_ROBOT
a3e5ccffa4 Adjust Dig Efficiency rank cutoffs (#965) 2023-09-11 18:04:22 +08:00
Imple Lee
452fa65748 new bagline system (#963)
closes #940
2023-09-11 18:03:09 +08:00
MrZ_26
7141f46948 调整c2出块算法在词典里的位置
调整中文词典几个搜索关键字
2023-09-08 15:59:54 +08:00
MrZ_26
481ea06e61 完善几个语言文件
微调无尽模式代码
2023-09-07 14:51:33 +08:00
NOT_A_ROBOT
3aa60d3488 Add toggleable infinite height in Infinite mode (#961)
* Add toggleable infinite height in Infinite mode

* Use font size 25 for infinite mode
2023-09-07 14:34:45 +08:00
NOT_A_ROBOT
e152e147e2 Refactor Master Graded (#960) 2023-09-05 18:01:54 +08:00
C₂₉H₂₅N₃O₅
c7b8dd24c7 Font fixes and symbol additions (#956)
* Updated two block skins

* Updated in-game font

- Adjusted the alignment of font
- Added missing glyphs in some languages
- Redesigned grade letters to increase legibility

* Symbol and font fixes

- Added some more symbols
- Fixed some missing characters
2023-08-29 13:43:17 +08:00
NOT_A_ROBOT
9e384f80cb Rename Invisible modes (#954)
* Rename Invisible modes

* Fix indentation in zh_code

* Undo changes in Vietnamese lang file
2023-08-29 13:42:43 +08:00
C6H12O6 + NaCl + H2O
7f8e3e647a Update Zictionary scene + Small change in Vietnamese translation (#935)
* Squashed commit of the following:

commit f50627095805c090b49c1054645ad33cb896f4d0
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Aug 5 09:49:59 2023 +0700

    Change icon in dict.lua

commit 1f7da069425f00f431c9299689897a665cb2d80d
Merge: b212fff8 7be2aa50
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Aug 4 18:14:29 2023 +0700

    Merge https://github.com/26F-Studio/Techmino into VietnameseTranslation

commit 7be2aa50dd
Author: C₂₉H₂₅N₃O₅ <a1228465111@163.com>
Date:   Fri Aug 4 18:40:12 2023 +0800

    Font & Virtual Key Update (#932)

    - Changed the main font to Exo2
    - Changed the monospaced font to League Mono
    - Changed the virtual key design to increase legibility and match the font
    - Added a few symbols

commit ed9417dcdf
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Aug 3 22:57:06 2023 +0700

    Reupdate Vietnamese translation (#930)

commit b212fff8d9
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Aug 3 20:54:45 2023 +0700

    Small update

commit b59d1dc188
Merge: 8fcdbd9d 36522c71
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Aug 3 19:40:20 2023 +0700

    Merge branch 'main' of https://github.com/26F-Studio/Techmino into VietnameseTranslation

commit 36522c7146
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Aug 3 16:04:04 2023 +0800

    修复词典用不了滚轮
    整理代码

commit 20b74ea78a
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Aug 3 13:46:27 2023 +0800

    词典交互和代码逻辑优化
    框架跟进

commit 0ae9cbcdaa
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Aug 3 10:11:27 2023 +0800

    删行末空格

commit c9cbb0e363
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 21:45:31 2023 +0800

    修复fixed序列反了

commit 0595ce4ea6
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:44:01 2023 +0700

    Update Vietnamese translation (again) (#929)

commit 8fcdbd9df5
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:22:54 2023 +0700

    remove duplicate

commit 798ea1be4f
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:09:02 2023 +0700

    remove duplicate item in ZH file (thanks SundayLee)

commit e6f4f69f6f
Merge: 14630990 fa89ba55
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Wed Aug 2 10:00:17 2023 +0700

    Merge branch 'VietnameseTranslation' of https://github.com/SweetSea-ButImNotSweet/Techmino into VietnameseTranslation

commit 14630990be
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:43:35 2023 +0700

    Small change

commit 7a15406262
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:46:17 2023 +0700

    small update

commit 1d10f14c8e
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 21:08:10 2023 +0700

    Remove most of unnecessary keywords

commit 07341d48e4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 14:38:46 2023 +0700

    Update the manual (Rebasing all old commits)

commit 2e2427f942
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 10:34:19 2023 +0800

    框架跟进

commit aeddee2f03
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 10:23:20 2023 +0800

    修复自定义页面编辑场地消行按钮用不了

commit 43037f8043
Author: NOT_A_ROBOT <not_a_normal_robot@protonmail.com>
Date:   Tue Aug 1 23:50:08 2023 +0700

    Shorten mission displays with RLE (#927) (may need optimization)

commit 0c3d552d08
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Aug 2 00:46:54 2023 +0800

    越南语语言文件小修正

commit fa89ba55aa
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:43:35 2023 +0700

    Small change

commit a1b6b8a434
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:39:04 2023 +0700

    Vietnamese Zictionary update [ONLY MERGE AFTER MERGING #926] (#915)

    * Tweak keywords

    * Small update

    * Update the manual

    * Remove most of unnecessary keywords

    * Revert change

    * Push updates

    * small update

    * Add tips that missing

    * Nvm, little change

    * Minor changes

    * Little update

    * Some updates

    * Small change in updatelog

    * Push update

    * small update

    * Small update

    * Update the translation, last time?

    * Push

    * Push small updates, READY!

    * Push updates

    * Clean up some missed items

    * small updates because of my flipped memory

    * Small changes + NEW TOOL!

    * Remove old info

    * Small updates

    * Small updates

    * Replace alnost "hố" --> "lỗ

    * Small updates

    * Sort group, adapt #926

    * small update

    * Fix some stupid mistake when do translating

    * Small change

    * small change

    * Clean up outdated comment

    * Fixed wrong group tag

    * Add a funny tip 🤪

    * Fix tip

    * Fix tip again

    * Fix tip again (x2)

commit 5061cad389
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 23:38:30 2023 +0700

    [HOTFIX] [MERGE NOW!] Fix bugs for #926 (#928)

    * Attempt to rework Zictionary scene

    * Rearrange the layout and handling most of thing

    * Remove ALPHA key, done keyboard handling, changed some key's behavior

    * Add Help text

    * Update Help text & fix some bugs

    * Update help text

    * Edit help text

    * Support gamepad

    * small changes in help text

    * small changes

    * Fix copy bug

    * small change

    * Add hint text to open Hint

    * Fix a bug that item accidentally selected when scrolling

    * Clean up a dumb function
    (Forget to cleanup in previous commit)

    * add backup solution, just in case

    * fix another bug

    * fix touch bug

    * Refix the scroll bug when touch

    * small code changes

    * small change in English file

    * Fix bugs, change text, adjust a icon

    * Change English text

    * Add Vietnamese translation

    * Add Chinese, adjust English & Vietnamese

    * Small change in secret Easter egg

    * Fix spelling mistake

commit a26c49451b
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 11:01:26 2023 +0700

    Fix tip again (x2)

commit d66b2d6131
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 10:39:08 2023 +0700

    Fix tip again

commit e95f87ace1
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 10:35:13 2023 +0700

    Fix tip

commit 1ccd211bfc
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Aug 1 10:12:23 2023 +0700

    Add a funny tip 🤪

commit 86ce124dd0
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 22:49:09 2023 +0700

    Fixed wrong group tag

commit 7d62a04b17
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 22:47:02 2023 +0700

    Clean up outdated comment

commit fd3910fe14
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 15:37:10 2023 +0700

    small change

commit 4ab59ef4a2
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 12:13:45 2023 +0700

    Small change

commit bf5f7cb2c9
Merge: bb7b1b93 9d3fb33d
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 11:04:48 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit 9d3fb33d10
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 31 02:20:24 2023 +0700

    Improve Zictionary scene so we don't need to hyper tapping much than before (#926)

    * Attempt to rework Zictionary scene

    * Rearrange the layout and handling most of thing

    * Remove ALPHA key, done keyboard handling, changed some key's behavior

    * Add Help text

    * Update Help text & fix some bugs

    * Update help text

    * Edit help text

    * Support gamepad

    * small changes in help text

    * small changes

    * Fix copy bug

    * small change

    * Add hint text to open Hint

    * Fix a bug that item accidentally selected when scrolling

    * Clean up a dumb function
    (Forget to cleanup in previous commit)

    * add backup solution, just in case

    * fix another bug

    * fix touch bug

    * Refix the scroll bug when touch

    * small code changes

    * small change in English file

commit 4d82b182a6
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 31 02:53:15 2023 +0800

    语言选择场景标题文本修改

commit bb7b1b93cb
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 29 10:36:53 2023 +0700

    Fix some stupid mistake when do translating

commit 5358538cb4
Merge: 23fd5cdb 78ac05ef
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 28 23:33:55 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit 23fd5cdbb9
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 28 23:33:19 2023 +0700

    small update

commit 4796a57bb4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 28 23:23:18 2023 +0700

    Sort group, adapt #926

commit 78ac05efba
Author: MrZ_26 <1046101471@qq.com>
Date:   Wed Jul 26 02:02:42 2023 +0800

    框架跟进

commit cd7c58eb32
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 24 15:54:33 2023 +0700

    Small updates

commit 53857af2fa
Merge: a2cdd6f3 02cf7b71
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 23 21:59:57 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit a2cdd6f367
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 23 21:59:28 2023 +0700

    Replace alnost "hố" --> "lỗ

commit 02cf7b71c1
Merge: 091bb234 aefde7a7
Author: MrZ_26 <1046101471@qq.com>
Date:   Thu Jul 20 15:00:40 2023 +0800

    Merge remote-tracking branch 'tech/imple/revise-seq-generator'

commit 4629b4718f
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 22:17:15 2023 +0700

    Small updates

commit 9907971722
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 22:04:06 2023 +0700

    Small updates

commit 16d89195d5
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 09:58:28 2023 +0700

    Remove old info

commit 091bb23488
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 10:47:23 2023 +0800

    词典标题栏不会溢出了

commit 0ec0d80e9c
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 10:29:38 2023 +0800

    修复手柄摇杆左右的图标反了 close #912

commit d4d87ccb5c
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 05:50:18 2023 +0800

    调整bagP1inf序列模式位置

commit c782c1fcdd
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 05:47:20 2023 +0800

    修复四连块之外的ASC旋转中心不正确 close #910

commit f7cdae8677
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 04:24:49 2023 +0800

    修复玩家死亡掉落动画任务能跨局把新开的局里的玩家移除 close #918

commit f41a68de0d
Author: MrZ_26 <1046101471@qq.com>
Date:   Mon Jul 17 04:19:32 2023 +0800

     添加bagPinf序列模式的图标

commit c38bb7986a
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 17 00:15:31 2023 +0700

    Small changes + NEW TOOL!

commit 80b56af045
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 12:42:02 2023 +0700

    small updates because of my flipped memory

commit 745f836ddf
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 12:30:22 2023 +0700

    Clean up some missed items

commit 9f45842046
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 12:23:14 2023 +0700

    Push updates

commit 9b7c09d89c
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 11:50:04 2023 +0700

    Push small updates, READY!

commit be11a9ada4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 11:25:52 2023 +0700

    Push

commit 92361e073c
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sun Jul 16 11:18:50 2023 +0700

    Update the translation, last time?

commit 146db2325d
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 09:15:08 2023 +0700

    Small update

commit 9ec237acc1
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:46:17 2023 +0700

    small update

commit c39c6c0701
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:42:14 2023 +0700

    Push update

commit 1273d54135
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Sat Jul 15 00:42:01 2023 +0700

    Small change in updatelog

commit b649d9864d
Merge: 58df11fe 3dc61688
Author: C6H12O6 + NaCl + H2O <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 14 19:52:50 2023 +0700

    Merge branch '26F-Studio:main' into VietnameseTranslation

commit 58df11feb3
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Fri Jul 14 10:12:33 2023 +0700

    Some updates

commit aefde7a777
Merge: 7e00a7d7 3dc61688
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Thu Jul 13 14:15:51 2023 +0800

    Merge branch 'main' into imple/revise-seq-generator

commit 3dc61688c4
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Thu Jul 13 13:26:17 2023 +0800

    add new generator: bagP1inf (#916)

commit 6502af6003
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 09:10:20 2023 +0700

    Little update

commit 42f0671223
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 07:38:06 2023 +0700

    Minor changes

commit 7f2f608fd4
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 00:40:08 2023 +0700

    Nvm, little change

commit 8e0315762f
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Thu Jul 13 00:32:27 2023 +0700

    Add tips that missing

commit 7e00a7d764
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Wed Jul 12 07:42:50 2023 +0800

    use `trueNextCount` as replay-visible next count

commit 8304cf655b
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Wed Jul 12 07:27:22 2023 +0800

    make sequence generator independent of player

commit 7d4d664b5b
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Jul 11 23:17:38 2023 +0700

    small update

commit 34c125504b
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Tue Jul 11 20:47:14 2023 +0700

    Push updates

commit c25e7a3d5b
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Tue Jul 11 20:05:31 2023 +0800

    fix noInitSZO

commit b7b02ab5bc
Author: Imple Lee <80144331+ImpleLee@users.noreply.github.com>
Date:   Tue Jul 11 19:50:52 2023 +0800

    simplify sequence generator

commit f0e2a6d162
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 21:08:22 2023 +0700

    Revert change

commit b1b39a3a67
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 21:08:10 2023 +0700

    Remove most of unnecessary keywords

commit 47b201ed71
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 14:38:46 2023 +0700

    Update the manual

commit 6c59718274
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 12:12:34 2023 +0700

    Small update

commit 974895ca03
Author: Squishy (C6H12O6+NaCl+H2O) <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date:   Mon Jul 10 12:03:28 2023 +0700

    Tweak keywords

* Edit the index in Zictionary, not much

* Revert a change in dict.lua

* Small change in Vietnamese translation

* Fix strange behaviors and update Vnese Zictionary

* Push a little change

* Last update?

* Rewritten sentences

* Fix stuck help text (by not clearing search result when trigger with F1 key

* Fix stuck help text
(by not clearing search result when trigger with F1 key)

* Fix a small bug

* Update Vietnamese translation

* small change

* Block performance loss

* Update Vietnamese translation (to 1/2 works now)

* Replace unfittable word

* Temp update

* Just a big update

* Update both manual and UI translation

* Smaller fallback

* uh forgetting changes

* remove "not" in a line which was for debugging

* Sync work

* Update debug code

* Update debug code

* Update Zictionary + update for hot reloading code

* Last update

* Last update again

* Last update, TB;DR

* Commenting out the hotload function

* Merge from the stash

* shorten file

* Fix cannot use Backspace key

* Edit comment

* last update
2023-08-28 01:55:34 +08:00
C6H12O6 + NaCl + H2O
df79e99fa5 Fix Piano app (#953) 2023-08-28 01:54:30 +08:00
MrZ_26
03eafb4881 框架跟进 2023-08-24 14:33:59 +08:00
MrZ_26
e795604721 调整新的限操作极简模式
调整地图右下角几个图标位置
框架跟进
2023-08-23 17:24:34 +08:00
NOT_A_ROBOT
9769b33deb Add "Tech Finesse Lock" modes and some other improvements (#946)
* Improve Tech FInesse modes and add new player hooks

* Add Tech Finesse[+] Lock into mode map

* Credit PopUpWaffles

* Rearrange mode map
2023-08-23 16:12:42 +08:00
C₂₉H₂₅N₃O₅
51968741ea Updated two block skins and font (#944)
* Updated two block skins

* Updated in-game font

- Adjusted the alignment of font
- Added missing glyphs in some languages
- Redesigned grade letters to increase legibility
2023-08-18 01:30:44 +08:00
MrZ_26
29a5cc63df 修正一些语言文件的空白字符小问题 2023-08-16 04:21:33 +08:00
C₂₉H₂₅N₃O₅
3f0bf28fbe Reworked English translations for Zictionary and more (#942) 2023-08-16 04:04:30 +08:00
MrZ_26
2321176712 开启mod后mod菜单按钮会闪烁 2023-08-14 18:48:43 +08:00
MrZ_26
974308c843 删除一个没用到的资源
添加mod出现动画的音效
2023-08-14 18:25:11 +08:00
MrZ_26
1d59cba316 修复不知道多久以前就加入但是不知道什么时候又坏掉了的游戏开始时mod展示动画 2023-08-14 18:13:20 +08:00
NebulaBlaze
f3e1e9b4b2 French language (#941)
Co-authored-by: Adilou159 <142124505+Adilou159@users.noreply.github.com>
2023-08-13 23:20:55 +08:00
C6H12O6 + NaCl + H2O
5c38bb64a0 Add virtual keys to Piano app (#939) 2023-08-13 22:50:04 +08:00
MrZ_26
3fbff37095 arm小程序删除答错自动清空
整理代码 框架跟进
2023-08-11 18:29:30 +08:00
C6H12O6 + NaCl + H2O
540099a944 Update app_arm (#938) 2023-08-11 17:40:12 +08:00
MrZ_26
cd0b276885 更新赞助名单 2023-08-11 14:40:24 +08:00
MrZ_26
519f84a804 框架跟进 2023-08-09 20:29:49 +08:00
MrZ_26
e44462bb78 框架跟进 2023-08-07 01:30:22 +08:00
NOT_A_ROBOT
9da2300194 Update sprint WR main menu tip (#936) 2023-08-07 01:29:37 +08:00
sakurw
91c39ee7ef Update dict_ja.lua (#934) 2023-08-05 01:49:50 +08:00
sakurw
58ea85e6b9 Update lang_ja.lua (#933) 2023-08-05 01:49:34 +08:00
C₂₉H₂₅N₃O₅
7be2aa50dd Font & Virtual Key Update (#932)
- Changed the main font to Exo2
- Changed the monospaced font to League Mono
- Changed the virtual key design to increase legibility and match the font
- Added a few symbols
2023-08-04 18:40:12 +08:00
C6H12O6 + NaCl + H2O
ed9417dcdf Reupdate Vietnamese translation (#930) 2023-08-03 23:57:06 +08:00
MrZ_26
36522c7146 修复词典用不了滚轮
整理代码
2023-08-03 16:04:04 +08:00
MrZ_26
20b74ea78a 词典交互和代码逻辑优化
框架跟进
2023-08-03 13:46:27 +08:00
MrZ_26
0ae9cbcdaa 删行末空格 2023-08-03 10:11:27 +08:00
MrZ_26
c9cbb0e363 修复fixed序列反了 2023-08-02 21:45:31 +08:00
C6H12O6 + NaCl + H2O
0595ce4ea6 Update Vietnamese translation (again) (#929) 2023-08-02 11:44:01 +08:00
MrZ_26
2e2427f942 框架跟进 2023-08-02 10:34:19 +08:00
MrZ_26
aeddee2f03 修复自定义页面编辑场地消行按钮用不了 2023-08-02 10:23:20 +08:00
NOT_A_ROBOT
43037f8043 Shorten mission displays with RLE (#927) (may need optimization) 2023-08-02 00:50:08 +08:00
MrZ_26
0c3d552d08 越南语语言文件小修正 2023-08-02 00:46:54 +08:00
C6H12O6 + NaCl + H2O
a1b6b8a434 Vietnamese Zictionary update [ONLY MERGE AFTER MERGING #926] (#915)
* Tweak keywords

* Small update

* Update the manual

* Remove most of unnecessary keywords

* Revert change

* Push updates

* small update

* Add tips that missing

* Nvm, little change

* Minor changes

* Little update

* Some updates

* Small change in updatelog

* Push update

* small update

* Small update

* Update the translation, last time?

* Push

* Push small updates, READY!

* Push updates

* Clean up some missed items

* small updates because of my flipped memory

* Small changes + NEW TOOL!

* Remove old info

* Small updates

* Small updates

* Replace alnost "hố" --> "lỗ

* Small updates

* Sort group, adapt #926

* small update

* Fix some stupid mistake when do translating

* Small change

* small change

* Clean up outdated comment

* Fixed wrong group tag

* Add a funny tip 🤪

* Fix tip

* Fix tip again

* Fix tip again (x2)
2023-08-02 00:39:04 +08:00
C6H12O6 + NaCl + H2O
5061cad389 [HOTFIX] [MERGE NOW!] Fix bugs for #926 (#928)
* Attempt to rework Zictionary scene

* Rearrange the layout and handling most of thing

* Remove ALPHA key, done keyboard handling, changed some key's behavior

* Add Help text

* Update Help text & fix some bugs

* Update help text

* Edit help text

* Support gamepad

* small changes in help text

* small changes

* Fix copy bug

* small change

* Add hint text to open Hint

* Fix a bug that item accidentally selected when scrolling

* Clean up a dumb function
(Forget to cleanup in previous commit)

* add backup solution, just in case

* fix another bug

* fix touch bug

* Refix the scroll bug when touch

* small code changes

* small change in English file

* Fix bugs, change text, adjust a icon

* Change English text

* Add Vietnamese translation

* Add Chinese, adjust English & Vietnamese

* Small change in secret Easter egg

* Fix spelling mistake
2023-08-02 00:38:30 +08:00
C6H12O6 + NaCl + H2O
9d3fb33d10 Improve Zictionary scene so we don't need to hyper tapping much than before (#926)
* Attempt to rework Zictionary scene

* Rearrange the layout and handling most of thing

* Remove ALPHA key, done keyboard handling, changed some key's behavior

* Add Help text

* Update Help text & fix some bugs

* Update help text

* Edit help text

* Support gamepad

* small changes in help text

* small changes

* Fix copy bug

* small change

* Add hint text to open Hint

* Fix a bug that item accidentally selected when scrolling

* Clean up a dumb function
(Forget to cleanup in previous commit)

* add backup solution, just in case

* fix another bug

* fix touch bug

* Refix the scroll bug when touch

* small code changes

* small change in English file
2023-07-31 03:20:24 +08:00
MrZ_26
4d82b182a6 语言选择场景标题文本修改 2023-07-31 02:53:15 +08:00
MrZ_26
78ac05efba 框架跟进 2023-07-26 02:02:42 +08:00
MrZ_26
02cf7b71c1 Merge remote-tracking branch 'tech/imple/revise-seq-generator' 2023-07-20 15:00:40 +08:00
MrZ_26
091bb23488 词典标题栏不会溢出了 2023-07-17 10:47:23 +08:00
MrZ_26
0ec0d80e9c 修复手柄摇杆左右的图标反了 close #912 2023-07-17 10:29:38 +08:00
MrZ_26
d4d87ccb5c 调整bagP1inf序列模式位置 2023-07-17 05:50:18 +08:00
MrZ_26
c782c1fcdd 修复四连块之外的ASC旋转中心不正确 close #910 2023-07-17 05:47:20 +08:00
MrZ_26
f7cdae8677 修复玩家死亡掉落动画任务能跨局把新开的局里的玩家移除 close #918 2023-07-17 04:24:49 +08:00
MrZ_26
f41a68de0d 添加bagPinf序列模式的图标 2023-07-17 04:19:32 +08:00
Imple Lee
aefde7a777 Merge branch 'main' into imple/revise-seq-generator 2023-07-13 14:15:51 +08:00
Imple Lee
3dc61688c4 add new generator: bagP1inf (#916) 2023-07-13 13:26:17 +08:00
Imple Lee
7e00a7d764 use trueNextCount as replay-visible next count 2023-07-12 07:42:50 +08:00
Imple Lee
8304cf655b make sequence generator independent of player 2023-07-12 07:27:22 +08:00
Imple Lee
c25e7a3d5b fix noInitSZO 2023-07-11 20:09:50 +08:00
Imple Lee
b7b02ab5bc simplify sequence generator 2023-07-11 20:09:34 +08:00
Nguyễn Quốc Hưng
b3a8724538 Vietnamese translation of Zictionary (#903)
Co-authored-by: Hưng Nguyễn <>
2023-07-03 09:53:55 +08:00
ParticleG
ed11faf909 更新CI for Web 2023-06-15 21:36:39 +08:00
ParticleG
b5cd0be057 版本推进 2023-06-15 11:06:26 +08:00
Particle_G
d31954d1e2 Merge pull request #904 from 26F-Studio/ci-web-test
Ci web test
2023-06-15 10:56:52 +08:00
MrZ_26
96bf30fcab 玩家死亡后不再占用更新和绘制资源
框架跟进
2023-06-15 01:18:37 +08:00
MrZ_26
e7fc5a676e 框架跟进 2023-06-15 00:20:42 +08:00
ParticleG
4a81d8beb0 框架跟进 2023-06-14 23:42:07 +08:00
ParticleG
c583769cf3 框架跟进 2023-06-14 18:06:38 +08:00
ParticleG
2ff2fd1940 框架跟进 2023-06-14 17:52:23 +08:00
ParticleG
6d45cf978a 框架跟进 2023-06-14 17:32:26 +08:00
ParticleG
4c3b80a1fb 框架跟进 2023-06-14 16:44:54 +08:00
ParticleG
d22aa81fa0 Add polyfill.lua for fallback support 2023-06-14 14:35:08 +08:00
ParticleG
1e76b8e533 检测系统标识为Web 2023-06-12 12:53:53 +08:00
ParticleG
886adc3534 - Only build Core 2023-06-12 12:38:56 +08:00
MrZ_26
aff7ffb2c4 小修格式 2023-06-12 12:16:06 +08:00
ParticleG
4ec1f7c5c8 修复遗漏break 2023-06-12 12:10:46 +08:00
MrZ_26
7772c9b424 若为Linux系统则override掉原来的file.read,加一个getInfo确保文件存在 2023-06-12 11:45:58 +08:00
MrZ_26
514f0a17b5 干掉所有的goto来测试love.js 2023-06-12 11:42:17 +08:00
MrZ_26
91adc0d153 框架跟进 2023-06-12 11:39:37 +08:00
MrZ_26
48425f5549 “出生音效”改为“生成音效” 2023-06-11 23:21:35 +08:00
sakurw
fd36562a7d Update lang_ja.lua (#900) 2023-06-11 23:20:09 +08:00
NOT_A_ROBOT
4b36442170 Fix "Stage Complete" text being off by one in Master Phantasm (#902) 2023-06-11 23:19:46 +08:00
MrZ_26
dad6beca05 Revert "更新词典一个词条"
This reverts commit ee61c5aa8d.
2023-06-01 15:27:53 +08:00
MrZ_26
ee61c5aa8d 更新词典一个词条 2023-06-01 01:06:29 +08:00
sakurw
1001588f97 Update dict_ja.lua (#896) 2023-06-01 01:06:02 +08:00
MrZ_26
25df3d819b 词典里的Harddrop discord链接改成Techmino的 2023-05-29 14:25:44 +08:00
MrZ_26
a2e5656747 修改更新历史 版本推进 2023-05-28 18:33:47 +08:00
MrZ_26
65fc0339b9 调整登录界面ui 2023-05-28 18:31:52 +08:00
MrZ_26
0421654c50 微调arm小程序数字字体,整理代码 2023-05-28 18:23:58 +08:00
MrZ_26
bdaa42f6df 添加flore语音包
支持消6以上的语音
2023-05-28 18:11:10 +08:00
NOT_A_ROBOT
9984c3ecb5 Add drawing feature to arithmetic app (#800)
* undo feature

* add auto draw functions for some levels

* Add drawing feature to bin/oct/hex levels

* Add left-aligned option to drawNum, switch from recursive to loop

* add support for drawing hex digits

* should be ready to push!

* Add help + number scaling, optimized some code

* finish drawing in arithmetic, just need icons now

* remove debugging thing in arm
2023-05-19 16:14:59 +08:00
MrZ_26
5e7c2309ac 修复密码框里有东西的时候如果密码框是隐藏的还会视为填了密码 2023-05-19 00:32:03 +08:00
MrZ_26
9dda8555a0 挖掘效率模式改为和tsd模式一样的低重力+不锁定+无限hold close #890 2023-05-11 13:34:23 +08:00
MrZ_26
43046a3cf3 修复对战和stack_e中hold致死但没有完全死的时候下一块悬空导致的幽灵行 2023-05-04 00:42:40 +08:00
Imple Lee
fe29cc532d fix many warnings (#889)
* fix many warnings

some of them can be solved by using a prototype-based system
maybe I can try to use some of these systems to reform backgrounds...

* Update app_mahjong.lua

---------

Co-authored-by: MrZ_26 <1046101471@qq.com>
2023-05-03 00:27:54 +08:00
Imple Lee
7dd73ef8d3 fix: description of combo in manuals (#885)
The description in the Chinese manual is correct but very
convoluted; the descriptions in the English manual and Japanese manual
are incorrect.
2023-04-24 18:29:07 +08:00
sakurw
ad6bd7be4b Update dict_ja.lua (#881) 2023-04-19 03:18:26 +08:00
sakurw
c276b700fa Update manual_ja.txt (#880) 2023-04-19 03:18:11 +08:00
MrZ_26
98f73aa4c0 修改更新历史 2023-04-18 00:16:23 +08:00
MrZ_26
1db854618e 效率40行和无尽模式显示的攻击数格式改为整数 2023-04-18 00:14:46 +08:00
user670
940a1bc3f8 Update manual_en.txt (#876)
fix typo
2023-04-07 16:37:22 +08:00
Squishy (C6H12O6+NaCl+H2O)
7463dd96dc VIetnamese translation update (#878)
* Update credit + Some adjustments for some strings
* Fix credit and adjust some strings
2023-04-07 16:35:17 +08:00
MrZ_26
48e96998a9 更新词典中两条新人指引 2023-04-07 14:56:09 +08:00
MrZ_26
95a1b03cc5 防守模式改为缓冲超过一定数量后就不再生成新的攻击 2023-04-06 15:55:32 +08:00
ParticleG
ee4dfa7f51 移除Action Summary 2023-04-03 11:06:42 +08:00
ParticleG
06f403e9d7 删除上传至WeTransfer步骤 2023-04-03 10:40:44 +08:00
Imple Lee
c03f3f727c fix cc move error when spawn is too low (#874) 2023-03-27 12:53:48 +08:00
ShardNguyen
ed4ba1dc38 Update on Vietnamese translation (#869)
* Adjusted consistency of the translation

* added 1 line and replaced tab with space
2023-03-27 12:53:33 +08:00
MrZ_26
9663f8c316 修正TRS的Z块的1→0踢墙表有一个重复坐标 2023-03-21 17:00:41 +08:00
NOT_A_ROBOT
2478df1242 Fix Classic Lunatic level curve (#870)
now it starts at 100 lines instead of 10. I have no idea why I did it like that back then...
2023-03-19 17:54:23 +08:00
user670
1b54dd3b90 Add Notris Foes URL to en and ja dict (#867) 2023-03-10 17:23:04 +08:00
user670
001014c70e Update dict_ja.lua (#866)
Fix typo with "patreon"
2023-02-28 15:08:13 +08:00
MrZ_26
1a444a9e98 更新赞助名单和版本号 2023-02-28 12:23:39 +08:00
MrZ_26
d5397333d5 整理代码
框架跟进,修复游戏中报错时在错误场景失去焦点会触发暂停
2023-02-28 12:21:37 +08:00
user670
e1001c74c5 Bust out a few outdated teatube links in dictionary (#861) 2023-02-28 12:10:45 +08:00
ParticleG
5f664c04d6 修复Windows CI 2023-02-23 20:15:18 +08:00
ParticleG
525fa4c25e 获取transfer时增加重试功能 2023-02-23 17:58:47 +08:00
MrZ_26
f513760153 更新赞助名单 2023-02-23 02:01:47 +08:00
Particle_G
5faa929bb0 Merge pull request #862 from 26F-Studio/ci-ios-test
Fix portrait issue by removing `W.fullscreen` config in conf.lua
2023-02-21 15:53:16 +08:00
ParticleG
5c4557a7b7 - Re-enable other platforms' CI 2023-02-21 15:08:28 +08:00
ParticleG
69a84c035e - Remove trailing spaces 2023-02-21 14:54:28 +08:00
ParticleG
f8277e1c8a - Revert changes in SETTING table
- Use exclusive fullscreen on mobile devices
2023-02-21 14:37:58 +08:00
ParticleG
48f3d293bd - Try fix iOS portrait issue 2023-02-21 14:09:44 +08:00
ParticleG
00bf828ef4 - Try fix iOS portrait issue 2023-02-21 12:16:02 +08:00
ParticleG
d1cef7ed84 - Try fix iOS portrait issue 2023-02-21 11:54:58 +08:00
ParticleG
17bb8dbe6d - Try fix iOS portrait issue 2023-02-21 11:39:23 +08:00
ParticleG
6166c03eab - Try fix iOS portrait mode 2023-02-21 11:19:17 +08:00
ParticleG
303f32f5b2 - Try ios CI at main 2023-02-21 10:40:51 +08:00
sakurw
f7e4d7b30d Update lang_ja.lua (#860) 2023-02-20 14:55:29 +08:00
user670
f2957dff7b User670 20230216 en dict edit (#857) 2023-02-20 14:55:13 +08:00
MrZ_26
cadbe38a8f 再微调竖屏模式布局相关 2023-02-20 14:49:11 +08:00
MrZ_26
e55d117371 英文词典补充加加的连续pc教程 2023-02-16 10:03:47 +08:00
MrZ_26
1f3d8a212b 修改日文词典里加加的id 2023-02-15 18:14:53 +08:00
MrZ_26
035f30d7e1 再修竖屏模式ui位置(刚刚有个变量写错地方) 2023-02-15 16:13:10 +08:00
user670
3202aa18b1 Various dictionary fixes (#856) 2023-02-15 16:06:18 +08:00
sakurw
0c5d2bdf1a Update dict_ja.lua (#855)
* Update dict_ja.lua

* Update dict_ja.lua

* Update dict_ja.lua
2023-02-15 16:03:40 +08:00
ShardNguyen
db25475c21 Update Vietnamese Translation (#852)
* Adjusted consistency of the translation

* added 1 line and replaced tab with space
2023-02-15 16:01:44 +08:00
MrZ_26
11b1c23be0 竖屏模式下暂停/重开按钮和模式信息挪到被巨大化的玩家上面 2023-02-15 16:00:51 +08:00
MrZ_26
5b1eef890d 词典新增center和partial词条,日语待翻 2023-02-10 17:18:10 +08:00
MrZ_26
3a3d062e5c 版本推进 2023-02-09 04:04:22 +08:00
C₂₉H₂₅N₃O₅
2ee9ed237f Added Zundamon voicepack (#846) 2023-02-09 03:55:10 +08:00
MrFaq2018
9159661945 Update lang_es.lua (#850) 2023-02-09 03:54:32 +08:00
MrZ_26
0efd2c8044 开启竖屏选项时1P玩家强行放大至两倍 2023-02-09 03:51:44 +08:00
MrZ_26
0aaa5822fb 更新翻译人员列表 2023-02-09 03:37:16 +08:00
MrZ_26
2b258aeaed 修复团队战结束判定错误 2023-02-09 03:33:12 +08:00
ShardNguyen
0d7a80f2b5 Vietnamese Translation (#835) 2023-02-09 03:15:43 +08:00
MrZ_26
d433d98c04 更新一个中文tip和赞助名单 2023-02-06 11:18:55 +08:00
MrZ_26
180dc12460 删除一小段无效代码 2023-02-02 15:28:17 +08:00
MrZ_26
dd1d0b4126 删除关于成就系统的tip #841 2023-01-28 00:17:32 +08:00
MrZ_26
f1517fad1a 模式地图界面按f2开关显示网格(方便看位置) close #827 2023-01-25 03:21:30 +08:00
sakurw
62ed279f07 Update lang_ja.lua (#840) 2023-01-25 03:00:41 +08:00
MrZ_26
6925d59f87 修复手动登录失败后还会多余地执行一次去login场景 2023-01-25 02:54:18 +08:00
MrZ_26
848cc41c72 版本推进 2023-01-23 02:16:13 +08:00
MrZ_26
f212076604 整理代码
新增没做完的公告页面
因为一些神秘token问题连接失败后会要求重新登录
2023-01-23 02:14:10 +08:00
scdhh
ee4fd51e0f Add more supported languages to the installer (#839) 2023-01-23 01:50:05 +08:00
MrZ_26
f96b4f6724 把授权链接放到main里另外两个url处 2023-01-23 01:24:35 +08:00
ParticleG
7b6f2f826a 使用Release版本的官网地址 2023-01-23 01:11:43 +08:00
Particle_G
8ed4fd6cba Merge pull request #838 from 26F-Studio/ci-api-new
Ci api new close #821
2023-01-23 01:09:58 +08:00
ParticleG
b914cb26be 使用v1版本的Windows CI 2023-01-23 00:59:56 +08:00
ParticleG
97472e9a17 更新API端口 2023-01-23 00:48:20 +08:00
MrZ_26
dece8c0daa 版本推进 2023-01-22 03:58:25 +08:00
scdhh
5796d1af32 update ci (#829)
* Standardized rc templates

* Update copyright
2023-01-22 02:13:08 +08:00
MrZ_26
06d7a1df6b 修正中文语言两处文本漏翻 2023-01-21 19:47:11 +08:00
MrZ_26
ed293ddad8 更换音乐way的音频文件修正开头爆音 close #828 2023-01-21 19:11:52 +08:00
MrZ_26
d7a92344e5 音乐室作者文本加上描边 2023-01-21 18:41:43 +08:00
MrZ_26
3fa020fe91 修改存档管理界面文本颜色 2023-01-21 18:29:13 +08:00
MrZ_26
ce19af7da0 更新词典里的官网链接 2023-01-21 18:22:48 +08:00
MrZ_26
e558a9fc9d 修复统计菜单游戏logo上色错误 2023-01-21 18:19:13 +08:00
MrZ_26
fb5544ce0f 优化速度表的代码,微调外观 2023-01-21 14:15:38 +08:00
NOT_A_ROBOT
051f0d484c Revamp speed counter (#825) 2023-01-20 19:06:51 +08:00
C₂₉H₂₅N₃O₅
108cbea686 Added Vietnamese support for in-game font (#834)
- Added Vietnamese support
- Revised glyph shapes for `0`
2023-01-20 17:42:55 +08:00
ParticleG
8b61bd7d8a - Update workflow 2023-01-19 14:33:46 +08:00
ParticleG
1699a2b68a - Update workflow 2023-01-19 01:02:38 +08:00
MrZ_26
2fca95e81b 删除词典里已经没了的mew的链接,中文词典的连续PC词条改用加加整理的文档 2023-01-16 14:55:45 +08:00
ParticleG
969aa87a10 调用WIndows Action前更新Tenplate 2023-01-15 12:37:17 +08:00
ParticleG
b3dfa7d7ce 上传Windows安装包 2023-01-15 11:00:24 +08:00
scdhh
483de50169 Update main.yml 2023-01-15 01:13:41 +08:00
ParticleG
96762ffa5c 更新Windows安装包CI 2023-01-15 01:06:39 +08:00
MrZ_26
88d05c2354 修正一些新登录界面小问题 2023-01-15 01:00:17 +08:00
ParticleG
8aac152ee6 使用新的登录和鉴权API 2023-01-12 18:07:24 +08:00
ParticleG
d83779662a 更新登录界面 2023-01-12 16:31:17 +08:00
ParticleG
c19e656d46 删除密码登录场景 2023-01-09 17:34:35 +08:00
sakurw
4631a2f440 Update dict_ja.lua (#816) 2022-12-28 00:35:59 +08:00
sakurw
338f5811a1 Update lang_ja.lua (#815)
* Update lang_ja.lua

* Update lang_ja.lua

* Update lang_ja.lua
2022-12-28 00:29:58 +08:00
ParticleG
bc634b2eeb - Update workflow 2022-12-20 20:01:56 +08:00
ParticleG
23cbb9e261 - Update workflow 2022-12-20 19:02:09 +08:00
MrZ_26
fbfbf3c32b 玩家类新增dropPosition方法在失败的时候触发产生掉落动画
最后一个玩家的lose方法不会触发掉落
2022-12-19 21:42:29 +08:00
MrZ_26
3073a2e90d 修复混战模式失败后播音乐失败 2022-12-19 20:37:41 +08:00
MrZ_26
29e4dc93ab 把cc的几个print注释掉 2022-12-19 20:31:52 +08:00
ParticleG
2b16a20032 - Fix remove method 2022-12-19 20:28:00 +08:00
ParticleG
59b412899d - Try avoid flashing 2022-12-19 19:35:38 +08:00
ParticleG
e656ab5e1d - Add step to alive poslist 2022-12-19 19:07:35 +08:00
ParticleG
b90c06da72 - Add dynamic field 2022-12-19 03:38:33 +08:00
MrZ_26
f62f3652e2 修正错误情况进入暂停菜单时的一个崩溃 2022-12-19 01:28:20 +08:00
MrZ_26
dbbec9d2bd freshPlayerPosition方法添加一个执行模式用于游戏中动态调整布局 2022-12-18 22:22:53 +08:00
MrZ_26
1be8189058 修正dizt_ja漏一个引号 2022-12-18 21:00:05 +08:00
sakurw
b8b3160ccd Update dict_ja.lua (#810) 2022-12-18 20:59:11 +08:00
ParticleG
54fd3995e6 - Use raw install.sh 2022-12-18 18:03:27 +08:00
ParticleG
e506190c7f - Add retry times to transfer steps 2022-12-18 17:59:17 +08:00
Particle_G
8f418a0da9 Ci linux test (#813)
* - Only build linux
- Use love-actions/love-actions-linux@main

* - Update Linux product name

* - Finish editing
2022-12-18 14:30:15 +08:00
Particle_G
0403ee91ea Ci mobile fix (#812)
* - Add portrait switch

* - Only build mobile

* 设置项添加竖屏和msaa参数,增加调整的控件

* 修正conf.lua里没拿到正确的存档路径(因为还没设置identity)

* 加一些测试代码观察安卓到底有没有读到存档文件

* -Try relative

* - Try set settings in main

* - Make code analysis happy

* - Try not use setFullScreen

* - Test iOS portrait

* - Add various loggings

* - Try set identity first

* - Try set configs in conf.lua

* - Finish editing

Co-authored-by: MrZ_26 <1046101471@qq.com>
2022-12-17 17:57:57 +08:00
MrZ_26
47d1856143 在conf里提前读取设置文件配置一些东西 2022-12-16 22:19:17 +08:00
MrZ_26
e521f0fea0 修正上一个提交的小问题 2022-12-16 21:16:58 +08:00
Particle_G
eb1e7fd15a Fix Linux icon issue (#808)
- Try load icon
- Only build linux
- Set icon in conf.lua
- Set some global variables in conf.lua and set corresponding configs
- Avoid change fullscreen state when playing on mobile devices
- Try mobile
- Enable CI for merging
2022-12-16 14:51:00 +08:00
MrZ_26
c9e0a58232 添加N64和N64_plus旋转系统,修复None和None_plus搞反 close #805 2022-12-16 00:23:49 +08:00
MrZ_26
9acd8b54e3 提前改一下版本号 2022-12-16 00:10:57 +08:00
MrZ_26
acd66b1634 丢失的文本会显示为内部名称而不是神秘符号 close #775 2022-12-16 00:10:04 +08:00
MrZ_26
3820855812 微调几个语言文件 2022-12-16 00:10:04 +08:00
ParticleG
056abe7b68 - Add icon to bare and linux packages 2022-12-14 23:31:25 +08:00
MrZ_26
bf05b1bda2 如果存在media/image/icon.png会将其设置为窗口icon(方便Linux) 2022-12-14 20:05:35 +08:00
Particle_G
77a3c146c0 Ci test linux (#804)
- Fix build process
- Add debian package support
2022-12-14 15:51:57 +08:00
MrZ_26
5761f7f543 调整galaxy和quarks背景的粒子颜色,不影响游戏画面 2022-12-12 11:37:05 +08:00
MrZ_26
5ed5b543ce 修改一些中文tips 2022-12-11 13:44:29 +08:00
ParticleG
98ae0f2762 - Fix wrong folder name 2022-12-02 14:42:12 +08:00
ParticleG
963bc80439 - Bump Zframework version
- Fix android CC
2022-12-02 14:28:16 +08:00
Particle_G
4106dc454e Ci fix linux (#796)
* - Try fix linux

* - Try fix linux

* - Fix CC path

* - Try fix CC

* - Try fix CC

* - Remove temporary 'if's
2022-12-02 11:50:54 +08:00
MrZ_26
0ba26aa836 框架跟进 2022-12-02 01:18:37 +08:00
ParticleG
a4c775174b - Try fix Linux shared libs 2022-12-01 22:03:43 +08:00
sakurw
29c40c34fe Update dict_ja.lua (#793) 2022-12-01 10:25:29 +08:00
sakurw
44cb889b91 Update lang_ja.lua (#791) 2022-12-01 10:24:23 +08:00
ParticleG
915d65d2f4 - Update workflow 2022-12-01 10:18:56 +08:00
MrZ_26
8b7c270cf6 版本推进 2022-11-30 01:40:26 +08:00
MrZ_26
a3f07f8ce4 修复单机模式玩家uid问题,解决未登录状态下回合制报错 2022-11-29 01:10:58 +08:00
MrZ_26
91d3252685 删除可能远古留下来的account文件 2022-11-29 01:10:24 +08:00
MrZ_26
f9d9112651 修复第一次启动选择语言后直接就退出了 2022-11-28 23:37:47 +08:00
MrZ_26
477a1acc61 框架跟进,修复require模块在mac系统的崩溃 close #788 2022-11-28 23:31:28 +08:00
MrZ_26
4770366f74 修正dict_ja几处语法错误 2022-11-28 23:02:27 +08:00
sakurw
1c66b4dce1 Update dict_ja.lua (#790) 2022-11-28 23:00:41 +08:00
sakurw
3a19bb534a Update lang_ja.lua (#789) 2022-11-28 22:59:50 +08:00
sakurw
f39b3cfd4a Update lang_ja.lua (#785) 2022-11-26 17:02:43 +08:00
MrZ_26
f0410243c4 攻击竞速模式左侧攻击数字从%.1f改为%d close #780 2022-11-25 10:41:47 +08:00
MrZ_26
8abc40707a 彻底删除rin语音包相关内容(作者说不搞了) 2022-11-20 11:48:33 +08:00
MrZ_26
f91fe34a12 修复两个堆叠模式消除垃圾行的时候没减少内部的垃圾行高计数 2022-11-12 16:44:38 +08:00
MrZ_26
e9bf6c3b58 因为改了srs+踢墙表所以提升房间版本 2022-11-09 19:45:34 +08:00
MrZ_26
17c660b5a2 修正SRS_plus旋转系统的i不对称(原来8个90度的表就是srs的没改) close #772 2022-11-09 19:44:12 +08:00
sakurw
ed46f73987 Update lang_ja.lua (#773) 2022-11-09 19:22:17 +08:00
MrZ_26
e1200b5038 整理代码(修复cc加载失败有时候会报错) 2022-11-07 16:46:24 +08:00
MrZ_26
7f7ea6ac97 整理代码,调整加载顺序 2022-11-06 20:47:28 +08:00
MrZ_26
f70edaac83 移除加载时可能的强制重启(防止ios出问题)
几处love退出改为去quit场景(防止ios出问题)
整理代码
框架跟进
2022-11-06 17:28:54 +08:00
sakurw
d932febe89 Update lang_ja.lua (#770) 2022-11-06 13:39:51 +08:00
MrFaq2018
945a63c51d Update lang_es.lua (#771)
For next ver.
2022-11-06 13:39:29 +08:00
MrZ_26
da716ea5c5 版本推进 2022-11-05 23:07:54 +08:00
MrZ_26
c6f92a3030 略微降低客户端发言频率限制
发言id和文本之间加一个空格
框架跟进,修复textBox控件和listBox控件显示范围问题
2022-11-05 22:59:21 +08:00
MrZ_26
267e2dc544 修复其他玩家进房check是否已存在的时候因为访问不存在的玩家而报错 2022-11-05 22:59:21 +08:00
MrZ_26
cb7d3afdfb 删除服务端的playerManager.noPassword消息 2022-11-05 22:59:21 +08:00
MrZ_26
b57e863c28 联网游戏可以用键盘ctrl+0123456切换队伍 2022-11-05 22:59:21 +08:00
MrZ_26
7aed15fd4f 修正其他玩家的结束游戏消息处理太早导致录像没放完出问题 2022-11-05 22:59:21 +08:00
MrZ_26
6d71b26595 自定义游戏菜单微调 2022-11-05 22:59:21 +08:00
sakurw
1df5406cb3 Update lang_ja.lua (#768) 2022-11-05 15:47:36 +08:00
MrZ_26
a2b762dcbc 添加几个房间内命令
添加房间被解散的语言文本
把一处神秘写法改正常一点
2022-11-05 02:14:51 +08:00
MrZ_26
c2d29c3d6a 联网游戏界面添加选队伍按钮,加一个没卵用的退出房间命令 2022-11-04 17:15:36 +08:00
MrZ_26
da602eb693 两个输入验证码的地方添加粘贴按钮
整理代码
2022-11-04 16:45:51 +08:00
383 changed files with 10485 additions and 4566 deletions

31
.editorconfig Normal file
View File

@@ -0,0 +1,31 @@
# EmmyLuaCodeStyle
[*.lua]
max_line_length = 26000
indent_style = space
insert_final_newline = true
space_around_table_field_list = false
space_before_attribute = false
space_before_function_call_open_parenthesis = false
space_before_closure_open_parenthesis = false
space_before_function_call_single_arg = false
space_before_open_square_bracket = false
space_inside_function_call_parentheses = false
space_inside_function_param_list_parentheses = false
space_inside_square_brackets = false
space_around_table_append_operator = false
space_before_inline_comment = false
space_around_math_operator = false
space_around_logical_operator = false
space_around_assign_operator = false
space_after_comma = false
space_after_comma_in_for_statement = false
space_around_concat_operator = false
align_call_args = false
align_function_params = false
align_continuous_assign_statement = true
align_continuous_rect_table_field = true
align_if_branch = false
align_array_table = true
ignore_spaces_inside_function_call = true
line_space_after_function_statement = keep
trailing_table_separator = smart

View File

@@ -3,7 +3,7 @@ description: 'download cc into specific dir'
inputs:
tag:
required: false
default: "11.4"
default: "11.4.2"
platform:
required: true
dir:

View File

@@ -8,7 +8,7 @@ index c1932555..552e432e 100644
**/
-void vibrate();
+void vibrate(const double seconds);
/**
* Enable mix mode (e.g. with background music apps) and playback with a muted device.
diff --git a/src/common/ios.mm b/src/common/ios.mm
@@ -18,16 +18,16 @@ index 7730991e..4ba8e708 100644
@@ -36,6 +36,8 @@
#include <SDL_video.h>
#include <SDL_syswm.h>
+#include <sys/utsname.h>
+
static NSArray *getLovesInDocuments();
static bool deleteFileInDocuments(NSString *filename);
@@ -391,10 +393,40 @@ std::string getExecutablePath()
}
}
-void vibrate()
+void vibrate(const double seconds)
{
@@ -73,7 +73,7 @@ index c8af8596..ae7a5e32 100644
@@ -140,6 +140,10 @@ enum DoneAction
DONE_RESTART,
};
+extern "C" {
+ int luaopen_CCloader(lua_State *L);
+}
@@ -84,7 +84,7 @@ index c8af8596..ae7a5e32 100644
@@ -158,6 +162,9 @@ static DoneAction runlove(int argc, char **argv, int &retval)
lua_State *L = luaL_newstate();
luaL_openlibs(L);
+ // Init CCloader
+ luaopen_CCloader(L);
+

View File

@@ -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

View File

@@ -1 +0,0 @@
*.template text eol=lf

View File

@@ -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

BIN
.github/build/web/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

288
.github/build/web/game.js vendored Normal file
View File

@@ -0,0 +1,288 @@
var Module;
if (typeof Module === 'undefined') Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()');
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = 'game.data';
var REMOTE_PACKAGE_BASE = 'game.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
Module.printErr('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = typeof Module['locateFile'] === 'function' ?
Module['locateFile'](REMOTE_PACKAGE_BASE) :
((Module['filePackagePrefixURL'] || '') + REMOTE_PACKAGE_BASE);
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
function DataRequest(start, end, crunched, audio) {
this.start = start;
this.end = end;
this.crunched = crunched;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createDataFile'](this.name, null, byteArray, true, true, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
Module['removeRunDependency']('fp ' + that.name);
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].crunched, files[i].audio).open('GET', files[i].filename);
}
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
var IDB_RO = "readonly";
var IDB_RW = "readwrite";
var DB_NAME = "EM_PRELOAD_CACHE";
var DB_VERSION = 1;
var METADATA_STORE_NAME = 'METADATA';
var PACKAGE_STORE_NAME = 'PACKAGES';
function openDatabase(callback, errback) {
try {
var openRequest = indexedDB.open(DB_NAME, DB_VERSION);
} catch (e) {
return errback(e);
}
openRequest.onupgradeneeded = function(event) {
var db = event.target.result;
if(db.objectStoreNames.contains(PACKAGE_STORE_NAME)) {
db.deleteObjectStore(PACKAGE_STORE_NAME);
}
var packages = db.createObjectStore(PACKAGE_STORE_NAME);
if(db.objectStoreNames.contains(METADATA_STORE_NAME)) {
db.deleteObjectStore(METADATA_STORE_NAME);
}
var metadata = db.createObjectStore(METADATA_STORE_NAME);
};
openRequest.onsuccess = function(event) {
var db = event.target.result;
callback(db);
};
openRequest.onerror = function(error) {
errback(error);
};
};
/* Check if there's a cached package, and if so whether it's the latest available */
function checkCachedPackage(db, packageName, callback, errback) {
var transaction = db.transaction([METADATA_STORE_NAME], IDB_RO);
var metadata = transaction.objectStore(METADATA_STORE_NAME);
var getRequest = metadata.get("metadata/" + packageName);
getRequest.onsuccess = function(event) {
var result = event.target.result;
if (!result) {
return callback(false);
} else {
return callback(PACKAGE_UUID === result.uuid);
}
};
getRequest.onerror = function(error) {
errback(error);
};
};
function fetchCachedPackage(db, packageName, callback, errback) {
var transaction = db.transaction([PACKAGE_STORE_NAME], IDB_RO);
var packages = transaction.objectStore(PACKAGE_STORE_NAME);
var getRequest = packages.get("package/" + packageName);
getRequest.onsuccess = function(event) {
var result = event.target.result;
callback(result);
};
getRequest.onerror = function(error) {
errback(error);
};
};
function cacheRemotePackage(db, packageName, packageData, packageMeta, callback, errback) {
var transaction_packages = db.transaction([PACKAGE_STORE_NAME], IDB_RW);
var packages = transaction_packages.objectStore(PACKAGE_STORE_NAME);
var putPackageRequest = packages.put(packageData, "package/" + packageName);
putPackageRequest.onsuccess = function(event) {
var transaction_metadata = db.transaction([METADATA_STORE_NAME], IDB_RW);
var metadata = transaction_metadata.objectStore(METADATA_STORE_NAME);
var putMetadataRequest = metadata.put(packageMeta, "metadata/" + packageName);
putMetadataRequest.onsuccess = function(event) {
callback(packageData);
};
putMetadataRequest.onerror = function(error) {
errback(error);
};
};
putPackageRequest.onerror = function(error) {
errback(error);
};
};
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) Module.printErr('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_game.data');
};
Module['addRunDependency']('datafile_game.data');
if (!Module.preloadResults) Module.preloadResults = {};
function preloadFallback(error) {
console.error(error);
console.error('falling back to default preload behavior');
fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, processPackageData, handleError);
};
openDatabase(
function(db) {
checkCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME,
function(useCached) {
Module.preloadResults[PACKAGE_NAME] = {fromCache: useCached};
if (useCached) {
console.info('loading ' + PACKAGE_NAME + ' from cache');
fetchCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME, processPackageData, preloadFallback);
} else {
console.info('loading ' + PACKAGE_NAME + ' from remote');
fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE,
function(packageData) {
cacheRemotePackage(db, PACKAGE_PATH + PACKAGE_NAME, packageData, {uuid:PACKAGE_UUID}, processPackageData,
function(error) {
console.error(error);
processPackageData(packageData);
});
}
, preloadFallback);
}
}
, preloadFallback);
}
, preloadFallback);
if (Module['setStatus']) Module['setStatus']('Downloading...');
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"package_uuid":"80826f15-f924-4428-a8c4-e984743417c6","remote_package_size":62246034,"files":[{"filename":"/game.love","crunched":0,"start":0,"end":62246034,"audio":false}]});
})();

111
.github/build/web/index.html vendored Normal file
View File

@@ -0,0 +1,111 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, minimum-scale=1, maximum-scale=1">
<title>Techmino</title>
<!-- Load custom style sheet -->
<link rel="stylesheet" type="text/css" href="theme/love.css">
</head>
<body>
<center>
<div>
<h1>Techmino</h1>
<canvas id="loadingCanvas" oncontextmenu="event.preventDefault()" width="800" height="600"></canvas>
<canvas id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
</center>
<script type='text/javascript'>
function goFullScreen(){
var canvas = document.getElementById("canvas");
if(canvas.requestFullScreen)
canvas.requestFullScreen();
else if(canvas.webkitRequestFullScreen)
canvas.webkitRequestFullScreen();
else if(canvas.mozRequestFullScreen)
canvas.mozRequestFullScreen();
}
function FullScreenHook(){
var canvas = document.getElementById("canvas");
canvas.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
canvas.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
}
var loadingContext = document.getElementById('loadingCanvas').getContext('2d');
function drawLoadingText(text) {
var canvas = loadingContext.canvas;
loadingContext.fillStyle = "rgb(142, 195, 227)";
loadingContext.fillRect(0, 0, canvas.scrollWidth, canvas.scrollHeight);
loadingContext.font = '2em arial';
loadingContext.textAlign = 'center'
loadingContext.fillStyle = "rgb( 11, 86, 117 )";
loadingContext.fillText(text, canvas.scrollWidth / 2, canvas.scrollHeight / 2);
loadingContext.fillText("Powered By Emscripten.", canvas.scrollWidth / 2, canvas.scrollHeight / 4);
loadingContext.fillText("Powered By LÖVE.", canvas.scrollWidth / 2, canvas.scrollHeight / 4 * 3);
}
window.onload = function () { window.focus(); };
window.onclick = function () { window.focus(); };
window.addEventListener("keydown", function(e) {
// space and arrow keys
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
var Module = {
arguments: ["./game.love"],
INITIAL_MEMORY: 536870912,
printErr: console.error.bind(console),
canvas: (function() {
var canvas = document.getElementById('canvas');
// As a default initial behavior, pop up an alert when webgl context is lost. To make your
// application robust, you may want to override this behavior before shipping!
// See http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15.2
canvas.addEventListener("webglcontextlost", function(e) { alert('WebGL context lost. You will need to reload the page.'); e.preventDefault(); }, false);
return canvas;
})(),
setStatus: function(text) {
if (text) {
drawLoadingText(text);
} else if (Module.remainingDependencies === 0) {
document.getElementById('loadingCanvas').style.display = 'none';
document.getElementById('canvas').style.visibility = 'visible';
}
},
totalDependencies: 0,
remainingDependencies: 0,
monitorRunDependencies: function(left) {
this.remainingDependencies = left;
this.totalDependencies = Math.max(this.totalDependencies, left);
Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
}
};
Module.setStatus('Downloading...');
window.onerror = function(event) {
// TODO: do not warn on ok events like simulating an infinite loop or exitStatus
Module.setStatus('Exception thrown, see JavaScript console');
Module.setStatus = function(text) {
if (text) Module.printErr('[post-exception status] ' + text);
};
};
var applicationLoad = function(e) {
Love(Module);
}
</script>
<script type="text/javascript" src="game.js"></script>
<script async type="text/javascript" src="love.js" onload="applicationLoad(this)"></script>
<footer>
<p>Built with <a href="https://github.com/Davidobot/love.js">love.js</a> <button onclick="goFullScreen();">Go Fullscreen</button><br>Hint: Reload the page if screen is blank</p>
</footer>
</body>
</html>

22
.github/build/web/love.js vendored Normal file

File diff suppressed because one or more lines are too long

BIN
.github/build/web/love.wasm vendored Normal file

Binary file not shown.

BIN
.github/build/web/theme/bg.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

49
.github/build/web/theme/love.css vendored Normal file
View File

@@ -0,0 +1,49 @@
* {
box-sizing: border-box;
}
h1 {
font-family: arial;
color: rgb( 11, 86, 117 );
}
body {
background-image: url(bg.png);
background-repeat: no-repeat;
font-family: arial;
margin: 0;
padding: none;
background-color: rgb( 154, 205, 237 );
color: rgb( 28, 78, 104 );
}
footer {
font-family: arial;
font-size: 12px;
padding-left: 10px;
position:absolute;
bottom: 0;
width: 100%;
}
/* Links */
a {
text-decoration: none;
}
a:link {
color: rgb( 233, 73, 154 );
}
a:visited {
color: rgb( 110, 30, 71 );
}
a:hover {
color: rgb( 252, 207, 230 );
}
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
#canvas {
padding-right: 0;
display: block;
border: 0px none;
visibility: hidden;
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -70,8 +70,6 @@ jobs:
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -99,6 +97,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 +126,6 @@ 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
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
auto-test:
runs-on: ubuntu-latest
@@ -146,11 +143,10 @@ jobs:
build-android:
runs-on: ubuntu-latest
needs: [get-info, build-core, auto-test]
if: github.event_name != 'pull_request'
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -162,12 +158,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:
@@ -176,17 +172,10 @@ jobs:
uses: ./.github/actions/get-cc
with:
platform: Android
dir: ./ColdClear
- name: Process ColdClear
shell: bash
run: |
mkdir -p ./libAndroid/armeabi-v7a/
mkdir -p ./libAndroid/arm64-v8a/
mv ./ColdClear/armeabi-v7a/libCCloader.so ./libAndroid/armeabi-v7a/
mv ./ColdClear/arm64-v8a/libCCloader.so ./libAndroid/arm64-v8a/
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 }}
@@ -197,8 +186,8 @@ jobs:
keystore-store-password: ${{ secrets.ANDROID_KEYSTORE_STOREPASSWORD }}
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
resource-path: ./.github/build/android/${{ env.BUILD_TYPE }}/res
libs-path: ./ColdClear/
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 }}
@@ -223,22 +212,14 @@ 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
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
build-ios:
runs-on: macos-latest
if: github.event_name != 'pull_request'
needs: [get-info, build-core, auto-test]
if: github.event_name != 'pull_request'
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -267,7 +248,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 }}
@@ -312,12 +293,6 @@ 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
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
build-linux:
runs-on: ubuntu-latest
@@ -325,8 +300,6 @@ jobs:
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -337,12 +310,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:
@@ -352,20 +333,19 @@ jobs:
shell: bash
run: |
cd ./ColdClear
mkdir ./libs
mv ./x64/libcold_clear.so ./libs
mkdir ./shared
mv ./x64/CCloader.so ./shared
mkdir -p ./lib/lua/5.1
mv ./x64/CCloader.so ./lib/lua/5.1
- name: Build Linux packages
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 }}
libs-path: ./ColdClear/libs/
shared-path: ./ColdClear/shared/
lib-path: ./ColdClear/lib
product-name: ${{ steps.process-app-name.outputs.product-name }}
output-folder: ${{ env.OUTPUT_FOLDER }}
- name: Upload AppImage artifact
@@ -373,37 +353,37 @@ 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: 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
build-macos-appstore:
runs-on: macos-latest
if: github.event_name != 'pull_request'
needs: [get-info, build-core, auto-test]
if: github.event_name != 'pull_request'
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -436,7 +416,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/
@@ -480,22 +460,14 @@ 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
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
build-macos-portable:
runs-on: macos-latest
if: github.event_name != 'pull_request'
needs: [get-info, build-core, auto-test]
if: github.event_name != 'pull_request'
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -528,7 +500,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/
@@ -578,16 +550,40 @@ 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
build-web:
runs-on: ubuntu-latest
needs: [get-info, build-core, auto-test]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download core love package
uses: actions/download-artifact@v3
with:
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
- name: Move core love package
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
mv ${{ env.CORE_LOVE_PACKAGE_PATH }} ./.github/build/web/game.data
- name: Deploy to GitHub Pages
uses: crazy-max/ghaction-github-pages@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
build_dir: ./.github/build/web/
keep_history: false
target_branch: web-dev
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ needs.get-info.outputs.base-name }}_Web_PWA
path: ./.github/build/web/
build-windows:
runs-on: windows-latest
@@ -595,8 +591,6 @@ jobs:
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
@@ -618,6 +612,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
@@ -628,7 +635,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
@@ -640,6 +649,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
@@ -647,29 +661,19 @@ 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') }}
- name: Get transfer
env:
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 }}
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
post-build:
runs-on: ubuntu-latest
@@ -684,44 +688,19 @@ jobs:
build-linux,
build-macos-appstore,
build-macos-portable,
build-web,
build-windows,
]
env:
ACTION_TYPE: ${{ fromJSON('[["Development", "Pre-release"], ["Release", "Release"]]')[startsWith(github.ref, 'refs/tags/v')][startsWith(github.ref, 'refs/tags/pre')] }}
steps:
- uses: actions/checkout@v3
- name: Cleanup
uses: geekyeggo/delete-artifact@v2
with:
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
- name: Display summary
shell: bash
run: |
echo "# Summary" >> $GITHUB_STEP_SUMMARY
echo "## Version: ${{ needs.get-info.outputs.version-string }}" >> $GITHUB_STEP_SUMMARY
echo "## Package Name: ${{ needs.get-info.outputs.base-name }}" >> $GITHUB_STEP_SUMMARY
echo "## Download links: " >> $GITHUB_STEP_SUMMARY
- name: Display download links
shell: python3 {0}
run: |
import os
with open(os.getenv('GITHUB_STEP_SUMMARY'), 'a') as f:
if "${{ needs.build-core.result }}" == "success":
f.write("- Bare love packages: [WeTransfer](${{ needs.build-core.outputs.download-url }})\n")
if "${{ needs.build-android.result }}" == "success":
f.write("- Android packages: [WeTransfer](${{ needs.build-android.outputs.download-url }})\n")
if "${{ needs.build-ios.result }}" == "success":
f.write("- iOS packages: [WeTransfer](${{ needs.build-ios.outputs.download-url }})\n")
if "${{ needs.build-linux.result }}" == "success":
f.write("- Linux packages: [WeTransfer](${{ needs.build-linux.outputs.download-url }})\n")
if "${{ needs.build-macos-appstore.result }}" == "success":
f.write("- macOS packages(App Store version): [WeTransfer](${{ needs.build-macos-appstore.outputs.download-url }})\n")
if "${{ needs.build-macos-portable.result }}" == "success":
f.write("- macOS packages(Portable version): [WeTransfer](${{ needs.build-macos-portable.outputs.download-url }})\n")
if "${{ needs.build-windows.result }}" == "success":
f.write("- Windows packages: [WeTransfer](${{ needs.build-windows.outputs.download-url }})\n")
- name: Send Discord message
uses: Sniddl/discord-commits@v1.5
if: github.event_name != 'pull_request'
uses: Sniddl/discord-commits@v1.6
with:
webhook: ${{ secrets.DISCORD_WEBHOOK }}
message: "Github Actions for **${{ github.repository }}**."
@@ -740,7 +719,6 @@ jobs:
"fields":[
{"name":"Version","value":"${{ needs.get-info.outputs.version-string }}","inline": true},
{"name":"Package Name","value":"${{ needs.get-info.outputs.base-name }}","inline": true},
{"name":"Status","value":"**Automatic Test:** ${{ needs.auto-test.result }}\n**Core:** ${{ needs.build-core.result }}\n**Android:** ${{ needs.build-android.result }}\n**iOS:** ${{ needs.build-ios.result }}\n**Linux:** ${{ needs.build-linux.result }}\n**macOS App Store:** ${{ needs.build-macos-appstore.result }}\n**macOS portable:** ${{ needs.build-macos-portable.result }}\n**Windows:** ${{ needs.build-windows.result }}"},
{"name":"Download Links","value":"**Core:** ${{ needs.build-core.outputs.download-url}}\n**Android:** ${{ needs.build-android.outputs.download-url }}\n**iOS:** ${{ needs.build-ios.outputs.download-url }}\n**Linux:** ${{ needs.build-linux.outputs.download-url }}\n**macOS App Store:** ${{ needs.build-macos-appstore.outputs.download-url }}\n**macOS portable:** ${{ needs.build-macos-portable.outputs.download-url }}\n**Windows:** ${{ needs.build-windows.outputs.download-url}}"}
{"name":"Status","value":"**Automatic Test:** ${{ needs.auto-test.result }}\n**Core:** ${{ needs.build-core.result }}\n**Android:** ${{ needs.build-android.result }}\n**iOS:** ${{ needs.build-ios.result }}\n**Linux:** ${{ needs.build-linux.result }}\n**macOS App Store:** ${{ needs.build-macos-appstore.result }}\n**macOS portable:** ${{ needs.build-macos-portable.result }}\n**Windows:** ${{ needs.build-windows.result }}"}
]
}'

View File

@@ -1,29 +1,42 @@
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
if SYSTEM=='Web' then
local oldRead=love.filesystem.read
function love.filesystem.read(name,size)
if love.filesystem.getInfo(name) then
return oldRead(name,size)
end
end
end
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
local M=t.modules
M.window,M.system,M.event,M.thread=true,true,true,true
M.timer,M.math,M.data=true,true,true
@@ -31,4 +44,28 @@ function love.conf(t)
M.graphics,M.font,M.image=true,true,true
M.mouse,M.touch,M.keyboard,M.joystick=true,true,true,true
M.physics=false
local W=t.window
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
W.borderless=MOBILE -- Display window frame
W.resizable=not MOBILE -- Whether window is resizable
W.fullscreentype=MOBILE and "exclusive" or "desktop" -- Fullscreen type
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.title="Techmino "..require"version".string -- Window title
if fs.getInfo('media/image/icon.png') then
W.icon='media/image/icon.png'
end
end

664
main.lua
View File

@@ -10,10 +10,8 @@
Instructions:
1. I made a framework called Zframework, *most* code in Zframework are not directly relevant to game;
2. "xxx" are texts for reading by player, 'xxx' are string values just used in program;
3. Some goto statement are used for better performance. All goto-labes have detailed names so don't be afraid;
4. Except "gcinfo" function of lua itself, other "gc" are short for "graphics";
]]--
3. Except "gcinfo" function of lua itself, other "gc" are short for "graphics";
]]
-- Var leak check
-- setmetatable(_G,{__newindex=function(self,k,v) print('>>'..k..string.rep(" ",26-#k),debug.traceback():match("\n.-\n\t(.-): "))rawset(self,k,v) end})
@@ -22,13 +20,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','flore','miku','zundamon'}
FIRSTLAUNCH=false
DAILYLAUNCH=false
@@ -37,11 +32,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()
@@ -55,12 +45,12 @@ FONT.load{
FONT.setDefault('norm')
FONT.setFallback('norm')
SCR.setSize(1280,720)-- Initialize Screen size
SCR.setSize(1280,720) -- Initialize Screen size
BGM.setMaxSources(5)
VOC.setDiversion(.62)
WIDGET.setOnChange(function()
if SCN.cur~='custom_field' then
if SCN.cur~='net_game' and SCN.cur~='custom_field' then
local colorList=THEME.getThemeColor()
if colorList then
for _,W in next,SCN.scenes[SCN.cur].widgetList do
@@ -72,8 +62,6 @@ WIDGET.setOnChange(function()
end
end)
table.insert(_LOADTIMELIST_,("Load Zframework: %.3fs"):format(TIME()-_LOADTIME_))
-- Create shortcuts
setFont=FONT.set
getFont=FONT.get
@@ -98,10 +86,6 @@ for _,v in next,{'conf','record','replay','cache','lib'} do
end
end
CHAR=require'parts.char'
require'parts.gameTables'
require'parts.gameFuncs'
-- Load shader files from SOURCE ONLY
SHADER={}
for _,v in next,fs.getDirectoryItems('parts/shaders') do
@@ -111,31 +95,57 @@ for _,v in next,fs.getDirectoryItems('parts/shaders') do
end
end
THEME= require'parts.theme'
LINE= require'parts.line'
DATA= require'parts.data'
-- Load modules
CHAR=require'parts.char'
require'parts.gameTables'
require'parts.gameFuncs'
TEXTURE= require'parts.texture'
SKIN= require'parts.skin'
USERS= require'parts.users'
NET= require'parts.net'
VK= require'parts.virtualKey'
BOT= require'parts.bot'
RSlist= require'parts.RSlist'DSCP=RSlist.TRS.centerPos
PLY= require'parts.player'
NETPLY= require'parts.netPlayer'
MODES= require'parts.modes'
THEME =require'parts.theme'
LINE =require'parts.line'
DATA =require'parts.data'
setmetatable(TEXTURE,{__index=function(self,k)
MES.new('warn',"No texture called: "..k)
self[k]=PAPER
return self[k]
end})
TEXTURE=require'parts.texture'
SKIN =require'parts.skin'
USERS =require'parts.users'
NET =require'parts.net'
VK =require'parts.virtualKey'
BOT =require'parts.bot'
RSlist =require'parts.RSlist'; DSCP=RSlist.TRS.centerPos
PLY =require'parts.player'
NETPLY =require'parts.netPlayer'
MODES =require'parts.modes'
table.insert(_LOADTIMELIST_,("Load Parts: %.3fs"):format(TIME()-_LOADTIME_))
setmetatable(TEXTURE,{
__index=function(self,k)
MES.new('warn',"No texture called: "..k)
self[k]=PAPER
return self[k]
end,
})
-- Init Zframework
do-- Z.setCursor
-- Load mode files
for i=1,#MODES do
local m=MODES[i] -- Mode template
if FILE.isSafe('parts/modes/'..m.name) then
TABLE.complete(require('parts.modes.'..m.name),MODES[i])
MODES[m.name],MODES[i]=MODES[i]
end
end
for _,v in next,fs.getDirectoryItems('parts/modes') do
if FILE.isSafe('parts/modes/'..v) and not MODES[v:sub(1,-5)] then
local M={name=v:sub(1,-5)}
local modeData=require('parts.modes.'..M.name)
if modeData.env then
TABLE.complete(modeData,M)
MODES[M.name]=M
end
end
end
table.insert(_LOADTIMELIST_,("Load Modules: %.3fs"):format(TIME()-_LOADTIME_))
-- Initialize Zframework
do -- Z.setCursor
local normImg=GC.DO{16,16,
{'fCirc',8,8,4},
{'setCL',1,1,1,.7},
@@ -165,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]
@@ -179,18 +189,20 @@ 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{
{"Cache",gcinfo},
{"Tasks",TASK.getCount},
{"Cache", gcinfo},
{"Tasks", TASK.getCount},
{"Voices",VOC.getQueueCount},
{"Audios",love.audio.getSourceCount},
}
do-- Z.setOnFocus
do -- Z.setOnFocus
local function task_autoSoundOff()
while true do
coroutine.yield()
@@ -239,15 +251,126 @@ Z.setOnQuit(function()
destroyPlayers()
end)
-- Initialize image libs
IMG.init{
lock='media/image/mess/lock.png',
dialCircle='media/image/mess/dialCircle.png',
dialNeedle='media/image/mess/dialNeedle.png',
lifeIcon='media/image/mess/life.png',
badgeIcon='media/image/mess/badge.png',
ctrlSpeedLimit='media/image/mess/ctrlSpeedLimit.png',
pay1='media/image/mess/pay1.png',
pay2='media/image/mess/pay2.png',
miyaCH1='media/image/characters/miya1.png',
miyaCH2='media/image/characters/miya2.png',
miyaCH3='media/image/characters/miya3.png',
miyaCH4='media/image/characters/miya4.png',
miyaHeart='media/image/characters/miya_heart.png',
miyaGlow='media/image/characters/miya_glow.png',
monoCH='media/image/characters/mono.png',
xiaoyaCH='media/image/characters/xiaoya.png',
xiaoyaOmino='media/image/characters/xiaoya_Omino.png',
floreCH='media/image/characters/flore.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',
screen2='media/image/characters/z_screen2.png',
particle1='media/image/characters/z_particle1.png',
particle2='media/image/characters/z_particle2.png',
particle3='media/image/characters/z_particle3.png',
particle4='media/image/characters/z_particle4.png',
},
electric='media/image/characters/electric.png',
hbm='media/image/characters/hbm.png',
lanterns={
'media/image/lanterns/1.png',
'media/image/lanterns/2.png',
'media/image/lanterns/3.png',
'media/image/lanterns/4.png',
'media/image/lanterns/5.png',
'media/image/lanterns/6.png',
},
}
SKIN.load{
{name="crystal_scf", path='media/image/skin/crystal_scf.png'},
{name="matte_mrz", path='media/image/skin/matte_mrz.png'},
{name="shiny_chno", path='media/image/skin/shiny_chno.png'},
{name="contrast_mrz", path='media/image/skin/contrast_mrz.png'},
{name="polkadots_scf", path='media/image/skin/polkadots_scf.png'},
{name="toy_scf", path='media/image/skin/toy_scf.png'},
{name="smooth_mrz", path='media/image/skin/smooth_mrz.png'},
{name="simple_scf", path='media/image/skin/simple_scf.png'},
{name="glass_scf", path='media/image/skin/glass_scf.png'},
{name="penta_scf", path='media/image/skin/penta_scf.png'},
{name="bubble_scf", path='media/image/skin/bubble_scf.png'},
{name="minoes_scf", path='media/image/skin/minoes_scf.png'},
{name="pure_mrz", path='media/image/skin/pure_mrz.png'},
{name="bright_scf", path='media/image/skin/bright_scf.png'},
{name="glow_mrz", path='media/image/skin/glow_mrz.png'},
{name="plastic_mrz", path='media/image/skin/plastic_mrz.png'},
{name="paper_mrz", path='media/image/skin/paper_mrz.png'},
{name="yinyang_scf", path='media/image/skin/yinyang_scf.png'},
{name="cartooncup_earety", path='media/image/skin/cartooncup_earety.png'},
{name="jelly_miya", path='media/image/skin/jelly_miya.png'},
{name="guidetris_xmiao_lusisi",path='media/image/skin/guidetris_xmiao_lusisi.png'},
{name="brick_notypey", path='media/image/skin/brick_notypey.png'},
{name="gem_notypey", path='media/image/skin/gem_notypey.png'},
{name="classic", path='media/image/skin/classic_unknown.png'},
{name="ball_shaw", path='media/image/skin/ball_shaw.png'},
{name="retro_notypey", path='media/image/skin/retro_notypey.png'},
{name="pixel_chno", path='media/image/skin/pixel_chno.png'},
{name="pastel_chno", path='media/image/skin/pastel_chno.png'},
{name="letters_chno", path='media/image/skin/letters_chno.png'},
{name="kanji_chno", path='media/image/skin/kanji_chno.png'},
{name="textbone_mrz", path='media/image/skin/textbone_mrz.png'},
{name="coloredbone_mrz", path='media/image/skin/coloredbone_mrz.png'},
{name="wtf", path='media/image/skin/wtf_mrz.png'},
}
-- Initialize sound libs
SFX.init((function() --[Warning] Not loading files here, just get the list of sound needed
local L={}
for _,v in next,fs.getDirectoryItems('media/effect/chiptune/') do
if FILE.isSafe('media/effect/chiptune/'..v) then
table.insert(L,v:sub(1,-5))
end
end
return L
end)())
BGM.init((function()
local L={}
for _,v in next,fs.getDirectoryItems('media/music') do
if FILE.isSafe('media/music/'..v) then
L[v:sub(1,-5)]='media/music/'..v
end
end
return L
end)())
VOC.init{
'zspin','sspin','jspin','lspin','tspin','ospin','ispin','pspin','qspin','fspin','espin','uspin','vspin','wspin','xspin','rspin','yspin','nspin','hspin','cspin',
'single','double','triple','techrash','pentacrash','hexacrash','heptacrash','octacrash','nonacrash','decacrash','undecacrash','dodecacrash','tridecacrash','tetradecacrash','pentadecacrash','hexadecacrash','heptadecacrash','octadecacrash','nonadecacrash','ultracrash','impossicrash',
'mini','b2b','b3b',
'perfect_clear','half_clear',
'win','lose','bye',
'test','happy','doubt',
'welcome',
}
table.insert(_LOADTIMELIST_,("Initialize Modules: %.3fs"):format(TIME()-_LOADTIME_))
-- Load settings and statistics
if
not (
pcall(TABLE.cover, loadFile('conf/user', '-json -canSkip') or loadFile('conf/user', '-luaon -canSkip') or{},USER) and
pcall(TABLE.cover, loadFile('conf/unlock', '-json -canSkip') or loadFile('conf/unlock', '-luaon -canSkip') or{},RANKS) and
pcall(TABLE.update,loadFile('conf/settings', '-json -canSkip') or loadFile('conf/settings', '-luaon -canSkip') or{},SETTING) and
pcall(TABLE.coverR,loadFile('conf/data', '-json -canSkip') or loadFile('conf/data', '-luaon -canSkip') or{},STAT) and
pcall(TABLE.cover, loadFile('conf/key', '-json -canSkip') or loadFile('conf/key', '-luaon -canSkip') or{},KEY_MAP) and
pcall(TABLE.cover, loadFile('conf/virtualkey','-json -canSkip') or loadFile('conf/virtualkey','-luaon -canSkip') or{},VK_ORG)
pcall(TABLE.cover, loadFile('conf/user', '-json -canSkip') or loadFile('conf/user', '-luaon -canSkip') or {},USER) and
pcall(TABLE.cover, loadFile('conf/unlock', '-json -canSkip') or loadFile('conf/unlock', '-luaon -canSkip') or {},RANKS) and
pcall(TABLE.update,loadFile('conf/settings', '-json -canSkip') or loadFile('conf/settings', '-luaon -canSkip') or {},SETTING) and
pcall(TABLE.coverR,loadFile('conf/data', '-json -canSkip') or loadFile('conf/data', '-luaon -canSkip') or {},STAT) and
pcall(TABLE.cover, loadFile('conf/key', '-json -canSkip') or loadFile('conf/key', '-luaon -canSkip') or {},KEY_MAP) and
pcall(TABLE.cover, loadFile('conf/virtualkey','-json -canSkip') or loadFile('conf/virtualkey','-luaon -canSkip') or {},VK_ORG)
)
then
MES.new('error',"An error occured during loading, and some data was lost.")
@@ -277,270 +400,33 @@ if customData and customData['version']==VERSION.code then
end
TABLE.complete(require"parts.customEnv0",CUSTOMENV)
-- Initialize image libs
IMG.init{
lock='media/image/mess/lock.png',
dialCircle='media/image/mess/dialCircle.png',
dialNeedle='media/image/mess/dialNeedle.png',
lifeIcon='media/image/mess/life.png',
badgeIcon='media/image/mess/badge.png',
ctrlSpeedLimit='media/image/mess/ctrlSpeedLimit.png',
pay1='media/image/mess/pay1.png',
pay2='media/image/mess/pay2.png',
miyaCH1='media/image/characters/miya1.png',
miyaCH2='media/image/characters/miya2.png',
miyaCH3='media/image/characters/miya3.png',
miyaCH4='media/image/characters/miya4.png',
miyaHeart='media/image/characters/miya_heart.png',
miyaGlow='media/image/characters/miya_glow.png',
monoCH='media/image/characters/mono.png',
xiaoyaCH='media/image/characters/xiaoya.png',
xiaoyaOmino='media/image/characters/xiaoya_Omino.png',
mikuCH='media/image/characters/miku.png',
rinCH='media/image/characters/rin.png',
z={
character='media/image/characters/z_character.png',
screen1='media/image/characters/z_screen1.png',
screen2='media/image/characters/z_screen2.png',
particle1='media/image/characters/z_particle1.png',
particle2='media/image/characters/z_particle2.png',
particle3='media/image/characters/z_particle3.png',
particle4='media/image/characters/z_particle4.png',
},
electric='media/image/characters/electric.png',
hbm='media/image/characters/hbm.png',
lanterns={
'media/image/lanterns/1.png',
'media/image/lanterns/2.png',
'media/image/lanterns/3.png',
'media/image/lanterns/4.png',
'media/image/lanterns/5.png',
'media/image/lanterns/6.png',
},
}
SKIN.load{
{name="crystal_scf",path='media/image/skin/crystal_scf.png'},
{name="matte_mrz",path='media/image/skin/matte_mrz.png'},
{name="shiny_chno",path='media/image/skin/shiny_chno.png'},
{name="contrast_mrz",path='media/image/skin/contrast_mrz.png'},
{name="polkadots_scf",path='media/image/skin/polkadots_scf.png'},
{name="toy_scf",path='media/image/skin/toy_scf.png'},
{name="smooth_mrz",path='media/image/skin/smooth_mrz.png'},
{name="simple_scf",path='media/image/skin/simple_scf.png'},
{name="glass_scf",path='media/image/skin/glass_scf.png'},
{name="penta_scf",path='media/image/skin/penta_scf.png'},
{name="bubble_scf",path='media/image/skin/bubble_scf.png'},
{name="minoes_scf",path='media/image/skin/minoes_scf.png'},
{name="pure_mrz",path='media/image/skin/pure_mrz.png'},
{name="bright_scf",path='media/image/skin/bright_scf.png'},
{name="glow_mrz",path='media/image/skin/glow_mrz.png'},
{name="plastic_mrz",path='media/image/skin/plastic_mrz.png'},
{name="paper_mrz",path='media/image/skin/paper_mrz.png'},
{name="yinyang_scf",path='media/image/skin/yinyang_scf.png'},
{name="cartooncup_earety",path='media/image/skin/cartooncup_earety.png'},
{name="jelly_miya",path='media/image/skin/jelly_miya.png'},
{name="guidetris_xmiao_lusisi",path='media/image/skin/guidetris_xmiao_lusisi.png'},
{name="brick_notypey",path='media/image/skin/brick_notypey.png'},
{name="gem_notypey",path='media/image/skin/gem_notypey.png'},
{name="classic",path='media/image/skin/classic_unknown.png'},
{name="ball_shaw",path='media/image/skin/ball_shaw.png'},
{name="retro_notypey",path='media/image/skin/retro_notypey.png'},
{name="pixel_chno",path='media/image/skin/pixel_chno.png'},
{name="pastel_chno",path='media/image/skin/pastel_chno.png'},
{name="letters_chno",path='media/image/skin/letters_chno.png'},
{name="kanji_chno",path='media/image/skin/kanji_chno.png'},
{name="textbone_mrz",path='media/image/skin/textbone_mrz.png'},
{name="coloredbone_mrz",path='media/image/skin/coloredbone_mrz.png'},
{name="wtf",path='media/image/skin/wtf_mrz.png'},
}
-- Initialize sound libs
SFX.init((function()--[Warning] Not loading files here, just get the list of sound needed
local L={}
for _,v in next,fs.getDirectoryItems('media/effect/chiptune/') do
if FILE.isSafe('media/effect/chiptune/'..v,"Dangerous file : %SAVE%/media/effect/chiptune/"..v) then
table.insert(L,v:sub(1,-5))
end
end
return L
end)())
BGM.init((function()
local L={}
for _,v in next,fs.getDirectoryItems('media/music') do
if FILE.isSafe('media/music/'..v,"Dangerous file : %SAVE%/media/music/"..v) then
L[v:sub(1,-5)]='media/music/'..v
end
end
return L
end)())
VOC.init{
'zspin','sspin','jspin','lspin','tspin','ospin','ispin','pspin','qspin','fspin','espin','uspin','vspin','wspin','xspin','rspin','yspin','nspin','hspin','cspin',
'single','double','triple','techrash','pentacrash','hexacrash',
'mini','b2b','b3b',
'perfect_clear','half_clear',
'win','lose','bye',
'test','happy','doubt',
'welcome',
}
-- Initialize language lib
LANG.init('zh',
{
zh=require'parts.language.lang_zh',
zh_trad=require'parts.language.lang_zh_trad',
en=require'parts.language.lang_en',
fr=require'parts.language.lang_fr',
es=require'parts.language.lang_es',
pt=require'parts.language.lang_pt',
id=require'parts.language.lang_id',
ja=require'parts.language.lang_ja',
symbol=require'parts.language.lang_symbol',
zh_code=require'parts.language.lang_zh_code',
-- 1. Add language file to LANG folder;
-- 2. Require it;
-- 3. Add a button in parts/scenes/lang.lua;
},
{
block=BLOCK_NAMES
},
(function()
local tipMeta={__call=function(L) return L[math.random(#L)] end}
return function(L)
if type(rawget(L,'getTip'))=='table' then setmetatable(L.getTip,tipMeta) end
setmetatable(L,{__index=function(self,k)
local mes="No Text ("..SETTING.locale.."): "..k
LOG(mes)
MES.new('warn',mes)
self[k]=CHAR.zChan.thinking
return self[k]
end})
end
end)()
)
table.insert(_LOADTIMELIST_,("Initialize Parts: %.3fs"):format(TIME()-_LOADTIME_))
-- Load background files from SOURCE ONLY
for _,v in next,fs.getDirectoryItems('parts/backgrounds') do
if FILE.isSafe('parts/backgrounds/'..v) and v:sub(-3)=='lua' then
local name=v:sub(1,-5)
BG.add(name,require('parts.backgrounds.'..name))
end
end
BG.remList('none')BG.remList('gray')BG.remList('custom')
-- Load scene files from SOURCE ONLY
for _,v in next,fs.getDirectoryItems('parts/scenes') do
if FILE.isSafe('parts/scenes/'..v) then
local sceneName=v:sub(1,-5)
SCN.add(sceneName,require('parts.scenes.'..sceneName))
LANG.addScene(sceneName)
end
end
-- Load mode files
for i=1,#MODES do
local m=MODES[i]-- Mode template
if FILE.isSafe('parts/modes/'..m.name) then
TABLE.complete(require('parts.modes.'..m.name),MODES[i])
MODES[m.name],MODES[i]=MODES[i]
end
end
for _,v in next,fs.getDirectoryItems('parts/modes') do
if FILE.isSafe('parts/modes/'..v) and not MODES[v:sub(1,-5)] then
local M={name=v:sub(1,-5)}
local modeData=require('parts.modes.'..M.name)
if modeData.env then
TABLE.complete(modeData,M)
MODES[M.name]=M
end
end
end
table.insert(_LOADTIMELIST_,("Load Files: %.3fs"):format(TIME()-_LOADTIME_))
-- Update data
do
local needSave
if not fs.getInfo('conf/data') then
needSave=true
end
if type(STAT.version)~='number' then
STAT.version=0
needSave=true
end
if STAT.version<1500 then
FILE.clear_s('')
end
if STAT.version<1505 then
fs.remove('record/bigbang.rec')
fs.remove('conf/replay')
end
if STAT.version==1506 then
local temp1,temp2
if fs.getInfo('record/master_l.rec') then
temp1=fs.read('record/master_l.rec')
end
if fs.getInfo('record/master_u.rec') then
temp2=fs.read('record/master_u.rec')
end
if temp1 then
fs.write('record/master_u.rec',temp1)
end
if temp2 then
fs.write('record/master_l.rec',temp2)
end
RANKS.master_l,RANKS.master_u=RANKS.master_u,RANKS.master_l
if RANKS.tsd_u then
RANKS.tsd_u=0
end
end
if STAT.version==1601 then
RANKS.round_e=nil
RANKS.round_n=nil
RANKS.round_h=nil
RANKS.round_l=nil
RANKS.round_u=nil
fs.remove('record/round_e.rec')
fs.remove('record/round_n.rec')
fs.remove('record/round_h.rec')
fs.remove('record/round_l.rec')
fs.remove('record/round_u.rec')
end
if STAT.version<1700 and SETTING.dascut<5 then
SETTING.dascut=SETTING.dascut+1
needSave=true
end
if RANKS.stack_e then
RANKS.stack_e=nil
RANKS.stack_h=nil
RANKS.stack_u=nil
fs.remove('record/stack_e.rec')
fs.remove('record/stack_h.rec')
fs.remove('record/stack_u.rec')
RANKS.stack_e=nil; fs.remove('record/stack_e.rec')
RANKS.stack_h=nil; fs.remove('record/stack_h.rec')
RANKS.stack_u=nil; fs.remove('record/stack_u.rec')
end
if RANKS.stack_20l then
RANKS.stack_20l=nil
RANKS.stack_40l=nil
RANKS.stack_100l=nil
fs.remove('record/stack_20l.rec')
fs.remove('record/stack_40l.rec')
fs.remove('record/stack_100l.rec')
RANKS.stack_20l=nil; fs.remove('record/stack_20l.rec')
RANKS.stack_40l=nil; fs.remove('record/stack_40l.rec')
RANKS.stack_100l=nil; fs.remove('record/stack_100l.rec')
end
if RANKS.rhythm_e then
RANKS.rhythm_e=nil
RANKS.rhythm_h=nil
RANKS.rhythm_u=nil
fs.remove('record/rhythm_e.rec')
fs.remove('record/rhythm_h.rec')
fs.remove('record/rhythm_u.rec')
end
if RANKS.bigbang or RANKS.clearRush then
fs.remove('record/clearRush.rec')
fs.remove('record/bigbang.rec')
RANKS.rhythm_e=nil; fs.remove('record/rhythm_e.rec')
RANKS.rhythm_h=nil; fs.remove('record/rhythm_h.rec')
RANKS.rhythm_u=nil; fs.remove('record/rhythm_u.rec')
end
if RANKS.bigbang then fs.remove('record/bigbang.rec') end
if RANKS.clearRush then fs.remove('record/clearRush.rec') end
if STAT.version~=VERSION.code then
for k,v in next,MODE_UPDATE_MAP do
if RANKS[k] then
@@ -558,7 +444,6 @@ do
end
end
STAT.version=VERSION.code
needSave=true
end
SETTING.appLock,SETTING.dataSaving,SETTING.swap,SETTING.autoLogin=nil
if not SETTING.VKSkin then SETTING.VKSkin=1 end
@@ -576,41 +461,95 @@ do
if RANKS.infinite then RANKS.infinite=0 end
if RANKS.infinite_dig then RANKS.infinite_dig=0 end
if not RANKS.sprint_10l then RANKS.sprint_10l=0 end
if RANKS.master_l then RANKS.master_n,RANKS.master_l=RANKS.master_l needSave=true end
if RANKS.master_u then RANKS.master_h,RANKS.master_u=RANKS.master_u needSave=true end
if RANKS.master_l then RANKS.master_n,RANKS.master_l=RANKS.master_l end
if RANKS.master_u then RANKS.master_h,RANKS.master_u=RANKS.master_u end
for _,v in next,VK_ORG do v.color=nil end
for name,rank in next,RANKS do
if type(name)=='number' or type(rank)~='number' then
RANKS[name]=nil
needSave=true
else
local M=MODES[name]
if M and M.unlock and rank>0 then
for _,unlockName in next,M.unlock do
if not RANKS[unlockName] then
RANKS[unlockName]=0
needSave=true
end
end
end
if not (M and M.x) then
RANKS[name]=nil
needSave=true
end
end
end
if not MODES[STAT.lastPlay] then
STAT.lastPlay='sprint_10l'
needSave=true
end
fs.remove('conf/account')
if needSave then
saveStats()
saveProgress()
saveSettings()
love.event.quit('restart')
saveStats()
saveProgress()
saveSettings()
end
-- Initialize language lib
LANG.init('zh',
{
zh=require'parts.language.lang_zh',
zh_trad=require'parts.language.lang_zh_trad',
en=require'parts.language.lang_en',
fr=require'parts.language.lang_fr',
es=require'parts.language.lang_es',
pt=require'parts.language.lang_pt',
id=require'parts.language.lang_id',
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;
},
{
block=BLOCK_NAMES,
},
(function()
local tipMeta={__call=function(L) return L[math.random(#L)] end}
return function(L)
if type(rawget(L,'getTip'))=='table' then setmetatable(L.getTip,tipMeta) end
setmetatable(L,{
__index=function(self,k)
local mes="No Text ("..SETTING.locale.."): "..k
LOG(mes)
MES.new('warn',mes)
self[k]="["..k.."]"
return self[k]
end,
})
end
end)()
)
-- Load background files from SOURCE ONLY
for _,v in next,fs.getDirectoryItems('parts/backgrounds') do
if FILE.isSafe('parts/backgrounds/'..v) and v:sub(-3)=='lua' then
local name=v:sub(1,-5)
BG.add(name,require('parts.backgrounds.'..name))
end
end
BG.remList('none')
BG.remList('gray')
BG.remList('custom')
-- Load scene files from SOURCE ONLY
for _,v in next,fs.getDirectoryItems('parts/scenes') do
if FILE.isSafe('parts/scenes/'..v) then
local sceneName=v:sub(1,-5)
SCN.add(sceneName,require('parts.scenes.'..sceneName))
LANG.addScene(sceneName)
end
end
table.insert(_LOADTIMELIST_,("Load Files: %.3fs"):format(TIME()-_LOADTIME_))
-- First start
FIRSTLAUNCH=STAT.run==0
@@ -626,50 +565,63 @@ applySettings()
-- Load replays
for _,fileName in next,fs.getDirectoryItems('replay') do
if fileName:sub(12,12):match("[a-zA-Z]") then
local date,mode,version,player,seed,setting,mod
local fileData=fs.read('replay/'..fileName)
date, fileData=STRING.readLine(fileData)date=date:gsub("[a-zA-Z]","")
mode, fileData=STRING.readLine(fileData)mode=MODE_UPDATE_MAP[mode] or mode
version,fileData=STRING.readLine(fileData)
player, fileData=STRING.readLine(fileData) if player=="Local Player" then player="Stacker" end
local success
success,fileData=pcall(love.data.decompress,'string','zlib',fileData)
if not success then goto BREAK_cannotParse end
seed, fileData=STRING.readLine(fileData)
setting,fileData=STRING.readLine(fileData)setting=JSON.decode(setting)
mod, fileData=STRING.readLine(fileData)mod=JSON.decode(mod)
if
not setting or
not mod or
not mode or
#mode==0
then goto BREAK_cannotParse end
repeat
local date,mode,version,player,seed,setting,mod
local success,fileData=true,fs.read('replay/'..fileName)
date,fileData=STRING.readLine(fileData)
date=date:gsub("[a-zA-Z]","")
mode,fileData=STRING.readLine(fileData)
mode=MODE_UPDATE_MAP[mode] or mode
version,fileData=STRING.readLine(fileData)
player,fileData=STRING.readLine(fileData)
if player=="Local Player" then player="Stacker" end
success,fileData=pcall(love.data.decompress,'string','zlib',fileData)
if not success then break end
seed,fileData=STRING.readLine(fileData)
setting,fileData=STRING.readLine(fileData)
setting=JSON.decode(setting)
mod,fileData=STRING.readLine(fileData)
mod=JSON.decode(mod)
if
not setting or
not mod or
not mode or
#mode==0
then
break
end
fs.remove('replay/'..fileName)
local newName=fileName:sub(1,10)..fileName:sub(15)
fs.write('replay/'..newName,
love.data.compress('string','zlib',
JSON.encode{
date=date,
mode=mode,
version=version,
player=player,
seed=seed,
setting=setting,
mod=mod,
}.."\n"..
fileData
fs.remove('replay/'..fileName)
local newName=fileName:sub(1,10)..fileName:sub(15)
fs.write('replay/'..newName,
love.data.compress('string','zlib',
JSON.encode{
date=date,
mode=mode,
version=version,
player=player,
seed=seed,
setting=setting,
mod=mod,
}.."\n"..
fileData
)
)
)
fileName=newName
fileName=newName
until true
end
::BREAK_cannotParse::
local rep=DATA.parseReplay('replay/'..fileName)
table.insert(REPLAY,rep)
end
table.sort(REPLAY,function(a,b) return a.fileName>b.fileName end)
table.insert(_LOADTIMELIST_,("Initialize Data: %.3fs"):format(TIME()-_LOADTIME_))
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)
table.insert(_LOADTIMELIST_,("Load Resources: %.3fs"):format(TIME()-_LOADTIME_))
for i=1,#_LOADTIMELIST_ do LOG(_LOADTIMELIST_[i]) end
@@ -679,7 +631,8 @@ if TABLE.find(arg,'-- test') then
while not LOADED do coroutine.yield() end
LOG("\27[92m\27[1mAutomatic Test Started\27[0m")
BGM.setVol(0)SFX.setVol(0)
BGM.setVol(0)
SFX.setVol(0)
love.keypressed('space')
TEST.yieldUntilNextScene()
@@ -706,6 +659,3 @@ if TABLE.find(arg,'-- test') then
love.event.quit(1)
end)
end
WS.switchHost('cafuuchino1.3322.org','10026','/techmino/ws/v1')
HTTP.setHost("cafuuchino1.3322.org:10026")
HTTP.setThreadCount(1)

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 B

After

Width:  |  Height:  |  Size: 933 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 801 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

BIN
media/vocal/flore/b2b_1.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/b2b_2.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/b2b_3.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/b3b_1.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/b3b_2.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/b3b_3.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/bye_1.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/bye_2.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/bye_3.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/bye_4.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/bye_5.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/bye_6.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/cspin.ogg Normal file

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.

BIN
media/vocal/flore/espin.ogg Normal file

Binary file not shown.

BIN
media/vocal/flore/fspin.ogg Normal file

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.

BIN
media/vocal/flore/hspin.ogg Normal file

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.

BIN
media/vocal/flore/nspin.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/flore/ospin.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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