dee-game / index.html
zehyr's picture
Add 3 files
856f3a8 verified
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ren'Py Editor Simulator</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap');
body {
font-family: 'Roboto', sans-serif;
background-color: #1a1a1a;
color: #e0e0e0;
}
.renpy-container {
background-color: #2d2d2d;
border-radius: 8px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.game-window {
background-color: #121212;
border: 2px solid #444;
border-radius: 4px;
position: relative;
overflow: hidden;
}
.text-box {
background: rgba(40, 40, 40, 0.9);
border-top: 3px solid #4a6ea9;
position: absolute;
bottom: 0;
width: 100%;
padding: 15px;
box-sizing: border-box;
}
.character {
position: absolute;
bottom: 120px;
max-height: 60%;
filter: drop-shadow(0 5px 15px rgba(0,0,0,0.5));
transition: all 0.3s ease;
}
.character-left {
left: 10%;
}
.character-right {
right: 10%;
}
.choice-btn {
background: rgba(74, 110, 169, 0.2);
border-left: 4px solid #4a6ea9;
transition: all 0.2s ease;
}
.choice-btn:hover {
background: rgba(74, 110, 169, 0.4);
transform: translateX(5px);
}
.prompt-area {
background: rgba(30, 30, 30, 0.8);
border: 1px solid #444;
border-radius: 6px;
}
.tab-btn {
border-bottom: 3px solid transparent;
transition: all 0.2s ease;
}
.tab-btn.active {
border-bottom-color: #4a6ea9;
color: #4a6ea9;
}
.code-editor {
font-family: 'Courier New', monospace;
background: #1e1e1e;
color: #d4d4d4;
}
.loading-bar {
height: 3px;
background: linear-gradient(90deg, #4a6ea9, #6a8bc9);
animation: loading 2s infinite;
}
@keyframes loading {
0% { width: 0%; left: 0; }
50% { width: 100%; left: 0; }
100% { width: 0%; left: 100%; }
}
.file-explorer {
border-right: 1px solid #444;
}
.file-item {
padding: 6px 12px;
border-radius: 4px;
cursor: pointer;
}
.file-item:hover {
background: rgba(74, 110, 169, 0.2);
}
.file-item.active {
background: rgba(74, 110, 169, 0.4);
}
</style>
</head>
<body class="h-screen flex flex-col">
<!-- Top Bar -->
<div class="bg-gray-900 text-gray-300 p-3 flex justify-between items-center border-b border-gray-700">
<div class="flex items-center space-x-3">
<i class="fas fa-gamepad text-blue-400"></i>
<h1 class="font-bold">Ren'Py Editor Simulator</h1>
</div>
<div class="flex space-x-4">
<button class="px-3 py-1 bg-blue-600 hover:bg-blue-700 rounded text-sm">
<i class="fas fa-play mr-1"></i> Run
</button>
<button class="px-3 py-1 bg-gray-700 hover:bg-gray-600 rounded text-sm">
<i class="fas fa-save mr-1"></i> Save
</button>
</div>
</div>
<!-- Main Content -->
<div class="flex-1 flex overflow-hidden">
<!-- Left Sidebar - File Explorer -->
<div class="file-explorer w-64 bg-gray-800 text-gray-300 flex flex-col">
<div class="p-3 border-b border-gray-700 flex justify-between items-center">
<h3 class="font-medium">Project Files</h3>
<button class="text-gray-400 hover:text-white">
<i class="fas fa-plus"></i>
</button>
</div>
<div class="flex-1 overflow-y-auto p-2">
<div class="file-item active mb-1">
<i class="fas fa-folder-open text-yellow-400 mr-2"></i> game/
</div>
<div class="file-item ml-4">
<i class="fas fa-file-code text-blue-300 mr-2"></i> script.rpy
</div>
<div class="file-item ml-4">
<i class="fas fa-file-code text-blue-300 mr-2"></i> options.rpy
</div>
<div class="file-item ml-4">
<i class="fas fa-file-code text-blue-300 mr-2"></i> screens.rpy
</div>
<div class="file-item mb-1">
<i class="fas fa-folder text-yellow-400 mr-2"></i> images/
</div>
<div class="file-item mb-1">
<i class="fas fa-folder text-yellow-400 mr-2"></i> audio/
</div>
</div>
<div class="p-3 border-t border-gray-700">
<button class="w-full bg-blue-600 hover:bg-blue-700 py-2 rounded text-sm">
<i class="fas fa-upload mr-2"></i> Import Ren'Py Game
</button>
</div>
</div>
<!-- Main Editor Area -->
<div class="flex-1 flex flex-col overflow-hidden">
<!-- Tabs -->
<div class="flex border-b border-gray-700 bg-gray-800">
<button class="tab-btn px-4 py-2 text-sm active">
<i class="fas fa-code mr-2"></i> script.rpy
</button>
<button class="tab-btn px-4 py-2 text-sm">
<i class="fas fa-cog mr-2"></i> options.rpy
</button>
<button class="tab-btn px-4 py-2 text-sm">
<i class="fas fa-tv mr-2"></i> screens.rpy
</button>
<button class="tab-btn px-4 py-2 text-sm">
<i class="fas fa-magic mr-2"></i> AI Generator
</button>
</div>
<!-- Editor Content -->
<div class="flex-1 flex overflow-hidden">
<!-- Code Editor -->
<div class="w-1/2 flex flex-col border-r border-gray-700">
<div class="p-2 bg-gray-800 text-sm text-gray-400 border-b border-gray-700">
script.rpy - Editing
</div>
<div class="flex-1 overflow-auto code-editor p-4">
<div class="text-blue-400"># This is a sample Ren'Py script</div>
<div class="text-blue-400"># You can edit it or generate new scenes with AI</div>
<br>
<div class="text-purple-400">label start:</div>
<div class="ml-4 text-gray-300"> scene bg room with fade</div>
<div class="ml-4 text-gray-300"> show alice happy at left</div>
<div class="ml-4 text-gray-300"> show bob neutral at right</div>
<br>
<div class="ml-4 text-yellow-300"> alice "Hi Bob! How are you today?"</div>
<div class="ml-4 text-yellow-300"> bob "I'm good, thanks for asking."</div>
<br>
<div class="ml-4 text-gray-300"> menu:</div>
<div class="ml-8 text-cyan-300"> "Ask about his day":</div>
<div class="ml-12 text-yellow-300"> alice "How was your day?"</div>
<div class="ml-12 text-yellow-300"> bob "It was pretty good, just busy with work."</div>
<div class="ml-8 text-cyan-300"> "Invite him for coffee":</div>
<div class="ml-12 text-yellow-300"> alice "Want to grab some coffee later?"</div>
<div class="ml-12 text-yellow-300"> bob "Sure, that sounds great!"</div>
</div>
<!-- AI Prompt Area -->
<div class="p-4 border-t border-gray-700">
<div class="text-sm text-gray-400 mb-2">AI Scene Generator</div>
<div class="prompt-area p-3 mb-2">
<textarea class="w-full bg-transparent outline-none resize-none" rows="3" placeholder="Describe the scene you want to generate (e.g. 'Add a scene in the park where Alice confesses her feelings to Bob')"></textarea>
</div>
<div class="flex justify-between">
<div class="flex space-x-2">
<button class="px-3 py-1 bg-gray-700 hover:bg-gray-600 rounded text-sm">
<i class="fas fa-bolt mr-1"></i> Quick Generate
</button>
<button class="px-3 py-1 bg-gray-700 hover:bg-gray-600 rounded text-sm">
<i class="fas fa-sliders-h mr-1"></i> Advanced
</button>
</div>
<button class="px-3 py-1 bg-blue-600 hover:bg-blue-700 rounded text-sm">
<i class="fas fa-magic mr-1"></i> Generate Scene
</button>
</div>
</div>
</div>
<!-- Game Preview -->
<div class="w-1/2 flex flex-col">
<div class="p-2 bg-gray-800 text-sm text-gray-400 border-b border-gray-700 flex justify-between">
<div>Game Preview</div>
<div class="flex space-x-2">
<button class="text-gray-400 hover:text-white">
<i class="fas fa-expand"></i>
</button>
<button class="text-gray-400 hover:text-white">
<i class="fas fa-cog"></i>
</button>
</div>
</div>
<div class="flex-1 relative game-window">
<!-- Game Background -->
<div class="absolute inset-0 bg-cover bg-center" style="background-image: url('https://i.imgur.com/JjQZQ9j.jpg');"></div>
<!-- Characters -->
<img class="character character-left" src="https://i.imgur.com/5X5X5X5.png" alt="Alice" style="display: none;">
<img class="character character-right" src="https://i.imgur.com/6Y6Y6Y6.png" alt="Bob" style="display: none;">
<!-- Text Box -->
<div class="text-box">
<div class="text-blue-400 font-medium mb-2">Alice</div>
<div class="text-gray-200 mb-4">Hi Bob! How are you today?</div>
<!-- Choices -->
<div class="space-y-2">
<button class="choice-btn w-full text-left p-2 rounded text-sm">
Ask about his day
</button>
<button class="choice-btn w-full text-left p-2 rounded text-sm">
Invite him for coffee
</button>
</div>
</div>
</div>
<!-- Console Output -->
<div class="p-2 bg-gray-900 text-xs text-gray-400 border-t border-gray-700 h-24 overflow-y-auto">
<div class="text-green-400">> Game initialized</div>
<div class="text-blue-400">> Loading script.rpy</div>
<div class="text-blue-400">> Found 2 characters and 1 background</div>
<div class="text-gray-400">> Ready to play or generate new scenes</div>
</div>
</div>
</div>
</div>
</div>
<!-- Status Bar -->
<div class="bg-gray-900 text-gray-400 text-xs p-1 flex justify-between border-t border-gray-700">
<div class="flex space-x-4">
<div>Ren'Py 8.1.3</div>
<div>Python 3.9</div>
</div>
<div class="flex space-x-4">
<div>UTF-8</div>
<div>Windows (CRLF)</div>
</div>
</div>
<!-- Import Game Modal -->
<div id="import-modal" class="fixed inset-0 bg-black bg-opacity-70 hidden items-center justify-center z-50">
<div class="bg-gray-800 rounded-lg w-full max-w-md p-6">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-medium">Import Ren'Py Game</h3>
<button onclick="document.getElementById('import-modal').classList.add('hidden')" class="text-gray-400 hover:text-white">
<i class="fas fa-times"></i>
</button>
</div>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium mb-1">Import from ZIP</label>
<div class="border-2 border-dashed border-gray-600 rounded-lg p-8 text-center cursor-pointer hover:border-blue-500 transition">
<i class="fas fa-file-archive text-3xl text-gray-500 mb-2"></i>
<p class="text-sm text-gray-400">Drag & drop your Ren'Py game ZIP file here</p>
<p class="text-xs text-gray-500 mt-2">or click to browse files</p>
</div>
</div>
<div class="border-t border-gray-700 pt-4">
<label class="block text-sm font-medium mb-1">Import from URL</label>
<div class="flex">
<input type="text" class="flex-1 bg-gray-700 border border-gray-600 rounded-l px-3 py-2 text-sm outline-none focus:border-blue-500" placeholder="https://example.com/game.zip">
<button class="bg-blue-600 hover:bg-blue-700 px-4 rounded-r text-sm">
Fetch
</button>
</div>
<p class="text-xs text-gray-500 mt-1">Supports Itch.io, GitHub, and direct download links</p>
</div>
<div class="pt-2">
<button class="w-full bg-blue-600 hover:bg-blue-700 py-2 rounded text-sm">
<i class="fas fa-download mr-2"></i> Import Game
</button>
</div>
</div>
</div>
</div>
<script>
// Toggle tabs
document.querySelectorAll('.tab-btn').forEach(btn => {
btn.addEventListener('click', () => {
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
});
});
// Simulate game choice selection
document.querySelectorAll('.choice-btn').forEach(btn => {
btn.addEventListener('click', function() {
// Show loading state
const loadingBar = document.createElement('div');
loadingBar.className = 'loading-bar absolute bottom-0 left-0';
this.appendChild(loadingBar);
// Simulate scene transition
setTimeout(() => {
// Update game preview with new scene
const gameWindow = document.querySelector('.game-window');
gameWindow.style.backgroundImage = "url('https://i.imgur.com/K9QkQkQ.jpg')";
// Show different character
document.querySelector('.character-left').style.display = 'block';
document.querySelector('.character-right').style.display = 'none';
// Update dialogue
document.querySelector('.text-box div:nth-child(1)').textContent = "Bob";
document.querySelector('.text-box div:nth-child(2)').textContent = "It was pretty good, just busy with work.";
// Remove choices
document.querySelector('.text-box div:nth-child(3)').innerHTML = '';
// Add continue button
const continueBtn = document.createElement('button');
continueBtn.className = 'mt-2 px-3 py-1 bg-blue-600 hover:bg-blue-700 rounded text-sm float-right';
continueBtn.innerHTML = 'Continue <i class="fas fa-arrow-right ml-1"></i>';
document.querySelector('.text-box').appendChild(continueBtn);
// Continue button action
continueBtn.addEventListener('click', () => {
// Reset to initial state
gameWindow.style.backgroundImage = "url('https://i.imgur.com/JjQZQ9j.jpg')";
document.querySelector('.character-left').style.display = 'none';
document.querySelector('.character-right').style.display = 'block';
document.querySelector('.text-box div:nth-child(1)').textContent = "Alice";
document.querySelector('.text-box div:nth-child(2)').textContent = "Hi Bob! How are you today?";
// Restore choices
const choicesHTML = `
<div class="space-y-2">
<button class="choice-btn w-full text-left p-2 rounded text-sm">
Ask about his day
</button>
<button class="choice-btn w-full text-left p-2 rounded text-sm">
Invite him for coffee
</button>
</div>
`;
document.querySelector('.text-box div:nth-child(3)').innerHTML = choicesHTML;
continueBtn.remove();
// Re-attach event listeners to new choice buttons
document.querySelectorAll('.choice-btn').forEach(btn => {
btn.addEventListener('click', choiceBtnHandler);
});
});
}, 800);
});
});
// Show import modal
document.querySelectorAll('[class*="fa-upload"]').forEach(btn => {
btn.addEventListener('click', () => {
document.getElementById('import-modal').classList.remove('hidden');
});
});
// Simulate AI generation
document.querySelector('[class*="fa-magic"]').addEventListener('click', function() {
const prompt = document.querySelector('.prompt-area textarea').value;
if (!prompt) return;
// Show loading state
const originalText = this.innerHTML;
this.innerHTML = '<i class="fas fa-spinner fa-spin mr-1"></i> Generating...';
this.classList.add('opacity-75');
// Simulate API call
setTimeout(() => {
// Add generated code to editor
const codeEditor = document.querySelector('.code-editor');
const newCode = `
<div class="text-purple-400">label park_scene:</div>
<div class="ml-4 text-gray-300"> scene bg park with fade</div>
<div class="ml-4 text-gray-300"> show alice nervous at left</div>
<div class="ml-4 text-gray-300"> show bob surprised at right</div>
<br>
<div class="ml-4 text-yellow-300"> alice "Bob, there's something I need to tell you..."</div>
<div class="ml-4 text-yellow-300"> bob "What is it, Alice? You seem nervous."</div>
<div class="ml-4 text-yellow-300"> alice "I... I think I have feelings for you."</div>
<br>
<div class="ml-4 text-gray-300"> menu:</div>
<div class="ml-8 text-cyan-300"> "Reciprocate her feelings":</div>
<div class="ml-12 text-yellow-300"> bob "I feel the same way!"</div>
<div class="ml-12 text-yellow-300"> alice happy "Really? I'm so happy!"</div>
<div class="ml-8 text-cyan-300"> "Let her down gently":</div>
<div class="ml-12 text-yellow-300"> bob "I'm flattered, but I think we're better as friends."</div>
<div class="ml-12 text-yellow-300"> alice sad "Oh... I understand."</div>
`;
codeEditor.innerHTML += newCode;
// Update console
const consoleOutput = document.querySelector('.console-output');
consoleOutput.innerHTML += `
<div class="text-green-400">> Generated new scene from prompt: "${prompt}"</div>
<div class="text-blue-400">> Added label "park_scene" to script.rpy</div>
`;
consoleOutput.scrollTop = consoleOutput.scrollHeight;
// Reset button
this.innerHTML = originalText;
this.classList.remove('opacity-75');
// Show success message
const successMsg = document.createElement('div');
successMsg.className = 'fixed bottom-4 right-4 bg-green-600 text-white px-4 py-2 rounded shadow-lg';
successMsg.innerHTML = '<i class="fas fa-check-circle mr-2"></i> Scene generated successfully!';
document.body.appendChild(successMsg);
setTimeout(() => {
successMsg.remove();
}, 3000);
}, 2000);
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=zehyr/dee-game" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>