ChangeLog: v0.1.9

This commit is contained in:
Ho-spair 2023-05-20 16:11:16 +08:00 committed by notify
parent 1c6304f0f7
commit 375147afa1
11 changed files with 47 additions and 33 deletions

View File

@ -65,7 +65,7 @@ jobs:
run: | run: |
mkdir FreeKill-release mkdir FreeKill-release
cp build/FreeKill.exe FreeKill-release cp build/FreeKill.exe FreeKill-release
cp -r qml Fk FreeKill-release cp -r Fk FreeKill-release
cd FreeKill-release cd FreeKill-release
windeployqt FreeKill.exe windeployqt FreeKill.exe
cp -r ../.git . cp -r ../.git .

View File

@ -1,4 +1,22 @@
# ChangeLog # ChangeLog
___
## v0.1.9
1. 实现移动场上一张牌
2. 实现用作记录牌名并可查看的mark
3. 将askForChoice和interaction的文本解析方式改为prompt
4. 新增属性将牌移至牌堆指定索引位置
5. 修改时机“游戏开始时”至正确位置
6. 优化衍生牌逻辑
7. 新增“卡牌展示后”时机
8. 修改qml文件结构
9. 新增手气卡机制
10. 新增大厅表情功能
11. 新增选将时技能描述查看,以及查看卡牌描述的功能
12. 查看角色技能描述侧栏新增“送花”和“砸蛋”功能
___ ___
## v0.1.8 ## v0.1.8

View File

@ -2,7 +2,7 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project(FreeKill VERSION 0.1.8) project(FreeKill VERSION 0.1.9)
add_definitions(-DFK_VERSION=\"${CMAKE_PROJECT_VERSION}\") add_definitions(-DFK_VERSION=\"${CMAKE_PROJECT_VERSION}\")
find_package(Qt6 REQUIRED COMPONENTS find_package(Qt6 REQUIRED COMPONENTS

View File

@ -89,16 +89,18 @@ Item {
let special_value = ''; let special_value = '';
if (mark.startsWith('@$')) { if (mark.startsWith('@$')) {
special_value = data.length; special_value += data.length;
data = data.join(','); data = data.join(',');
} else { } else {
data = data instanceof Array ? data.map((markText) => Backend.translate(markText)).join(' ') : Backend.translate(data); data = data instanceof Array ? data.map((markText) => Backend.translate(markText)).join(' ') : Backend.translate(data);
} }
if (modelItem) if (modelItem) {
modelItem.special_value = special_value;
modelItem.mark_extra = data; modelItem.mark_extra = data;
else } else {
markList.append({ mark_name: mark, mark_extra: data, special_value }); markList.append({ mark_name: mark, mark_extra: data, special_value });
}
arrangeMarks(); arrangeMarks();
} }

View File

@ -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="108" android:versionCode="109"
android:versionName="0.1.8"> android:versionName="0.1.9">
<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" />

View File

@ -26,7 +26,6 @@ cp -r ../packages/maneuvering assets/res/packages
cp -r ../packages/test assets/res/packages cp -r ../packages/test assets/res/packages
rm assets/res/packages/test/test.lua rm assets/res/packages/test/test.lua
cp ../packages/init.sql assets/res/packages cp ../packages/init.sql assets/res/packages
cp -r ../qml assets/res
cp -r ../Fk assets/res cp -r ../Fk assets/res
mkdir assets/res/server mkdir assets/res/server
cp ../server/init.sql assets/res/server cp ../server/init.sql assets/res/server

View File

@ -205,14 +205,18 @@ FreeKill使用的是libgit2的C API与此同时使用Git完成拓展包的下
["Back To Lobby"] = "返回大厅", ["Back To Lobby"] = "返回大厅",
["Bulletin Info"] = "<h2>更新说明</h2>\ ["Bulletin Info"] = "<h2>更新说明</h2>\
1. 退/<br>\ 1. <br>\
2. <br>\ 2. mark<br>\
3. <br>\ 3. askForChoice和interaction的文本解析方式改为prompt<br>\
4. <br>\ 4. <br>\
5. mark_enum.lua用于注册通用标记名<br>\ 5. <br>\
6. <br>\ 6. <br>\
7. UI解析值为数组的标记<br>\ 7. <br>\
8. ", 8. qml文件结构<br>\
9. <br>\
10. <br>\
11. <br>\
12. ",
} }
-- Game concepts -- Game concepts

View File

@ -1,2 +0,0 @@
test.lua
test-error.txt

View File

