parent
f0fcc6183b
commit
0a57727b39
21
CHANGELOG.md
21
CHANGELOG.md
|
@ -2,6 +2,27 @@
|
||||||
|
|
||||||
___
|
___
|
||||||
|
|
||||||
|
## v0.3.2
|
||||||
|
|
||||||
|
本次更新的主要看点是废除装备栏和判定区。
|
||||||
|
|
||||||
|
1. 游戏结束时离线玩家增加逃率
|
||||||
|
2. 退出房间时取消准备状态
|
||||||
|
3. 副技能的 `main_skill`
|
||||||
|
4. 预亮相关优化
|
||||||
|
5. 自定义身份,图从拓展包随便找一张
|
||||||
|
6. 无懈可击使用时带1200毫秒延迟
|
||||||
|
7. 未开始的房间显示开启的所有牌堆,衍生牌灰色字体化
|
||||||
|
8. 可以随意打开fk.rep文件并播放录像
|
||||||
|
9. 服务器Shell新增重置密码命令
|
||||||
|
10. 虚空印卡
|
||||||
|
11. 15秒踢出房主
|
||||||
|
12. 各种修bug
|
||||||
|
13. 图片标记
|
||||||
|
14. 废除区域
|
||||||
|
|
||||||
|
___
|
||||||
|
|
||||||
## v0.3.1
|
## v0.3.1
|
||||||
|
|
||||||
修复了0.3.0的bug,现在应该是稳定版。
|
修复了0.3.0的bug,现在应该是稳定版。
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(FreeKill VERSION 0.3.1)
|
project(FreeKill VERSION 0.3.2)
|
||||||
add_definitions(-DFK_VERSION=\"${CMAKE_PROJECT_VERSION}\")
|
add_definitions(-DFK_VERSION=\"${CMAKE_PROJECT_VERSION}\")
|
||||||
|
|
||||||
find_package(Qt6 REQUIRED COMPONENTS
|
find_package(Qt6 REQUIRED COMPONENTS
|
||||||
|
|
|
@ -62,7 +62,13 @@ QtObject {
|
||||||
lobbyBg = conf.lobbyBg ?? AppPath + "/image/background";
|
lobbyBg = conf.lobbyBg ?? AppPath + "/image/background";
|
||||||
roomBg = conf.roomBg ?? AppPath + "/image/gamebg";
|
roomBg = conf.roomBg ?? AppPath + "/image/gamebg";
|
||||||
bgmFile = conf.bgmFile ?? AppPath + "/audio/system/bgm.mp3";
|
bgmFile = conf.bgmFile ?? AppPath + "/audio/system/bgm.mp3";
|
||||||
language = conf.language ?? "zh_CN";
|
language = conf.language ?? (() => {
|
||||||
|
let ret = SysLocale;
|
||||||
|
if (['zh_CN', 'en_US'].includes(ret)) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return 'zh_CN';
|
||||||
|
})();
|
||||||
disabledPack = conf.disabledPack ?? [ "test_p_0" ];
|
disabledPack = conf.disabledPack ?? [ "test_p_0" ];
|
||||||
preferedMode = conf.preferedMode ?? "aaa_role_mode";
|
preferedMode = conf.preferedMode ?? "aaa_role_mode";
|
||||||
preferedPlayerNum = conf.preferedPlayerNum ?? 2;
|
preferedPlayerNum = conf.preferedPlayerNum ?? 2;
|
||||||
|
|
|
@ -1194,10 +1194,11 @@ callbacks["SetPlayerMark"] = (jsonData) => {
|
||||||
const player = getPhoto(data[0]);
|
const player = getPhoto(data[0]);
|
||||||
const mark = data[1];
|
const mark = data[1];
|
||||||
const value = data[2] instanceof Array ? data[2] : data[2].toString();
|
const value = data[2] instanceof Array ? data[2] : data[2].toString();
|
||||||
|
let area = mark.startsWith("@!") ? player.picMarkArea : player.markArea;
|
||||||
if (data[2] === 0) {
|
if (data[2] === 0) {
|
||||||
player.markArea.removeMark(mark);
|
area.removeMark(mark);
|
||||||
} else {
|
} else {
|
||||||
player.markArea.setMark(mark, mark.startsWith("@@") ? "" : value);
|
area.setMark(mark, mark.startsWith("@@") ? "" : value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import Fk
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
id: root
|
||||||
|
spacing: 4
|
||||||
|
|
||||||
|
ListModel {
|
||||||
|
id: markList
|
||||||
|
}
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: markRepeater
|
||||||
|
model: markList
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: 28
|
||||||
|
height: 28
|
||||||
|
Image {
|
||||||
|
anchors.fill: parent
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
source: SkinBank.getMarkPic(mark_name)
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
text: mark_extra
|
||||||
|
visible: mark_extra != 1
|
||||||
|
font.family: fontLibian.name
|
||||||
|
font.pixelSize: 20
|
||||||
|
font.bold: true
|
||||||
|
color: "white"
|
||||||
|
style: Text.Outline
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setMark(mark, data) {
|
||||||
|
let i, modelItem;
|
||||||
|
for (i = 0; i < markList.count; i++) {
|
||||||
|
if (markList.get(i).mark_name === mark) {
|
||||||
|
modelItem = markList.get(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modelItem) {
|
||||||
|
modelItem.mark_extra = data;
|
||||||
|
} else {
|
||||||
|
markList.append({ mark_name: mark, mark_extra: data });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeMark(mark) {
|
||||||
|
let i, modelItem;
|
||||||
|
for (i = 0; i < markList.count; i++) {
|
||||||
|
if (markList.get(i).mark_name === mark) {
|
||||||
|
markList.remove(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ LimitSkillArea 1.0 LimitSkillArea.qml
|
||||||
LimitSkillItem 1.0 LimitSkillItem.qml
|
LimitSkillItem 1.0 LimitSkillItem.qml
|
||||||
Magatama 1.0 Magatama.qml
|
Magatama 1.0 Magatama.qml
|
||||||
MarkArea 1.0 MarkArea.qml
|
MarkArea 1.0 MarkArea.qml
|
||||||
|
PicMarkArea 1.0 PicMarkArea.qml
|
||||||
RoleComboBox 1.0 RoleComboBox.qml
|
RoleComboBox 1.0 RoleComboBox.qml
|
||||||
Shield 1.0 Shield.qml
|
Shield 1.0 Shield.qml
|
||||||
SpecialMarkArea 1.0 SpecialMarkArea.qml
|
SpecialMarkArea 1.0 SpecialMarkArea.qml
|
||||||
|
|
|
@ -42,6 +42,7 @@ Item {
|
||||||
property alias handcardArea: handcardAreaItem
|
property alias handcardArea: handcardAreaItem
|
||||||
property alias equipArea: equipAreaItem
|
property alias equipArea: equipAreaItem
|
||||||
property alias markArea: markAreaItem
|
property alias markArea: markAreaItem
|
||||||
|
property alias picMarkArea: picMarkAreaItem
|
||||||
property alias delayedTrickArea: delayedTrickAreaItem
|
property alias delayedTrickArea: delayedTrickAreaItem
|
||||||
property alias specialArea: specialAreaItem
|
property alias specialArea: specialAreaItem
|
||||||
|
|
||||||
|
@ -588,6 +589,14 @@ Item {
|
||||||
anchors.bottomMargin: 8
|
anchors.bottomMargin: 8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PicMarkArea {
|
||||||
|
id: picMarkAreaItem
|
||||||
|
|
||||||
|
anchors.top: parent.bottom
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.topMargin: -4
|
||||||
|
}
|
||||||
|
|
||||||
InvisibleCardArea {
|
InvisibleCardArea {
|
||||||
id: defaultArea
|
id: defaultArea
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
|
|
@ -138,3 +138,12 @@ function getRolePic(role) {
|
||||||
}
|
}
|
||||||
return ROLE_DIR + "unknown.png";
|
return ROLE_DIR + "unknown.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getMarkPic(mark) {
|
||||||
|
for (let dir of Backend.ls(AppPath + "/packages/")) {
|
||||||
|
if (dir.endsWith(".disabled")) continue;
|
||||||
|
let path = AppPath + "/packages/" + dir + "/image/mark/" + mark + ".png";
|
||||||
|
if (Backend.exists(path)) return path;
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="org.notify.FreeKill"
|
package="org.notify.FreeKill"
|
||||||
android:installLocation="preferExternal"
|
android:installLocation="preferExternal"
|
||||||
android:versionCode="301"
|
android:versionCode="302"
|
||||||
android:versionName="0.3.1">
|
android:versionName="0.3.2">
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
|
|
@ -282,9 +282,9 @@ FreeKill使用的是libgit2的C API,与此同时使用Git完成拓展包的下
|
||||||
["Resume"] = "继续",
|
["Resume"] = "继续",
|
||||||
|
|
||||||
["Bulletin Info"] = [==[
|
["Bulletin Info"] = [==[
|
||||||
## v0.3.0
|
## v0.3.3
|
||||||
|
|
||||||
0.3.0版本,新增录像和禁将方案切换功能,同时修复不少bug。
|
0.3.3版本,新增弹劾房主和房间开启牌堆显示,修复不少bug。
|
||||||
|
|
||||||
加强谋徐盛。
|
加强谋徐盛。
|
||||||
]==],
|
]==],
|
||||||
|
|
|
@ -191,6 +191,9 @@ int main(int argc, char *argv[]) {
|
||||||
QCoreApplication::setApplicationName("FreeKill");
|
QCoreApplication::setApplicationName("FreeKill");
|
||||||
QCoreApplication::setApplicationVersion(FK_VERSION);
|
QCoreApplication::setApplicationVersion(FK_VERSION);
|
||||||
|
|
||||||
|
QLocale l = QLocale::system();
|
||||||
|
auto localeName = l.name();
|
||||||
|
|
||||||
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
|
#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
|
||||||
prepareForLinux();
|
prepareForLinux();
|
||||||
#endif
|
#endif
|
||||||
|
@ -312,6 +315,7 @@ int main(int argc, char *argv[]) {
|
||||||
engine->rootContext()->setContextProperty("Backend", &backend);
|
engine->rootContext()->setContextProperty("Backend", &backend);
|
||||||
engine->rootContext()->setContextProperty("ModBackend", nullptr);
|
engine->rootContext()->setContextProperty("ModBackend", nullptr);
|
||||||
engine->rootContext()->setContextProperty("Pacman", Pacman);
|
engine->rootContext()->setContextProperty("Pacman", Pacman);
|
||||||
|
engine->rootContext()->setContextProperty("SysLocale", localeName);
|
||||||
|
|
||||||
#ifdef QT_DEBUG
|
#ifdef QT_DEBUG
|
||||||
bool debugging = true;
|
bool debugging = true;
|
||||||
|
|
Loading…
Reference in New Issue