# If FPS would go higher than this, limit it by sleeping
# (to not waste CPU power for no benefit)
#fps_max = 60
+# Maximum FPS when game is paused
+#pause_fps_max = 20
# The allowed adjustment range for the automatic rendering range adjustment
#viewing_range_nodes_max = 160
#viewing_range_nodes_min = 35
settings->setDefault("wanted_fps", "30");
settings->setDefault("fps_max", "60");
+ settings->setDefault("pause_fps_max", "20");
// A bit more than the server will send around the player, to make fog blend well
settings->setDefault("viewing_range_nodes_max", "240");
settings->setDefault("viewing_range_nodes_min", "35");
*/
{
- float fps_max = g_settings->getFloat("fps_max");
+ float fps_max = g_menumgr.pausesGame() ?
+ g_settings->getFloat("pause_fps_max") :
+ g_settings->getFloat("fps_max");
u32 frametime_min = 1000./fps_max;
if(busytime_u32 < frametime_min)
LocalPlayer* player = client.getEnv().getLocalPlayer();
player->keyPressed=keyPressed;
}
-
+
/*
- Run server
+ Run server, client (and process environments)
*/
-
- if(server != NULL)
+ bool can_be_and_is_paused =
+ (simple_singleplayer_mode && g_menumgr.pausesGame());
+ if(can_be_and_is_paused)
{
- //TimeTaker timer("server->step(dtime)");
- server->step(dtime);
+ // No time passes
+ dtime = 0;
}
-
- /*
- Process environment
- */
-
+ else
{
- //TimeTaker timer("client.step(dtime)");
- client.step(dtime);
- //client.step(dtime_avg1);
+ if(server != NULL)
+ {
+ //TimeTaker timer("server->step(dtime)");
+ server->step(dtime);
+ }
+ {
+ //TimeTaker timer("client.step(dtime)");
+ client.step(dtime);
+ }
}
{
void drawMenu();
bool OnEvent(const SEvent& event);
-
+
+ bool pausesGame(){ return true; }
+
private:
IGameCallback *m_gamecallback;
bool m_simple_singleplayer_mode;
bool OnEvent(const SEvent& event);
+ bool pausesGame(){ return true; }
+
private:
Client* m_client;
return m_stack.size();
}
+ bool pausesGame()
+ {
+ for(std::list<GUIModalMenu*>::iterator
+ i = m_stack.begin(); i != m_stack.end(); ++i)
+ {
+ if((*i)->pausesGame())
+ return true;
+ }
+ return false;
+ }
+
std::list<GUIModalMenu*> m_stack;
};
virtual void drawMenu() = 0;
virtual bool preprocessEvent(const SEvent& event) { return false; };
virtual bool OnEvent(const SEvent& event) { return false; };
+ virtual bool pausesGame(){ return false; } // Used for pause menu
protected:
//bool m_force_regenerate_gui;