Touch UI deaktivieren

RPG Maker MZ (JavaScript)
Autor
GR-FoxDie
Sprache
JavaScript
Zeilen
147
Eingestellt von
GR-FoxDie
Aufrufe
7
Im Forum
[script=19]

Beschreibung

Dieses Plugin schaltet die Touch UI von RPG Maker MZ ab. Der Menü-Button auf der Map, die Zurück-Buttons
und die Seiten-Buttons in den Menüs verschwinden, sodass dein Spiel eine reine Tastatur-/Gamepad-Oberfläche bekommt.
Optional wird auch die Einstellung „Touch UI“ aus dem Optionsmenü entfernt, damit Spieler sie nicht wieder einschalten können.

Als .js-Datei
//=============================================================================
// RPGVault_DisableTouchUI.js
//=============================================================================
// Copyright (c) rpg-vault.de
// Download ausschließlich auf: https://rpg-vault.de
//=============================================================================

/*:
 * @target MZ
 * @plugindesc [v1.0.0] Deaktiviert die Touch UI (Buttons auf Map und in Menüs).
 * @author rpg-vault.de
 * @url https://rpg-vault.de
 *
 * @help RPGVault_DisableTouchUI.js
 * ============================================================================
 * LIZENZ / NUTZUNGSBEDINGUNGEN
 * ============================================================================
 * Dieses Plugin darf in Commercial (kommerziellen) UND Non-Commercial
 * (nicht-kommerziellen) Spielen verwendet werden.
 *
 * Die Header-Hinweise, Copyright-Angaben und Download-Verweise in dieser
 * Datei dürfen NICHT entfernt oder verändert werden.
 *
 * Dieses Plugin darf ausschließlich auf rpg-vault.de zum Download angeboten
 * werden. Ein Repost auf anderen Seiten ist nicht gestattet.
 *
 * ============================================================================
 * BESCHREIBUNG
 * ============================================================================
 * Schaltet die "Touch UI" von RPG Maker MZ ab. Dadurch verschwinden:
 *   - der Menü-Button auf der Map
 *   - die Zurück-Buttons (Cancel) und Seiten-Buttons in den Menüs
 *   - die Buttons in Auswahlfenstern, die nur für Touch gedacht sind
 *
 * Optional wird die Einstellung "Touch UI" aus dem Optionsmenue entfernt,
 * damit Spieler sie nicht wieder einschalten können.
 *
 * Hinweis: Die Touch-Eingabe selbst (Tippen/Klicken zum Laufen) wird dadurch
 * nicht gesperrt, es werden nur die Touch-UI-Elemente ausgeblendet.
 *
 * ============================================================================
 * INSTALLATION
 * ============================================================================
 * 1. Datei in den Ordner  js/plugins/  deines Projekts kopieren.
 * 2. Im Plugin-Manager (Werkzeuge > Plugin-Verwaltung) ein neues Plugin
 *    hinzufügen und "RPGVault_DisableTouchUI" auswählen.
 * 3. Status auf ON stellen und Parameter nach Wunsch einstellen.
 *
 * ============================================================================
 * PLUGIN-BEFEHLE
 * ============================================================================
 * Touch UI umschalten
 *   Schaltet das Deaktivieren der Touch UI während des Spiels an oder aus.
 *   Die Änderung greift bei der nächsten neu geöffneten Szene
 *   (z. B. beim nächsten Öffnen des Menüs oder beim Map-Wechsel).
 *
 * ============================================================================
 * Version 1.0.0 - Erste Veröffentlichung
 * ============================================================================
 *
 * @param disableTouchUI
 * @text Touch UI deaktivieren
 * @desc Ist dieser Schalter an, ist die Touch UI beim Spielstart deaktiviert.
 * @type boolean
 * @on Deaktiviert
 * @off Normal
 * @default true
 *
 * @param hideOption
 * @text Option im Menü verstecken
 * @desc Entfernt den Eintrag "Touch UI" aus dem Optionsmenue.
 * @type boolean
 * @on Verstecken
 * @off Anzeigen
 * @default true
 *
 * @command setTouchUIDisabled
 * @text Touch UI umschalten
 * @desc Aktiviert oder deaktiviert das Deaktivieren der Touch UI.
 *
 * @arg disabled
 * @text Touch UI deaktivieren
 * @desc An = Touch UI ist deaktiviert. Aus = Touch UI verhält sich normal.
 * @type boolean
 * @on Deaktiviert
 * @off Normal
 * @default true
 */

(() => {
    "use strict";

    const PLUGIN_NAME = "RPGVault_DisableTouchUI";
    const parameters = PluginManager.parameters(PLUGIN_NAME);
    const hideOption = parameters["hideOption"] !== "false";

    let touchUIDisabled = parameters["disableTouchUI"] !== "false";

    //-------------------------------------------------------------------------
    // Plugin-Befehl
    //-------------------------------------------------------------------------

    PluginManager.registerCommand(PLUGIN_NAME, "setTouchUIDisabled", args => {
        touchUIDisabled = args.disabled !== "false";
    });

    //-------------------------------------------------------------------------
    // ConfigManager
    // touchUI wird als Accessor ersetzt: Der gespeicherte Spielerwert bleibt
    // erhalten, nach außen wird aber "false" geliefert, solange das Plugin
    // die Touch UI deaktiviert.
    //-------------------------------------------------------------------------

    const descriptor = Object.getOwnPropertyDescriptor(ConfigManager, "touchUI");
    let storedTouchUI = descriptor && "value" in descriptor ? !!descriptor.value : true;

    Object.defineProperty(ConfigManager, "touchUI", {
        configurable: true,
        enumerable: true,
        get() {
            return touchUIDisabled ? false : storedTouchUI;
        },
        set(value) {
            storedTouchUI = !!value;
        }
    });

    const _ConfigManager_makeData = ConfigManager.makeData;
    ConfigManager.makeData = function() {
        const config = _ConfigManager_makeData.call(this);
        config.touchUI = storedTouchUI;
        return config;
    };

    //-------------------------------------------------------------------------
    // Window_Options
    // Entfernt den Eintrag "Touch UI" aus dem Optionsmenue.
    //-------------------------------------------------------------------------

    const _Window_Options_addGeneralOptions = Window_Options.prototype.addGeneralOptions;
    Window_Options.prototype.addGeneralOptions = function() {
        _Window_Options_addGeneralOptions.call(this);
        if (hideOption) {
            this._list = this._list.filter(command => command.symbol !== "touchUI");
        }
    };
})();

Im Forum