75 lines
2.1 KiB
Markdown
75 lines
2.1 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
This is a Jeopardy-style quiz application built with LÖVE (Love2D) game framework in Lua. The project uses two custom libraries:
|
|
- **multi** (v16.3.0) - A multitasking library for Lua with coroutine-based threading, system threads, and priority management
|
|
- **gui** (GuiManager) - A UI library built on top of multi for LÖVE-based interfaces
|
|
|
|
## Running the Application
|
|
|
|
```bash
|
|
# Run with LÖVE
|
|
love .
|
|
|
|
# Run tests
|
|
lua main-test.lua
|
|
```
|
|
|
|
## Architecture
|
|
|
|
### Core Modules
|
|
|
|
| Module | Path | Purpose |
|
|
|--------|------|---------|
|
|
| `main.lua` | Root | LÖVE entry point with `love.load()`, `love.update()`, `love.draw()` |
|
|
| `board.lua` | Root | Builds the Jeopardy game board UI |
|
|
| `task_manager.lua` | Root | Manages game flow and question handling |
|
|
| `loader.lua` | Root | Loads question data from YAML files |
|
|
| `yaml.lua` | Root | YAML parser |
|
|
| `multi/` | Library | Multitasking library with threading support |
|
|
| `gui/` | Library | UI framework with frames, buttons, textboxes, images |
|
|
|
|
### Key Patterns
|
|
|
|
**multi library usage:**
|
|
```lua
|
|
multi, thread = require("multi"):init({print = true, priority=true})
|
|
GLOBAL, THREAD = require("multi.integration.loveManager"):init()
|
|
|
|
-- Create threads
|
|
multi:newThread("Name", function()
|
|
while true do
|
|
thread.sleep(1)
|
|
-- do work
|
|
end
|
|
end)
|
|
|
|
-- Run in love.update()
|
|
multi:uManager(dt)
|
|
```
|
|
|
|
**gui library usage:**
|
|
```lua
|
|
local gui = require("gui")
|
|
local color = require("gui.core.color")
|
|
|
|
gui:setAspectSize(1920, 1080)
|
|
local frame = gui:newFrame(x, y, w, h, sx, sy, sw, sh)
|
|
frame.color = color.new("#hex")
|
|
```
|
|
|
|
### Data Format
|
|
|
|
Questions are loaded via `loader.lua` from YAML files with structure:
|
|
- `index.yaml` - Contains categories and settings
|
|
- `<category>.yaml` - Contains questions for each category
|
|
|
|
### Integration Points
|
|
|
|
- `multi.integration.loveManager` - Bridges multi threading with LÖVE's event loop
|
|
- `gui.update(dt)` and `gui.draw()` - Called from `love.update()` and `love.draw()`
|
|
- UI uses aspect ratio scaling (1920x1080 base)
|