TL;DR
Snooze button functionality (like on an alarm clock) to temporarily silence global alerts.What?
I really love the new alerts system in 0.15. It's so great to be able to build a little circuit to monitor things and alert me when things go wrong. ("I'm out of ammo!", "There's some non-iron on the iron belt!", "We're low on power!") A useful aspect of this is that you can check the "Global playback" box to attach a sound to alerts so they get your attention faster. (It's really easy to start ignoring the little flashing alerts at the bottom of the screen.) But this is a problem if it's hard to silence the alert. It might be far away, or might take a long time to fix. (Need to build more boilers!) You could go disable the speaker, but you might forget to turn it back on. You could just put up with it, but some of the alert sounds can get annoying really fast. This is especially true in multiplayer games, when another player is responsible for fixing the alert, and you just have to put up with it until they get the job done.So, I propose a "snooze" button. Clicking on the alert icon simply silences the global sounds for any active alerts for 1-5 minutes. (You could put a slider in the options.) If the same alerts are still active when the "snooze" ends, the sounds begin playing again. If a new alert starts, it will also end the snooze.
Why?
Global playback is great, but can be annoying. A snooze button gives you the benefit of global sound alerts, while giving players the power to temporarily silence alerts they are already aware of.Notes
- When the a player hits the snooze button, it just notes all active global playing speakers in a list, sliences them, and starts a timer for X minutes. If a speaker stops playing, it is removed from the list. If a speaker starts playing, since it's not in the list, it starts actually making sound until the client snoozes it. After the timer expires, all speakers in the list are unsilenced, and the list is cleared.
- I don't think there's any reason for this to affect the game-state, so snoozing would not have to be synchronized between players. (Each player is responsible for their own snooze button.)
- Since the snooze list is not part of the gamestate, it doesn't need to be saved. This means all alerts will start back up after a reload. Also, snoozing would not be repeated in demos. (Though, presumably, you could snooze demo-alerts.)