void MasterState::OnResume() {
if (spawn_index.MissingChunks() > 0) {
env.state.Push(&preload);
- }
- if (config.input.mouse) {
- env.window.GrabMouse();
+ return;
}
if (spawn_player) {
// TODO: spawn
spawn_player = false;
}
hud.KeepMessages(false);
+ OnFocus();
}
void MasterState::OnPause() {
+ OnBlur();
+}
+
+void MasterState::OnFocus() {
+ if (config.input.mouse) {
+ env.window.GrabMouse();
+ }
+ interface.Unlock();
+}
+
+void MasterState::OnBlur() {
env.window.ReleaseMouse();
+ interface.Lock();
}
}
void MasterState::Update(int dt) {
- input.Update(dt);
+ spawner.Update(dt);
+ world.Update(dt);
if (input.BlockFocus()) {
hud.FocusBlock(input.BlockFocus().GetChunk(), input.BlockFocus().block);
} else if (input.EntityFocus()) {
}
hud.Display(res.block_types[player.GetInventorySlot() + 1]);
hud.Update(dt);
- spawner.Update(dt);
- world.Update(dt);
chunk_loader.Update(dt);
chunk_renderer.Update(dt);