mirror of
https://github.com/AkiChase/scrcpy-mask
synced 2025-02-23 07:22:17 +08:00
commit
a4a665d639
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "scrcpy-mask",
|
"name": "scrcpy-mask",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.4",
|
"version": "0.1.5",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@ -12,7 +12,6 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": ">=2.0.0-beta.8",
|
"@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-http": "2.0.0-beta.3",
|
||||||
"@tauri-apps/plugin-process": "2.0.0-beta.2",
|
"@tauri-apps/plugin-process": "2.0.0-beta.2",
|
||||||
"@tauri-apps/plugin-shell": "2.0.0-beta.3",
|
"@tauri-apps/plugin-shell": "2.0.0-beta.3",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "scrcpy-mask"
|
name = "scrcpy-mask"
|
||||||
version = "0.1.4"
|
version = "0.1.5"
|
||||||
description = "A Tauri App"
|
description = "A Tauri App"
|
||||||
authors = ["AkiChase"]
|
authors = ["AkiChase"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
@ -17,7 +17,6 @@ serde = { version = "1", features = ["derive"] }
|
|||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
tokio = { version = "1.36.0", features = ["rt-multi-thread", "net", "macros", "io-util", "time", "sync"] }
|
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-process = "2.0.0-beta.3"
|
||||||
tauri-plugin-shell = "2.0.0-beta.4"
|
tauri-plugin-shell = "2.0.0-beta.4"
|
||||||
tauri-plugin-http = "2.0.0-beta.7"
|
tauri-plugin-http = "2.0.0-beta.7"
|
||||||
|
@ -22,8 +22,6 @@
|
|||||||
"store:allow-clear",
|
"store:allow-clear",
|
||||||
"store:allow-entries",
|
"store:allow-entries",
|
||||||
"store:allow-delete",
|
"store:allow-delete",
|
||||||
"clipboard-manager:default",
|
|
||||||
"clipboard-manager:allow-write-text",
|
|
||||||
"process:default",
|
"process:default",
|
||||||
"process:allow-restart",
|
"process:allow-restart",
|
||||||
"webview:default",
|
"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_http::init())
|
||||||
.plugin(tauri_plugin_shell::init())
|
.plugin(tauri_plugin_shell::init())
|
||||||
.plugin(tauri_plugin_process::init())
|
.plugin(tauri_plugin_process::init())
|
||||||
.plugin(tauri_plugin_clipboard_manager::init())
|
|
||||||
.plugin(tauri_plugin_store::Builder::new().build())
|
.plugin(tauri_plugin_store::Builder::new().build())
|
||||||
.setup(|app| {
|
.setup(|app| {
|
||||||
let stores = app
|
let stores = app
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"productName": "scrcpy-mask",
|
"productName": "scrcpy-mask",
|
||||||
"version": "0.1.4",
|
"version": "0.1.5",
|
||||||
"identifier": "com.akichase.mask",
|
"identifier": "com.akichase.mask",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "pnpm dev",
|
"beforeDevCommand": "pnpm dev",
|
||||||
|
@ -78,6 +78,7 @@ function onAddButtonSelect(
|
|||||||
up: "NONE",
|
up: "NONE",
|
||||||
down: "NONE",
|
down: "NONE",
|
||||||
};
|
};
|
||||||
|
(keyMapping as unknown as KeyMappingSteeringWheel).offset = 100;
|
||||||
} else if (type === "DirectionalSkill") {
|
} else if (type === "DirectionalSkill") {
|
||||||
(keyMapping as unknown as KeyDirectionalSkill).range = 30;
|
(keyMapping as unknown as KeyDirectionalSkill).range = 30;
|
||||||
} else if (type === "CancelSkill") {
|
} else if (type === "CancelSkill") {
|
||||||
@ -292,7 +293,9 @@ onBeforeRouteLeave(() => {
|
|||||||
v-else-if="
|
v-else-if="
|
||||||
store.editKeyMappingList[index].type === 'DirectionalSkill' ||
|
store.editKeyMappingList[index].type === 'DirectionalSkill' ||
|
||||||
store.editKeyMappingList[index].type === 'DirectionlessSkill' ||
|
store.editKeyMappingList[index].type === 'DirectionlessSkill' ||
|
||||||
store.editKeyMappingList[index].type === 'TriggerWhenPressedSkill'
|
store.editKeyMappingList[index].type === 'TriggerWhenPressedSkill' ||
|
||||||
|
store.editKeyMappingList[index].type ===
|
||||||
|
'TriggerWhenDoublePressedSkill'
|
||||||
"
|
"
|
||||||
:index="index"
|
:index="index"
|
||||||
/>
|
/>
|
||||||
|
@ -15,7 +15,6 @@ import {
|
|||||||
import { computed, onActivated, onMounted, ref, watch } from "vue";
|
import { computed, onActivated, onMounted, ref, watch } from "vue";
|
||||||
import { useGlobalStore } from "../../store/global";
|
import { useGlobalStore } from "../../store/global";
|
||||||
import { Store } from "@tauri-apps/plugin-store";
|
import { Store } from "@tauri-apps/plugin-store";
|
||||||
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
|
|
||||||
import { loadDefaultKeyconfig } from "../../invoke";
|
import { loadDefaultKeyconfig } from "../../invoke";
|
||||||
import { KeyMappingConfig } from "../../keyMappingConfig";
|
import { KeyMappingConfig } from "../../keyMappingConfig";
|
||||||
import { useKeyboardStore } from "../../store/keyboard";
|
import { useKeyboardStore } from "../../store/keyboard";
|
||||||
@ -241,7 +240,8 @@ function renameKeyMappingConfig() {
|
|||||||
function exportKeyMappingConfig() {
|
function exportKeyMappingConfig() {
|
||||||
const config = store.keyMappingConfigList[store.curKeyMappingIndex];
|
const config = store.keyMappingConfigList[store.curKeyMappingIndex];
|
||||||
const data = JSON.stringify(config, null, 2);
|
const data = JSON.stringify(config, null, 2);
|
||||||
writeText(data)
|
navigator.clipboard
|
||||||
|
.writeText(data)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
message.success("当前按键方案已导出到剪切板");
|
message.success("当前按键方案已导出到剪切板");
|
||||||
})
|
})
|
||||||
|
@ -85,21 +85,32 @@ const isTriggerWhenPressed = computed(
|
|||||||
() => keyMapping.value.type === "TriggerWhenPressedSkill"
|
() => keyMapping.value.type === "TriggerWhenPressedSkill"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const isTriggerWhenDoublePressed = computed(
|
||||||
|
() => keyMapping.value.type === "TriggerWhenDoublePressedSkill"
|
||||||
|
);
|
||||||
|
|
||||||
function changeSkillType(flag: string) {
|
function changeSkillType(flag: string) {
|
||||||
// the design of skill keymapping type is not good
|
// the design of skill keymapping type is not good
|
||||||
const t = keyMapping.value.type;
|
const t = keyMapping.value.type;
|
||||||
if (flag === "direction") {
|
if (flag === "direction") {
|
||||||
keyboardStore.edited = true;
|
keyboardStore.edited = true;
|
||||||
if (t === "DirectionalSkill") {
|
if (t === "DirectionalSkill") {
|
||||||
|
// to DirectionlessSkill
|
||||||
delete (keyMapping.value as any).range;
|
delete (keyMapping.value as any).range;
|
||||||
keyMapping.value.type = "DirectionlessSkill";
|
keyMapping.value.type = "DirectionlessSkill";
|
||||||
} else if (t === "DirectionlessSkill") {
|
} else if (t === "DirectionlessSkill") {
|
||||||
|
// to DirectionalSkill
|
||||||
(keyMapping.value as any).range = 0;
|
(keyMapping.value as any).range = 0;
|
||||||
keyMapping.value.type = "DirectionalSkill";
|
keyMapping.value.type = "DirectionalSkill";
|
||||||
} else {
|
} else if (t === "TriggerWhenPressedSkill") {
|
||||||
|
// change directional flag
|
||||||
const k = keyMapping.value as KeyTriggerWhenPressedSkill;
|
const k = keyMapping.value as KeyTriggerWhenPressedSkill;
|
||||||
k.directional = !k.directional;
|
k.directional = !k.directional;
|
||||||
k.rangeOrTime = k.directional ? 0 : 80;
|
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") {
|
} else if (flag === "trigger") {
|
||||||
keyboardStore.edited = true;
|
keyboardStore.edited = true;
|
||||||
@ -114,7 +125,8 @@ function changeSkillType(flag: string) {
|
|||||||
k.directional = false;
|
k.directional = false;
|
||||||
k.rangeOrTime = 80; // touch time
|
k.rangeOrTime = 80; // touch time
|
||||||
k.type = "TriggerWhenPressedSkill";
|
k.type = "TriggerWhenPressedSkill";
|
||||||
} else {
|
} else if (t === "TriggerWhenPressedSkill") {
|
||||||
|
// to DirectionalSkill or DirectionlessSkill
|
||||||
const k = keyMapping.value as any;
|
const k = keyMapping.value as any;
|
||||||
if (k.directional) {
|
if (k.directional) {
|
||||||
k.range = k.rangeOrTime;
|
k.range = k.rangeOrTime;
|
||||||
@ -125,6 +137,35 @@ function changeSkillType(flag: string) {
|
|||||||
k.type = "DirectionlessSkill";
|
k.type = "DirectionlessSkill";
|
||||||
}
|
}
|
||||||
delete k.directional;
|
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>
|
<NH4 prefix="bar">技能</NH4>
|
||||||
<NFormItem label="选项">
|
<NFormItem label="选项">
|
||||||
<NFlex vertical>
|
<NFlex vertical>
|
||||||
|
<NCheckbox
|
||||||
|
@click="changeSkillType('trigger-double')"
|
||||||
|
:checked="isTriggerWhenDoublePressed"
|
||||||
|
>双击施放</NCheckbox
|
||||||
|
>
|
||||||
<NCheckbox
|
<NCheckbox
|
||||||
@click="changeSkillType('direction')"
|
@click="changeSkillType('direction')"
|
||||||
:checked="isDirectionless"
|
:checked="isDirectionless"
|
||||||
@ -230,7 +276,10 @@ function updateRangeIndicator(element?: HTMLElement) {
|
|||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem v-if="!isDirectionless" label="范围">
|
<NFormItem v-if="!isDirectionless" label="范围">
|
||||||
<NInputNumber
|
<NInputNumber
|
||||||
v-if="keyMapping.type === 'DirectionalSkill'"
|
v-if="
|
||||||
|
keyMapping.type === 'DirectionalSkill' ||
|
||||||
|
'TriggerWhenDoublePressedSkill'
|
||||||
|
"
|
||||||
v-model:value="(keyMapping as KeyDirectionalSkill).range"
|
v-model:value="(keyMapping as KeyDirectionalSkill).range"
|
||||||
placeholder="请输入技能范围"
|
placeholder="请输入技能范围"
|
||||||
:min="0"
|
:min="0"
|
||||||
|
102
src/hotkey.ts
102
src/hotkey.ts
@ -15,6 +15,7 @@ import {
|
|||||||
KeyObservation,
|
KeyObservation,
|
||||||
KeySteeringWheel,
|
KeySteeringWheel,
|
||||||
KeyTap,
|
KeyTap,
|
||||||
|
KeyTriggerWhenDoublePressedSkill,
|
||||||
KeyTriggerWhenPressedSkill,
|
KeyTriggerWhenPressedSkill,
|
||||||
} from "./keyMappingConfig";
|
} from "./keyMappingConfig";
|
||||||
|
|
||||||
@ -44,7 +45,7 @@ function clientPosToSkillOffset(
|
|||||||
clientPos: { x: number; y: number },
|
clientPos: { x: number; y: number },
|
||||||
range: number
|
range: number
|
||||||
): { offsetX: number; offsetY: number } {
|
): { offsetX: number; offsetY: number } {
|
||||||
const maxLength = (100 / maskSizeH) * screenSizeH;
|
const maxLength = (120 / maskSizeH) * screenSizeH;
|
||||||
const centerX = maskSizeW * 0.5;
|
const centerX = maskSizeW * 0.5;
|
||||||
const centerY = maskSizeH * 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)
|
// add shortcuts for directionless skill (cancelable)
|
||||||
function addDirectionlessSkillShortcuts(
|
function addDirectionlessSkillShortcuts(
|
||||||
key: string,
|
key: string,
|
||||||
@ -1018,6 +1107,17 @@ function applyKeyMappingConfigShortcuts(
|
|||||||
item.pointerId
|
item.pointerId
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case "TriggerWhenDoublePressedSkill":
|
||||||
|
asType<KeyTriggerWhenDoublePressedSkill>(item);
|
||||||
|
addTriggerWhenDoublePressedSkillShortcuts(
|
||||||
|
item.key,
|
||||||
|
relativeSize,
|
||||||
|
item.posX,
|
||||||
|
item.posY,
|
||||||
|
item.range,
|
||||||
|
item.pointerId
|
||||||
|
);
|
||||||
|
break;
|
||||||
case "Observation":
|
case "Observation":
|
||||||
asType<KeyObservation>(item);
|
asType<KeyObservation>(item);
|
||||||
addObservationShortcuts(
|
addObservationShortcuts(
|
||||||
|
@ -6,6 +6,7 @@ interface Key {
|
|||||||
| "CancelSkill"
|
| "CancelSkill"
|
||||||
| "Tap"
|
| "Tap"
|
||||||
| "TriggerWhenPressedSkill"
|
| "TriggerWhenPressedSkill"
|
||||||
|
| "TriggerWhenDoublePressedSkill"
|
||||||
| "Observation"
|
| "Observation"
|
||||||
| "Macro";
|
| "Macro";
|
||||||
note: string;
|
note: string;
|
||||||
@ -43,6 +44,11 @@ interface KeyTriggerWhenPressedSkill extends Key {
|
|||||||
rangeOrTime: number;
|
rangeOrTime: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface KeyTriggerWhenDoublePressedSkill extends Key {
|
||||||
|
key: string;
|
||||||
|
range: number;
|
||||||
|
}
|
||||||
|
|
||||||
interface KeyObservation extends Key {
|
interface KeyObservation extends Key {
|
||||||
key: string;
|
key: string;
|
||||||
scale: number;
|
scale: number;
|
||||||
@ -74,6 +80,7 @@ type KeyMapping =
|
|||||||
| KeyDirectionalSkill
|
| KeyDirectionalSkill
|
||||||
| KeyDirectionlessSkill
|
| KeyDirectionlessSkill
|
||||||
| KeyTriggerWhenPressedSkill
|
| KeyTriggerWhenPressedSkill
|
||||||
|
| KeyTriggerWhenDoublePressedSkill
|
||||||
| KeyObservation
|
| KeyObservation
|
||||||
| KeyMacro
|
| KeyMacro
|
||||||
| KeyCancelSkill
|
| KeyCancelSkill
|
||||||
@ -93,6 +100,7 @@ export type {
|
|||||||
KeyCancelSkill,
|
KeyCancelSkill,
|
||||||
KeyTap,
|
KeyTap,
|
||||||
KeyTriggerWhenPressedSkill,
|
KeyTriggerWhenPressedSkill,
|
||||||
|
KeyTriggerWhenDoublePressedSkill,
|
||||||
KeyObservation,
|
KeyObservation,
|
||||||
KeyMacro,
|
KeyMacro,
|
||||||
KeyMapping,
|
KeyMapping,
|
||||||
|
Loading…
Reference in New Issue
Block a user