mirror of
https://github.com/AkiChase/scrcpy-mask
synced 2025-02-22 14:42:15 +08:00
commit
a4a665d639
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "scrcpy-mask",
|
||||
"private": true,
|
||||
"version": "0.1.4",
|
||||
"version": "0.1.5",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
@ -12,7 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": ">=2.0.0-beta.8",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.1.0-beta.0",
|
||||
"@tauri-apps/plugin-http": "2.0.0-beta.3",
|
||||
"@tauri-apps/plugin-process": "2.0.0-beta.2",
|
||||
"@tauri-apps/plugin-shell": "2.0.0-beta.3",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "scrcpy-mask"
|
||||
version = "0.1.4"
|
||||
version = "0.1.5"
|
||||
description = "A Tauri App"
|
||||
authors = ["AkiChase"]
|
||||
edition = "2021"
|
||||
@ -17,7 +17,6 @@ serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
anyhow = "1.0"
|
||||
tokio = { version = "1.36.0", features = ["rt-multi-thread", "net", "macros", "io-util", "time", "sync"] }
|
||||
tauri-plugin-clipboard-manager = "2.1.0-beta.1"
|
||||
tauri-plugin-process = "2.0.0-beta.3"
|
||||
tauri-plugin-shell = "2.0.0-beta.4"
|
||||
tauri-plugin-http = "2.0.0-beta.7"
|
||||
|
@ -22,8 +22,6 @@
|
||||
"store:allow-clear",
|
||||
"store:allow-entries",
|
||||
"store:allow-delete",
|
||||
"clipboard-manager:default",
|
||||
"clipboard-manager:allow-write-text",
|
||||
"process:default",
|
||||
"process:allow-restart",
|
||||
"webview:default",
|
||||
|
@ -1,3 +1,5 @@
|
||||
[
|
||||
{"list":[{"key":{"down":"KeyS","left":"KeyA","right":"KeyD","up":"KeyW"},"note":"方向轮盘","offset":175,"pointerId":1,"posX":180,"posY":560,"type":"SteeringWheel"},{"key":"KeyQ","note":"技能1","pointerId":2,"posX":950,"posY":610,"range":50,"type":"DirectionalSkill"},{"key":"AltLeft","note":"技能2","pointerId":2,"posX":1025,"posY":500,"range":50,"type":"DirectionalSkill"},{"key":"KeyE","note":"技能3","pointerId":2,"posX":1160,"posY":420,"range":50,"type":"DirectionalSkill"},{"directional":true,"key":"M4","note":"技能3","pointerId":2,"posX":1160,"posY":420,"rangeOrTime":0,"type":"TriggerWhenPressedSkill"},{"key":"M1","note":"无方向装备技能","pointerId":2,"posX":1150,"posY":280,"type":"DirectionlessSkill"},{"key":"Space","note":"取消技能","pointerId":2,"posX":1160,"posY":140,"type":"CancelSkill"},{"key":"KeyB","note":"回城","pointerId":3,"posX":650,"posY":650,"time":80,"type":"Tap"},{"key":"KeyC","note":"回复","pointerId":3,"posX":740,"posY":650,"time":80,"type":"Tap"},{"key":"KeyF","note":"召唤师技能","pointerId":2,"posX":840,"posY":650,"range":50,"type":"DirectionalSkill"},{"directional":false,"key":"ControlLeft","note":"无方向召唤师技能","pointerId":3,"posX":840,"posY":650,"rangeOrTime":80,"type":"TriggerWhenPressedSkill"},{"key":"M2","note":"攻击","pointerId":3,"posX":1165,"posY":620,"time":80,"type":"Tap"},{"key":"Digit1","note":"技能1升级","pointerId":3,"posX":880,"posY":560,"time":80,"type":"Tap"},{"key":"Digit2","note":"技能2升级","pointerId":3,"posX":960,"posY":430,"time":80,"type":"Tap"},{"key":"Digit3","note":"技能3升级","pointerId":3,"posX":1090,"posY":350,"time":80,"type":"Tap"},{"key":"Digit5","note":"快速购买1","pointerId":3,"posX":130,"posY":300,"time":80,"type":"Tap"},{"key":"Digit6","note":"快速购买2","pointerId":3,"posX":130,"posY":370,"time":80,"type":"Tap"},{"directional":false,"key":"WheelDown","note":"装备技能","pointerId":3,"posX":1150,"posY":280,"rangeOrTime":80,"type":"TriggerWhenPressedSkill"},{"key":"M3","note":"观察","pointerId":4,"posX":1000,"posY":200,"scale":0.5,"type":"Observation"},{"key":"Tab","macro":{"down":[{"args":["default",5,1185,40,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1220,100,80],"type":"touch"}]},"note":"战绩面板","pointerId":5,"posX":1185,"posY":40,"type":"Macro"},{"key":"ShiftLeft","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1200,60,80],"type":"touch"}]},"note":"商店","pointerId":5,"posX":40,"posY":300,"type":"Macro"},{"key":"KeyZ","macro":{"down":[{"args":["default",5,250,230,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,640,150,80],"type":"touch"}]},"note":"地图","pointerId":5,"posX":250,"posY":230,"type":"Macro"}],"relativeSize":{"h":720,"w":1280},"title":"王者荣耀-暃"}
|
||||
{"title":"AVD-王者荣耀-标准三技能-导入默认","list":[{"key":{"down":"KeyS","left":"KeyA","right":"KeyD","up":"KeyW"},"note":"方向轮盘","offset":175,"pointerId":1,"posX":183,"posY":566,"type":"SteeringWheel"},{"key":"KeyQ","note":"技能1","pointerId":2,"posX":951,"posY":636,"range":50,"type":"DirectionalSkill"},{"key":"KeyE","note":"技能2","pointerId":2,"posX":1025,"posY":500,"range":50,"type":"DirectionalSkill"},{"key":"AltLeft","note":"技能3","pointerId":2,"posX":1160,"posY":420,"range":50,"type":"DirectionalSkill"},{"key":"Space","note":"取消技能","pointerId":2,"posX":1160,"posY":140,"type":"CancelSkill"},{"key":"KeyB","note":"回城","pointerId":3,"posX":650,"posY":650,"time":80,"type":"Tap"},{"key":"KeyC","note":"回复","pointerId":3,"posX":740,"posY":650,"time":80,"type":"Tap"},{"key":"KeyF","note":"召唤师技能","pointerId":2,"posX":838,"posY":647,"range":50,"type":"DirectionalSkill"},{"key":"M2","note":"攻击","pointerId":3,"posX":1174,"posY":618,"time":80,"type":"Tap"},{"key":"Digit1","note":"技能1升级","pointerId":3,"posX":880,"posY":560,"time":80,"type":"Tap"},{"key":"Digit2","note":"技能2升级","pointerId":3,"posX":960,"posY":430,"time":80,"type":"Tap"},{"key":"Digit3","note":"技能3升级","pointerId":3,"posX":1090,"posY":350,"time":80,"type":"Tap"},{"key":"Digit5","note":"快速购买1","pointerId":3,"posX":133,"posY":289,"time":80,"type":"Tap"},{"key":"Digit6","note":"快速购买2","pointerId":3,"posX":130,"posY":370,"time":80,"type":"Tap"},{"key":"M3","note":"观察","pointerId":4,"posX":1000,"posY":200,"scale":1,"type":"Observation"},{"key":"Tab","macro":{"down":[{"args":["default",5,1185,40,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1220,100,80],"type":"touch"}]},"note":"战绩面板","pointerId":5,"posX":1185,"posY":40,"type":"Macro"},{"key":"ShiftLeft","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1200,60,80],"type":"touch"}]},"note":"商店","pointerId":5,"posX":44,"posY":302,"type":"Macro"},{"key":"KeyZ","macro":{"down":[{"args":["default",5,250,230,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,640,150,80],"type":"touch"}]},"note":"地图","pointerId":5,"posX":250,"posY":230,"type":"Macro"},{"key":"WheelDown","note":"推塔键","pointerId":2,"posX":1228,"posY":513,"time":80,"type":"Tap"},{"key":"Backquote","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"},{"args":["200"],"type":"sleep"},{"args":["default",5,510,630,80],"type":"touch"},{"args":["default",5,1165,575,80],"type":"touch"},{"args":["default",5,1200,65,80],"type":"touch"},{"args":["300"],"type":"sleep"},{"args":["default",5,125,300,80],"type":"touch"}],"loop":null,"up":null},"note":"换装2","pointerId":5,"posX":236,"posY":66,"type":"Macro"},{"type":"Tap","key":"WheelUp","note":"补兵键","posX":1059,"posY":659,"pointerId":2,"time":80}],"relativeSize":{"h":720,"w":1280}},
|
||||
{"title":"AVD-王者荣耀-标准四技能-导入默认","relativeSize":{"h":720,"w":1280},"list":[{"key":{"down":"KeyS","left":"KeyA","right":"KeyD","up":"KeyW"},"note":"方向轮盘","offset":175,"pointerId":1,"posX":183,"posY":566,"type":"SteeringWheel"},{"key":"KeyQ","note":"技能1","pointerId":2,"posX":952,"posY":636,"range":50,"type":"DirectionalSkill"},{"key":"KeyE","note":"技能2","pointerId":2,"posX":979,"posY":526,"range":50,"type":"DirectionalSkill"},{"key":"AltLeft","note":"技能3","pointerId":2,"posX":1074,"posY":438,"range":50,"type":"DirectionalSkill"},{"key":"Space","note":"取消技能","pointerId":2,"posX":1160,"posY":140,"type":"CancelSkill"},{"key":"KeyB","note":"回城","pointerId":3,"posX":644,"posY":650,"time":80,"type":"Tap"},{"key":"KeyC","note":"回复","pointerId":3,"posX":742,"posY":650,"time":80,"type":"Tap"},{"key":"KeyF","note":"召唤师技能","pointerId":2,"posX":838,"posY":647,"range":50,"type":"DirectionalSkill"},{"key":"M2","note":"攻击","pointerId":3,"posX":1179,"posY":621,"time":80,"type":"Tap"},{"key":"Digit1","note":"技能1升级","pointerId":3,"posX":895,"posY":564,"time":80,"type":"Tap"},{"key":"Digit2","note":"技能2升级","pointerId":3,"posX":922,"posY":456,"time":80,"type":"Tap"},{"key":"Digit3","note":"技能3升级","pointerId":3,"posX":1015,"posY":376,"time":80,"type":"Tap"},{"key":"Digit5","note":"快速购买1","pointerId":3,"posX":133,"posY":289,"time":80,"type":"Tap"},{"key":"Digit6","note":"快速购买2","pointerId":3,"posX":130,"posY":370,"time":80,"type":"Tap"},{"key":"M3","note":"观察","pointerId":4,"posX":1000,"posY":200,"scale":1,"type":"Observation"},{"key":"Tab","macro":{"down":[{"args":["default",5,1185,40,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1220,100,80],"type":"touch"}]},"note":"战绩面板","pointerId":5,"posX":1185,"posY":40,"type":"Macro"},{"key":"ShiftLeft","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1200,60,80],"type":"touch"}]},"note":"商店","pointerId":5,"posX":44,"posY":302,"type":"Macro"},{"key":"KeyZ","macro":{"down":[{"args":["default",5,250,230,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,640,150,80],"type":"touch"}]},"note":"地图","pointerId":5,"posX":250,"posY":230,"type":"Macro"},{"key":"WheelDown","note":"推塔键","pointerId":2,"posX":1225,"posY":514,"time":80,"type":"Tap"},{"key":"Backquote","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"},{"args":["200"],"type":"sleep"},{"args":["default",5,510,630,80],"type":"touch"},{"args":["default",5,1165,575,80],"type":"touch"},{"args":["default",5,1200,65,80],"type":"touch"},{"args":["300"],"type":"sleep"},{"args":["default",5,125,300,80],"type":"touch"}],"loop":null,"up":null},"note":"换装2","pointerId":5,"posX":236,"posY":66,"type":"Macro"},{"type":"Tap","key":"WheelUp","note":"补兵键","posX":1058,"posY":655,"pointerId":2,"time":80},{"type":"DirectionalSkill","key":"KeyR","note":"","posX":1189,"posY":422,"pointerId":2,"range":50}]},
|
||||
{"title":"AVD-王者荣耀-暃-导入默认","list":[{"key":{"down":"KeyS","left":"KeyA","right":"KeyD","up":"KeyW"},"note":"方向轮盘","offset":175,"pointerId":1,"posX":183,"posY":566,"type":"SteeringWheel"},{"key":"KeyQ","note":"技能1","pointerId":2,"posX":951,"posY":636,"range":50,"type":"DirectionalSkill"},{"key":"AltLeft","note":"技能2","pointerId":2,"posX":1025,"posY":500,"range":100,"type":"DirectionalSkill"},{"key":"KeyE","note":"技能3","pointerId":2,"posX":1160,"posY":420,"range":0,"type":"DirectionalSkill"},{"directional":false,"key":"WheelUp","note":"无方向装备技能","pointerId":2,"posX":1154,"posY":279,"rangeOrTime":80,"type":"TriggerWhenPressedSkill"},{"key":"Space","note":"取消技能","pointerId":2,"posX":1160,"posY":140,"type":"CancelSkill"},{"key":"KeyB","note":"回城","pointerId":3,"posX":650,"posY":650,"time":80,"type":"Tap"},{"key":"KeyC","note":"回复","pointerId":3,"posX":740,"posY":650,"time":80,"type":"Tap"},{"key":"KeyF","note":"召唤师技能","pointerId":2,"posX":840,"posY":650,"range":50,"type":"DirectionalSkill"},{"directional":false,"key":"ControlLeft","note":"无方向召唤师技能","pointerId":3,"posX":840,"posY":650,"rangeOrTime":80,"type":"TriggerWhenPressedSkill"},{"key":"M2","note":"攻击","pointerId":3,"posX":1165,"posY":616,"time":80,"type":"Tap"},{"key":"Digit1","note":"技能1升级","pointerId":3,"posX":880,"posY":560,"time":80,"type":"Tap"},{"key":"Digit2","note":"技能2升级","pointerId":3,"posX":960,"posY":430,"time":80,"type":"Tap"},{"key":"Digit3","note":"技能3升级","pointerId":3,"posX":1090,"posY":350,"time":80,"type":"Tap"},{"key":"Digit5","note":"快速购买1","pointerId":3,"posX":130,"posY":300,"time":80,"type":"Tap"},{"key":"Digit6","note":"快速购买2","pointerId":3,"posX":130,"posY":370,"time":80,"type":"Tap"},{"key":"M3","note":"观察","pointerId":4,"posX":1000,"posY":200,"scale":1,"type":"Observation"},{"key":"Tab","macro":{"down":[{"args":["default",5,1185,40,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1220,100,80],"type":"touch"}]},"note":"战绩面板","pointerId":5,"posX":1185,"posY":40,"type":"Macro"},{"key":"ShiftLeft","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,1200,60,80],"type":"touch"}]},"note":"商店","pointerId":5,"posX":44,"posY":302,"type":"Macro"},{"key":"KeyZ","macro":{"down":[{"args":["default",5,250,230,80],"type":"touch"}],"loop":null,"up":[{"args":["default",5,640,150,80],"type":"touch"}]},"note":"地图","pointerId":5,"posX":250,"posY":230,"type":"Macro"},{"directional":false,"key":"M4","note":"技能1","pointerId":2,"posX":949,"posY":635,"rangeOrTime":80,"type":"TriggerWhenPressedSkill"},{"key":"WheelDown","note":"推塔键","pointerId":2,"posX":1212,"posY":519,"time":80,"type":"Tap"},{"key":"Backquote","macro":{"down":[{"args":["default",5,40,300,80],"type":"touch"},{"args":["200"],"type":"sleep"},{"args":["default",5,510,630,80],"type":"touch"},{"args":["default",5,1165,575,80],"type":"touch"},{"args":["default",5,1200,65,80],"type":"touch"},{"args":["300"],"type":"sleep"},{"args":["default",5,125,300,80],"type":"touch"}],"loop":null,"up":null},"note":"换装2","pointerId":5,"posX":236,"posY":66,"type":"Macro"}],"relativeSize":{"h":720,"w":1280}}
|
||||
]
|
||||
|
@ -145,7 +145,6 @@ async fn main() {
|
||||
.plugin(tauri_plugin_http::init())
|
||||
.plugin(tauri_plugin_shell::init())
|
||||
.plugin(tauri_plugin_process::init())
|
||||
.plugin(tauri_plugin_clipboard_manager::init())
|
||||
.plugin(tauri_plugin_store::Builder::new().build())
|
||||
.setup(|app| {
|
||||
let stores = app
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"productName": "scrcpy-mask",
|
||||
"version": "0.1.4",
|
||||
"version": "0.1.5",
|
||||
"identifier": "com.akichase.mask",
|
||||
"build": {
|
||||
"beforeDevCommand": "pnpm dev",
|
||||
|
@ -78,6 +78,7 @@ function onAddButtonSelect(
|
||||
up: "NONE",
|
||||
down: "NONE",
|
||||
};
|
||||
(keyMapping as unknown as KeyMappingSteeringWheel).offset = 100;
|
||||
} else if (type === "DirectionalSkill") {
|
||||
(keyMapping as unknown as KeyDirectionalSkill).range = 30;
|
||||
} else if (type === "CancelSkill") {
|
||||
@ -292,7 +293,9 @@ onBeforeRouteLeave(() => {
|
||||
v-else-if="
|
||||
store.editKeyMappingList[index].type === 'DirectionalSkill' ||
|
||||
store.editKeyMappingList[index].type === 'DirectionlessSkill' ||
|
||||
store.editKeyMappingList[index].type === 'TriggerWhenPressedSkill'
|
||||
store.editKeyMappingList[index].type === 'TriggerWhenPressedSkill' ||
|
||||
store.editKeyMappingList[index].type ===
|
||||
'TriggerWhenDoublePressedSkill'
|
||||
"
|
||||
:index="index"
|
||||
/>
|
||||
|
@ -15,7 +15,6 @@ import {
|
||||
import { computed, onActivated, onMounted, ref, watch } from "vue";
|
||||
import { useGlobalStore } from "../../store/global";
|
||||
import { Store } from "@tauri-apps/plugin-store";
|
||||
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
|
||||
import { loadDefaultKeyconfig } from "../../invoke";
|
||||
import { KeyMappingConfig } from "../../keyMappingConfig";
|
||||
import { useKeyboardStore } from "../../store/keyboard";
|
||||
@ -241,7 +240,8 @@ function renameKeyMappingConfig() {
|
||||
function exportKeyMappingConfig() {
|
||||
const config = store.keyMappingConfigList[store.curKeyMappingIndex];
|
||||
const data = JSON.stringify(config, null, 2);
|
||||
writeText(data)
|
||||
navigator.clipboard
|
||||
.writeText(data)
|
||||
.then(() => {
|
||||
message.success("当前按键方案已导出到剪切板");
|
||||
})
|
||||
|
@ -85,21 +85,32 @@ const isTriggerWhenPressed = computed(
|
||||
() => keyMapping.value.type === "TriggerWhenPressedSkill"
|
||||
);
|
||||
|
||||
const isTriggerWhenDoublePressed = computed(
|
||||
() => keyMapping.value.type === "TriggerWhenDoublePressedSkill"
|
||||
);
|
||||
|
||||
function changeSkillType(flag: string) {
|
||||
// the design of skill keymapping type is not good
|
||||
const t = keyMapping.value.type;
|
||||
if (flag === "direction") {
|
||||
keyboardStore.edited = true;
|
||||
if (t === "DirectionalSkill") {
|
||||
// to DirectionlessSkill
|
||||
delete (keyMapping.value as any).range;
|
||||
keyMapping.value.type = "DirectionlessSkill";
|
||||
} else if (t === "DirectionlessSkill") {
|
||||
// to DirectionalSkill
|
||||
(keyMapping.value as any).range = 0;
|
||||
keyMapping.value.type = "DirectionalSkill";
|
||||
} else {
|
||||
} else if (t === "TriggerWhenPressedSkill") {
|
||||
// change directional flag
|
||||
const k = keyMapping.value as KeyTriggerWhenPressedSkill;
|
||||
k.directional = !k.directional;
|
||||
k.rangeOrTime = k.directional ? 0 : 80;
|
||||
} else if (t === "TriggerWhenDoublePressedSkill") {
|
||||
// to DirectionlessSkill
|
||||
delete (keyMapping.value as any).range;
|
||||
keyMapping.value.type = "DirectionlessSkill";
|
||||
}
|
||||
} else if (flag === "trigger") {
|
||||
keyboardStore.edited = true;
|
||||
@ -114,7 +125,8 @@ function changeSkillType(flag: string) {
|
||||
k.directional = false;
|
||||
k.rangeOrTime = 80; // touch time
|
||||
k.type = "TriggerWhenPressedSkill";
|
||||
} else {
|
||||
} else if (t === "TriggerWhenPressedSkill") {
|
||||
// to DirectionalSkill or DirectionlessSkill
|
||||
const k = keyMapping.value as any;
|
||||
if (k.directional) {
|
||||
k.range = k.rangeOrTime;
|
||||
@ -125,6 +137,35 @@ function changeSkillType(flag: string) {
|
||||
k.type = "DirectionlessSkill";
|
||||
}
|
||||
delete k.directional;
|
||||
} else if (t === "TriggerWhenDoublePressedSkill") {
|
||||
// to TriggerWhenPressedSkill && directional
|
||||
const k = keyMapping.value as any;
|
||||
k.directional = true;
|
||||
k.rangeOrTime = k.range;
|
||||
delete k.range;
|
||||
k.type = "TriggerWhenPressedSkill";
|
||||
}
|
||||
} else if (flag === "trigger-double") {
|
||||
keyboardStore.edited = true;
|
||||
if (t === "DirectionalSkill") {
|
||||
// to TriggerWhenDoublePressedSkill
|
||||
const k = keyMapping.value as any;
|
||||
k.type = "TriggerWhenDoublePressedSkill";
|
||||
} else if (t === "DirectionlessSkill") {
|
||||
// to TriggerWhenDoublePressedSkill
|
||||
const k = keyMapping.value as any;
|
||||
k.range = 0;
|
||||
k.type = "TriggerWhenDoublePressedSkill";
|
||||
} else if (t === "TriggerWhenPressedSkill") {
|
||||
// to TriggerWhenDoublePressedSkill
|
||||
const k = keyMapping.value as any;
|
||||
k.range = k.directional ? k.rangeOrTime : 0;
|
||||
delete k.rangeOrTime;
|
||||
k.type = "TriggerWhenDoublePressedSkill";
|
||||
} else if (t === "TriggerWhenDoublePressedSkill") {
|
||||
// to DirectionalSkill
|
||||
const k = keyMapping.value as any;
|
||||
k.type = "DirectionalSkill";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -216,6 +257,11 @@ function updateRangeIndicator(element?: HTMLElement) {
|
||||
<NH4 prefix="bar">技能</NH4>
|
||||
<NFormItem label="选项">
|
||||
<NFlex vertical>
|
||||
<NCheckbox
|
||||
@click="changeSkillType('trigger-double')"
|
||||
:checked="isTriggerWhenDoublePressed"
|
||||
>双击施放</NCheckbox
|
||||
>
|
||||
<NCheckbox
|
||||
@click="changeSkillType('direction')"
|
||||
:checked="isDirectionless"
|
||||
@ -230,7 +276,10 @@ function updateRangeIndicator(element?: HTMLElement) {
|
||||
</NFormItem>
|
||||
<NFormItem v-if="!isDirectionless" label="范围">
|
||||
<NInputNumber
|
||||
v-if="keyMapping.type === 'DirectionalSkill'"
|
||||
v-if="
|
||||
keyMapping.type === 'DirectionalSkill' ||
|
||||
'TriggerWhenDoublePressedSkill'
|
||||
"
|
||||
v-model:value="(keyMapping as KeyDirectionalSkill).range"
|
||||
placeholder="请输入技能范围"
|
||||
:min="0"
|
||||
|
102
src/hotkey.ts
102
src/hotkey.ts
@ -15,6 +15,7 @@ import {
|
||||
KeyObservation,
|
||||
KeySteeringWheel,
|
||||
KeyTap,
|
||||
KeyTriggerWhenDoublePressedSkill,
|
||||
KeyTriggerWhenPressedSkill,
|
||||
} from "./keyMappingConfig";
|
||||
|
||||
@ -44,7 +45,7 @@ function clientPosToSkillOffset(
|
||||
clientPos: { x: number; y: number },
|
||||
range: number
|
||||
): { offsetX: number; offsetY: number } {
|
||||
const maxLength = (100 / maskSizeH) * screenSizeH;
|
||||
const maxLength = (120 / maskSizeH) * screenSizeH;
|
||||
const centerX = maskSizeW * 0.5;
|
||||
const centerY = maskSizeH * 0.5;
|
||||
|
||||
@ -336,6 +337,94 @@ function addTriggerWhenPressedSkillShortcuts(
|
||||
}
|
||||
}
|
||||
|
||||
function addTriggerWhenDoublePressedSkillShortcuts(
|
||||
key: string,
|
||||
relativeSize: { w: number; h: number },
|
||||
// pos relative to the device
|
||||
posX: number,
|
||||
posY: number,
|
||||
range: number,
|
||||
pointerId: number
|
||||
) {
|
||||
posX = Math.round((posX / relativeSize.w) * screenSizeW);
|
||||
posY = Math.round((posY / relativeSize.h) * screenSizeH);
|
||||
let curKeyDownFlag = false;
|
||||
addShortcut(
|
||||
key,
|
||||
// down
|
||||
async () => {
|
||||
if (curKeyDownFlag === false) {
|
||||
// first press: touch down
|
||||
const skillOffset = clientPosToSkillOffset(
|
||||
{ x: mouseX, y: mouseY },
|
||||
range
|
||||
);
|
||||
await swipe({
|
||||
action: SwipeAction.NoUp,
|
||||
pointerId,
|
||||
screen: {
|
||||
w: screenSizeW,
|
||||
h: screenSizeH,
|
||||
},
|
||||
pos: [
|
||||
{ x: posX, y: posY },
|
||||
{
|
||||
x: posX + skillOffset.offsetX,
|
||||
y: posY + skillOffset.offsetY,
|
||||
},
|
||||
],
|
||||
intervalBetweenPos: 0,
|
||||
});
|
||||
// set the flag to true
|
||||
curKeyDownFlag = true;
|
||||
// add loop CB
|
||||
loopDownKeyCBMap.set(key, async () => {
|
||||
const loopSkillOffset = clientPosToSkillOffset(
|
||||
{ x: mouseX, y: mouseY },
|
||||
range
|
||||
);
|
||||
await touch({
|
||||
action: TouchAction.Move,
|
||||
pointerId,
|
||||
screen: {
|
||||
w: screenSizeW,
|
||||
h: screenSizeH,
|
||||
},
|
||||
pos: {
|
||||
x: posX + loopSkillOffset.offsetX,
|
||||
y: posY + loopSkillOffset.offsetY,
|
||||
},
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// second press: touch up
|
||||
// delete the loop CB
|
||||
loopDownKeyCBMap.delete(key);
|
||||
const skillOffset = clientPosToSkillOffset(
|
||||
{ x: mouseX, y: mouseY },
|
||||
range
|
||||
);
|
||||
await touch({
|
||||
action: TouchAction.Up,
|
||||
pointerId,
|
||||
screen: {
|
||||
w: screenSizeW,
|
||||
h: screenSizeH,
|
||||
},
|
||||
pos: {
|
||||
x: posX + skillOffset.offsetX,
|
||||
y: posY + skillOffset.offsetY,
|
||||
},
|
||||
});
|
||||
// set the flag to false
|
||||
curKeyDownFlag = false;
|
||||
}
|
||||
},
|
||||
undefined,
|
||||
undefined
|
||||
);
|
||||
}
|
||||
|
||||
// add shortcuts for directionless skill (cancelable)
|
||||
function addDirectionlessSkillShortcuts(
|
||||
key: string,
|
||||
@ -1018,6 +1107,17 @@ function applyKeyMappingConfigShortcuts(
|
||||
item.pointerId
|
||||
);
|
||||
break;
|
||||
case "TriggerWhenDoublePressedSkill":
|
||||
asType<KeyTriggerWhenDoublePressedSkill>(item);
|
||||
addTriggerWhenDoublePressedSkillShortcuts(
|
||||
item.key,
|
||||
relativeSize,
|
||||
item.posX,
|
||||
item.posY,
|
||||
item.range,
|
||||
item.pointerId
|
||||
);
|
||||
break;
|
||||
case "Observation":
|
||||
asType<KeyObservation>(item);
|
||||
addObservationShortcuts(
|
||||
|
@ -6,6 +6,7 @@ interface Key {
|
||||
| "CancelSkill"
|
||||
| "Tap"
|
||||
| "TriggerWhenPressedSkill"
|
||||
| "TriggerWhenDoublePressedSkill"
|
||||
| "Observation"
|
||||
| "Macro";
|
||||
note: string;
|
||||
@ -43,6 +44,11 @@ interface KeyTriggerWhenPressedSkill extends Key {
|
||||
rangeOrTime: number;
|
||||
}
|
||||
|
||||
interface KeyTriggerWhenDoublePressedSkill extends Key {
|
||||
key: string;
|
||||
range: number;
|
||||
}
|
||||
|
||||
interface KeyObservation extends Key {
|
||||
key: string;
|
||||
scale: number;
|
||||
@ -74,6 +80,7 @@ type KeyMapping =
|
||||
| KeyDirectionalSkill
|
||||
| KeyDirectionlessSkill
|
||||
| KeyTriggerWhenPressedSkill
|
||||
| KeyTriggerWhenDoublePressedSkill
|
||||
| KeyObservation
|
||||
| KeyMacro
|
||||
| KeyCancelSkill
|
||||
@ -93,6 +100,7 @@ export type {
|
||||
KeyCancelSkill,
|
||||
KeyTap,
|
||||
KeyTriggerWhenPressedSkill,
|
||||
KeyTriggerWhenDoublePressedSkill,
|
||||
KeyObservation,
|
||||
KeyMacro,
|
||||
KeyMapping,
|
||||
|
Loading…
Reference in New Issue
Block a user