Sektor-Frontend Modularisierung
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import { updateResourceUI } from '../components/resource-header/resource-header.js';
|
||||
|
||||
// Wir lagern die Daten in ein reaktives Zustandsobjekt aus.
|
||||
// Später wird dieses Objekt durch die echte Backend-API befüllt
|
||||
// (z.B. über WebSockets oder Polling, ähnlich wie in der Lobby).
|
||||
const sectorState = {
|
||||
res_primary: 1000, cap_primary: 10000,
|
||||
res_secondary: 500, cap_secondary: 10000,
|
||||
res_fuel_base: 0,cap_fuel_base: 10000,
|
||||
res_fuel_adv: 0, cap_fuel_adv: 10000,
|
||||
|
||||
energy: 0,
|
||||
|
||||
pop_idle: 500,
|
||||
pop_work: 0,
|
||||
pop_injured: 500,
|
||||
pop_happiness: 50,
|
||||
res_food_base: 10000,
|
||||
res_food_adv: 0,
|
||||
res_premium: 150,
|
||||
res_premium_global: 100,
|
||||
res_premium_local: 50
|
||||
};
|
||||
|
||||
/**
|
||||
* Hilfsfunktion für gedeckelte Ressourcen-Produktion.
|
||||
* Erhöht den aktuellen Wert um 'amount', stoppt aber exakt am 'cap'.
|
||||
* Ist der Wert bereits über dem Cap (z.B. durch Startwerte oder Boni),
|
||||
* wird nichts abgezogen, aber die Produktion pausiert.
|
||||
*
|
||||
* @param {number} currentValue - Der derzeitige Bestand
|
||||
* @param {number} productionAmount - Menge, die hinzugefügt wird
|
||||
* @param {number} capacity - Das maximale Lagerlimit
|
||||
*
|
||||
* @returns {number} - Der neue berechnete Bestand
|
||||
*/
|
||||
function addResourceWithCap(currentValue, productionAmount, capacity) {
|
||||
if (currentValue >= capacity) {
|
||||
return currentValue;
|
||||
}
|
||||
|
||||
const newValue = currentValue + productionAmount;
|
||||
if (newValue > capacity) {
|
||||
return capacity;
|
||||
}
|
||||
|
||||
return newValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Startet die Simulation und den Interval-Timer für die Ressourcen-Produktion.
|
||||
* Initiiert zudem das erste sofortige UI-Update.
|
||||
*/
|
||||
export function startSimulation() {
|
||||
// 1. Initiales Update beim Start, um die Nullen im HUD zu überschreiben
|
||||
updateResourceUI(sectorState);
|
||||
|
||||
// 2. Der simulierte Game-Loop (1 Tick pro Sekunde)
|
||||
setInterval(() => {
|
||||
// Ressourcen berechnen
|
||||
sectorState.res_primary = addResourceWithCap(sectorState.res_primary, 15, sectorState.cap_primary);
|
||||
sectorState.res_secondary = addResourceWithCap(sectorState.res_secondary, 5, sectorState.cap_secondary);
|
||||
|
||||
// Nahrung wird hier beispielhaft verbraucht
|
||||
sectorState.res_food_base -= 10;
|
||||
|
||||
// 3. UI mit den neuen Werten aktualisieren
|
||||
updateResourceUI(sectorState);
|
||||
}, 1000);
|
||||
|
||||
console.log('[Simulation] Game-Loop gestartet.');
|
||||
}
|
||||
Reference in New Issue
Block a user