@ -32,7 +32,7 @@ QString PackMan::getPackSummary() {
} }
void PackMan::loadSummary(const QString &jsonData, bool useThread) { void PackMan::loadSummary(const QString &jsonData, bool useThread) {
static const auto f = [=]() { auto f = [=]() {
// First, disable all packages // First, disable all packages
foreach (auto e, SelectFromDatabase(db, "SELECT name FROM packages;")) { foreach (auto e, SelectFromDatabase(db, "SELECT name FROM packages;")) {
disablePack(e.toObject()["name"].toString()); disablePack(e.toObject()["name"].toString());
@ -50,6 +50,7 @@ void PackMan::loadSummary(const QString &jsonData, bool useThread) {
i++; i++;
auto obj = e.toObject(); auto obj = e.toObject();
auto name = obj["name"].toString(); auto name = obj["name"].toString();
auto url = obj["url"].toString();
#ifndef FK_SERVER_ONLY #ifndef FK_SERVER_ONLY
Backend->showToast(tr("[%1/%2] upgrading package '%3'").arg(i).arg(arr.count()).arg(name)); Backend->showToast(tr("[%1/%2] upgrading package '%3'").arg(i).arg(arr.count()).arg(name));
#endif #endif
@ -57,7 +58,7 @@ void PackMan::loadSummary(const QString &jsonData, bool useThread) {
db, db,
QString("SELECT name FROM packages WHERE name='%1';").arg(name)) QString("SELECT name FROM packages WHERE name='%1';").arg(name))
.isEmpty()) { .isEmpty()) {
downloadNewPack(obj["url"].toString()); downloadNewPack(url);
} }
ExecSQL(db, QString("UPDATE packages SET hash='%1' WHERE name='%2'") ExecSQL(db, QString("UPDATE packages SET hash='%1' WHERE name='%2'")
.arg(obj["hash"].toString()) .arg(obj["hash"].toString())
@ -81,7 +82,7 @@ void PackMan::loadSummary(const QString &jsonData, bool useThread) {
} }
void PackMan::downloadNewPack(const QString &url, bool useThread) { void PackMan::downloadNewPack(const QString &url, bool useThread) {
static const auto threadFunc = [=]() { auto threadFunc = [=]() {
int error = clone(url); int error = clone(url);
if (error < 0) if (error < 0)
return; return;

View File

@ -167,15 +167,7 @@ RSA *InitServerRSA() {
#endif #endif
static void writeFileMD5(QFile &dest, const QString &fname) { static void writeFileMD5(QFile &dest, const QString &fname) {
QString name = fname; QFile f(fname);
// If the is a corresponding fkp file, check fkp's MD5 instead.
if (name.endsWith(".lua")) {
name.chop(4);
name = name + ".fkp";
if (!QFile::exists(name))
name = fname;
}
QFile f(name);
if (!f.open(QIODevice::ReadOnly)) { if (!f.open(QIODevice::ReadOnly)) {
return; return;
} }
@ -183,7 +175,7 @@ static void writeFileMD5(QFile &dest, const QString &fname) {
auto data = f.readAll(); auto data = f.readAll();
data.replace(QByteArray("\r\n"), QByteArray("\n")); data.replace(QByteArray("\r\n"), QByteArray("\n"));
auto hash = QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex(); auto hash = QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex();
dest.write(name.toUtf8() + '=' + hash + ';'); dest.write(fname.toUtf8() + '=' + hash + ';');
} }
static void writeDirMD5(QFile &dest, const QString &dir, static void writeDirMD5(QFile &dest, const QString &dir,
@ -222,7 +214,7 @@ QString calcFileMD5() {
flist.close(); flist.close();
flist.open(QIODevice::ReadOnly); flist.open(QIODevice::ReadOnly);
auto ret = QCryptographicHash::hash(flist.readAll(), QCryptographicHash::Md5); auto ret = QCryptographicHash::hash(flist.readAll(), QCryptographicHash::Md5);
flist.remove(); // delete flist.txt // flist.remove(); // delete flist.txt
flist.close(); flist.close();
return ret.toHex(); return ret.toHex();
} }

View File

@ -69,7 +69,7 @@ static void installFkAssets(const QString &src, const QString &dest) {
#ifdef Q_OS_ANDROID #ifdef Q_OS_ANDROID
copyPath(src, dest); copyPath(src, dest);
#elif defined(Q_OS_LINUX) #elif defined(Q_OS_LINUX)
system(QString("cp -r %1 %2").arg(src).arg(dest).toUtf8()); system(QString("cp -r %1 %2/..").arg(src).arg(dest).toUtf8());
#endif #endif
} }