feat: detailed characters + Noita-style mouse aiming

Character detail:
- Player: 68 body parts (was 42) — eyes, hair, cape, hat, gloves
- Goblin: 56 body parts (was 39) — red eyes, pointed ears, teeth, skin tones
- New body labels: eye, hair, cape, tooth, ear
- Updated preview_ascii label map for new part types

Mouse aiming (Noita-style):
- Track mouse position via CursorMoved events
- Track left-click via MouseInput events
- Left-click shoots projectile toward mouse cursor direction
- Player faces left/right based on mouse X relative to player screen X
- Keyboard shoot (hjkl) still works as fallback
- Player.facing_right field added
- WindowInput: mouse_x, mouse_y, mouse_left, shoot_mouse fields
- on_mouse_move(), on_mouse_button() handlers
- clear_keys() also clears mouse state on focus loss

All 171 tests + 14 scenarios pass.
This commit is contained in:
Emil
2026-06-21 18:07:46 +03:00
parent 876eb031df
commit e50df7b51e
5 changed files with 148 additions and 58 deletions
+2
View File
@@ -8,6 +8,7 @@ pub struct Player {
pub inventory: Vec<Item>,
pub weapon: Option<Item>,
pub armor: Option<Item>,
pub facing_right: bool,
}
impl Player {
@@ -20,6 +21,7 @@ impl Player {
inventory: Vec::new(),
weapon: None,
armor: None,
facing_right: true,
}
}