Conversation
There was a problem hiding this comment.
Pull Request Overview
This pull request implements a ranged combat system with wooden bows and projectile attacks, along with several supporting features including a monster spawner system and improved gesture recognition for spell casting.
Key Changes:
- Added a complete ranged attack system with bow weapons, line-of-sight validation, and flame arrow VFX
- Implemented a monster spawner system that creates monsters over time with configurable limits
- Enhanced gesture recognition to be more lenient and added visual debug overlay for spell gestures
Reviewed Changes
Copilot reviewed 26 out of 26 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/rules/systems/rangedAttackSystem.js | New system handling bow attacks with raycasting, hit detection, and burning DoT effects |
| src/rules/components/Intents/RangedAttackIntent.js | New intent component for ranged attacks with optional targeting |
| src/rules/components/MonsterSpawner.js | New component for timed monster spawning with concurrent limits |
| src/rules/systems/monsterSpawnerSystem.js | System that processes spawner entities and creates monsters |
| src/rules/archetypes/Spawner.js | Archetype definition for spawner entities |
| src/rules/data/equipment.js | Added wooden bow weapon definition |
| src/rules/environment/dungeonGenerator.js | Added hallway generation to demo room |
| src/rules/environment/GeometryKernel.js | Added configurable epsilon for movement collision sweeps |
| src/rules/systems/movementSystem.js | Updated to use new epsilon parameter for smoother navigation |
| src/main/world/worldEvents.js | Added arrow VFX manager with flame trails and impact sparks, enhanced bolt effects |
| src/main/ui/setupUIEventListeners.js | Added tap-to-shoot logic and improved item pickup with nearest-item fallback |
| src/main/scene/demoScene.js | Replaced static monsters with spawner and added wooden bow to loot |
| src/main.js | Integrated arrow FX rendering and light sources |
| src/display/ui/overlay.js | Added gesture debug overlay and adjusted hint display duration |
| src/display/ui/hud.js | Added "Shoot" button for ranged attacks |
| src/display/input/gestureRecognizers.js | Made lightning gesture recognition more lenient with improved validation |
| src/display/input/InputManager.js | Enhanced gesture handling with fallback recognition and debug visualization |
| src/display/input/actions.js | Added TapWorld action for unified tap handling |
| app/rules/scheduler.js | Registered new ranged attack and monster spawner systems |
| app/input/rulesDispatch.js | Added handlers for ranged attack intents |
| src/display/palette/packs/weapons.js | Added bow glyph and colors |
| src/display/palette/base.js | Updated palette colors and glyphs to match display defaults |
| src/display/lighting/sources/index.js | Removed aegis light emission (now ring-only visualization) |
| src/rules/components/index.js | Exported new MonsterSpawner component |
| src/rules/archetypes/index.js | Exported new Spawner archetype |
| src/lib/ecs-js | Updated submodule reference |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| */ | ||
| export function recognizeLightningGesture(points) { | ||
| if (!Array.isArray(points) || points.length < 6) return null; | ||
| if (!Array.isArray(points) ) return null; |
There was a problem hiding this comment.
[nitpick] Extra whitespace before closing parenthesis. Should be if (!Array.isArray(points)) return null; for consistency with code style.
| if (!Array.isArray(points) ) return null; | |
| if (!Array.isArray(points)) return null; |
| if (Math.abs(v1.y) > Math.max(0.35, Math.abs(v1.x) * 0.45)) return null; | ||
| if (v3.x <= 0.4) return null; | ||
| if (Math.abs(v3.y) > Math.max(0.35, Math.abs(v3.x) * 0.45)) return null; | ||
| console.log(`Segment vectors: v1=(${v1.x.toFixed(2)},${v1.y.toFixed(2)}) v2=(${v2.x.toFixed(2)},${v2.y.toFixed(2)}) v3=(${v3.x.toFixed(2)},${v3.y.toFixed(2)})`); |
There was a problem hiding this comment.
Debug console.log statements should be removed or converted to console.debug for production code. Multiple console.log calls are present in this function (lines 16, 57, 69, 100, 105, 119).
No description provided.