Compare commits

...

151 Commits

Author SHA1 Message Date
MrZ_26
9e442a3073 整理代码
版本推进
2022-11-04 00:26:38 +08:00
Richard969
bc8b7e733b FIX c4wtrain_n getrank wrong (#766) 2022-11-04 00:25:22 +08:00
MrZ_26
94aa84e380 修复ultra进去就蓝屏(之前bgm模块更新忘了改对应用法) 2022-11-04 00:07:25 +08:00
MrZ_26
c462c28640 收到重复id玩家进入房间的时候会先触发把老的退掉防止出现复制人引起一堆问题 2022-11-03 23:55:04 +08:00
MrZ_26
b5fbf9cade 修复网战多队伍结束条件错误 2022-11-03 23:16:42 +08:00
MrZ_26
e88957296f 修改队伍颜色,看起来不扎眼一些(大概 2022-11-03 23:08:39 +08:00
MrZ_26
9e61cb995a 缓冲槽内有过多垃圾行时满了就不会再继续绘制,减少极端情况下的卡顿 2022-11-03 22:46:46 +08:00
MrZ_26
89a5a718da 实现房间内排名(方法有点小神秘 不过应该能用 2022-11-03 22:45:46 +08:00
MrZ_26
43649c54a3 基本完成中途加入的观战
修复从联网游戏房间退出不会把GAME.playing置false
checkWarning的玩家改成输入而不是自动获取
整理代码
2022-11-03 18:06:28 +08:00
MrZ_26
b2b5c99425 修复节日日期写错
修正简洁模式场景栈搜索有未触发漏洞
整理代码
框架跟进
2022-11-03 15:11:12 +08:00
MrZ_26
9e882e6188 框架跟进
推进中途加入房间的观战相关
2022-11-03 12:23:29 +08:00
渣渣120
e688458cfd 在 README 提供更多下载方式 便于那些完全不懂github的小白用户( (#765)
* 在 README 提供更多下载方式 便于那些完全不懂github的小白用户(

Co-authored-by: ParticleG <particle_g@outlook.com>
Co-authored-by: C₂₉H₂₅N₃O₅ <a1228465111@163.com>
2022-11-01 10:54:45 +08:00
MrZ_26
b7c528f5ac 修改获取对局种子的api 2022-10-31 18:59:04 +08:00
MrZ_26
c743fdcffc 修复连连看小游戏背景区域范围错误 2022-10-31 02:19:54 +08:00
MrZ_26
56e19dd91e 修复房间列表界面密码栏存在时刷新计时器不动导致很奇怪,现在会走时间但到0不会刷新 2022-10-30 00:17:07 +08:00
MrZ_26
308512d36a 修复暂停界面第一帧有时候会闪烁 2022-10-29 17:18:30 +08:00
MrZ_26
749806e553 修复100攻击模式打到40就算成绩 2022-10-29 15:55:53 +08:00
MrZ_26
78223334ee 再整理quarks背景代码 2022-10-29 02:22:52 +08:00
MrZ_26
7f50161ca7 再整理quarks背景代码 2022-10-29 02:20:52 +08:00
MrZ_26
dd872a72b2 整理代码,return后面跟空格 2022-10-29 00:59:41 +08:00
MrZ_26
0df17cb4ee 给一些模式换刚加的两个新背景 2022-10-29 00:52:35 +08:00
MrZ_26
27244dae04 优化两个新背景代码 2022-10-29 00:33:34 +08:00
NOT_A_ROBOT
c472d6cbd7 Add new backgrounds (#764)
* Add quark background

* add galaxy background
2022-10-28 23:39:34 +08:00
MrZ_26
e4c786a5d4 更新头像的函数检测如果缺数据就跳过流程
框架跟进
2022-10-28 16:33:19 +08:00
MrZ_26
e291a070f3 优化联网游戏体验(统计数据结算、远程玩家死亡结算时机) 2022-10-28 16:33:19 +08:00
MrZ_26
6b16fcd5f5 添加一点注释,整理代码 2022-10-28 16:33:19 +08:00
MrZ_26
d79279d1cd 音乐室可以按住shift+字符反向快速跳转 2022-10-28 16:33:19 +08:00
ParticleG
03fbfaa577 - Update workflow 2022-10-28 10:00:50 +08:00
ParticleG
8231021426 - Update summary 2022-10-27 18:05:12 +08:00
ParticleG
784b2074f8 - Update summaries 2022-10-27 17:16:38 +08:00
ParticleG
93c9977c86 - Update summaries 2022-10-27 16:27:15 +08:00
ParticleG
ad1b129dfa - Update summaries 2022-10-27 16:08:45 +08:00
ParticleG
2d4856551b - Update summaries 2022-10-27 15:06:40 +08:00
ParticleG
4d0e72d61e - Try using step summaries 2022-10-27 14:11:47 +08:00
ParticleG
9b20ec6941 - Try fix windows output & notice 2022-10-27 13:52:20 +08:00
ParticleG
5a02265018 - Try fix multiline issue 2022-10-27 11:31:51 +08:00
ParticleG
0dd5c46fd1 - Try use new environment file again 2022-10-27 10:59:54 +08:00
ParticleG
55831339dd - Try using deprecated set-output for debugging 2022-10-27 10:50:12 +08:00
MrZ_26
e0ba04e579 修改更新历史,框架跟进 close #763 2022-10-27 02:14:22 +08:00
MrZ_26
d5f7a6ddd0 整理代码 2022-10-27 01:43:19 +08:00
MrZ_26
66a3354883 整理代码,texture模块的新画布函数的画布底色改成透明白色 2022-10-27 00:29:33 +08:00
MrZ_26
55218e4563 修复创房间的人“当前场景”状态有问题导致别人退房的时候操作不能正确执行 2022-10-27 00:24:27 +08:00
MrZ_26
081b769ac6 非房主玩家边框还是稍微粗一点吧 2022-10-27 00:23:50 +08:00
MrZ_26
8f767b3ab9 订正一处中文文本 2022-10-27 00:01:38 +08:00
MrZ_26
a2eb7e4a54 修复联网对战攻击校验变量用错 2022-10-27 00:01:29 +08:00
MrZ_26
2de663703b 修复单机模式没有sid导致部分情况读取sid报错(会用本地uid直接代替) 2022-10-27 00:01:14 +08:00
ParticleG
40a587dcc4 - Try use new release action 2022-10-26 22:23:23 +08:00
MrZ_26
f366a63c8f 修复录像菜单添加第一个录像/删除最后一个录像后按钮显示状态没变 close #736 2022-10-26 11:58:23 +08:00
MrZ_26
8c603fadee 添加反联网玩家使用非法块皮肤
检测到联网玩家攻击数量不同步后会直接主动放弃游戏 close #720
2022-10-26 11:47:52 +08:00
MrZ_26
5e9ef8d3ab 联网玩家皮肤调成炸弹块时会被本地强制改为灰色 2022-10-26 11:47:52 +08:00
ParticleG
2e9cef3ed8 - Bump actions' versions 2022-10-26 11:04:06 +08:00
MrZ_26
354d4f80bf 一堆场景同时允许回车键和小键盘回车键 2022-10-26 10:57:45 +08:00
MrZ_26
a578d537cd 粘贴场地高度最高能读到60行,允许一些极端的高空作业 2022-10-26 10:42:53 +08:00
MrZ_26
85ff1cd1c3 刚注册完跳转到设置密码界面的时候会自动填入注册用的验证码(因为服务端就这么设计的可以复用一次) 2022-10-26 10:35:01 +08:00
ParticleG
0d015de359 - Use file IO instead of echo 2022-10-26 10:23:11 +08:00
MrZ_26
5a0a473d4a 控制台theme命令会提示可以输halloween 2022-10-26 10:16:43 +08:00
MrZ_26
420ff9a556 修正日语语言文件少个逗号 2022-10-26 10:10:50 +08:00
sakurw
4f6e99daa2 Update lang_ja.lua (#761) 2022-10-26 10:06:32 +08:00
MrZ_26
10a57ecc18 修复音乐室暂停就报错(之前合并分支选错一边)
框架跟进(修复说明书界面报错)
2022-10-26 05:34:11 +08:00
MrZ_26
b101d74df5 版本推进 2022-10-26 04:59:38 +08:00
MrZ_26
97d4e58d47 添加halloween主题,包括一个bgm,一个按钮主题,主菜单打雷特效,带蜘蛛网的标题和一个南瓜
close #757
2022-10-26 04:42:00 +08:00
MrZ_26
b436645ab7 修正几处检测当前场景的代码之前更新场景模块忘了改 2022-10-26 03:48:05 +08:00
sakurw
af7c73f9f0 Update lang_ja.lua (#760) 2022-10-26 02:05:10 +08:00
MrZ_26
7d44396b03 新增队伍系统,攻击不会打给同队,剩一队时游戏就结束(目前允许0~6,0号为自由队,每个人分别算一队)
添加/group命令来选择队伍
2022-10-26 01:26:04 +08:00
MrZ_26
bd428f355a 添加房主和队伍状态的显示方式
添加转交房主提示
2022-10-25 20:53:00 +08:00
MrZ_26
2d6d897e2a 忽略部分服务器返回的错误消息
框架跟进
2022-10-25 19:48:00 +08:00
Particle_G
4913deb15f - Try fix windows product-name 2022-10-25 09:19:10 +00:00
Particle_G
0cb9d3990c - Use new action addresses 2022-10-25 06:55:15 +00:00
Particle_G
388e8e1fe1 - Fix deprecated set-output 2022-10-25 03:34:57 +00:00
MrZ_26
42168ddf16 修复一些联网相关场景切换关系问题
修复重设密码场景回车键自动识别功能条件错误
框架跟进
2022-10-25 02:17:07 +08:00
MrZ_26
134773765c 修创建房间场景在场景栈的位置 2022-10-24 23:29:19 +08:00
MrZ_26
74b099d58f 对战房间消息框可以用两个房间管理命令 2022-10-24 23:01:35 +08:00
MrZ_26
c1936441dd 调整踢出玩家的提示文本 2022-10-24 22:59:27 +08:00
MrZ_26
dc3b7c0825 有玩家退出房间的时候也会刷新房间allReady状态
限制催促准备音效频率
2022-10-24 22:30:49 +08:00
MrZ_26
86910f2956 修正进入房间成功的时候错误打断了一个等待,应当是创建成功时 2022-10-24 22:04:49 +08:00
MrZ_26
7b1df65e64 调整用户名显示相关,只有播放录像才会强制用户名,否则都用uid获取 2022-10-24 19:15:05 +08:00
MrZ_26
04559efaca 添加服务器返回的错误信息语言文本 2022-10-24 18:39:27 +08:00
MrZ_26
b668fa4750 修改观战状态检测
整理代码
2022-10-24 15:09:33 +08:00
MrZ_26
a4db061485 修游戏中有人退出房间有一处复制漏改
观战时会默认视角为sid最小的人
2022-10-24 15:05:01 +08:00
MrZ_26
d4d97f1e7f Merge branch 'ci_new_online' 2022-10-24 14:27:27 +08:00
MrZ_26
e682202b60 更多ws连接炸掉的时候自动返回主菜单 2022-10-24 14:15:42 +08:00
MrZ_26
2480987f10 正确更新房间allReady状态 2022-10-24 14:11:46 +08:00
MrZ_26
b0acdce294 修复不同设备对局sid不一致 2022-10-24 14:07:09 +08:00
MrZ_26
7953cf735b 实现键盘一键准备 2022-10-24 02:52:44 +08:00
MrZ_26
d074a85fbc NETPLY模块删掉一堆方法,先外部直接改数据,玩家会根据状态更换样式
游戏开始/结束时自主同步正确的服务端玩家状态
2022-10-24 02:37:45 +08:00
MrZ_26
543e85e94c 实现收发房内聊天消息,修改频发言率限制
实现消息框里的进出房间提醒
2022-10-24 00:43:11 +08:00
MrZ_26
23f43df737 实现玩家全部准备的时候顶部文字提醒 2022-10-24 00:26:52 +08:00
MrZ_26
43b6ff7697 修正创建房间页面在场景书上的位置 2022-10-24 00:20:29 +08:00
MrZ_26
6ecc80ac0f 修正玩家进出房间相关问题
修正获取玩家信息相关问题
实现操作录像传输
修改一些语言文本
2022-10-23 23:31:16 +08:00
MrZ_26
3ae0e80ce5 调整重设密码界面在场景树上的位置 2022-10-23 04:53:51 +08:00
MrZ_26
d12f8a27e7 减少密码哈希迭代次数防止把手机卡烂
原来的登录和注册界面改为密码登录和邮箱登录
邮箱登录界面不再分状态,设置密码独立出一个界面
自动登录不再检测本地用过密码登录,第一次邮箱登录不设置密码但存了token也可以
整理代码
2022-10-23 04:36:19 +08:00
MrZ_26
f9bbb8fce6 实现玩家准备状态相关 2022-10-23 01:43:56 +08:00
MrZ_26
80984cddf9 联网游戏结束后2.6秒返回玩家列表 2022-10-23 01:13:01 +08:00
MrZ_26
8fb0b2e600 实现根据统一种子随机生成每个玩家的sid 2022-10-22 02:08:36 +08:00
MrZ_26
9a4e8ab4ec 实现开始游戏信号与切换进游戏状态创建玩家 2022-10-21 00:16:15 +08:00
MrZ_26
dc1973e049 实现新api的进房和准备/观战
修复不会刷新在线人数
2022-10-19 23:29:45 +08:00
MrZ_26
ccb05230f2 实现自动请求没见过的用户信息和自动获取用户头像 2022-10-17 11:47:44 +08:00
MrZ_26
7ac6f45b9b 实现玩家设置同步到服务器
实现玩家离开房间(各种途径)
修改云存读档代码(还未实现)
移除sid,准备之后用uid本地排序序号代替(排序还未实现)
整理代码,框架跟进
2022-10-09 06:47:08 +08:00
MrZ_26
df7ab20636 继续实现一堆联网消息
语言文件加一条
框架跟进
2022-10-08 04:16:18 +08:00
MrZ_26
c06961c9c8 订正上一个提交漏改的东西
优化debug消息显示格式
调整网络断开提示文本用法
2022-10-07 02:36:18 +08:00
MrZ_26
37b76a1cb4 继续整联网,数字action填入一个大表方便统一管理 2022-10-06 22:34:22 +08:00
MrZ_26
01d02a916d 修复音乐室暂停就爆炸 2022-10-06 16:45:34 +08:00
MrZ_26
8e99565a9d 退出前会主动断开一下ws连接
WAIT放到网络相关TASK函数内部(会在第一帧触发,不影响)
可以从语言文件翻译服务器的错误消息并显示了
框架跟进
2022-10-06 03:16:18 +08:00
MrZ_26
f8d17b23b6 注释后加空格
联网稍微推进
2022-10-03 02:43:51 +08:00
MrZ_26
06f4bb4e1a 整 理 代 码
(应该没有改到字符串里面的东西吧…)起码不直接影响运行
2022-10-01 11:32:11 +08:00
MrZ_26
6e00ff96ec 服务器返回房间对象格式错误的时候不会直接爆炸 2022-09-30 07:23:39 +08:00
MrZ_26
468bbc8053 实现拉取房间列表
框架跟进
2022-09-29 20:29:45 +08:00
MrZ_26
f41999c019 调整登录流程里弹出的信息 2022-09-29 18:36:19 +08:00
MrZ_26
d259e05ca7 【不能用】继续改联网,更新ws相关,完善断开后的行为与提示
框架跟进
2022-09-29 10:07:39 +08:00
MrZ_26
2491a436c2 修复生存L难度显示maxspeed文本时机不正确 2022-09-29 08:42:28 +08:00
MrZ_26
7a55e447fc 整理代码 2022-09-29 08:15:03 +08:00
MrZ_26
f3face791f 【不能用】继续改联网,实现并替换一些发送ws请求的方法
框架跟进
2022-09-29 02:41:00 +08:00
MrZ_26
9ccc019bb9 【不能用】继续改联网,能登录了
框架跟进
2022-09-28 23:00:43 +08:00
MrZ_26
bc9f00d09f 整理代码
框架跟进
2022-09-28 19:36:10 +08:00
MrZ_26
33c470dd38 【不能用】继续改联网
框架跟进
2022-09-28 01:20:03 +08:00
MrZ_26
9e0e93de5d 修音乐室和一些bgm模块更新后的小错误
框架跟进a
2022-09-27 21:30:29 +08:00
MrZ_26
16553e13a2 【警告】联网不能用,不要随便试
联网重制ing,提交一下做个中继点
2022-09-27 21:30:29 +08:00
MrZ_26
d031dc3a82 注释掉cc落块信息输出,需要的时候自己开 2022-09-27 21:30:29 +08:00
MrZ_26
7297eb8ee8 框架跟进 2022-09-27 21:30:29 +08:00
C₂₉H₂₅N₃O₅
55bcdd426b Updated the link to TTT (Eng. Ver.) (#754)
* Updated the link to TTT (Eng. Ver.)
2022-09-27 19:21:56 +08:00
NOT_A_ROBOT
139e2e14c4 Add 15 death delay to TSD Challenge modes (#753)
* Add 15 death delay to tsd_e

* Add 15 death delay to tsd_h

* Add 15 death delay to tsd_u
2022-09-27 19:20:59 +08:00
MrZ_26
339b53115a 据作者要求暂时删除rin语音包
微调几个tip
修改版本号
2022-09-17 22:27:38 +08:00
MrZ_26
03515b4490 框架跟进,修复bgm音量为0时切换几次bgm会报错 2022-09-11 22:49:26 +08:00
MrZ_26
9690a345a3 微调TRS,T的2→R和2→L加一个下1 2022-09-11 18:15:23 +08:00
ParticleG
8324f72e90 - Fix outputs 2022-09-11 17:20:53 +08:00
ParticleG
15eefc0e9f - Fix rename 2022-09-11 12:02:28 +08:00
ParticleG
d504bd3d49 - Fix macOS-appstore package name 2022-09-11 11:27:03 +08:00
ParticleG
fd4b4f1882 - Use cp instead of mv 2022-09-11 11:22:58 +08:00
ParticleG
a176ef35a0 - Fix release notes
- Add platform name to release artifacts
2022-09-11 11:19:34 +08:00
MrZ_26
0fc7178589 shader里部分float变量改为highp float,保证丝滑
(需要同时配合apk配置更新的gles版本为3.0)
2022-09-11 06:58:01 +08:00
MrZ_26
76d985cc0f 删除readme“当前稳定版本”的文本 2022-09-10 22:59:14 +08:00
C₂₉H₂₅N₃O₅
aa05e8857b Update readme.md (#751) 2022-09-10 22:57:58 +08:00
MrZ_26
bb89665fff 版本推进 2022-09-10 19:11:35 +08:00
MrZ_26
eca1f00549 框架跟进(修复触屏弹不出键盘问题) 2022-09-10 19:01:04 +08:00
MrZ_26
ca20b93632 调整一些语言相关文本
整理代码
2022-09-10 03:16:08 +08:00
MrZ_26
f3d08bae1a 整理代码,大规模整理(展开)使用次数不多的局部变量名
框架跟进
2022-09-10 03:02:00 +08:00
MrZ_26
ad4365faab 版本推进 2022-09-07 02:35:23 +08:00
MrZ_26
e8c69f7c03 删除那个没用过的c2限速式图片,不打算用了 close #735 2022-09-07 01:59:41 +08:00
MrZ_26
f4267cfe2a 行号不再只在场地高度大于20的时候显示,只要开了就常驻 close #748 2022-09-07 01:32:18 +08:00
MrZ_26
ce178d5b2b 框架跟进,修复键盘不能和按钮交互 close #745 2022-09-07 01:25:07 +08:00
MrZ_26
07eb296956 框架跟进,修复自定义场地界面按任何颜色按钮报错 close #743 2022-09-07 01:21:13 +08:00
MrZ_26
3eb982d00c 部分模式在游戏过程中就可以看到当前评级 close #747 2022-09-07 01:16:55 +08:00
MrZ_26
c52d2d0cd0 调整defender_n难度曲线(会损坏之前录像) close #739 2022-09-07 00:09:00 +08:00
MrZ_26
f6c00ec8fb 把miya语音包的b3b也换新,虽然读得不太一样 2022-09-06 22:13:11 +08:00
MrZ_26
70d5be3613 调整一些tip相关 2022-09-02 01:28:44 +08:00
ParticleG
1cedf7000f - Fix other names 2022-08-31 21:17:20 +08:00
ParticleG
0aaa5d2193 - Rename core artifact & release 2022-08-31 21:13:35 +08:00
ParticleG
8203f882b9 - Add ColdClear wrapper to Windows 2022-08-30 17:23:59 +08:00
MrZ_26
e1885bdb60 miya语音包重录 2022-08-29 14:49:53 +08:00
Richard969
21c8355340 add AUR(techmino-git) badge (#742)
renamed AUR version to AUR techmino-client
renamed AUR techmino-client's label from 'AUR' to 'techmino-client'
2022-08-27 02:45:56 +08:00
NOT_A_ROBOT
1db65c6d03 fix error message (#738) 2022-08-27 02:44:39 +08:00
507 changed files with 7203 additions and 6586 deletions

View File

@@ -19,10 +19,10 @@ runs:
using: "composite"
steps:
- run: |
echo "::set-output name=tag::"$(if [ -z "${{ inputs.tag }}" ]
echo "tag="$(if [ -z "${{ inputs.tag }}" ]
then curl -w '%{url_effective}' -I -L -s -S https://github.com/${{ inputs.repo }}/releases/latest -o /dev/null | grep -o '\<[^/]*$'
else echo ${{ inputs.tag }}
fi)
fi) >> $GITHUB_OUTPUT
id: get-tag
shell: bash
- uses: ./.github/actions/get-unzip

View File

@@ -20,6 +20,8 @@ jobs:
version-name: ${{ steps.app-info.outputs.version-name }}
version-string: ${{ steps.app-info.outputs.version-string }}
version-code: ${{ steps.app-info.outputs.version-code }}
update-title: ${{ steps.app-info.outputs.update-title }}
update-note: ${{ steps.app-info.outputs.update-note }}
commit-hash: ${{ steps.git-info.outputs.commit-hash }}
base-name: ${{ steps.assemble-base-name.outputs.base-name }}
steps:
@@ -32,92 +34,42 @@ jobs:
shell: lua {0}
run: |
local version = require "version"
print("::set-output name=app-name::Techmino")
print("::set-output name=version-name::"..version.name)
print("::set-output name=version-string::"..version.string:gsub("%a", ""))
print(("::set-output name=version-code::%d"):format(version.code))
os.execute('echo "app-name=Techmino" >> $GITHUB_OUTPUT')
os.execute('echo "version-name=' .. version.name .. '" >> $GITHUB_OUTPUT')
os.execute('echo "version-string=' .. version.string:gsub("%a", "") .. '" >> $GITHUB_OUTPUT')
os.execute('echo "version-code=' .. tostring(version.code) .. '" >> $GITHUB_OUTPUT')
local note = require 'parts.updateLog'
local p1 = note:find("\n%d") + 1
local p2 = note:find("\n", p1) - 1
os.execute('echo "update-title=' .. note:sub(p1, p2) .. '" >> $GITHUB_OUTPUT')
local p3 = note:find("\n", note:find("\n%d") + 1) + 1
local p4 = note:find("\n%d", p3 + 1)
updateNote = note:sub(p3, p4 - 2)
:gsub(" ", "- ")
:gsub(" ", "# ")
os.execute('echo "update-note<<EOF" >> $GITHUB_OUTPUT')
os.execute('echo "' .. updateNote .. '" >> $GITHUB_OUTPUT')
os.execute('echo "EOF" >> $GITHUB_OUTPUT')
- name: Get git info
id: git-info
shell: bash
run: |
COMMIT_HASH=$(git rev-parse --short ${{ GITHUB.SHA }})
echo ::set-output name=commit-hash::$COMMIT_HASH
echo "commit-hash=$COMMIT_HASH" >> $GITHUB_OUTPUT
- name: Assemble package base name
id: assemble-base-name
shell: bash
run: |
BASE_NAME=Techmino_${{ steps.app-info.outputs.version-string }}_${{ steps.git-info.outputs.commit-hash }}_#${{ GITHUB.RUN_NUMBER }}
echo ::set-output name=base-name::$BASE_NAME
echo "base-name=$BASE_NAME" >> $GITHUB_OUTPUT
build-core:
runs-on: ubuntu-latest
needs: get-info
env:
PACKAGE_NAME: ./${{ needs.get-info.outputs.base-name }}_Core.love
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: ./.github/actions/update-version
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
with:
commit: ${{ needs.get-info.outputs.commit-hash }}
type: snapshot
- name: Build core love package
uses: 26F-Studio/love-actions-core@v1
with:
build-list: ./media/ ./parts/ ./Zframework/ ./conf.lua ./main.lua ./version.lua
package-path: ${{ env.CORE_LOVE_PACKAGE_PATH }}
- name: Upload core love package
uses: actions/upload-artifact@v3
with:
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
path: ${{ env.CORE_LOVE_PACKAGE_PATH }}
- name: Rename love package
run: mv ${{ env.CORE_LOVE_PACKAGE_PATH }} ${{ env.PACKAGE_NAME }}
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ needs.get-info.outputs.base-name }}_Core
path: ${{ env.PACKAGE_NAME }}
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
with:
body: ${{ github.event.head_commit.message }}
files: ${{ env.PACKAGE_NAME }}
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.PACKAGE_NAME }} 2>&1>./wetransfer.log
echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=Bare love package::${{ steps.transfer.outputs.download-url }}"
auto-test:
runs-on: ubuntu-latest
needs: build-core
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Love actions for testing
uses: 26F-Studio/love-actions-test@v1
with:
font-path: ./parts/fonts/proportional.otf
language-folder: ./parts/language
build-android:
runs-on: ubuntu-latest
needs: [get-info, build-core, auto-test]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
@@ -130,8 +82,92 @@ jobs:
run: |
import os
import re
os.system("echo ::set-output name=bundle-id::org.f26_studio." + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}") + ".snapshot")
os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}") + "_Snapshot")
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')
- uses: ./.github/actions/update-version
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
with:
commit: ${{ needs.get-info.outputs.commit-hash }}
type: snapshot
- name: Build core love package
uses: love-actions/love-actions-core@v1
with:
build-list: ./media/ ./parts/ ./Zframework/ ./conf.lua ./main.lua ./version.lua
package-path: ${{ env.CORE_LOVE_PACKAGE_PATH }}
- name: Upload core love package
uses: actions/upload-artifact@v3
with:
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
path: ${{ env.CORE_LOVE_PACKAGE_PATH }}
- name: Rename love package
run: |
mkdir -p ${{ env.OUTPUT_FOLDER }}
mv ${{ env.CORE_LOVE_PACKAGE_PATH }} ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.love
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ needs.get-info.outputs.base-name }}_Core_love
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.love
- 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 }}.love ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Bare.love
- 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 }}_Bare.love
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
needs: build-core
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Love actions for testing
uses: love-actions/love-actions-test@v1
with:
font-path: ./parts/fonts/proportional.otf
language-folder: ./parts/language
build-android:
runs-on: ubuntu-latest
needs: [get-info, build-core, auto-test]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Process app name
id: process-app-name
shell: python3 {0}
run: |
import os
import re
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
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')
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')
- name: Download core love package
uses: actions/download-artifact@v3
with:
@@ -150,7 +186,7 @@ jobs:
mv ./ColdClear/arm64-v8a/libCCloader.so ./libAndroid/arm64-v8a/
- name: Build Android packages
id: build-packages
uses: 26F-Studio/love-actions-android@v1
uses: love-actions/love-actions-android@v1
with:
app-name: ${{ needs.get-info.outputs.app-name }}
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
@@ -167,7 +203,7 @@ jobs:
version-string: ${{ needs.get-info.outputs.version-string }}
version-code: ${{ needs.get-info.outputs.version-code }}
output-folder: ${{ env.OUTPUT_FOLDER }}
- name: Upload release artifact
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ needs.get-info.outputs.base-name }}_Android_release
@@ -176,31 +212,31 @@ jobs:
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
shell: bash
run: |
mkdir -p release
mv ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}-release.apk release/${{ steps.process-app-name.outputs.product-name }}.apk
mkdir -p ${{ env.RELEASE_FOLDER }}
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}-release.apk ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Android.apk
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
uses: ncipollo/release-action@v1
with:
body: ${{ github.event.head_commit.message }}
files: release/${{ steps.process-app-name.outputs.product-name }}.apk
allowUpdates: true
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Android.apk
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 "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=Android packages::${{ steps.transfer.outputs.download-url }}"
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]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
@@ -213,8 +249,9 @@ jobs:
run: |
import os
import re
os.system("echo ::set-output name=bundle-id::org.26f-studio.techmino")
os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}"))
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
f.write('bundle-id=org.26f-studio.techmino\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:
@@ -226,7 +263,7 @@ jobs:
dir: ./ColdClear
- name: Build iOS packages
id: build-packages
uses: 26F-Studio/love-actions-ios@v1
uses: love-actions/love-actions-ios@v1
with:
app-name: ${{ needs.get-info.outputs.app-name }}
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
@@ -260,29 +297,34 @@ jobs:
with:
name: ${{ needs.get-info.outputs.base-name }}_iOS_ipa
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.ipa
- 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 }}.ipa ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_iOS.ipa
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
uses: ncipollo/release-action@v1
with:
body: ${{ github.event.head_commit.message }}
files: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.ipa
allowUpdates: true
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_iOS.ipa
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 "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=iOS packages::${{ steps.transfer.outputs.download-url }}"
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
build-linux:
runs-on: ubuntu-latest
needs: [get-info, build-core, auto-test]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
@@ -295,7 +337,8 @@ jobs:
run: |
import os
import re
os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}"))
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')
- name: Download core love package
uses: actions/download-artifact@v3
with:
@@ -315,7 +358,7 @@ jobs:
mv ./x64/CCloader.so ./shared
- name: Build Linux packages
id: build-packages
uses: 26F-Studio/love-actions-linux@v1
uses: love-actions/love-actions-linux@v1
with:
desktop-file-path: ./.github/build/linux/${{ env.BUILD_TYPE }}/template.desktop
executable-name: app
@@ -328,31 +371,37 @@ jobs:
- name: Upload AppImage artifact
uses: actions/upload-artifact@v3
with:
name: ${{ needs.get-info.outputs.base-name }}_Linux
name: ${{ needs.get-info.outputs.base-name }}_Linux_AppImage
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.AppImage
- 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
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
uses: ncipollo/release-action@v1
with:
body: ${{ github.event.head_commit.message }}
files: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.AppImage
allowUpdates: true
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_Linux.AppImage
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 "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=Linux packages::${{ steps.transfer.outputs.download-url }}"
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]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
@@ -365,8 +414,9 @@ jobs:
run: |
import os
import re
os.system("echo ::set-output name=bundle-id::org.26f-studio.techmino")
os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}"))
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
f.write('bundle-id=org.26f-studio.techmino\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:
@@ -382,7 +432,7 @@ jobs:
rm ./ColdClear/universal/libcold_clear.a
- name: Build macOS packages
id: build-packages
uses: 26F-Studio/love-actions-macos-appstore@v1
uses: love-actions/love-actions-macos-appstore@v1
with:
app-name: ${{ needs.get-info.outputs.app-name }}
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
@@ -415,29 +465,35 @@ jobs:
with:
name: ${{ needs.get-info.outputs.base-name }}_macOS_appstore_pkg
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.pkg
- 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 }}.pkg ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_appstore.pkg
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
uses: ncipollo/release-action@v1
with:
body: ${{ github.event.head_commit.message }}
files: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.pkg
allowUpdates: true
artifacts: ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_appstore.pkg
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 "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=macOS App Store packages::${{ steps.transfer.outputs.download-url }}"
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]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
@@ -450,8 +506,9 @@ jobs:
run: |
import os
import re
os.system("echo ::set-output name=bundle-id::org.26f-studio.techmino")
os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}"))
with open(os.getenv('GITHUB_OUTPUT'), 'a') as f:
f.write('bundle-id=org.26f-studio.techmino\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:
@@ -467,7 +524,7 @@ jobs:
rm ./ColdClear/universal/libcold_clear.a
- name: Build macOS packages
id: build-packages
uses: 26F-Studio/love-actions-macos-portable@v1
uses: love-actions/love-actions-macos-portable@v1
with:
app-name: ${{ needs.get-info.outputs.app-name }}
bundle-id: ${{ steps.process-app-name.outputs.bundle-id }}
@@ -509,31 +566,35 @@ jobs:
with:
name: ${{ needs.get-info.outputs.base-name }}_macOS_portable_bare
path: ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.zip
- 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 }}.pkg ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_portable.pkg
cp ${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.dmg ${{ env.RELEASE_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_macOS_portable.dmg
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
uses: ncipollo/release-action@v1
with:
body: ${{ github.event.head_commit.message }}
files: |
${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.pkg
${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}.dmg
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
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 "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=macOS portable packages::${{ steps.transfer.outputs.download-url }}"
echo "download-url=$(cat ./wetransfer.log | grep https | cut -f3 -d" ")" >> $GITHUB_OUTPUT
build-windows:
runs-on: windows-latest
needs: [get-info, build-core, auto-test]
env:
OUTPUT_FOLDER: ./build
RELEASE_FOLDER: ./release
outputs:
download-url: ${{ steps.transfer.outputs.download-url }}
steps:
@@ -546,18 +607,26 @@ jobs:
run: |
import os
import re
os.system("echo ::set-output name=product-name::" + re.sub(r"[^A-Za-z0-9]+", "_", "${{ needs.get-info.outputs.app-name }}"))
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')
- name: Download core love package
uses: actions/download-artifact@v3
with:
name: ${{ env.CORE_LOVE_ARTIFACT_NAME }}
- name: Download ColdClear
uses: ./.github/actions/get-cc
with:
platform: Windows
dir: ./ColdClear
- name: Build Windows packages
id: build-packages
uses: 26F-Studio/love-actions-windows@v1
uses: love-actions/love-actions-windows@v1
with:
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
product-name: ${{ steps.process-app-name.outputs.product-name }}
version-string: ${{ needs.get-info.outputs.version-string }}
output-folder: ${{ env.OUTPUT_FOLDER }}
@@ -571,14 +640,21 @@ 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: 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 }}_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
- name: Upload release
if: ${{ startsWith(github.ref, 'refs/tags/pre') || startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v1
uses: ncipollo/release-action@v1
with:
body: ${{ github.event.head_commit.message }}
files: |
${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_x86.zip
${{ env.OUTPUT_FOLDER }}/${{ steps.process-app-name.outputs.product-name }}_x64.zip
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
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:
@@ -590,13 +666,10 @@ jobs:
rm ${{ env.TEMP_PATH }}
- name: Upload to WeTransfer
id: transfer
shell: pwsh
run: |
./transfer wet -s -p 16 --no-progress ${{ steps.build-packages.outputs.package-paths }} 2>&1>./wetransfer.log
echo "::set-output name=download-url::$(cat ./wetransfer.log | grep https | cut -f3 -d" ")"
- name: Show download link
shell: bash
run: |
echo "::notice title=Windows packages::${{ steps.transfer.outputs.download-url }}"
./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
@@ -618,11 +691,37 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Cleanup
uses: geekyeggo/delete-artifact@v1
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.3
uses: Sniddl/discord-commits@v1.5
with:
webhook: ${{ secrets.DISCORD_WEBHOOK }}
message: "Github Actions for **${{ github.repository }}**."

View File

@@ -1,9 +1,9 @@
function love.conf(t)
t.identity='Techmino'--Saving folder
t.identity='Techmino'-- Saving folder
t.version="11.1"
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
@@ -16,12 +16,12 @@ function love.conf(t)
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.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

247
main.lua
View File

@@ -15,26 +15,24 @@
]]--
--Var leak check
-- setmetatable(_G,{__newindex=function(self,k,v)print('>>'..k)print(debug.traceback():match("\n.-\n\t(.-): "))rawset(self,k,v)end})
-- 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})
--System Global Vars Declaration
-- System Global Vars Declaration
local fs=love.filesystem
VERSION=require"version"
TIME=love.timer.getTime
YIELD=coroutine.yield
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'
SAVEDIR=fs.getSaveDirectory()
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
-- Global Vars & Settings
SFXPACKS={'chiptune'}
VOCPACKS={'miya','mono','xiaoya','miku','rin'}
VOCPACKS={'miya','mono','xiaoya','miku'}
FIRSTLAUNCH=false
DAILYLAUNCH=false
--System setting
-- System setting
math.randomseed(os.time()*626)
love.setDeprecationOutput(false)
love.keyboard.setKeyRepeat(true)
@@ -48,7 +46,7 @@ end
local _LOADTIMELIST_={}
local _LOADTIME_=TIME()
--Load modules
-- Load modules
Z=require'Zframework'
FONT.load{
norm='parts/fonts/proportional.otf',
@@ -57,19 +55,18 @@ 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)
BGM.setChange(function(name)MES.new('music',text.nowPlaying..name,5)end)
VOC.setDiversion(.62)
WIDGET.setOnChange(function()
if SCN.cur~='custom_field'then
if SCN.cur~='custom_field' then
local colorList=THEME.getThemeColor()
if not colorList then return end
local rnd=math.random
for _,W in next,SCN.scenes[SCN.cur].widgetList do
if W.color then
W.color=colorList[rnd(#colorList)]
if colorList then
for _,W in next,SCN.scenes[SCN.cur].widgetList do
if W.color then
W.color=colorList[math.random(#colorList)]
end
end
end
end
@@ -77,26 +74,25 @@ end)
table.insert(_LOADTIMELIST_,("Load Zframework: %.3fs"):format(TIME()-_LOADTIME_))
--Create shortcuts
-- Create shortcuts
setFont=FONT.set
getFont=FONT.get
mStr=GC.mStr
mText=GC.simpX
mDraw=GC.draw
mDraw=GC.mDraw
Snd=SFX.playSample
string.repD=STRING.repD
string.sArg=STRING.sArg
string.split=STRING.split
--Delete all naked files (from too old version)
-- Delete all naked files (from ancient versions)
FILE.clear('')
--Create directories
for _,v in next,{'conf','record','replay','cache','lib'}do
-- Create directories
for _,v in next,{'conf','record','replay','cache','lib'} do
local info=fs.getInfo(v)
if not info then
fs.createDirectory(v)
elseif info.type~='directory'then
elseif info.type~='directory' then
fs.remove(v)
fs.createDirectory(v)
end
@@ -106,10 +102,10 @@ CHAR=require'parts.char'
require'parts.gameTables'
require'parts.gameFuncs'
--Load shader files from SOURCE ONLY
-- Load shader files from SOURCE ONLY
SHADER={}
for _,v in next,fs.getDirectoryItems('parts/shaders')do
if isSafeFile('parts/shaders/'..v)then
for _,v in next,fs.getDirectoryItems('parts/shaders') do
if FILE.isSafe('parts/shaders/'..v) then
local name=v:sub(1,-6)
SHADER[name]=love.graphics.newShader('parts/shaders/'..name..'.glsl')
end
@@ -138,8 +134,8 @@ end})
table.insert(_LOADTIMELIST_,("Load Parts: %.3fs"):format(TIME()-_LOADTIME_))
--Init Zframework
do--Z.setCursor
-- Init Zframework
do-- Z.setCursor
local normImg=GC.DO{16,16,
{'fCirc',8,8,4},
{'setCL',1,1,1,.7},
@@ -150,25 +146,23 @@ do--Z.setCursor
{'dCirc',8,8,7},
{'fCirc',8,8,3},
}
local min,int,abs=math.min,math.floor,math.abs
local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw
local ms=love.mouse
local _
Z.setCursor(function(time,x,y)
if not SETTING.sysCursor then
local R=int((time+1)/2)%7+1
local R=math.floor((time+1)/2)%7+1
_=BLOCK_COLORS[SETTING.skin[R]]
gc_setColor(_[1],_[2],_[3],min(abs(1-time%2),.3))
GC.setColor(_[1],_[2],_[3],math.min(math.abs(1-time%2),.3))
_=DSCP[R][0]
gc_draw(TEXTURE.miniBlock[R],x,y,time%3.14159265359*4,8,8,2*_[2]+1,2*(#BLOCKS[R][0]-_[1])-1)
gc_setColor(1,1,1)
gc_draw(ms.isDown(1)and holdImg or normImg,x,y,nil,nil,nil,8,8)
GC.draw(TEXTURE.miniBlock[R],x,y,time%math.pi*4,8,8,2*_[2]+1,2*(#BLOCKS[R][0]-_[1])-1)
GC.setColor(1,1,1)
GC.draw(love.mouse.isDown(1) and holdImg or normImg,x,y,nil,nil,nil,8,8)
end
end)
end
Z.setOnFnKeys({
function()MES.new('check',PROFILE.switch()and"profile start!"or"profile report copied!")end,
function()MES.new('info',("System:%s[%s]\nluaVer:%s\njitVer:%s\njitVerNum:%s"):format(SYSTEM,jit.arch,_VERSION,jit.version,jit.version_num))end,
function()MES.new('error',"挂了")end,
function() MES.new('check',PROFILE.switch() and "profile start!" or "profile report copied!") end,
function() MES.new('info',("System:%s[%s]\nluaVer:%s\njitVer:%s\njitVerNum:%s"):format(SYSTEM,jit.arch,_VERSION,jit.version,jit.version_num)) end,
function() MES.new('error',"挂了") end,
function()
if GAME.playing and not GAME.net then
for _=1,8 do
@@ -180,17 +174,23 @@ Z.setOnFnKeys({
end
end
end,
function()print(BG.locked)end,
function()for k,v in next,_G do print(k,v)end end,
function()if love['_openConsole']then love['_openConsole']()end end,
function() print(BG.locked) end,
function() for k,v in next,_G do print(k,v) end end,
function() if love['_openConsole'] then love['_openConsole']() end end,
})
Z.setOnGlobalKey('f11',function()
SETTING.fullscreen=not SETTING.fullscreen
applySettings()
saveSettings()
end)
Z.setVersionText(VERSION.string)
Z.setDebugInfo{
{"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()
@@ -218,7 +218,7 @@ do--Z.setOnFocus
TASK.new(task_autoSoundOn)
end
else
if SCN.cur=='game'and SETTING.autoPause then
if SCN.cur=='game' and SETTING.autoPause then
pauseGame()
end
if SETTING.autoMute and SCN.cur~='music' then
@@ -228,23 +228,32 @@ do--Z.setOnFocus
end
end)
end
Z.setOnQuit(destroyPlayers)
Z.setOnBeforeQuit(function()
NET.ws_close()
TASK.new(function()
TEST.yieldT(.26)
love.event.quit()
end)
end)
Z.setOnQuit(function()
destroyPlayers()
end)
--Load settings and statistics
-- 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)
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)
)
then
MES.new('error',"Be careful, an error accured when loading saving, some data was lost")
MES.new('error',"An error occured during loading, and some data was lost.")
end
--Initialize fields, sequence, missions, gameEnv for cutsom game
-- Initialize fields, sequence, missions, gameEnv for cutsom game
local fieldData=loadFile('conf/customBoards','-string -canSkip')
if fieldData then
fieldData=STRING.split(fieldData,"!")
@@ -269,7 +278,7 @@ end
TABLE.complete(require"parts.customEnv0",CUSTOMENV)
--Initialize image libs
-- Initialize image libs
IMG.init{
lock='media/image/mess/lock.png',
dialCircle='media/image/mess/dialCircle.png',
@@ -277,7 +286,6 @@ IMG.init{
lifeIcon='media/image/mess/life.png',
badgeIcon='media/image/mess/badge.png',
ctrlSpeedLimit='media/image/mess/ctrlSpeedLimit.png',
speedLimit='media/image/mess/speedLimit.png',--Not used, for future C2-mode
pay1='media/image/mess/pay1.png',
pay2='media/image/mess/pay2.png',
@@ -349,20 +357,20 @@ SKIN.load{
{name="wtf",path='media/image/skin/wtf_mrz.png'},
}
--Initialize sound libs
-- 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 isSafeFile('media/effect/chiptune/'..v,"Dangerous file : %SAVE%/media/effect/chiptune/"..v)then
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.load((function()
BGM.init((function()
local L={}
for _,v in next,fs.getDirectoryItems('media/music')do
if isSafeFile('media/music/'..v,"Dangerous file : %SAVE%/media/music/"..v)then
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
@@ -378,7 +386,7 @@ VOC.init{
'welcome',
}
--Initialize language lib
-- Initialize language lib
LANG.init('zh',
{
zh=require'parts.language.lang_zh',
@@ -391,17 +399,17 @@ LANG.init('zh',
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;
-- 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}
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
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)
@@ -415,32 +423,32 @@ LANG.init('zh',
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 isSafeFile('parts/backgrounds/'..v)and v:sub(-3)=='lua'then
-- 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 isSafeFile('parts/scenes/'..v)then
-- 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
-- Load mode files
for i=1,#MODES do
local m=MODES[i]--Mode template
if isSafeFile('parts/modes/'..m.name)then
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 isSafeFile('parts/modes/'..v)and not MODES[v:sub(1,-5)]then
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
@@ -452,14 +460,14 @@ end
table.insert(_LOADTIMELIST_,("Load Files: %.3fs"):format(TIME()-_LOADTIME_))
--Update data
-- Update data
do
local needSave
if not fs.getInfo('conf/data')then
if not fs.getInfo('conf/data') then
needSave=true
end
if type(STAT.version)~='number'then
if type(STAT.version)~='number' then
STAT.version=0
needSave=true
end
@@ -472,10 +480,10 @@ do
end
if STAT.version==1506 then
local temp1,temp2
if fs.getInfo('record/master_l.rec')then
if fs.getInfo('record/master_l.rec') then
temp1=fs.read('record/master_l.rec')
end
if fs.getInfo('record/master_u.rec')then
if fs.getInfo('record/master_u.rec') then
temp2=fs.read('record/master_u.rec')
end
if temp1 then
@@ -535,16 +543,16 @@ do
end
if STAT.version~=VERSION.code then
for k,v in next,MODE_UPDATE_MAP do
if RANKS[k]then
if RANKS[k] then
RANKS[v]=RANKS[k]
RANKS[k]=nil
end
k='record/'..k
if fs.getInfo(k..'.dat')then
if fs.getInfo(k..'.dat') then
fs.write('record/'..v..'.rec',fs.read(k..'.dat'))
fs.remove(k..'.dat')
end
if fs.getInfo(k..'.rec')then
if fs.getInfo(k..'.rec') then
fs.write('record/'..v..'.rec',fs.read(k..'.rec'))
fs.remove(k..'.rec')
end
@@ -552,18 +560,19 @@ do
STAT.version=VERSION.code
needSave=true
end
SETTING.appLock,SETTING.dataSaving,SETTING.swap=nil
SETTING.appLock,SETTING.dataSaving,SETTING.swap,SETTING.autoLogin=nil
if not SETTING.VKSkin then SETTING.VKSkin=1 end
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 not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then SETTING.frameMul=100 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 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
if type(SETTING.bg)~='string' then SETTING.bg='on' end
if SETTING.skin[18]==10 then SETTING.skin[18]=4 end
if SETTING.reTime>3 or SETTING.reTime<.5 then SETTING.reTime=2 end
if SETTING.locale=='zh_full' then SETTING.locale='zh' end
if SETTING.vocPack=='rin' then SETTING.vocPack='miku' end
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
@@ -571,26 +580,26 @@ do
if RANKS.master_u then RANKS.master_h,RANKS.master_u=RANKS.master_u needSave=true 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
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
if not RANKS[unlockName] then
RANKS[unlockName]=0
needSave=true
end
end
end
if not(M and M.x)then
if not (M and M.x) then
RANKS[name]=nil
needSave=true
end
end
end
if not MODES[STAT.lastPlay]then
if not MODES[STAT.lastPlay] then
STAT.lastPlay='sprint_10l'
needSave=true
end
@@ -603,7 +612,7 @@ do
end
end
--First start
-- First start
FIRSTLAUNCH=STAT.run==0
if FIRSTLAUNCH and MOBILE then
SETTING.VKSwitch=true
@@ -611,18 +620,18 @@ if FIRSTLAUNCH and MOBILE then
SETTING.cleanCanvas=true
end
--Apply system setting
-- Apply system setting
applySettings()
--Load replays
for _,fileName in next,fs.getDirectoryItems('replay')do
if fileName:sub(12,12):match("[a-zA-Z]")then
-- 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
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
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
@@ -658,16 +667,16 @@ for _,fileName in next,fs.getDirectoryItems('replay')do
local rep=DATA.parseReplay('replay/'..fileName)
table.insert(REPLAY,rep)
end
table.sort(REPLAY,function(a,b)return a.fileName>b.fileName end)
table.sort(REPLAY,function(a,b) return a.fileName>b.fileName end)
table.insert(_LOADTIMELIST_,("Initialize Data: %.3fs"):format(TIME()-_LOADTIME_))
for i=1,#_LOADTIMELIST_ do LOG(_LOADTIMELIST_[i])end
for i=1,#_LOADTIMELIST_ do LOG(_LOADTIMELIST_[i]) end
--Launch testing task if launch param received
if TABLE.find(arg,'--test')then
-- Launch testing task if launch param received
if TABLE.find(arg,'-- test') then
TASK.new(function()
while not LOADED do YIELD()end
while not LOADED do coroutine.yield() end
LOG("\27[92m\27[1mAutomatic Test Started\27[0m")
BGM.setVol(0)SFX.setVol(0)
@@ -675,7 +684,7 @@ if TABLE.find(arg,'--test')then
TEST.yieldUntilNextScene()
for k,mode in next,MODES do
if k~='netBattle'then
if k~='netBattle' then
LOG("Scanning mode: "..mode.name)
loadGame(mode.name,true)
TEST.yieldUntilNextScene()
@@ -689,12 +698,14 @@ if TABLE.find(arg,'--test')then
end)
TASK.new(function()
while true do
YIELD()
if Z.getErr(1)then break end
coroutine.yield()
if Z.getErr(1) then break end
end
LOG("\27[91m\27[1mAutomatic Test Failed :(\27[0m\nThe error message is:\n"..table.concat(Z.getErr(1).mes,"\n").."\27[91m\nAborting\27[0m")
TEST.yieldN(60)
love.event.quit(1)
end)
end
WS.switchHost('101.43.110.22','10026','/tech/socket/v1')
WS.switchHost('cafuuchino1.3322.org','10026','/techmino/ws/v1')
HTTP.setHost("cafuuchino1.3322.org:10026")
HTTP.setThreadCount(1)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

BIN
media/music/antispace.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.

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
media/vocal/miya/bye_5.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.

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/miya/lose_4.ogg Normal file

Binary file not shown.

BIN
media/vocal/miya/lose_5.ogg Normal file

Binary file not shown.

BIN
media/vocal/miya/lose_6.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.

BIN
media/vocal/miya/mini_4.ogg Normal file

Binary file not shown.

BIN
media/vocal/miya/mini_5.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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
media/vocal/miya/sad_1.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.

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