mirror of
https://github.com/Qsgs-Fans/FreeKill.git
synced 2024-11-16 11:42:45 +08:00
1fcd63ddeb
今天的积木就搭到这里吧 MOD Maker道阻且跻啊
80 lines
1.5 KiB
QML
80 lines
1.5 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
|
|
Item {
|
|
id: root
|
|
property var blockComponent
|
|
property var allBlocks: []
|
|
|
|
// ====== TMP ======
|
|
property int idx: 0
|
|
Row {
|
|
Button {
|
|
text: "quit"
|
|
onClicked: modStack.pop();
|
|
}
|
|
Button {
|
|
text: "New"
|
|
onClicked: newBlock();
|
|
}
|
|
Button {
|
|
text: "Del"
|
|
onClicked: rmFirstBlock_();
|
|
}
|
|
}
|
|
|
|
function newBlock() {
|
|
let obj = blockComponent.createObject(root, {
|
|
width: 50, height: 50,
|
|
x: Math.random() * root.width, y: Math.random() * root.height,
|
|
workspace: root, draggable: true,
|
|
idx: ++idx,
|
|
});
|
|
allBlocks.push(obj);
|
|
}
|
|
|
|
function rmFirstBlock_() {
|
|
let obj = allBlocks[0];
|
|
if (!obj) return;
|
|
obj.destroy();
|
|
allBlocks.splice(0,1);
|
|
}
|
|
// ====== TMP ======
|
|
|
|
function getPasteBlock(block) {
|
|
let ret;
|
|
let min = Infinity;
|
|
const x = block.x;
|
|
const y = block.y;
|
|
allBlocks.forEach(b => {
|
|
if (b === block) return;
|
|
let dx = Math.abs(b.x - x);
|
|
let dy = y - b.y - b.height;
|
|
let tot = dx + dy;
|
|
if (dx < 60 && dy < 60 && dy > 0 && tot < 100) {
|
|
if (min > tot) {
|
|
if (!allBlocks.find(bb => bb.x === b.x && bb.y === b.y + b.height)) {
|
|
ret = b;
|
|
min = tot;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
return ret;
|
|
}
|
|
|
|
function showPasteBlock(block) {
|
|
}
|
|
|
|
function arrangeBlock(block) {
|
|
let b = getPasteBlock(block);
|
|
if (b) {
|
|
block.pasteTo(b);
|
|
}
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
blockComponent = Qt.createComponent('Block.qml');
|
|
}
|
|
}
|