# Wherigo Player

A desktop application for playing Wherigo geocaching cartridges. Experience geocaching adventures directly on your computer without a GPS device or mobile app.

## Features
- ✅ **Load and execute Wherigo cartridges** (.gwc files)
- ✅ **Full game engine** with Lua 5.1.4 interpreter
- ✅ **Interactive UI** with zones, tasks, inventory, characters, and items
- ✅ **Media support** - Display images (JPEG, PNG) in dialogs and object details
- ✅ **Save/Load game state** - Pause and resume your progress
- ✅ **Completion logs** - Generate .gwl files for wherigo.com
- ✅ **Event-driven updates** - Real-time UI refresh on game state changes
- ✅ **Timer system** - Automatic countdown timers with callbacks
- ✅ **Dialog system** - Multi-page dialogs with images and buttons

## Requirements
- C++23 or newer
- wxWidgets 3.3 (for GUI)
- Lua 5.1.4 (for cartridge execution)
- CMake 3.20+

## Building

```bash
mkdir build && cd build
cmake ..
cmake --build .
```

## Getting Started
1. Download a Wherigo cartridge from [wherigo.com](https://wherigo.com)
2. Launch wxWherigo
3. Click "Open Cartridge..." and select your .gwc file
4. Click "Start Game"
5. Use the tabs to interact with zones, tasks, and items

## Keyboard Shortcuts
- **Ctrl+O** - Open cartridge
- **Ctrl+S** - Save game state
- **Ctrl+L** - Load game state
- **Ctrl+E** - Export completion log

## Documentation
- [Lua State Persistence](LUA_PERSISTENCE.md) - Save/Load system
- [Wherigo Completion](WHERIGO_COMPLETION.md) - Completion log format

## Project Structure
```
wx_wherigo/
├── main/              # Application code
│   ├── src/
│   │   ├── ui/       # User interface (cStartScreen, cGameScreen)
│   │   └── lua/      # Lua integration & game engine
│   └── include/
├── components/
│   ├── cartridge/    # .gwc parser
│   ├── storage/      # File handling
│   └── lua-5.1.4/    # Lua interpreter
```

## License
This project is licensed under the MIT License. See `LICENSE.md` for details.

## Author
Peter Siegmund (mars3142)

## Acknowledgments
- Groundspeak for the Wherigo platform
- wxWidgets team for the GUI framework
- Lua team for the scripting engine

