Skip to content

wooden bow + projectile#10

Merged
PJensen merged 1 commit intomasterfrom
local-features
Nov 8, 2025
Merged

wooden bow + projectile#10
PJensen merged 1 commit intomasterfrom
local-features

Conversation

@PJensen
Copy link
Owner

@PJensen PJensen commented Nov 8, 2025

No description provided.

Copilot AI review requested due to automatic review settings November 8, 2025 00:52
@PJensen PJensen merged commit 057768f into master Nov 8, 2025
3 of 4 checks passed
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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;
Copy link

Copilot AI Nov 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Extra whitespace before closing parenthesis. Should be if (!Array.isArray(points)) return null; for consistency with code style.

Suggested change
if (!Array.isArray(points) ) return null;
if (!Array.isArray(points)) return null;

Copilot uses AI. Check for mistakes.
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)})`);
Copy link

Copilot AI Nov 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants