<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>メモリアドレス変更とフリーズ</title>
    <style>
        /* スライダーのスタイル */
        #slider {
            -webkit-appearance: none;
            width: 300px;
            height: 15px;
            background: #ddd;
            border-radius: 5px;
            outline: none;
            opacity: 0.7;
            transition: opacity .2s;
        }

        #slider:hover {
            opacity: 1;
        }

        #slider::-webkit-slider-thumb {
            -webkit-appearance: none;
            appearance: none;
            width: 30px;
            height: 30px;
            background: #4CAF50;
            cursor: pointer;
            border-radius: 50%;
        }

        #slider::-moz-range-thumb {
            width: 30px;
            height: 30px;
            background: #4CAF50;
            cursor: pointer;
            border-radius: 50%;
        }
        
        #sliderValue {
            font-size: 20px;
        }
       body {
         color: #FFF}
    </style>
</head>
<body>

    <button id="searchButton">Start</button>
    <button id="freezeZeroButton" disabled>背景黒色</button>

    <label for="slider">zoom</label>
    <span id="sliderValue">0.50</span>
    <input type="range" id="slider" min="0" max="1" step="0.01" value="0.50" disabled>
    <span id="sliderValue">0.50</span>

    <script>
        alert("オフラインに一度入り、ゲーム中にStartボタンを押すか、死んでタイトルに戻った時にStartボタンを押してください。");

        // スクリプトをウィンドウにドラッグ可能にする
        setWindowRect(250, 0, 315, 75);

        let targetAddress = null;
        let zeroAddress = null;
        let secondAddress = null;
        let locker = null;
        let zeroLocker = null;
        let secondLocker = null;

        document.getElementById("searchButton").onclick = function() {
            // 検索ボタンがクリックされたら、メモリ操作を行う
            h5gg.clearResults();
            h5gg.searchNumber('-1', 'F64', '0x000000000', '0x290000000');
            h5gg.searchNearby('411', 'F64', '0x8');

            let results = h5gg.getResults(1, 0);
            if (results.length > 0) {
                let foundAddress = results[0].address;
                targetAddress = (parseInt(foundAddress, 16) - 0x168).toString(16);
                zeroAddress = (parseInt(foundAddress, 16) - 0xF0).toString(16);
                secondAddress = (parseInt(foundAddress, 16) - 0xE8).toString(16);

                alert("背景黒色とズームが使えるようになりました。");

                // スライダーとボタンを有効化
                document.getElementById("slider").disabled = false;
                document.getElementById("freezeZeroButton").disabled = false;

                // スライダーの値を変更するたびに targetAddress の値を変更・フリーズ
                document.getElementById("slider").oninput = function() {
                    let value = parseFloat(this.value);
                    document.getElementById("sliderValue").textContent = value.toFixed(2);

                    if (locker !== null) {
                        clearInterval(locker); // 既存のロッカーをクリア
                    }

                    locker = setInterval(function() {
                        h5gg.setValue("0x" + targetAddress, value, 'F64'); // targetAddress の値を変更してフリーズ
                    }, 1); // 1ミリ秒ごとに更新
                };
            } else {
                alert("失敗しました。タイトルでもう一度押してください。");
            }
        };

        document.getElementById("freezeZeroButton").onclick = function() {
            if (zeroAddress !== null && secondAddress !== null) {
                if (zeroLocker !== null) {
                    clearInterval(zeroLocker); // 既存のゼロロッカーをクリア
                }
                if (secondLocker !== null) {
                    clearInterval(secondLocker); // 既存のセカンドロッカーをクリア
                }

                zeroLocker = setInterval(function() {
                    h5gg.setValue("0x" + zeroAddress, 0, 'F64'); // 値を0に設定してフリーズ
                }, 250); // 250ミリ秒ごとに更新

                secondLocker = setInterval(function() {
                    h5gg.setValue("0x" + secondAddress, 0, 'F64'); // secondAddress の値を 0 にしてフリーズ
                }, 250); // 250ミリ秒ごとに更新

                
            }
        };
    </script>

</body>
</html>