rpgmaker / static /index.html
Cnass's picture
Upload index.html
25a4e14 verified
Raw History Blame Contribute Delete
10.5 kB
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Riaslink Port Builder</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<div class="tavern-bg"></div>
<header class="site-header">
<div class="site-header-inner">
<span class="lantern-icon" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2v2.5" stroke="#e8a343" stroke-width="1.6" stroke-linecap="round"/>
<rect x="8.5" y="4.5" width="7" height="2" rx="0.5" fill="#c99a4a"/>
<path d="M7 7.5h10l-1.2 10.5a2 2 0 0 1-2 1.8h-3.6a2 2 0 0 1-2-1.8L7 7.5Z"
fill="#e8a343" stroke="#8a5a1f" stroke-width="0.8"/>
<circle cx="12" cy="12.5" r="2.1" fill="#fff3d6" opacity="0.9"/>
<path d="M9.5 20h5" stroke="#c99a4a" stroke-width="1.6" stroke-linecap="round"/>
</svg>
</span>
<div>
<h1>Riaslink Port Builder</h1>
<p class="subtitle">RPG Maker MV/MZ → Android APK, taverna menüsü dahil</p>
</div>
</div>
</header>
<main class="layout">
<!-- ============== FORM PANEL ============== -->
<section class="panel form-panel" aria-labelledby="form-heading">
<h2 id="form-heading">Meyhaneye Hoş Geldin</h2>
<p class="panel-desc">
RPG Maker'da projeni web'e dışa aktar (Deploy Masterpiece),
oluşan <code>www</code> klasörünü zip'le, aşağı yükle.
</p>
<form id="build-form">
<div class="field">
<label for="www_zip">www.zip <span class="required">*</span></label>
<div class="file-drop" id="file-drop">
<input type="file" id="www_zip" name="www_zip" accept=".zip" required>
<span class="file-drop-label" id="file-drop-label">Dosya seç ya da buraya sürükle</span>
<div class="upload-ring hidden" id="upload-ring" aria-hidden="true">
<svg viewBox="0 0 36 36">
<circle class="upload-ring-track" cx="18" cy="18" r="15.5"/>
<circle class="upload-ring-progress" id="upload-ring-progress" cx="18" cy="18" r="15.5"/>
</svg>
<span class="upload-ring-label" id="upload-ring-label">0%</span>
</div>
</div>
</div>
<div class="field-row">
<div class="field">
<label for="app_name">Uygulama Adı</label>
<input type="text" id="app_name" name="app_name" placeholder="Boş bırak: oyunun kendi adı kullanılır">
<span class="field-hint">Boş bırakırsan oyunun <code>index.html</code> dosyasındaki başlıktan otomatik alınır.</span>
</div>
</div>
<div class="field">
<label for="application_id">Paket Adı (applicationId)</label>
<input type="text" id="application_id" name="application_id" placeholder="Boş bırak: fun.riaslink.oyunadi">
<span class="field-hint">Boş bırakırsan oyun adından otomatik üretilir. Elle girersen benzersiz olmalı, örnek: fun.riaslink.myrpggame</span>
</div>
<div class="field-row">
<div class="field">
<label for="version_name">Versiyon Adı</label>
<input type="text" id="version_name" name="version_name" value="1.0.0">
</div>
<div class="field field-narrow">
<label for="version_code">Versiyon Kodu</label>
<input type="number" id="version_code" name="version_code" value="1" min="1" step="1">
</div>
</div>
<h3 class="section-title">Taverna Menüsü</h3>
<div class="field field-toggle">
<label class="toggle-label">
<span>
FPS sayacı açılışta görünür başlasın
<span class="field-hint block">Kapalıysa oyuncu menüden istediği zaman açabilir.</span>
</span>
<span class="switch">
<input type="checkbox" id="fps_default_visible" name="fps_default_visible">
<span class="switch-track"><span class="switch-knob"></span></span>
</span>
</label>
</div>
<div class="field">
<label for="accent_hex">Menü Vurgu Rengi</label>
<div class="color-field">
<input type="color" id="accent_hex" name="accent_hex" value="#e8a343">
<input type="text" id="accent_hex_text" value="#e8a343" class="color-hex-text" maxlength="7">
</div>
</div>
<h3 class="section-title">Build Tipi</h3>
<div class="field radio-group" role="radiogroup" aria-label="Build Tipi">
<label class="radio-option">
<input type="radio" name="build_variant" value="debug" checked>
<span class="radio-card">
<strong>Debug</strong>
<span class="field-hint">Hemen kurulup test edilebilir, imzasız.</span>
</span>
</label>
<label class="radio-option">
<input type="radio" name="build_variant" value="release">
<span class="radio-card">
<strong>Release</strong>
<span class="field-hint">R8 küçültme uygular, imzasız — mağazaya yüklemeden önce kendi imzanla imzalaman gerekir.</span>
</span>
</label>
</div>
<h3 class="section-title">Patreon Lisansı ve Koruma</h3>
<p class="field-hint" style="margin-bottom:14px;">
Hepsi isteğe bağlı. Boş bırakırsan uygulama sorunsuz çalışır, sadece premium
bölümler kapalı kalır — kontroller, kontrol düzenleme ve FPS sayacı her
zaman açıktır. Değerleri WordPress'te <strong>Ayarlar &rarr; Riaslink
Patreon</strong> ekranından al.
</p>
<div class="field">
<label for="license_server">Lisans Sunucusu</label>
<input type="text" id="license_server" name="license_server"
placeholder="https://riaslink.fun">
<span class="field-hint">WordPress sitenin adresi. Uygulama lisans kontrolünü buraya yapar.</span>
</div>
<div class="field">
<label for="license_public_key">Doğrulama Anahtarı (public key)</label>
<textarea id="license_public_key" name="license_public_key" rows="4"
placeholder="-----BEGIN PUBLIC KEY-----&#10;MIIBIjANBgkq...&#10;-----END PUBLIC KEY-----"></textarea>
<span class="field-hint">
WordPress ayarlar ekranındaki "Uygulama Doğrulama Anahtarı" kutusunun
tamamını yapıştır. Bu anahtar imza <em>doğrular</em>, imza üretemez —
APK içinde bulunması güvenlik sorunu değildir.
</span>
</div>
<div class="field">
<label for="expected_signature">Beklenen APK İmzası (SHA-256)</label>
<input type="text" id="expected_signature" name="expected_signature"
placeholder="AB:CD:EF:... (isteğe bağlı)">
<span class="field-hint">
Doldurursan uygulama kendi imzasını bununla karşılaştırır ve
değiştirilip yeniden imzalanmış bir kopyada premium açılmaz.
İlk build'de boş bırak; APK hazır olunca imzayı uygulamanın Patreon
bölümünden okuyup sonraki build'de gir.
</span>
</div>
<div class="field">
<label class="toggle-label">
<input type="checkbox" id="encrypt_assets" name="encrypt_assets" value="true">
<span>Oyun dosyalarını şifrele</span>
</label>
<span class="field-hint">
www/ içindeki her şey (grafikler, haritalar, eklenti kodu) APK'ya
şifreli yazılır ve sadece çalışırken bellekte çözülür. APK'yı açan biri
dosyaları okuyamaz. Build süresini biraz uzatır.
</span>
</div>
<button type="submit" id="build-btn" class="build-btn">
<span class="build-btn-label">APK Oluştur</span>
</button>
</form>
<p class="footnote">
Menü ve FPS sayacı eklentileri projenin kendi <code>js/plugins.js</code>
dosyasına eklenir; mevcut eklentilerine dokunulmaz.
</p>
</section>
<!-- ============== LOG PANEL ============== -->
<section class="panel log-panel" aria-labelledby="log-heading">
<div class="log-panel-header">
<h2 id="log-heading">Build Günlüğü</h2>
<div class="log-panel-actions">
<button type="button" id="copy-log-btn" class="copy-log-btn" title="Günlüğü kopyala">
<span id="copy-log-icon">📋</span>
</button>
<span class="status-pill" id="status-pill" data-state="idle">Bekliyor</span>
</div>
</div>
<pre id="log-output" class="log-output"><span class="log-empty">Henüz bir build başlatılmadı. Formu doldurup "APK Oluştur"a bas.</span></pre>
<div id="download-area" class="download-area hidden">
<a id="download-link" class="download-btn" href="#" download>
<span>📦</span> APK'yı İndir
</a>
</div>
</section>
</main>
<footer class="site-footer">
<p>
<a href="https://github.com/yoimerdr/ludens" target="_blank" rel="noopener">Ludens</a>
projesinden yalnızca Android port yeteneği esinlenmiştir — menü ve build sistemi sıfırdan yazılmıştır.
</p>
</footer>
<script src="/static/app.js"></script>
</body>
</html>