Consolodated config, added portals, etc.

This commit is contained in:
2025-11-24 15:03:56 -07:00
parent f39684873b
commit 57d08f2f04
15 changed files with 895 additions and 212 deletions

View File

@@ -101,9 +101,10 @@ type state struct {
gameplayScreen *screens.GameplayScreen
pauseMenu *menu.PauseMenu
fpsEnabled bool
fpsCap FPSCap
saveManager *save.Manager
fpsEnabled bool
fpsCap FPSCap
portalVisibility bool
saveManager *save.Manager
lastAutoSave time.Time
autoSaveInterval time.Duration
@@ -120,6 +121,7 @@ func newState() *state {
lastTick: now,
fpsEnabled: false,
fpsCap: FPSCap60,
portalVisibility: false,
lastAutoSave: now,
autoSaveInterval: 30 * time.Second,
}
@@ -133,6 +135,7 @@ func newState() *state {
if saveManager != nil {
if settings, err := saveManager.LoadSettings(); err == nil {
s.fpsEnabled = settings.FPSMonitor
s.portalVisibility = settings.PortalVisibility
switch settings.FPSCap {
case "60":
s.fpsCap = FPSCap60
@@ -149,14 +152,16 @@ func newState() *state {
// Initialize screens
s.splashScreen = screens.NewSplashScreen()
s.titleScreen = screens.NewTitleScreen()
s.gameplayScreen = screens.NewGameplayScreen(ScreenWidth, ScreenHeight, &s.fpsEnabled)
s.gameplayScreen = screens.NewGameplayScreen(ScreenWidth, ScreenHeight, &s.fpsEnabled, &s.portalVisibility)
s.pauseMenu = menu.NewPauseMenu()
// Wire up settings references
s.titleScreen.SetFPSMonitor(&s.fpsEnabled)
s.titleScreen.SetFPSCap(&s.fpsCap)
s.titleScreen.SetPortalVisibility(&s.portalVisibility)
s.pauseMenu.SetFPSMonitor(&s.fpsEnabled)
s.pauseMenu.SetFPSCap(&s.fpsCap)
s.pauseMenu.SetPortalVisibility(&s.portalVisibility)
if saveManager != nil {
s.titleScreen.SetHasSaveGame(saveManager.HasSavedGame())
@@ -167,8 +172,9 @@ func newState() *state {
// Create initial save file
if saveManager != nil {
settings := &save.Settings{
FPSMonitor: s.fpsEnabled,
FPSCap: s.fpCapToStringHelper(s.fpsCap),
FPSMonitor: s.fpsEnabled,
FPSCap: s.fpCapToStringHelper(s.fpsCap),
PortalVisibility: s.portalVisibility,
}
saveManager.SaveSettings(settings)
}
@@ -192,6 +198,7 @@ func (s *state) fpCapToStringHelper(cap FPSCap) string {
func (g *Game) Update() error {
prevFPSEnabled := g.state.fpsEnabled
prevFPSCap := g.state.fpsCap
prevPortalVisibility := g.state.portalVisibility
currentTPS := g.state.fpsCap.TPS()
if currentTPS < 0 {
@@ -213,7 +220,7 @@ func (g *Game) Update() error {
err = g.updatePaused()
}
if prevFPSEnabled != g.state.fpsEnabled || prevFPSCap != g.state.fpsCap {
if prevFPSEnabled != g.state.fpsEnabled || prevFPSCap != g.state.fpsCap || prevPortalVisibility != g.state.portalVisibility {
g.saveSettings()
}
@@ -338,8 +345,9 @@ func (g *Game) saveSettings() {
}
settings := &save.Settings{
FPSMonitor: g.state.fpsEnabled,
FPSCap: g.fpCapToString(g.state.fpsCap),
FPSMonitor: g.state.fpsEnabled,
FPSCap: g.fpCapToString(g.state.fpsCap),
PortalVisibility: g.state.portalVisibility,
}
g.state.saveManager.SaveSettings(settings)
}