How kirtapsz/hamika works
Hamika is an Allegro-based Supaplex-inspired game with a level editor. The likely player workflow is to choose a world and blueprint, start a game, control Murphy through a simulated object-filled level, and view the rendered scene. The tree also shows editor, account, resource, and replay/validation capabilities. The graph follows documented entry points and source-index references; several subsystem internals were not sampled, so their runtime links are omitted where evidence is insufficient.
Main entry points: SceneAction.h Scene simulation · MainEvent.cpp Game menu · EditorMainEvent.h Editor controller · EditorControlPanel.cpp Editor controls
Components 26
Application and UI
- Application entry
Hamika/main.cpp - Game menu
Hamika/MainEvent.cpp - World selection
Hamika/Worlds.h - Level selection
Hamika/MapList.cpp
Gameplay
- Scene simulation
Hamika/SceneAction.h - Keyboard control
Hamika/KeyboardController.cpp - Murphy behavior
Hamika/Murphy.cpp - Level objects
Hamika/Objects.cpp - Entity behaviors
Hamika/OriginalEntities.cpp - Object model
Hamika/Object.h - World state
Hamika/World.cpp - Scene renderer
Hamika/SceneDrawer.hpp - Run validation
Hamika/Validator.cpp
Level editor
- Editor controller
Hamika/EditorMainEvent.h - Editor scene
Hamika/EditorScene.cpp - Editor controls
Hamika/EditorControlPanel.cpp - Editor world
Hamika/EditorWorld.cpp - Blueprint data
Hamika/BluePrint.h - Save-level dialog
Hamika/EditorSaveWorldDialog.cpp
Resources and records
- Player accounts
Hamika/Account.cpp - Resource loading
Hamika/Resource.h - Bitmap resources
Hamika/Bitmap.cpp - Font resources
Hamika/Font.h - Run records
Hamika/Logger.h - Randomness records
Hamika/RngController.cpp
Other components
- Player
Connections 27
- Player → Game menu: chooses level
- Application entry → Game menu: starts
Hamika/main.cpp - Application entry → Editor controller: starts
Hamika/main.cpp - Game menu → World selection: uses
Hamika/MainEvent.cpp - Game menu → Level selection: uses
- Game menu → Player accounts: uses
- Game menu → Scene simulation: starts play
- Scene simulation → Keyboard control: reads input
Hamika/SceneAction.h - Scene simulation → Murphy behavior: updates
Hamika/SceneAction.h - Scene simulation → Level objects: updates
Hamika/SceneAction.h - Scene simulation → Run validation: validates
Hamika/SceneAction.h - Level objects → Entity behaviors: uses behaviors
Hamika/Objects.cpp - Level objects → Object model: uses
- Scene simulation → World state: uses state
Hamika/SceneAction.h - Scene renderer → Object model: draws
Hamika/SceneDrawer.h - Scene renderer → Bitmap resources: uses
- Editor controller → Editor scene: uses
Hamika/EditorMainEvent.h - Editor controller → Editor controls: uses
Hamika/EditorMainEvent.h - Editor scene → Editor controller: references
Hamika/EditorScene.cpp - Editor controls → Editor controller: references
Hamika/EditorControlPanel.cpp - Editor controls → Editor world: edits
- Editor controls → Blueprint data: uses
- Editor controller → Save-level dialog: uses
Hamika/EditorMainEvent.h - Resource loading → Bitmap resources: loads
- Resource loading → Font resources: loads
Hamika/Font.h - Scene simulation → Randomness records: uses
Hamika/SceneAction.h - Scene simulation → Run records: records