Compare commits

...

106 Commits

Author SHA1 Message Date
SweetSea
11fba078bb Update Vietnamese translation 2024-11-02 23:29:56 +07:00
SweetSea
8c04139935 Update Vietnamese Zictionary 2024-11-02 22:53:33 +07:00
MrZ_26
d38ff06262 修万圣节日期判定 2024-11-01 10:57:44 +08:00
MrZ_26
45a4b10d11 修关闭节日主题时特定条件无法启动 2024-11-01 03:26:37 +08:00
MrZ_26
fe12f397cc 修复皮肤设置的初始值相关 2024-11-01 00:40:27 +08:00
MrZ_26
801f67b194 Revert "fixed default skin not showing up"
This reverts commit 1cf3d101aa.
2024-11-01 00:37:35 +08:00
MrZ_26
e331c8f446 .gitignore删除一个不用的文件夹 2024-11-01 00:35:51 +08:00
MrZ_26
51897584a7 调整一个tip说法 2024-11-01 00:35:51 +08:00
Fab052
1cf3d101aa fixed default skin not showing up 2024-10-31 16:54:58 +01:00
Fab052
1830e849d8 better 3D effect (#1166) 2024-10-30 00:14:28 +08:00
Fab052
e3f246aa00 removed missing skin from main.lua (#1165) 2024-10-30 00:14:06 +08:00
Fab052
1eb679cf24 Reorganized the skins + Added "Arcade" and "Cardboard" skins (#1164) 2024-10-29 08:24:36 +08:00
Fuwuwuwu
1963dc9fb9 Fix the issue of AI passing Hold parameters in custom mode (#1163)
* 自定义游戏传递hold开关的问题

表现:即使holdCount为0,CC依旧会开启hold,导致无法预期运行,场地逐渐混乱
原因:传递了错误的类型(boolean->number)

* 非正常hold模式时,AI不启用hold

相关问题#1106
2024-10-29 08:24:10 +08:00
SweetSea
396293c8af Custom image from clipboard (#1157)
* Update how text renders in button and key

* Add a placeholder

* Add actual code and language entry

* Sort buttons

* Alter to keep original behaviour

* I HAVE OCD

* Add back legacy behaviour
2024-10-26 23:44:31 +08:00
Imple Lee
fbf6e910a3 Fix a wierd bug (#1161)
Steps to reproduce:
1. reset everything in custom game
2. restart the game
3. go to the custom game scene
4. go to the custom sequence scene and set a new sequence
5. leave the scene and go to the custom game scene
6. begin to clear

Unintended behavior:
The sequence is still the default old sequence (7-bag)

Intended behavior:
The sequence is the newly set sequence

Rationale:
The bug was introduced by #1139.
It deleted a line of `apply_locals()` which I wrongly believed that the custom modes will execute initialize() anyway, but it turned out initialization is only executed during the start of the whole game.
The patch is simple: just add back the deleted line
2024-10-18 00:45:37 +08:00
MrZ_26
9e4e861c32 继续加赞助名单 2024-10-14 23:51:46 +08:00
MrZ_26
d0b99a16c9 修单机录像播不出 2024-10-14 23:36:31 +08:00
MrZ_26
347e81c11c 更新赞助名单 2024-10-14 23:15:40 +08:00
MrZ_26
6b2a376dfe legals文件添加discord-rpc.dll的说明 2024-10-13 00:46:11 +08:00
MrZ_26
51e0ab7c48 赞助名单更新 2024-10-02 10:31:51 +08:00
MrZ_26
87fd26ab89 赞助名单更新 2024-09-29 20:14:36 +08:00
MrZ_26
0b1cee99bd 尝试添加一个paypal赞助按钮 2024-09-29 19:14:54 +08:00
MrZ_26
4768df6867 修discordRPC加载失败会崩溃 2024-09-27 03:50:12 +08:00
MrZ_26
423d502aa4 添加discordRPC支持 2024-09-26 02:29:24 +08:00
MrZ_26
a74e9033b3 添加500star贺图到仓库readme 2024-09-13 19:08:20 +08:00
SweetSea
dc6b7de15f Fix multiplayer chat (#1154)
* Fix multiplayer chat

* Update wrapping text param.

* Update net_game.lua
2024-09-11 20:31:41 +08:00
Imple Lee
74f67d0216 fix macos portable ci (#1152)
* use love 11.5 for macos portable

* use xcode 15.3
2024-09-04 17:03:16 +08:00
MrZ_26
d47f073d53 补irs打断的设置文本
补更新历史
2024-09-03 21:21:22 +08:00
MrZ_26
7407911914 Merge Electra's enhanced IRS 2024-09-03 21:12:32 +08:00
MrZ_26
9672a4fe57 修之前删goto的时候导致hisPool算法爆炸(也不知道怎么爆的,不管了) 2024-09-03 20:57:05 +08:00
Imple Lee
6c6ff26586 fix auto test: use appimage love instead of tar gz (#1141)
* use appimage love instead of tar gz

* install libfuse2 to run appimage

* replace deprecated `GabrielBB/xvfb-action`
2024-08-30 05:34:39 +08:00
Imple Lee
ca6f701084 Fix auto test (#1140)
* remove unnecessary space

* restart automatic test
2024-08-26 12:13:19 +08:00
Imple Lee
5793b7ca38 fix custom games (#1139)
Now you can `play custom_` without going through the `customGame` scene
2024-08-26 11:20:48 +08:00
MrZ_26
dee6ba95f2 修播放录像时初始化流程没重置暂停次数 close #1131 2024-08-20 01:28:39 +08:00
呵呵です
67aef1dbe3 更新tip里的40l世界纪录 close #1136 (#1137) 2024-08-20 01:26:37 +08:00
MrZ_26
90f41a20a3 整理ws模块代码 2024-08-13 21:54:11 +08:00
MrZ_26
5f5dd48ee8 修直接写在模式的env里的特殊事件不会被加载 2024-08-12 12:04:29 +08:00
MrZ_26
a8e0574f44 规则包加载流程优化 2024-08-11 13:18:36 +08:00
MrZ_26
40f148b6b3 更新赞助名单 2024-08-11 13:12:34 +08:00
MrZ_26
0eb37666f8 更新历史和版本号 2024-08-10 19:03:13 +08:00
MrZ_26
b73a653332 Merge branch 'eventsystem2' 2024-08-10 18:55:05 +08:00
MrZ_26
49f1b747b2 尝试修复新的事件系统允许自由参数数量导致网络卡顿情况且录像流最后的事件是攻击时frameRun有机会超过stream内数据导致玩家操作冻结(wtf so complicated, thank you Electra!) 2024-08-10 18:51:41 +08:00
Electra
2c75f0bc9c Simple solution? 2024-08-10 04:47:35 -04:00
MrZ_26
97e17edfae 继续修新的事件系统问题 2024-08-10 16:05:25 +08:00
MrZ_26
f7e4e47466 再修新的事件系统问题 2024-08-10 15:09:27 +08:00
MrZ_26
8779abef9a 修新的事件系统问题 2024-08-10 14:42:18 +08:00
MrZ_26
4d1caa7fe0 重构玩家交互事件系统,尝试支持可通过网络传递的自定义事件 2024-08-10 12:55:58 +08:00
MrZ_26
78f3c31db1 联网房间内的准备按钮不再会试图将自己设置为Gamer状态(已经是了) 2024-08-09 05:23:38 +08:00
MrZ_26
3c852f17a0 补翻译说明 2024-08-09 01:12:49 +08:00
MrZ_26
8737a00b44 补越南语翻译 2024-08-09 01:08:25 +08:00
MrZ_26
fff2c49f2e 补越南语翻译 2024-08-09 00:03:13 +08:00
MrZ_26
35c19a4d50 spinren加一些注释的代码 2024-08-08 23:43:01 +08:00
MrZ_26
137e707c63 删除ffa按钮
tech league改名galaxim,调整一些联网菜单文本
2024-08-08 23:42:41 +08:00
MrZ_26
d2e9439e38 更新版本号 2024-08-08 23:06:38 +08:00
MrZ_26
39cd7e4c1a 调整服务器url 2024-08-08 23:06:07 +08:00
MrZ_26
57f2b9541d 修几个词条不能通过拼音搜索 2024-08-08 16:14:53 +08:00
MrZ_26
9d4065a05a 修复创建联网房间时有好几个选项并没有生效 2024-08-08 16:08:51 +08:00
MrZ_26
424a3b3bee 公告页面信息更详细一点 2024-08-07 13:52:46 +08:00
MrZ_26
de3e1fcdc7 实现公告场景的功能 2024-08-07 13:25:03 +08:00
MrZ_26
59f390de93 尝试启用公告功能 2024-08-07 12:54:06 +08:00
MrZ_26
26287c8f35 更新历史和版本号 2024-08-07 12:19:53 +08:00
MrZ_26
24d552ba2b Merge branch 'ci-web-revive' 2024-08-07 12:11:32 +08:00
MrZ_26
f1a08ca325 更新历史和版本号 2024-08-03 13:05:09 +08:00
MrZ_26
28ec031afa 修time_short函数一个错误 2024-08-03 03:18:31 +08:00
MrZ_26
d9f606c56f 修地图布局
修spinren模式翻译
调整一些模式的外框形状
2024-08-03 01:45:37 +08:00
MrZ_26
de4b73cf83 spinren模式结束时显示的文本会根据是否到10行变化 2024-08-02 23:22:16 +08:00
MrZ_26
beff0c9d99 调整翻译文本,所有模式的“难度”一栏更统一 2024-08-02 23:04:49 +08:00
MrZ_26
4a76a929f5 更新spinren模式的越南语翻译 2024-08-02 22:58:32 +08:00
MrZ_26
aa981160e8 spinren少出两行防止一直响警报 2024-08-02 22:49:51 +08:00
MrZ_26
24a95a36d0 微调地图布局 2024-08-02 22:41:05 +08:00
MrZ_26
583819e8c4 优化spin模式并加到大地图,微调相关区域布局 2024-08-02 22:37:39 +08:00
Imple Lee
4c193efd41 add a new mode: spin ren (#1129)
* add a new mode: spin ren

* remove some bad cases; rework of the weights

* fix lines

* add different orientation for 323

* harder ranking

* Fix the map to sijun's mode

This mode can be used as big-bang!
2024-08-02 21:53:10 +08:00
MrZ_26
8208e7b132 修第三季度音乐名称打错 2024-08-01 21:47:25 +08:00
MrZ_26
7e2bd7b08d 词典里的“全消四”改成“全程消四” 2024-07-24 19:07:54 +08:00
MrZ_26
29258e2a35 添加edm节日 2024-07-14 04:10:26 +08:00
MrZ_26
9e028bc907 微调c4w普通模式评分标准 2024-07-04 02:07:00 +08:00
MrZ_26
75ae05ffc9 c4w普通的计分完全改为竞速 close #1126
改版本号和更新历史
2024-07-03 17:55:04 +08:00
MrZ_26
aec0b91039 补充更新历史 2024-07-03 16:29:00 +08:00
MrZ_26
34df33c9b0 readme更新官网链接,加一个techmino hub链接 2024-07-02 17:55:57 +08:00
MrZ_26
1674902727 修字体一个小问题 2024-07-01 23:14:13 +08:00
C₂₉H₂₅N₃O₅
4fd497fe9f Used more mathematically correct symbols for app calc (#1127) 2024-07-01 22:51:14 +08:00
MrZ_26
f01594b4d1 修背景锁定处理顺序问题 close #1122
Co-authored-by: SweetSea <106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
2024-06-17 10:18:23 +08:00
MrZ_26
6f74693811 更新tip里的40l世界纪录 close #1121 2024-06-14 08:18:43 +08:00
MrZ_26
94d2af685c 消四挖掘模式非挖掘的消四越多会导致评分降低 2024-06-11 17:30:45 +08:00
MrZ_26
0b7c2fa59b 补两个中文文本
修改更新历史
2024-06-06 17:59:07 +08:00
MrZ_26
137f9a0d55 修两个消四模式的评级不等号错误 2024-06-06 17:38:05 +08:00
MrZ_26
23d8a34991 修highestGrade文本小问题 2024-06-03 10:15:34 +08:00
MrZ_26
3f0d4d3cdf 更新版本号和更新历史 2024-05-22 01:19:20 +08:00
MrZ_26
ac8f62de03 微调readme 2024-05-22 01:19:20 +08:00
C₂₉H₂₅N₃O₅
e518d91237 Font tweaks (#1116)
- Changed the glyph for the numeral `3` from “round-top” to “flat top” to increase eligibility
- Removed the serif on the bottom of the numeral “1” for cleaner looks
2024-05-20 22:44:35 +08:00
MrZ_26
c054a76504 修birs英文词条 2024-05-18 11:47:49 +08:00
MrZ_26
d3406c4a48 修一个TABLE.reverse用法错误 2024-05-13 15:12:23 +08:00
MrZ_26
3c0266ec02 补充更新历史 2024-04-29 11:16:56 +08:00
MrZ_26
4f4683d06c 更强大的ARS_Z fix #1094 2024-04-29 11:05:15 +08:00
MrZ_26
3441002758 c4w普通的模式说明改为和100l相同 close #1082 2024-04-29 10:45:37 +08:00
KonSola5
c2bf291029 Implementation of some of my English suggestions (#1104)
* Update lang_en.lua

* Some small changes

* "Block -> Piece" and some extras
2024-04-24 18:15:45 +08:00
MrZ_26
d70b04e7fb 优化neuro立绘动画和俊达萌身高 2024-04-24 05:14:27 +08:00
Petalzu
a979b6dbe6 Add neuro voicepack (#1109)
* update neuro

* change image & fix delay

change the image of neuro and fix delay between two vocal

* add vocal

* change vocal&image
2024-04-24 04:11:18 +08:00
MrZ_26
523b7ce443 给SRS+和SRS-X加一点注释说明 2024-04-24 04:08:37 +08:00
NOT_A_ROBOT
4e74c9456f Fix decay rate issues in Master Graded, close #1092 (#1113) 2024-04-24 04:06:41 +08:00
Imple Lee
7719b74b09 fix text in dig quad 10l (#1103)
fix #1102
2024-04-24 03:38:15 +08:00
Nguyễn Quốc Hưng
9d3aeeb50b Update Vietnamese translation and fix cannot entering Zictionary's manual (#1111)
* Fix cannot enter manual

* Update Zictionary

* Update dict_vi.lua

* Update dict_vi
2024-04-24 03:37:56 +08:00
MrZ_26
0459248556 修文本小bug 2024-04-16 00:16:20 +08:00
MrZ_26
288a6ba80a 微调readme 2024-04-07 04:56:09 +08:00
MrZ_26
97eee39266 调整词典中的BiRS词条(日文和越南文待其他人修改)
微调注释
2024-04-06 19:15:09 +08:00
MrZ_26
8c4446edac 修复拼花模式段位计算的1行偏差
补充拼花模式说明文本 close #1099
2024-03-03 14:27:36 +08:00
234 changed files with 1648 additions and 682 deletions

16
.github/500stars/README.md vendored Normal file
View File

@@ -0,0 +1,16 @@
# Techmino - 500-star Banner
Created by NOT_A_ROBOT
13 September, 2024
**Don't forget to attribute me when using this.**
The image already includes sufficient attribution, so if you just don't crop that out, you shouldn't need to explicitly mention them.
## Attribution
Created by NOT_A_ROBOT
GitHub logo (on Z-character's screen) by GitHub
Background (space stars) originally by MrZ, ported to JS by NOT_A_ROBOT for rendering
Block skin (featured in the background) by Scf, slightly modified to make it darker
Z-character drawn by 葉枭, designed by MrZ
Techmino by MrZ and many contributors
Techmino is fun! https://github.com/26F-Studio/Techmino

BIN
.github/500stars/exported.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Binary file not shown.

BIN
.github/donate/donate.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -130,7 +130,7 @@ jobs:
prerelease: ${{ startsWith(github.ref, 'refs/tags/pre') }}
auto-test:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
needs: build-core
steps:
- uses: actions/checkout@v3
@@ -141,6 +141,25 @@ jobs:
with:
font-path: ./parts/fonts/proportional.otf
language-folder: ./parts/language
- name: Download core love package
uses: actions/download-artifact@v3
with:
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
- name: Download love
shell: bash
run: |
curl -OL --retry 5 https://github.com/love2d/love/releases/download/11.4/love-11.4-x86_64.AppImage
chmod +x love-11.4-x86_64.AppImage
- name: Prepare PulseAudio and AppImage
shell: bash
run: |
sudo apt-get update
sudo apt-get install pulseaudio pulseaudio-utils pavucontrol alsa-oss alsa-utils libfuse2 -y
- name: Run automated test
uses: coactions/setup-xvfb@v1
with:
run: |
./love-11.4-x86_64.AppImage ${{ env.CORE_LOVE_PACKAGE_PATH }} --test
build-android:
runs-on: ubuntu-latest
@@ -331,6 +350,12 @@ jobs:
shell: bash
run: |
rm ./ColdClear/universal/libcold_clear.a
- name: Use Xcode 15.3
# Xcode 15.4 segfaults
# see https://forums.developer.apple.com/forums/thread/757398
uses: mobiledevops/xcode-select-version-action@v1
with:
xcode-select-version: 15.3
- name: Build macOS packages
id: build-packages
uses: love-actions/love-actions-macos-portable@v1
@@ -339,6 +364,7 @@ jobs:
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
copyright: "Copyright © 2019-2023 26F-Studio. Some Rights Reserved."
icon-path: ./.github/build/macOS/${{ env.BUILD_TYPE }}/icon.icns
love-ref: "11.5"
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
libs-path: ./ColdClear/universal/
product-name: ${{ steps.process-app-name.outputs.product-name }}
@@ -469,8 +495,8 @@ jobs:
icon-path: ./.github/build/windows/${{ env.BUILD_TYPE }}/icon.ico
rc-path: ./.github/build/windows/${{ env.BUILD_TYPE }}/template.rc
love-package: ${{ env.CORE_LOVE_PACKAGE_PATH }}
extra-assets-x86: ./ColdClear/x86/CCloader.dll ./ColdClear/x86/cold_clear.dll
extra-assets-x64: ./ColdClear/x64/CCloader.dll ./ColdClear/x64/cold_clear.dll
extra-assets-x86: ./ColdClear/x86/CCloader.dll ./ColdClear/x86/cold_clear.dll ./.github/build/extraLibs/Windows_x64/discord-rpc.dll
extra-assets-x64: ./ColdClear/x64/CCloader.dll ./ColdClear/x64/cold_clear.dll ./.github/build/extraLibs/Windows_x86/discord-rpc.dll
product-name: ${{ steps.process-app-name.outputs.product-name }}
app-id: ${{ secrets.WINDOWS_APP_ID }}
project-website: https://www.studio26f.org/

1
.gitignore vendored
View File

@@ -1,5 +1,4 @@
.vscode
libAndroid
*.ini
.DS_Store
Thumbs.db

View File

@@ -1,3 +1,5 @@
-- WARNING: This framework has been remade and renamed to Zenitha. Do not use this deprecated framework for your project
NONE={}function NULL() end PAPER=love.graphics.newCanvas(1,1)
EDITING=""
LOADED=false

View File

@@ -125,14 +125,14 @@ function STRING.time_short(t)
if t<1 then return math.floor(t*1000)..timeLetters[6] end -- 123 ms
if t<MINUTE then return math.floor(t)..timeLetters[5]..' '..math.floor((t%1)*1000)..timeLetters[6] end -- 12s 345ms
local timeUnits=TABLE.reverse({convertSecondsToUnits(t)})
local timeUnits={convertSecondsToUnits(t)}
TABLE.reverse(timeUnits)
-- floor seconds
timeUnits[#timeUnits]=floorint(timeUnits[#timeUnits])
local outputStr=''
for i=1,#timeUnits do
if timeUnits>0 then
if timeUnits[i]>0 then
return timeUnits[i]..timeLetters[i]..' '..timeUnits[i+1]..timeLetters[i+1]
end
end

View File

@@ -8,8 +8,6 @@ local path=''
local type=type
local timer=love.timer.getTime
local TRD=love.thread.newThread("\n")
local TRD_isRunning=TRD.isRunning
local WS={}
local wsList=setmetatable({},{
@@ -151,7 +149,7 @@ function WS.update(dt)
local time=timer()
for name,ws in next,wsList do
if ws.real and ws.status~='dead' then
if TRD_isRunning(ws.thread) then
if ws.thread:isRunning() then
if ws.triggerCHN:getCount()==0 then
ws.triggerCHN:push(0)
end

View File

@@ -15,6 +15,7 @@ do-- Connect
SOCK:settimeout(timeout)
local res,err=SOCK:connect(host,port)
-- print('C0',res,err)
assert(res,err)
-- WebSocket handshake
@@ -31,6 +32,7 @@ do-- Connect
-- First line of HTTP
res,err=SOCK:receive('*l')
-- print('C',res,err)
assert(res,err)
local code,ctLen
code=res:find(' ')
@@ -39,22 +41,28 @@ do-- Connect
-- Get body length from headers and remove headers
repeat
res,err=SOCK:receive('*l')
-- print('H',res,err)
assert(res,err)
if not ctLen and res:find('length') then
ctLen=tonumber(res:match('%d+'))
if not ctLen and res:find('content-length') then
ctLen=tonumber(res:match('%d+')) or 0
end
until res==''
-- Result
if code=='101' then
CHN_push(readCHN,'success')
end
-- Content(?)
if ctLen then
if code=='101' then
CHN_push(readCHN,'success')
else
res,err=SOCK:receive(ctLen)
res,err=SOCK:receive(ctLen)
-- print('R',res,err)
if code~='101' then
res=JSON.decode(assert(res,err))
error((code or "XXX")..":"..(res and res.reason or "Server Error"))
end
end
SOCK:settimeout(0)
end
@@ -136,10 +144,10 @@ local readThread=coroutine.wrap(function()
assert(res,err)
length=shl(byte(res,1),8)+byte(res,2)
elseif length==127 then
local lenData
lenData,err=_receive(SOCK,8)
-- 'res' is 'lenData' here
res,err=_receive(SOCK,8)
assert(res,err)
local _,_,_,_,_5,_6,_7,_8=byte(lenData,1,8)
local _,_,_,_,_5,_6,_7,_8=byte(res,1,8)
length=shl(_5,24)+shl(_6,16)+shl(_7,8)+_8
end
res,err=_receive(SOCK,length)
@@ -158,12 +166,14 @@ local readThread=coroutine.wrap(function()
lBuffer=lBuffer..res
if fin then
CHN_push(readCHN,lBuffer)
-- print('M',lBuffer)
lBuffer=""
end
else
CHN_push(readCHN,op)
if fin then
CHN_push(readCHN,res)
-- print('S',res)
lBuffer=""
else
lBuffer=res

View File

@@ -15,6 +15,7 @@ local timer=love.timer.getTime
local next=next
local floor,ceil=math.floor,math.ceil
local max,min=math.max,math.min
local match=string.match
local sub,ins,rem=string.sub,table.insert,table.remove
local xOy=SCR.xOy
local FONT=FONT
@@ -142,13 +143,21 @@ local button={
type='button',
mustHaveText=true,
ATV=0,-- Activating time(0~8)
textAlreadyWrapped=false,-- Text already wrapped? (Managed by :setObject, can be override, this will be true if obj has a '\n')
}
function button:reset()
self.ATV=0
end
function button:setObject(obj)
if type(obj)=='string' or type(obj)=='number' then
self.obj=gc.newText(FONT.get(self.font,self.fType),obj)
if match(obj,"\n") then
self.textAlreadyWrapped=true
self.obj=gc.newText(FONT.get(self.font,self.fType))
self.obj:addf(obj,self.w-self.edge*2,(self.align=='L' and 'left') or (self.align=='R' and 'right') or 'center')
else
self.textAlreadyWrapped=false
self.obj=gc.newText(FONT.get(self.font,self.fType),obj)
end
elseif obj then
self.obj=obj
end
@@ -194,16 +203,7 @@ function button:draw()
local ox,oy=obj:getWidth()*.5,obj:getHeight()*.5
local y0=y+h*.5
gc_setColor(1,1,1,.2+ATV*.05)
if self.align=='M' then
local x0=x+w*.5
local kx=obj:type()=='Text' and min(w/ox/2,1) or 1
gc_draw(obj,x0-1,y0-1,nil,kx,1,ox,oy)
gc_draw(obj,x0-1,y0+1,nil,kx,1,ox,oy)
gc_draw(obj,x0+1,y0-1,nil,kx,1,ox,oy)
gc_draw(obj,x0+1,y0+1,nil,kx,1,ox,oy)
gc_setColor(r*.55,g*.55,b*.55)
gc_draw(obj,x0,y0,nil,kx,1,ox,oy)
elseif self.align=='L' then
if self.align=='L' or self.textAlreadyWrapped then
local edge=self.edge
gc_draw(obj,x+edge-1,y0-1-oy)
gc_draw(obj,x+edge-1,y0+1-oy)
@@ -219,6 +219,15 @@ function button:draw()
gc_draw(obj,x0+1,y0+1-oy)
gc_setColor(r*.55,g*.55,b*.55)
gc_draw(obj,x0,y0-oy)
else--if self.align=='M' then
local x0=x+w*.5
local kx=obj:type()=='Text' and min(w/ox/2,1) or 1
gc_draw(obj,x0-1,y0-1,nil,kx,1,ox,oy)
gc_draw(obj,x0-1,y0+1,nil,kx,1,ox,oy)
gc_draw(obj,x0+1,y0-1,nil,kx,1,ox,oy)
gc_draw(obj,x0+1,y0+1,nil,kx,1,ox,oy)
gc_setColor(r*.55,g*.55,b*.55)
gc_draw(obj,x0,y0,nil,kx,1,ox,oy)
end
end
function button:getInfo()
@@ -290,13 +299,21 @@ local key={
type='key',
mustHaveText=true,
ATV=0,-- Activating time(0~4)
textAlreadyWrapped=false,---See button.setObject (line 146)
}
function key:reset()
self.ATV=0
end
function key:setObject(obj)
if type(obj)=='string' or type(obj)=='number' then
self.obj=gc.newText(FONT.get(self.font,self.fType),obj)
if match(obj,"\n") then
self.textAlreadyWrapped=true
self.obj=gc.newText(FONT.get(self.font,self.fType))
self.obj:addf(obj,self.w-self.edge*2,(self.align=='L' and 'left') or (self.align=='R' and 'right') or 'center')
else
self.textAlreadyWrapped=false
self.obj=gc.newText(FONT.get(self.font,self.fType),obj)
end
elseif obj then
self.obj=obj
end
@@ -354,14 +371,15 @@ function key:draw()
-- Drawable
local obj=self.obj
local ox,oy=obj:getWidth()*.5,obj:getHeight()*.5
gc_setColor(r,g,b)
if align=='M' then
local kx=obj:type()=='Text' and min(w/ox/2,1) or 1
gc_draw(obj,x+w*.5,y+h*.5,nil,kx,1,ox,oy)
elseif align=='L' then
gc_draw(obj,x+self.edge,y-oy+h*.5)
if align=='L' or self.textAlreadyWrapped then
gc_draw(obj,x+self.edge,y+h*.5-oy)
elseif align=='R' then
gc_draw(obj,x+w-self.edge-ox*2,y-oy+h*.5)
else--if align=='M' then
local kx=obj:type()=='Text' and min(w/ox/2,1) or 1
gc_draw(obj,x+w*.5,y+h*.5,nil,kx,1,ox,oy)
end
end
function key:getInfo()
@@ -1382,10 +1400,13 @@ function WIDGET.setLang(widgetText)
t=W.name or "##"
W.color=COLOR.dV
end
if type(t)=='string' and W.font then
t=gc.newText(FONT.get(W.font),t)
if type(W.setObject)=='function' then
W:setObject(t)
elseif type(t)=='string' and W.font then
W.obj=gc.newText(FONT.get(W.font or 30),t)
else
W.obj=t
end
W.obj=t
end
end
end

View File

@@ -12,6 +12,8 @@ Lua is free software distributed under the terms of the MIT license. Copyright
json.lua is copyrighted by rxi. © 2022 rxi.
discord-rpc.dll is copyrighted by Discord, Inc. © 2017 Discord, Inc.
IBM Plex is copyrighted by the International Business Machines Corporation. IBM and IBM Plex are trademarks of IBM Corp, registered in many jurisdictions worldwide. IBM Plex is licensed under the SIL Open Font License, Version 1.1.

View File

@@ -23,7 +23,7 @@ TIME=love.timer.getTime
-- Global Vars & Settings
SFXPACKS={'chiptune'}
VOCPACKS={'miya','mono','xiaoya','flore','miku','zundamon'}
VOCPACKS={'miya','mono','xiaoya','flore','neuro','miku','zundamon'}
FIRSTLAUNCH=false
DAILYLAUNCH=false
@@ -271,6 +271,7 @@ IMG.init{
floreCH='media/image/characters/flore.png',
mikuCH='media/image/characters/miku.png',
zundamonCH='media/image/characters/zundamon.png',
neuroCH='media/image/characters/neuro.png',
z={
character='media/image/characters/z_character.png',
screen1='media/image/characters/z_screen1.png',
@@ -293,39 +294,41 @@ IMG.init{
},
}
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'},
{name="Arcade (Asriel)", path='media/image/skin/asriel/arcade.png'},
{name="Cardboard (Asriel, slimenergy)", path='media/image/skin/asriel/cardboard.png'},
{name="Crystal (Scf)", path='media/image/skin/scf/crystal.png'},
{name="Matte (MrZ)", path='media/image/skin/mrz/matte.png'},
{name="Shiny (CHNO)", path='media/image/skin/chno/shiny.png'},
{name="Contrast (MrZ)", path='media/image/skin/mrz/contrast.png'},
{name="Polkadots (Scf)", path='media/image/skin/scf/polkadots.png'},
{name="Toy (Scf)", path='media/image/skin/scf/toy.png'},
{name="Smooth (MrZ)", path='media/image/skin/mrz/smooth.png'},
{name="Simple (Scf)", path='media/image/skin/scf/simple.png'},
{name="Glass (Scf)", path='media/image/skin/scf/glass.png'},
{name="Penta (Scf)", path='media/image/skin/scf/penta.png'},
{name="Bubble (Scf)", path='media/image/skin/scf/bubble.png'},
{name="Minoes (Scf)", path='media/image/skin/scf/minoes.png'},
{name="pure (MrZ)", path='media/image/skin/mrz/pure.png'},
{name="bright (Scf)", path='media/image/skin/scf/bright.png'},
{name="Glow (MrZ)", path='media/image/skin/mrz/glow.png'},
{name="Plastic (MrZ)", path='media/image/skin/mrz/plastic.png'},
{name="paper (MrZ)", path='media/image/skin/mrz/paper.png'},
{name="Yinyang (Scf)", path='media/image/skin/scf/yinyang.png'},
{name="Cartooncup (Earety)", path='media/image/skin/earety/cartooncup.png'},
{name="Jelly (Miya)", path='media/image/skin/miya/jelly.png'},
{name="guidetris (xmiao, lusisi)",path='media/image/skin/guidetris_xmiao_lusisi.png'},
{name="brick (Notypey)", path='media/image/skin/notypey/brick.png'},
{name="Gem (Notypey)", path='media/image/skin/notypey/gem.png'},
{name="Classic", path='media/image/skin/unknown/classic.png'},
{name="Ball (Shaw)", path='media/image/skin/shaw/ball.png'},
{name="Retro (Notypey)", path='media/image/skin/notypey/retro.png'},
{name="Pixel (CHNO)", path='media/image/skin/chno/pixel.png'},
{name="Pastel (CHNO)", path='media/image/skin/chno/pastel.png'},
{name="Letters (CHNO)", path='media/image/skin/chno/letters.png'},
{name="Kanji (CHNO)", path='media/image/skin/chno/kanji.png'},
{name="Textbone (MrZ)", path='media/image/skin/mrz/textbone.png'},
{name="Coloredbone (MrZ)", path='media/image/skin/mrz/coloredbone.png'},
{name="WTF (MrZ)", path='media/image/skin/mrz/wtf.png'},
}
-- Initialize sound libs
@@ -424,7 +427,8 @@ do
for _,v in next,SETTING.skin do if v<1 or v>17 then v=17 end end
if not RSlist[SETTING.RS] then SETTING.RS='TRS' end
if SETTING.ghostType=='greyCell' then SETTING.ghostType='grayCell' end
if type(SETTING.skinSet)=='number' then SETTING.skinSet='crystal_scf' end
if type(SETTING.skinSet)=='number' then SETTING.skinSet='Crystal (Scf)' end
if string.find(SETTING.skinSet,"_") then SETTING.skinSet='Crystal (Scf)' end
if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul) then SETTING.frameMul=100 end
if SETTING.cv then SETTING.vocPack,SETTING.cv=SETTING.cv end
if type(SETTING.bg)~='string' then SETTING.bg='on' end
@@ -590,18 +594,22 @@ for _,fileName in next,fs.getDirectoryItems('replay') do
end
table.sort(REPLAY,function(a,b) return a.fileName>b.fileName end)
AUTHURL="https://studio26f.org/oauth?product=techmino"
AUTHHOST="cafuuchino1.3322.org:8081"
WS.switchHost('cafuuchino1.3322.org','10026','/techmino/ws/v1')
HTTP.setHost("cafuuchino1.3322.org:10026")
AUTHURL="https://www.studio26f.org/oauth?product=techmino"
AUTHHOST="www.studio26f.org:8080"
WS.switchHost('www.studio26f.org','8081','/techmino/ws/v1')
HTTP.setHost("www.studio26f.org:8081")
HTTP.setThreadCount(1)
-- Discord RPC
DiscordRPC=require'parts.discordRPC'
DiscordRPC.update()
table.insert(_LOADTIMELIST_,("Load Resources: %.3fs"):format(TIME()-_LOADTIME_))
for i=1,#_LOADTIMELIST_ do LOG(_LOADTIMELIST_[i]) end
-- Launch testing task if launch param received
if TABLE.find(arg,'-- test') then
if TABLE.find(arg,'--test') then
TASK.new(function()
while not LOADED do coroutine.yield() end

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 613 B

After

Width:  |  Height:  |  Size: 613 B

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

Before

Width:  |  Height:  |  Size: 91 B

After

Width:  |  Height:  |  Size: 91 B

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 837 B

After

Width:  |  Height:  |  Size: 837 B

View File

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
media/vocal/neuro/air.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/b2b.ogg Normal file

Binary file not shown.

BIN
media/vocal/neuro/b3b.ogg Normal file

Binary file not shown.

BIN
media/vocal/neuro/bye.ogg Normal file

Binary file not shown.

BIN
media/vocal/neuro/clear.ogg Normal file

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/deep.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/doubt.ogg Normal file

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/happy.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/ispin.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/jspin.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/lose.ogg Normal file

Binary file not shown.

BIN
media/vocal/neuro/lose0.ogg Normal file

Binary file not shown.

BIN
media/vocal/neuro/lspin.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/mini.ogg Normal file

Binary file not shown.

BIN
media/vocal/neuro/mix.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/pspin.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
media/vocal/neuro/qspin.ogg Normal file

Binary file not shown.

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