Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

User:SunKeeper/common.js: Difference between revisions

From Sun Keeperverse Wiki
debug script to check for running
Tag: Replaced
No edit summary
Line 1: Line 1:
// DEBUG: SK user JS test
/* SK navigation – keyboard controls (WASD + arrows + Q/E for Up/Down) */


alert('SunKeeper user JS loaded.');
(function () {
  'use strict';


document.addEventListener('keydown', function (e) {
  function isTypingTarget(el) {
  alert('Key pressed: ' + e.key);
    if (!el) return false;
});
    var tag = (el.tagName || '').toLowerCase();
    if (tag === 'input' || tag === 'textarea' || tag === 'select') return true;
    if (el.isContentEditable) return true;
    return false;
  }
 
  function getNavLink(selector) {
    var btn = document.querySelector(selector);
    if (!btn) return null;
    var a = btn.querySelector('a');
    return a || null;
  }
 
  function navigate(selector) {
    var link = getNavLink(selector);
    if (link && link.href) {
      window.location.href = link.href;
      return true;
    }
    return false;
  }
 
  document.addEventListener('keydown', function (e) {
    if (isTypingTarget(e.target)) return;
 
    var key = e.key.toLowerCase();
 
    var handled = false;
 
    switch (key) {
      case 'w':
      case 'arrowup':
        handled = navigate('.nav-link-north');
        break;
 
      case 's':
      case 'arrowdown':
        handled = navigate('.nav-link-south');
        break;
 
      case 'a':
      case 'arrowleft':
        handled = navigate('.nav-link-west');
        break;
 
      case 'd':
      case 'arrowright':
        handled = navigate('.nav-link-east');
        break;
 
      case 'q':
      case 'pageup':
        handled = navigate('.nav-link-up');
        break;
 
      case 'e':
      case 'pagedown':
        handled = navigate('.nav-link-down');
        break;
    }
 
    if (handled) {
      e.preventDefault();
    }
  });
})();

Revision as of 22:38, 3 December 2025

/* SK navigation – keyboard controls (WASD + arrows + Q/E for Up/Down) */

(function () {
  'use strict';

  function isTypingTarget(el) {
    if (!el) return false;
    var tag = (el.tagName || '').toLowerCase();
    if (tag === 'input' || tag === 'textarea' || tag === 'select') return true;
    if (el.isContentEditable) return true;
    return false;
  }

  function getNavLink(selector) {
    var btn = document.querySelector(selector);
    if (!btn) return null;
    var a = btn.querySelector('a');
    return a || null;
  }

  function navigate(selector) {
    var link = getNavLink(selector);
    if (link && link.href) {
      window.location.href = link.href;
      return true;
    }
    return false;
  }

  document.addEventListener('keydown', function (e) {
    if (isTypingTarget(e.target)) return;

    var key = e.key.toLowerCase();

    var handled = false;

    switch (key) {
      case 'w':
      case 'arrowup':
        handled = navigate('.nav-link-north');
        break;

      case 's':
      case 'arrowdown':
        handled = navigate('.nav-link-south');
        break;

      case 'a':
      case 'arrowleft':
        handled = navigate('.nav-link-west');
        break;

      case 'd':
      case 'arrowright':
        handled = navigate('.nav-link-east');
        break;

      case 'q':
      case 'pageup':
        handled = navigate('.nav-link-up');
        break;

      case 'e':
      case 'pagedown':
        handled = navigate('.nav-link-down');
        break;
    }

    if (handled) {
      e.preventDefault();
    }
  });
})();