Go to file
John McCardle 59e6f8d53d Fix Issue #78: Middle mouse click no longer sends 'C' keyboard event
The bug was caused by accessing event.key.code on a mouse event without
checking the event type first. Since SFML uses a union for events, this
read garbage data. The middle mouse button value (2) coincidentally matched
the keyboard 'C' value (2), causing the spurious keyboard event.

Fixed by adding event type check before accessing key-specific fields.
Only keyboard events (KeyPressed/KeyReleased) now trigger key callbacks.

Test added to verify middle clicks no longer generate keyboard events.

Closes #78
2025-07-03 19:42:32 -04:00
assets Whoops, never commited the UI icons spritesheet 2025-03-08 20:33:55 -05:00
deps/platform Windows build 2024-02-25 15:38:38 -05:00
modules Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
src Fix Issue #78: Middle mouse click no longer sends 'C' keyboard event 2025-07-03 19:42:32 -04:00
tests Fix Issue #78: Middle mouse click no longer sends 'C' keyboard event 2025-07-03 19:42:32 -04:00
.gitignore Prep: Cleanup for interpreter mode 2025-07-03 09:42:46 -04:00
.gitmodules Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
CLAUDE.md Fix --exec interactive prompt bug and create comprehensive test suite 2025-07-03 19:25:49 -04:00
CMakeLists.txt Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
GNUmakefile Python command emulation 2025-07-03 10:46:21 -04:00
LICENSE.md Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
README.md Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
ROADMAP.md Fix --exec interactive prompt bug and create comprehensive test suite 2025-07-03 19:25:49 -04:00
automation_example.py Implement --exec flag and PyAutoGUI-compatible automation API 2025-07-03 14:27:01 -04:00
automation_exec_examples.py Implement --exec flag and PyAutoGUI-compatible automation API 2025-07-03 14:27:01 -04:00
build.sh Python command emulation 2025-07-03 10:46:21 -04:00
clean.sh Python command emulation 2025-07-03 10:46:21 -04:00
compile_commands.json Prep: Cleanup for interpreter mode 2025-07-03 09:42:46 -04:00
css_colors.txt Squashed commit of the following: [standardize_color_handling] 2024-03-30 21:20:40 -04:00
example_automation.py Implement --exec flag and PyAutoGUI-compatible automation API 2025-07-03 14:27:01 -04:00
example_config.py Implement --exec flag and PyAutoGUI-compatible automation API 2025-07-03 14:27:01 -04:00
example_monitoring.py Implement --exec flag and PyAutoGUI-compatible automation API 2025-07-03 14:27:01 -04:00
exec_flag_implementation.cpp Implement --exec flag and PyAutoGUI-compatible automation API 2025-07-03 14:27:01 -04:00
generate_color_table.py Squashed commit of the following: [standardize_color_handling] 2024-03-30 21:20:40 -04:00
gitea_issues.py Prep: Cleanup for interpreter mode 2025-07-03 09:42:46 -04:00
wikicrayons_colors.txt Squashed commit of the following: [standardize_color_handling] 2024-03-30 21:20:40 -04:00
xkcd_colors.txt Squashed commit of the following: [standardize_color_handling] 2024-03-30 21:20:40 -04:00

README.md

McRogueFace - 2D Game Engine

An experimental prototype game engine built for my own use in 7DRL 2023.

Blame my wife for the name

Tenets:

  • C++ first, Python close behind.
  • Entity-Component system based on David Churchill's Memorial University COMP4300 course lectures available on Youtube.
  • Graphics, particles and shaders provided by SFML.
  • Pathfinding, noise generation, and other Roguelike goodness provided by TCOD.

Why?

I did the r/RoguelikeDev TCOD tutorial in Python. I loved it, but I did not want to be limited to ASCII. I want to be able to draw pixels on top of my tiles (like lines or circles) and eventually incorporate even more polish.

To-do

  • Initial Commit
  • Integrate scene, action, entity, component system from COMP4300 engine
  • Windows / Visual Studio project
  • Draw Sprites
  • Play Sounds
  • Draw UI, spawn entity from Python code
  • Python AI for entities (NPCs on set paths, enemies towards player)
  • Walking / Collision
  • "Boards" (stairs / doors / walk off edge of screen)
  • Cutscenes - interrupt normal controls, text scroll, character portraits
  • Mouse integration - tooltips, zoom, click to select targets, cursors