; Author: HammyCatte
; Description: 3Dmigoto overlay with draggable image functionality
;
; === 用户配置指南 ===
; 必须配置项：
; 1. [ResourceImageToRender]中的图片路径
; 2. [Constants]中的图片尺寸
; 3. [TextureOverrideCheckHash]中的角色hash值
;
; 可选配置项：
; 1. 图片初始位置（0-1范围）
; 2. 呼出快捷键（默认ctrl /键）
; 3. 复位快捷键（默认ctrl R键）

; 配置区 ---------------------------------------------------------

; ※※ 必须配置 ※※

; 1. 配置图片资源
[ResourceImageToRender]
filename = help.png

; 2. 配置图片尺寸 (单位：像素)
[Constants]
; 图片宽度
global $image_width = 2560
; 图片高度
global $image_height = 1259

; 3. 配置用以检测当前角色的hash值
[TextureOverrideCheckHash]
hash = b20f90ea
$active = 1

; === 可选配置 ===

; 1. 图片初始位置
[Constants]
; 初始水平位置（0.0=最左，1.0=最右）
global $set_x = 1
; 初始垂直位置（0.0=顶部，1.0=底部）
global $set_y = 0.5

; 2. 图片呼出快捷键
[KeyHelp]
condition = $active == 1
key = no_modifiers H
type = cycle
$help = 0,1

; 3. 图片复位快捷键
[KeyResetPosition]
condition = $help == 1 && $active == 1
key = ctrl R
type = cycle
$img_x = 0
$img_y = 0

; 功能区 ---------------------------------------------------------

[Constants]
global $active
global $help
; 持久化存储位置
global persist $img_x = 0
global persist $img_y = 0
; 归一化尺寸
global $norm_width
global $norm_height
; 拖拽控制变量
global $mouse_clicked = 0
global $click_outside = 0
global $is_dragging = 0
global $drag_x = 0
global $drag_y = 0

; 鼠标拖拽检测
[KeyMouseDrag]
condition = $help == 1 && $active == 1
key = VK_LBUTTON
type = hold
$mouse_clicked = 1

; 主渲染逻辑
[Present]
post $active = 0
if $help == 1 && $active == 1
    ; 计算归一化尺寸
    $norm_width = $image_width / res_width
    $norm_height = $image_height / res_height

    ; 位置初始化
    if $img_x == 0 && $img_y == 0
        ; 坐标转换（限制在屏幕内）
        $img_x = $set_x * (1 - $norm_width)
        $img_y = $set_y * (1 - $norm_height)
    endif

    ; 拖拽检测
    if $mouse_clicked
        if cursor_x > $img_x && cursor_x < $img_x + $norm_width && cursor_y > $img_y && cursor_y < $img_y + $norm_height
            $click_outside = 0
            if $is_dragging == 0
                $drag_x = cursor_x - $img_x
                $drag_y = cursor_y - $img_y
                $is_dragging = 1
            endif
        else
            $click_outside = 1
        endif
    else
        $is_dragging = 0
    endif
    ; 点击图片外隐藏
    if $click_outside == 1 && $mouse_clicked == 0
        $help = 0
        $click_outside = 0
    endif

    ; 移动逻辑
    if $is_dragging
        $img_x = cursor_x - $drag_x
        $img_y = cursor_y - $drag_y
    endif

    ; 执行渲染
    ps-t100 = ResourceImageToRender
    run = CustomShaderDraw
endif

; 着色器配置
[CustomShaderDraw]
hs = null
ds = null
gs = null
cs = null
vs = draw_2d.hlsl
ps = draw_2d.hlsl
x87 = $norm_width
y87 = $norm_height
z87 = $img_x
w87 = $img_y
blend = ADD SRC_ALPHA INV_SRC_ALPHA
cull = none
topology = triangle_strip
o0 = set_viewport bb
Draw = 4,0
clear = ps-t100
