/** * Zentrale Icon-Verwaltung – XXX The Game * * Typen: * emoji – Standard-Emoji oder Unicode-Zeichen (value: string) * symbol – Unicode-Symbol (value: string) * image – Pfad zu einer Bilddatei (value: string) * compound – Doppel-Icon: base-Icon + kleines Overlay-Icon (bottom-right) * Felder: base { type, value }, overlay { type, value } * base kann emoji, symbol oder image sein. */ window.ICONS = { // ── Navigation / Sidebar ────────────────────────────────────────────── HOME: { type: 'emoji', value: '🏠' }, VANILLA: { type: 'emoji', value: '⚪' }, BDSM: { type: 'emoji', value: '⛓️' }, CHASTITY: { type: 'emoji', value: '🔒' }, // ── Aktionen ────────────────────────────────────────────────────────── PLAY_NEW: { type: 'emoji', value: '🆕' }, PLAY_ACTIVE: { type: 'emoji', value: '▶️' }, ACTIVE_LOCK: { type: 'emoji', value: '▶️' }, WAITING: { type: 'emoji', value: '⏳' }, CHECK: { type: 'emoji', value: '✅' }, DISCOVER: { type: 'emoji', value: '🗺️' }, ARROW: { type: 'emoji', value: '▶️' }, REFRESH: { type: 'emoji', value: '🔄' }, // Erneuern / Neu laden START: { type: 'emoji', value: '🚀' }, // Starten / Los CELEBRATE: { type: 'emoji', value: '🎉' }, // Erfolg / Abschluss // ── UI-Symbole ──────────────────────────────────────────────────────── CLOSE: { type: 'symbol', value: '✕' }, // Schließen / Ablehnen / Löschen CONFIRM: { type: 'symbol', value: '✓' }, // Bestätigen / Abschließen / Annehmen LIKE: { type: 'symbol', value: '♥' }, // Like-Button AVATAR: { type: 'symbol', value: '◉' }, // Avatar-Platzhalter (kein Bild) ERROR: { type: 'emoji', value: '❌' }, // Fehlerzustand TIMER: { type: 'emoji', value: '⏱️' }, // Zeitanzeige / Stoppuhr LIGHTNING: { type: 'emoji', value: '⚡' }, // Aktion (z. B. Zeit entfernen) EMOJI_PICKER: { type: 'emoji', value: '😊' }, // Emoji-Picker öffnen REMOVE: { type: 'symbol', value: '⊗' }, // Eintrag/Spiel entfernen EDIT: { type: 'symbol', value: '✎' }, // Bearbeiten-Button TRASH: { type: 'emoji', value: '🗑' }, // Löschen-Button WARNING: { type: 'emoji', value: '⚠️' }, // Warnung / Hinweis REPORT: { type: 'symbol', value: '⚑' }, // Melden-Button (Flag) VISIBILITY: { type: 'emoji', value: '👁' }, // Sichtbar / Details sichtbar THUMBS_UP: { type: 'emoji', value: '👍' }, // Upvote / Zustimmung THUMBS_DOWN: { type: 'emoji', value: '👎' }, // Downvote / Ablehnung ARROW_UP: { type: 'symbol', value: '⬆' }, // Sortierung aufsteigend ARROW_DOWN: { type: 'symbol', value: '⬇' }, // Sortierung absteigend NAV_PREV: { type: 'symbol', value: '←' }, // Zurück / Vorheriges Bild NAV_NEXT: { type: 'symbol', value: '→' }, // Weiter / Nächstes Bild CAROUSEL_PREV: { type: 'symbol', value: '‹' }, // Karussell zurück CAROUSEL_NEXT: { type: 'symbol', value: '›' }, // Karussell weiter TIP: { type: 'emoji', value: '💡' }, // Hinweis / Tipp DOT_RED: { type: 'emoji', value: '🔴' }, // Status-Indikator rot COMING_SOON: { type: 'emoji', value: '🚧' }, // In Entwicklung / Demnächst // ── Chastity Game ───────────────────────────────────────────────────── NEW_LOCK: { type: 'emoji', value: '🆕' }, LOCK: { type: 'emoji', value: '🔒' }, UNLOCK: { type: 'emoji', value: '🔓' }, // Entsperren LOCKED_SECURE: { type: 'emoji', value: '🔐' }, // Sicher gesperrt (mit Schlüssel) KEY: { type: 'emoji', value: '🔑' }, HISTORY: { type: 'emoji', value: '🔙' }, VOTES: { type: 'emoji', value: '🗳️' }, TRUST: { type: 'emoji', value: '🤝' }, // Trust-Lock EMERGENCY: { type: 'emoji', value: '🆘' }, // Notfall-Entsperrung HYGIENE: { type: 'emoji', value: '🚿' }, // Hygiene-Öffnung FROZEN: { type: 'emoji', value: '❄️' }, // Eingefroren (zeitlich) FROZEN_HARD: { type: 'emoji', value: '🧊' }, // Eingefroren (unlimitiert) UNFREEZE: { type: 'emoji', value: '🌊' }, // Aufgetaut / Unfreeze CODE_DIGITS: { type: 'emoji', value: '🔢' }, // Zahlenkombination / PIN-Länge // ── CardLock ────────────────────────────────────────────────────────── CARD: { type: 'emoji', value: '🃏' }, // Karte (standalone) DICE: { type: 'emoji', value: '🎲' }, // Zufällig / Würfeln // ── TimeLock / Spinning Wheel ────────────────────────────────────────── SPINNING_WHEEL: { type: 'emoji', value: '🎡' }, // Glücksrad drehen TASK_ACTIVE: { type: 'emoji', value: '🎯' }, // Aktuelle Aufgabe CLOCK: { type: 'emoji', value: '🕐' }, // Uhr / Zeitpunkt // ── Social ──────────────────────────────────────────────────────────── FEED: { type: 'emoji', value: '📰' }, SEARCH: { type: 'emoji', value: '🔍' }, FRIENDS: { type: 'emoji', value: '❤️' }, MESSAGES: { type: 'emoji', value: '💬' }, NOTIFICATIONS: { type: 'emoji', value: '🔔' }, GROUPS: { type: 'emoji', value: '👥' }, INVITATIONS: { type: 'emoji', value: '✨' }, SETTINGS: { type: 'emoji', value: '⚙️' }, LOGOUT: { type: 'emoji', value: '⏏️' }, PROFILE: { type: 'emoji', value: '👤' }, HELP: { type: 'emoji', value: '❓' }, CONTACT: { type: 'emoji', value: '✉️' }, // Kontakt / E-Mail // ── Medien / Dateien ────────────────────────────────────────────────── PHOTO: { type: 'emoji', value: '📷' }, // Foto / Kamera FILE_UPLOAD: { type: 'emoji', value: '📁' }, // Datei auswählen / Upload TEMPLATE: { type: 'emoji', value: '📋' }, // Vorlage / Template DOCUMENT: { type: 'emoji', value: '📄' }, // Dokument / Impressum GUIDE: { type: 'emoji', value: '📖' }, // Anleitung / Hilfeseite STATS: { type: 'emoji', value: '📊' }, // Statistik / Umfrage-Ergebnis PACKAGE: { type: 'emoji', value: '📦' }, // Paket / Einladung MAILBOX: { type: 'emoji', value: '📬' }, // Posteingang (Admin) // ── Abo / Premium ───────────────────────────────────────────────────── PREMIUM: { type: 'emoji', value: '⭐' }, // Abonnement / Premium TROPHY: { type: 'emoji', value: '🏆' }, // Auszeichnung / Erfolg PAYMENT: { type: 'emoji', value: '💳' }, // Zahlung / Abonnement // ── TTLock / Technik ────────────────────────────────────────────────── MOBILE: { type: 'emoji', value: '📱' }, // TTLock-App / Mobilgerät CONNECTION: { type: 'emoji', value: '🔌' }, // Verbindung / Integration GAMEPAD: { type: 'emoji', value: '🕹️' }, // Spielsteuerung SHIELD: { type: 'emoji', value: '🛡️' }, // Sicherheit / Datenschutz ADMIN_TOOLS: { type: 'emoji', value: '🔧' }, // Admin / Werkzeuge // ── Aufgaben / Items ────────────────────────────────────────────────── TOYS: { type: 'emoji', value: '➰' }, // ── Spielhistorie – Spieltypen ──────────────────────────────────────── GAME_BDSM: { type: 'emoji', value: '⛓️' }, GAME_VANILLA: { type: 'emoji', value: '❤️' }, // Doppel-Icons: großes Basis-Icon + kleines 🔒-Overlay GAME_CARDLOCK: { type: 'compound', base: { type: 'image', value: '/img/card.png' }, overlay: { type: 'emoji', value: '🔒' } }, GAME_TIMELOCK: { type: 'compound', base: { type: 'emoji', value: '⏰' }, overlay: { type: 'emoji', value: '🔒' } }, // ── Spielhistorie – Rollen-Badges ───────────────────────────────────── ROLE_KEYHOLDER: { type: 'emoji', value: '🔑' }, ROLE_LOCKEE: { type: 'emoji', value: '🔒' }, }; // ── Hilfsfunktionen ─────────────────────────────────────────────────────────── /** Gibt den rohen Wert-String zurück (nur für einfache Icons; '' für compound). */ window.IC = function(key) { const icon = window.ICONS[key]; return (icon && icon.type !== 'compound') ? (icon.value || '') : ''; }; /** * Gibt ein fertiges HTML-Fragment zurück, das das Icon darstellt. * * @param {string} key – Schlüssel aus window.ICONS * @param {number} [size] – Basisgröße in rem (Standard: 2.7) * @returns {string} HTML-String */ window.IChtml = function(key, size) { const icon = window.ICONS[key]; if (!icon) return ''; return _iconToHtml(icon, size != null ? size : 2.7); }; function _iconToHtml(icon, size) { switch (icon.type) { case 'emoji': case 'symbol': return `${icon.value}`; case 'image': return ``; case 'compound': { const baseHtml = _compoundBase(icon.base, size); const overlayHtml = _compoundOverlay(icon.overlay, size * 0.48); return `${baseHtml}${overlayHtml}`; } default: return ''; } } function _compoundBase(base, size) { if (base.type === 'image') { return ``; } return `${base.value}`; } function _compoundOverlay(overlay, size) { return `${overlay.value}`; }