257 lines
13 KiB
HTML
257 lines
13 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' data: file: blob: http://localhost:* https:; connect-src 'self' http://localhost:* https: ws://localhost:*; img-src 'self' data: file: blob:; media-src 'self' data: file: blob:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:;">
|
||
<title>Porn Cinema - Gooner Training Academy</title>
|
||
<link rel="stylesheet" href="src/styles/styles.css">
|
||
<link rel="stylesheet" href="src/styles/porn-cinema.css">
|
||
<link href="https://fonts.googleapis.com/css2?family=Audiowide&display=swap" rel="stylesheet">
|
||
</head>
|
||
<body class="cinema-mode">
|
||
<!-- Loading Overlay -->
|
||
<div id="cinema-loading" class="cinema-loading">
|
||
<div class="loading-content">
|
||
<div class="loading-spinner"></div>
|
||
<h2>Loading Cinema...</h2>
|
||
<p>Preparing your video library...</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Cinema Header -->
|
||
<header class="cinema-header">
|
||
<div class="cinema-nav">
|
||
<button id="back-to-home" class="btn btn-secondary">← Back to Home</button>
|
||
<h1>🎬 Porn Cinema</h1>
|
||
<div class="cinema-controls">
|
||
<button id="theater-mode" class="btn btn-secondary" title="Theater Mode (Dim UI)">🎭</button>
|
||
<button id="fullscreen-toggle" class="btn btn-secondary" title="Fullscreen (F)">⛶</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Keyboard Shortcuts Help -->
|
||
<div class="shortcuts-help" id="shortcuts-help">
|
||
<div class="shortcuts-content">
|
||
<h3>🎹 One-Handed Controls</h3>
|
||
<div class="shortcuts-grid">
|
||
<div class="shortcut-item"><kbd>Space</kbd> Play/Pause</div>
|
||
<div class="shortcut-item"><kbd>←</kbd><kbd>→</kbd> Seek ±10s</div>
|
||
<div class="shortcut-item"><kbd>↑</kbd><kbd>↓</kbd> Volume ±10%</div>
|
||
<div class="shortcut-item"><kbd>F</kbd> Fullscreen</div>
|
||
<div class="shortcut-item"><kbd>M</kbd> Mute/Unmute</div>
|
||
<div class="shortcut-item"><kbd>1-4</kbd> Quality</div>
|
||
<div class="shortcut-item"><kbd>Enter</kbd> Add to Playlist</div>
|
||
<div class="shortcut-item"><kbd>N</kbd> Next Video</div>
|
||
<div class="shortcut-item"><kbd>P</kbd> Previous Video</div>
|
||
<div class="shortcut-item"><kbd>S</kbd> Shuffle Playlist</div>
|
||
<div class="shortcut-item"><kbd>Escape</kbd> Exit Fullscreen</div>
|
||
<div class="shortcut-item"><kbd>?</kbd> Toggle This Help</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<!-- Main Cinema Content -->
|
||
<main class="cinema-main">
|
||
<!-- Video Player Section -->
|
||
<section class="video-player-section">
|
||
<div class="video-container" id="video-container">
|
||
<video id="main-video-player" class="main-video" preload="metadata">
|
||
<source id="video-source" src="" type="video/mp4">
|
||
Your browser does not support the video tag.
|
||
</video>
|
||
|
||
<!-- Video Overlay Controls -->
|
||
<div class="video-overlay" id="video-overlay">
|
||
<div class="video-title" id="video-title">Select a video to begin</div>
|
||
<div class="video-info" id="video-info"></div>
|
||
|
||
<!-- Play Button Overlay -->
|
||
<div class="play-overlay" id="play-overlay">
|
||
<button class="play-button-large" id="play-button-large">▶</button>
|
||
</div>
|
||
|
||
<!-- Loading Spinner -->
|
||
<div class="video-loading" id="video-loading" style="display: none;">
|
||
<div class="loading-spinner"></div>
|
||
<p>Loading video...</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Custom Video Controls -->
|
||
<div class="video-controls" id="video-controls">
|
||
<div class="progress-container">
|
||
<div class="progress-bar" id="progress-bar">
|
||
<div class="progress-filled" id="progress-filled"></div>
|
||
<div class="progress-thumb" id="progress-thumb"></div>
|
||
</div>
|
||
<div class="time-display">
|
||
<span id="current-time">0:00</span>
|
||
<span class="time-separator">/</span>
|
||
<span id="total-time">0:00</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="controls-row">
|
||
<div class="controls-left">
|
||
<button id="play-pause-btn" class="control-btn">▶</button>
|
||
<button id="prev-video-btn" class="control-btn" title="Previous Video (P)">⏮</button>
|
||
<button id="next-video-btn" class="control-btn" title="Next Video (N)">⏭</button>
|
||
<div class="volume-control">
|
||
<button id="mute-btn" class="control-btn" title="Mute (M)">🔊</button>
|
||
<input type="range" id="volume-slider" class="volume-slider" min="0" max="100" value="70">
|
||
<span id="volume-percentage">70%</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="controls-center">
|
||
<div class="quality-selector">
|
||
<select id="quality-select" class="quality-dropdown">
|
||
<option value="auto">Auto Quality</option>
|
||
<option value="1080p">1080p (1)</option>
|
||
<option value="720p">720p (2)</option>
|
||
<option value="480p">480p (3)</option>
|
||
<option value="360p">360p (4)</option>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="speed-control">
|
||
<select id="speed-select" class="speed-dropdown">
|
||
<option value="0.5">0.5x</option>
|
||
<option value="0.75">0.75x</option>
|
||
<option value="1" selected>1x</option>
|
||
<option value="1.25">1.25x</option>
|
||
<option value="1.5">1.5x</option>
|
||
<option value="2">2x</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="controls-right">
|
||
<button id="add-to-playlist-btn" class="control-btn" title="Add to Playlist (Enter)">➕</button>
|
||
<button id="theater-mode-btn" class="control-btn" title="Theater Mode">🎭</button>
|
||
<button id="fullscreen-btn" class="control-btn" title="Fullscreen (F)">⛶</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Playlist Section -->
|
||
<section class="playlist-section" id="playlist-section">
|
||
<div class="playlist-header">
|
||
<h3>📝 Current Playlist</h3>
|
||
<div class="playlist-controls">
|
||
<button id="shuffle-playlist" class="btn btn-mini" title="Shuffle (S)">🔀</button>
|
||
<button id="clear-playlist" class="btn btn-mini btn-danger">🗑️ Clear</button>
|
||
<button id="save-playlist" class="btn btn-mini">💾 Save</button>
|
||
<button id="load-playlist" class="btn btn-mini">📁 Load</button>
|
||
</div>
|
||
</div>
|
||
<div class="playlist-content" id="playlist-content">
|
||
<div class="playlist-empty">
|
||
<p>Playlist is empty. Add videos by clicking ➕ or pressing Enter while a video is selected.</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Video Library Section -->
|
||
<section class="video-library-section">
|
||
<div class="library-header">
|
||
<h3>📁 Video Library</h3>
|
||
<div class="library-controls">
|
||
<div class="view-toggle">
|
||
<button id="grid-view-btn" class="view-btn active" title="Grid View">⊞</button>
|
||
<button id="list-view-btn" class="view-btn" title="List View">☰</button>
|
||
</div>
|
||
<div class="sort-controls">
|
||
<select id="sort-select" class="sort-dropdown">
|
||
<option value="name">Sort by Name</option>
|
||
<option value="date">Sort by Date</option>
|
||
<option value="duration">Sort by Duration</option>
|
||
<option value="size">Sort by Size</option>
|
||
</select>
|
||
<button id="sort-direction" class="btn btn-mini" title="Sort Direction">↕️</button>
|
||
</div>
|
||
<div class="search-controls">
|
||
<input type="text" id="library-search" class="search-input" placeholder="Search videos...">
|
||
<button id="refresh-library" class="btn btn-mini" title="Refresh Library">🔄</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="library-content" id="library-content">
|
||
<div class="library-loading">
|
||
<div class="loading-spinner"></div>
|
||
<p>Loading video library...</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<!-- Scripts -->
|
||
<script src="src/data/gameDataManager.js"></script>
|
||
<script src="src/utils/desktop-file-manager.js"></script>
|
||
<script src="src/features/media/videoLibrary.js"></script>
|
||
<script src="src/features/media/pornCinema.js"></script>
|
||
|
||
<script>
|
||
// Initialize cinema when page loads
|
||
document.addEventListener('DOMContentLoaded', async function() {
|
||
console.log('🎬 Initializing Porn Cinema...');
|
||
|
||
// Initialize desktop file manager if in Electron environment
|
||
if (window.electronAPI && typeof DesktopFileManager !== 'undefined') {
|
||
// Create a minimal data manager for the cinema (since we don't have the full game instance)
|
||
const minimalDataManager = {
|
||
get: (key) => {
|
||
try {
|
||
return JSON.parse(localStorage.getItem(key));
|
||
} catch {
|
||
return null;
|
||
}
|
||
},
|
||
set: (key, value) => {
|
||
localStorage.setItem(key, JSON.stringify(value));
|
||
}
|
||
};
|
||
|
||
window.desktopFileManager = new DesktopFileManager(minimalDataManager);
|
||
console.log('🖥️ Desktop File Manager initialized for porn cinema');
|
||
|
||
// Wait a moment for the desktop file manager to fully initialize
|
||
// The init() method is async and sets up video directories
|
||
await new Promise(resolve => setTimeout(resolve, 500));
|
||
|
||
} else if (!window.electronAPI) {
|
||
console.warn('⚠️ Running in browser mode - video management limited');
|
||
}
|
||
|
||
// Initialize the cinema after desktop file manager is ready
|
||
window.pornCinema = new PornCinema();
|
||
await window.pornCinema.initialize();
|
||
|
||
// Hide loading overlay
|
||
setTimeout(() => {
|
||
document.getElementById('cinema-loading').style.display = 'none';
|
||
}, 1000);
|
||
});
|
||
|
||
// Back to home functionality
|
||
document.getElementById('back-to-home').addEventListener('click', () => {
|
||
if (confirm('Return to home screen? Current playback will stop.')) {
|
||
window.location.href = 'index.html';
|
||
}
|
||
});
|
||
|
||
// Keyboard shortcut to toggle help
|
||
document.addEventListener('keydown', (e) => {
|
||
if (e.key === '?' || (e.shiftKey && e.key === '/')) {
|
||
const help = document.getElementById('shortcuts-help');
|
||
help.style.display = help.style.display === 'none' ? 'block' : 'none';
|
||
}
|
||
});
|
||
</script>
|
||
</body>
|
||
</html> |