lidarts Rest Score Input

adding restscore functionalty to lidarts

Stan na 03-09-2023. Zobacz najnowsza wersja.

// ==UserScript==
// @name           lidarts Rest Score Input
// @name:de        lidarts Rest-Betrag Eingabe
// @version        0.4
// @description    adding restscore functionalty to lidarts
// @description:de fügt in lidarts die Rest-Betrag Eingabe hinzu
// @author         AlexisDot
// @license        MIT
// @match          https://lidarts.org/game/*
// @namespace      https://greasyfork.dpdns.org/en/users/913506-alexisdot
// ==/UserScript==
/*jshint esversion: 6 */

(function () {
  'use strict';

  let scoreSelfElement = null;
  let scoreInputForm = document.querySelector('#score_input');
  let scoreInput = scoreInputForm.querySelector('#score_value');
  let isNotCricket = document.querySelector('#cricket_scoreboard')
    ? false
    : true;
  let isLocalGame = false;
  let isComputerGame = false;

  async function initRestScoreInput() {
    let url = `https://lidarts.org/api${window.location.pathname}`;
    const response = await fetch(url, {
      method: 'GET',
    });
    const responseJson = await response.json();
    window['myJson'] = responseJson;
    isLocalGame = responseJson.p1_name == responseJson.p2_name;
    isComputerGame = responseJson.p2_name == null;

    if (scoreInput && isNotCricket) {
      document.head.insertAdjacentHTML(
        'beforeend',
        /*html*/ `
        <style>
          .p1_turn_name_card .card-body.select-highlight, .p2_turn_name_card .card-body.select-highlight{
              background: red;
              animation: mymove 3s infinite;
              cursor: pointer;
            }
     
            @keyframes mymove {
              from {background-color: inherit;}
              50% {background-color: rgb(227,172,17);}
              to {background-color: inherit;}
            }
        </style>`
      );

      if (!isLocalGame && !isComputerGame) {
        let userId = document.querySelector('#user_id').dataset.id;
        let player1Id = document.querySelector('#player1_id').dataset.id;
        let player2Id = document.querySelector('#player2_id').dataset.id;

        if (userId == player1Id) {
          scoreSelfElement = document.querySelector('#p1_score');
        } else if (userId == player2Id) {
          scoreSelfElement = document.querySelector('#p2_score');
        }
      }

      if (isComputerGame) {
        scoreSelfElement = document.querySelector('#p1_score');
      }

      let dummyDiv = document.createElement('div');
      dummyDiv.innerHTML = /*html*/ `
        <button type="button" class="mt-3 btn btn-lg btn-outline-info btn-block" id="rest-score-input">Rest</button>
      `;

      let restScoreInput = dummyDiv
        .querySelector('#rest-score-input')
        .cloneNode(true);

      dummyDiv.innerHTML = /*html*/ `
        <div id="keyboard-notice" class="mt-3 alert alert-info small text-center alert-dismissible fade show" role="alert">For rest you can also <br>or press <kbd>r</kbd> or <kbd>/</kbd> on your keyboard
          <button type="button" class="close" data-dismiss="alert" aria-label="Close">
              <span aria-hidden="true">&times;</span>
          </button>
        </div>`;

      let keyboardNotice = dummyDiv
        .querySelector('#keyboard-notice')
        .cloneNode(true);

        scoreInputForm.insertAdjacentElement('afterend', keyboardNotice);
        scoreInputForm.insertAdjacentElement('afterend', restScoreInput);

      function restScoreSubmit() {
        let restScore = scoreInput.value;
        let scoreSelf = isLocalGame
          ? document.querySelector('.player_turn.border-light [id$=_score]')
              .innerText
          : scoreSelfElement.innerText;
        let currentScore = parseInt(scoreSelf);
        let thrownScore = currentScore - restScore;

        scoreInput.value = thrownScore;
        scoreInput.focus();

        $(scoreInputForm).submit();
      }

      restScoreInput.addEventListener('click', (e) => {
        e.preventDefault();
        restScoreSubmit();
      });

      document.addEventListener('keydown', (e) => {
        if (e.key === '/' || e.key === 'r') {
          e.preventDefault();
          restScoreSubmit();
        }
      });
    }
  }

  initRestScoreInput();
})();
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

一年攒够 12 元

云驰互联

云驰互联