| name | reel-state |
| description | EGM reel state detection and visible symbol retrieval via MPT UTP module. Use when waiting for reels to stop spinning, reading visible symbols on screen, parsing MPT response format, using ReelWaitService, MptFacade, MptResponseParser, or validating reel stop positions. CRITICAL: reel data comes from MPT module NOT StatusDatabase. Do not fabricate ReelStatus paths. stages: test-implementation, test-validation |
Reel State & Visible Symbol Data
When to Use
- Waiting for reels to stop spinning after a game start
- Reading visible symbols on screen (the paytable grid)
- Parsing MPT response format
- Validating reel stop positions match expected values
CRITICAL: Use MPT, Not StatusDatabase
Reel-stopped detection and visible symbol retrieval use the MPT UTP module, NOT StatusDatabase. There is no ReelStatus nested class in StatusDatabasePaths.cs — do not fabricate one.
MPT Response Format
GameTemplate/BaseGame:False:ReelSlot=[[...]], Paytable=[[...]]
- The boolean (
True/False) is the spinning state
Paytable=[[...]] is the visible symbol grid (2D array of integer symbol IDs)
Reel-Stopped Detection: ReelWaitService
ReelWaitService (Features/PGO/Services/ReelWaitService.cs) is the canonical mechanism:
- Polls
MptFacade.VerifyReelPictureAsync() in a bounded loop with CancellationTokenSource timeout
- Parses the response via
MptResponseParser.ParseReelStateBools()
- Waits until at least one boolean in the response is
false (reels stopped)
- Throws
TimeoutException if reels don't stop within the timeout
Component Reference
| Component | Location | Purpose |
|---|
ReelWaitService | Features/PGO/Services/ReelWaitService.cs | Bounded-poll for reel-stopped |
MptFacade | Shared/Facades/MptFacade.cs | Wraps MPT UTP module; VerifyReelPictureAsync() sends VerifyFinalReelPicture command |
MptResponseParser | Shared/Utilities/Parsers/MptResponseParser.cs | Extracts spinning-state booleans from pipe-separated MPT response |
ReelsValidator | Shared/Validators/ReelsValidator.cs | Validates reel stop positions match expected values |
Visible Symbol Data
The Paytable=[[...]] portion of the MPT response contains the visible symbol grid — a 2D array of integer symbol IDs representing what the player sees on screen. Parse via regex from MptFacade.VerifyReelPictureAsync() response.
Supplementary StatusDatabase Paths
These are supplementary, not primary — use MPT for authoritative reel state:
| Path | Type | Purpose |
|---|
StatusDatabasePaths.ReelSlotsStatus.IsAnyReelslotSpinning | bool | Quick check if any reel is spinning |
StatusDatabasePaths.ReelSlotsStatus.NumSpinningReelslots | int | Count of currently spinning reels |
Quick Reference
| Need | Use |
|---|
| Wait for reels to stop spinning | ReelWaitService.WaitForReelsStationaryAsync() |
| Read visible on-screen symbols | Parse Paytable=[[...]] from MptFacade.VerifyReelPictureAsync() response |
| Check if any reel is still spinning (supplementary) | StatusDatabasePaths.ReelSlotsStatus.IsAnyReelslotSpinning |
| Validate reel stop positions match expected values | ReelsValidator.ValidateReelsAsync() |