unlock village and fixes
This commit is contained in:
@@ -44,6 +44,21 @@
|
||||
margin-left: auto;
|
||||
}
|
||||
.online-dot.live { background: #7bcc7b; box-shadow: 0 0 6px #7bcc7b; }
|
||||
.sync-btn {
|
||||
background: transparent;
|
||||
border: 1px solid #4acc64;
|
||||
color: #4acc64;
|
||||
border-radius: 6px;
|
||||
padding: 0.3rem 0.6rem;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
.sync-btn:hover {
|
||||
background: rgba(74, 204, 100, 0.1);
|
||||
}
|
||||
|
||||
/* ---- Control Panel ---- */
|
||||
.panel {
|
||||
@@ -147,6 +162,21 @@
|
||||
}
|
||||
.save-status.visible { opacity: 1; }
|
||||
|
||||
/* Input field */
|
||||
.input-field {
|
||||
background: #12121e;
|
||||
border: 1px solid #2a2a40;
|
||||
color: #e0e0e0;
|
||||
border-radius: 6px;
|
||||
padding: 0.6rem;
|
||||
width: 100px;
|
||||
font-family: inherit;
|
||||
font-size: 0.95rem;
|
||||
outline: none;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.input-field:focus { border-color: #4acc64; }
|
||||
|
||||
/* ---- Farm Table ---- */
|
||||
.farm-table-wrap { overflow-x: auto; }
|
||||
table {
|
||||
@@ -206,6 +236,7 @@
|
||||
<a href="/player/{{ player_id }}">← Πίσω</a>
|
||||
<h1>🌾 Farm Manager</h1>
|
||||
<span class="online-dot" id="online-dot" title="Κατάσταση Script"></span>
|
||||
<button class="sync-btn" onclick="requestSync()">Live Sync</button>
|
||||
</div>
|
||||
|
||||
<!-- Status banner -->
|
||||
@@ -248,6 +279,23 @@
|
||||
<span class="save-status" id="save-status">✓ Αποθηκεύτηκε</span>
|
||||
</div>
|
||||
|
||||
<!-- Farm Upgrade Panel -->
|
||||
<div class="panel">
|
||||
<h2>🏰 Αυτόματη Αναβάθμιση Χωριών</h2>
|
||||
<p style="font-size: 0.85rem; color: #888; margin-bottom: 1rem;">
|
||||
Το script θα χρησιμοποιήσει αυτόματα τους πόντους μάχης σας για να ξεκλειδώσει νέα χωριά και να τα αναβαθμίσει μέχρι το επίπεδο 6.<br>
|
||||
Επιλέξτε πόσους πόντους μάχης θέλετε να κρατήσετε ως <strong>όριο ασφαλείας</strong>. Το script θα ξοδέψει μόνο τους πόντους ΠΑΝΩ από αυτό το όριο.
|
||||
</p>
|
||||
|
||||
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem;">
|
||||
<label for="kp-threshold" style="font-size: 0.95rem; font-weight: 600;">Ελάχιστοι Πόντοι (Όριο):</label>
|
||||
<input type="number" id="kp-threshold" class="input-field" value="0" min="0" step="10">
|
||||
</div>
|
||||
|
||||
<button class="save-btn" id="upgrade-btn" onclick="triggerUpgrade()">🚀 Ξεκλείδωμα & Αναβάθμιση Τώρα</button>
|
||||
<span class="save-status" id="upgrade-status">Εντολή εστάλη!</span>
|
||||
</div>
|
||||
|
||||
<!-- Farm Status Table -->
|
||||
<div class="panel">
|
||||
<h2>🏘️ Κατάσταση Χωριών</h2>
|
||||
@@ -376,6 +424,37 @@
|
||||
});
|
||||
}
|
||||
|
||||
// -- Live Sync --
|
||||
function requestSync() {
|
||||
fetch(`/api/sync-request?player_id=${PLAYER_ID}`, { method: 'POST' })
|
||||
.then(r => r.json())
|
||||
.then(data => {
|
||||
// Will get a fast state update
|
||||
setTimeout(loadFarmData, 1500);
|
||||
});
|
||||
}
|
||||
|
||||
// -- Trigger Upgrade --
|
||||
function triggerUpgrade() {
|
||||
const threshold = document.getElementById('kp-threshold').value;
|
||||
fetch('/dashboard/commands', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
player_id: PLAYER_ID,
|
||||
town_id: 0,
|
||||
type: 'farm_upgrade',
|
||||
payload: { threshold: threshold }
|
||||
})
|
||||
})
|
||||
.then(r => r.json())
|
||||
.then(() => {
|
||||
const s = document.getElementById('upgrade-status');
|
||||
s.classList.add('visible');
|
||||
setTimeout(() => s.classList.remove('visible'), 3000);
|
||||
});
|
||||
}
|
||||
|
||||
// -- Boot --
|
||||
loadSettings();
|
||||
loadFarmData();
|
||||
|
||||
Reference in New Issue
Block a user