Merge pull request #6 from AkiChase/issue-5

fix(hotkey): The skill indicator issue
This commit is contained in:
如初 2024-05-02 16:13:14 +08:00 committed by GitHub
commit cc8e2cbeb6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 5 deletions

View File

@ -67,7 +67,7 @@ function toStartServer() {
<div @contextmenu.prevent class="mask" id="maskElement"></div> <div @contextmenu.prevent class="mask" id="maskElement"></div>
<div class="button-layer"> <div class="button-layer">
<!-- <div style="position: absolute;height: 100%;width: 1px;background-color: red;left: 50%;"></div> <!-- <div style="position: absolute;height: 100%;width: 1px;background-color: red;left: 50%;"></div>
<div style="position: absolute;width: 100%;height: 1px;background-color: red;top: 55%;"></div> --> <div style="position: absolute;width: 100%;height: 1px;background-color: red;top: 56.6%;"></div> -->
<template <template
v-for="button in store.keyMappingConfigList[store.curKeyMappingIndex] v-for="button in store.keyMappingConfigList[store.curKeyMappingIndex]
.list" .list"

View File

@ -40,16 +40,19 @@ function clientyToPosOffsety(clienty: number, posy: number, scale = 1) {
return Math.round(offsetY * scale); return Math.round(offsetY * scale);
} }
// TODO ? 技能指示器的指向实际上是有投影变换的可见王者技能范围不是圆而是椭圆需要一定的算法不能仅仅相对x:50%, y:55%)的位置
function clientPosToSkillOffset( 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 = (100 / maskSizeH) * screenSizeH;
const centerX = maskSizeW * 0.5; const centerX = maskSizeW * 0.5;
const centerY = maskSizeH * 0.55; const centerY = maskSizeH * 0.5;
const cOffsetX = clientPos.x - 70 - centerX;
// The center of the game display is higher than the center of the mask
clientPos.y -= maskSizeH * 0.066;
// w450 : h315 = 100 : 70, so the true offsetX is 0.7 * cOffsetX
const cOffsetX = (clientPos.x - 70 - centerX)*0.7;
const cOffsetY = clientPos.y - 30 - centerY; const cOffsetY = clientPos.y - 30 - centerY;
const offsetD = Math.sqrt(cOffsetX ** 2 + cOffsetY ** 2); const offsetD = Math.sqrt(cOffsetX ** 2 + cOffsetY ** 2);
if (offsetD == 0) { if (offsetD == 0) {