Go to file
Michael Mainguy 65e7c496b7
All checks were successful
Build / build (push) Successful in 1m26s
Add ShipStatus system with automatic gauge updates and fuel consumption
Implemented a comprehensive ship status management system with event-driven gauge updates and integrated fuel consumption for both linear and angular thrust.

**New File: src/shipStatus.ts**
- ShipStatus class with Observable pattern for status change events
- Manages fuel, hull, and ammo values with automatic clamping (0-1 range)
- Configurable max values for each resource type
- Public getters: fuel, hull, ammo, getValues()
- Setter methods: setFuel(), setHull(), setAmmo() with automatic event firing
- Convenience methods: addFuel(), consumeFuel(), damageHull(), repairHull(), addAmmo(), consumeAmmo()
- Status check methods: isFuelEmpty(), isDestroyed(), isAmmoEmpty()
- Utility methods: reset(), setMaxValues(), dispose()
- ShipStatusChangeEvent interface with statusType, oldValue, newValue, delta fields

**Modified: src/scoreboard.ts**
- Integrated ShipStatus instance as private _shipStatus
- Constructor subscribes to ShipStatus.onStatusChanged observable
- Added public shipStatus getter to expose status manager
- Created createGaugesDisplay() method with 3 bar gauges (FUEL, HULL, AMMO)
- Created createGaugeBar() helper for individual gauge construction
- Added getBarColor() with smooth RGB gradient: green (1.0) -> yellow (0.5) -> red (0.0)
- Renamed public methods to private: updateFuelBar(), updateHullBar(), updateAmmoBar()
- Observable subscription automatically updates gauge visuals when status changes
- Added dispose() method for cleanup of ShipStatus and observables
- Updated initialize() to retrieve and setup screen/gauges meshes from GLB
- Set initial test values to full (1.0) for all gauges

**Modified: src/shipPhysics.ts**
- Added ShipStatus import and private _shipStatus property
- Added setShipStatus() method to connect status manager
- Modified applyForces() to check fuel availability before applying linear force
- Linear thrust fuel consumption: linearMagnitude (0-1) * 0.005 per frame
- Added fuel check and consumption for angular thrust (rotation)
- Angular thrust fuel consumption: normalized angularMagnitude (0-1) * 0.005 per frame
- Forces only applied when fuel > 0

**Modified: src/ship.ts**
- Connected ShipPhysics to Scoreboard's ShipStatus via setShipStatus()
- Called immediately after physics initialization (line 148)

This creates a fully integrated system where:
1. Ship movement (linear and angular) consumes fuel proportional to thrust
2. Fuel depletion prevents further thrust application
3. Gauge displays automatically update via observable events with color coding
4. Other systems can monitor/modify ship status through the same interface

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 15:17:49 -06:00
.github/workflows increased heap space. 2025-10-28 12:01:29 -05:00
docs Add Blender export tooling and refactor asset structure 2025-11-06 12:25:34 -06:00
public Fix inspector 'i' key registration in KeyboardInput 2025-11-07 13:07:15 -06:00
scripts Add Blender export tooling and refactor asset structure 2025-11-06 12:25:34 -06:00
server Initial Commit 2025-02-15 11:19:24 -06:00
src Add ShipStatus system with automatic gauge updates and fuel consumption 2025-11-07 15:17:49 -06:00
themes/default Fix level double initialization and refactor ship physics 2025-11-07 11:16:50 -06:00
.gitignore Initial Commit 2025-02-15 11:19:24 -06:00
CLAUDE.md Refactor sight to crosshair reticle and rename starfield to rockFactory 2025-10-30 10:21:27 -05:00
CONTROLLER_THRUST.md Refactor ship controls to force-based physics with world-space transformations 2025-10-31 11:20:31 -05:00
index.html Make ship physics constants configurable via GameConfig with UI 2025-11-07 13:05:27 -06:00
package-lock.json Add Blender export tooling and refactor asset structure 2025-11-06 12:25:34 -06:00
package.json Add Blender export tooling and refactor asset structure 2025-11-06 12:25:34 -06:00
styles.css Add difficulty levels and upgrade BabylonJS 2025-10-17 09:05:18 -05:00
tsconfig.json Initial Commit 2025-02-15 11:19:24 -06:00
vite.config.ts Add difficulty levels and upgrade BabylonJS 2025-10-17 09:05:18 -05:00