/
RaskolnickOFF
/
3D
Обзор
Документация
Войти
/
RaskolnickOFF
/
3D
Код
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
js/source/systems/interaction/LootSystem.js
48 строк
2 KB
RaskolnickOFF
updates
08 июн 2026, 03:53
08 июн 2026, 03:53
ca9a567
Код
Авторство
О чём код?
// js/source/systems/interaction/LootSystem.js — трофеи с врагов и подбор предметов (симуляция) import { GameEvents } from '../../core/GameEvents.js'; import { Components } from '../../core/Components.js'; export class LootSystem { constructor(ctx, inventorySystem) { this.eventBus = ctx.eventBus; this.inventory = inventorySystem; this.engine = ctx.engine; this.maxHunger = ctx.settings.player.maxHunger; this.maxThirst = ctx.settings.player.maxThirst; this.eventBus.on(GameEvents.ENEMY_KILLED, () => { this.inventory.addItem('Трофей', 1); }); this.eventBus.on(GameEvents.ITEM_PICKED_UP, ({ itemName, amount }) => { this.inventory.addItem(itemName, amount); let player = null; for (const entity of this.engine.with(Components.PLAYER)) { player = entity; break; } if (player) { let hunger = player.get(Components.HUNGER); let thirst = player.get(Components.THIRST); if (hunger === undefined) hunger = this.maxHunger; if (thirst === undefined) thirst = this.maxThirst; hunger = Math.min(hunger + 10, this.maxHunger); thirst = Math.min(thirst + 10, this.maxThirst); player.add(Components.HUNGER, hunger); this.eventBus.emit(GameEvents.HUNGER_CHANGED, { entity: player, hunger }); player.add(Components.THIRST, thirst); this.eventBus.emit(GameEvents.THIRST_CHANGED, { entity: player, thirst }); let hp = player.get(Components.HEALTH); if (hp !== undefined) { hp = Math.min(hp + 10, 100); player.add(Components.HEALTH, hp); this.eventBus.emit(GameEvents.HEALTH_CHANGED, { entity: player, health: hp }); } } }); } }