feat: add configurable speed and expanded grid presets for snake
- Add per-game speed setting with presets (Slow/Normal/Fast/Insane) - Add speed selector UI in snake lobby - Expand grid presets with Tiny (15x15) and XL (50x30) - Auto-calculate cell size based on grid dimensions - Preserve speed setting in rematch games
This commit is contained in:
@@ -97,8 +97,24 @@ type SnakeGame struct {
|
||||
RematchGameID *string
|
||||
Mode GameMode // ModeMultiplayer or ModeSinglePlayer
|
||||
Score int // tracks food eaten in single player
|
||||
Speed int // cells per second
|
||||
}
|
||||
|
||||
// Speed presets
|
||||
type SpeedPreset struct {
|
||||
Name string
|
||||
Speed int
|
||||
}
|
||||
|
||||
var SpeedPresets = []SpeedPreset{
|
||||
{Name: "Slow", Speed: 5},
|
||||
{Name: "Normal", Speed: 7},
|
||||
{Name: "Fast", Speed: 10},
|
||||
{Name: "Insane", Speed: 15},
|
||||
}
|
||||
|
||||
const DefaultSpeed = 7
|
||||
|
||||
func (sg *SnakeGame) IsFinished() bool {
|
||||
return sg.Status == StatusFinished
|
||||
}
|
||||
@@ -121,9 +137,11 @@ type GridPreset struct {
|
||||
}
|
||||
|
||||
var GridPresets = []GridPreset{
|
||||
{Name: "Tiny", Width: 15, Height: 15},
|
||||
{Name: "Small", Width: 20, Height: 20},
|
||||
{Name: "Medium", Width: 30, Height: 20},
|
||||
{Name: "Large", Width: 40, Height: 20},
|
||||
{Name: "XL", Width: 50, Height: 30},
|
||||
}
|
||||
|
||||
// snapshot returns a shallow copy of the game safe for reading outside the lock.
|
||||
|
||||
Reference in New Issue
Block a user