mirror of
https://github.com/Qsgs-Fans/FreeKill.git
synced 2024-11-16 03:32:34 +08:00
be03b04ef0
- 修复了虚拟牌点数相加的bug - 修复cleaner出错直接爆炸 - QML的代码将宽度控制到80以内
147 lines
2.9 KiB
QML
147 lines
2.9 KiB
QML
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import QtQuick
|
|
import Fk
|
|
import Fk.RoomElement
|
|
|
|
/* Layout of EquipArea:
|
|
* | Treasure |
|
|
| Weapon |
|
|
| Armor |
|
|
| +1 | -1 |
|
|
+---------------+
|
|
*/
|
|
|
|
Item {
|
|
id: root
|
|
|
|
height: 70
|
|
width: 138
|
|
property int itemHeight: {
|
|
if (treasureItem.name === "" && !treasureItem.sealed)
|
|
return height / 3;
|
|
return height / 4;
|
|
}
|
|
property var items: [treasureItem, weaponItem, armorItem,
|
|
defensiveHorseItem, offensiveHorseItem]
|
|
property var subtypes: ["treasure", "weapon", "armor",
|
|
"defensive_horse", "offensive_horse"]
|
|
property int length: area.length
|
|
|
|
// FIXME: Qt 6.6
|
|
Column {
|
|
anchors.fill: parent
|
|
InvisibleCardArea {
|
|
id: area
|
|
anchors.centerIn: parent
|
|
checkExisting: true
|
|
}
|
|
|
|
EquipItem {
|
|
id: treasureItem
|
|
subtype: "treasure"
|
|
width: parent.width
|
|
height: (name === "" && !sealed) ? 0 : itemHeight
|
|
opacity: 0
|
|
sealed: root.parent.sealedSlots.includes('TreasureSlot')
|
|
}
|
|
|
|
EquipItem {
|
|
id: weaponItem
|
|
subtype: "weapon"
|
|
width: parent.width
|
|
height: itemHeight
|
|
opacity: 0
|
|
sealed: root.parent.sealedSlots.includes('WeaponSlot')
|
|
}
|
|
|
|
EquipItem {
|
|
id: armorItem
|
|
subtype: "armor"
|
|
width: parent.width
|
|
height: itemHeight
|
|
opacity: 0
|
|
sealed: root.parent.sealedSlots.includes('ArmorSlot')
|
|
}
|
|
|
|
Row {
|
|
width: root.width
|
|
height: itemHeight
|
|
|
|
Item {
|
|
width: Math.ceil(parent.width / 2)
|
|
height: itemHeight
|
|
|
|
EquipItem {
|
|
id: defensiveHorseItem
|
|
width: parent.width
|
|
height: itemHeight
|
|
icon: "horse"
|
|
opacity: 0
|
|
sealed: root.parent.sealedSlots.includes('DefensiveRideSlot')
|
|
}
|
|
}
|
|
|
|
Item {
|
|
width: Math.floor(parent.width / 2)
|
|
height: itemHeight
|
|
|
|
EquipItem {
|
|
id: offensiveHorseItem
|
|
width: parent.width
|
|
height: itemHeight
|
|
icon: "horse"
|
|
opacity: 0
|
|
sealed: root.parent.sealedSlots.includes('OffensiveRideSlot')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function add(inputs)
|
|
{
|
|
area.add(inputs);
|
|
|
|
let card, item;
|
|
if (inputs instanceof Array) {
|
|
for (let i = 0; i < inputs.length; i++) {
|
|
card = inputs[i];
|
|
item = items[subtypes.indexOf(card.subtype)];
|
|
item.setCard(card);
|
|
item.show();
|
|
}
|
|
} else {
|
|
card = inputs;
|
|
item = items[subtypes.indexOf(card.subtype)];
|
|
item.setCard(card);
|
|
item.show();
|
|
}
|
|
}
|
|
|
|
function remove(outputs)
|
|
{
|
|
const result = area.remove(outputs);
|
|
for (let i = 0; i < result.length; i++) {
|
|
const card = result[i];
|
|
for (let j = 0; j < items.length; j++) {
|
|
const item = items[j];
|
|
if (item.cid === card.cid) {
|
|
item.reset();
|
|
item.hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
function updateCardPosition(animated)
|
|
{
|
|
area.updateCardPosition(animated);
|
|
}
|
|
|
|
function getAllCards() {
|
|
return area.cards;
|
|
}
|
|
}
|