Merge pull request #3178 from quietust/faststart
Add "faststart" plugin to make DF start fasterdevelop
commit
b2a642f369
@ -0,0 +1,18 @@
|
||||
faststart
|
||||
=========
|
||||
|
||||
.. dfhack-tool::
|
||||
:summary: Makes the main menu appear sooner.
|
||||
:tags: dfhack interface
|
||||
:no-command:
|
||||
|
||||
This plugin accelerates the initial "Loading..." screen that appears when the
|
||||
game first starts, so you don't have to wait as long before the Main Menu
|
||||
appears and you can start playing.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
::
|
||||
|
||||
enable faststart
|
@ -0,0 +1,69 @@
|
||||
// Fast Startup tweak
|
||||
|
||||
#include "Core.h"
|
||||
#include <Console.h>
|
||||
#include <Export.h>
|
||||
#include <PluginManager.h>
|
||||
#include <MiscUtils.h>
|
||||
#include <VTableInterpose.h>
|
||||
|
||||
#include "df/viewscreen_initial_prepst.h"
|
||||
#include <vector>
|
||||
|
||||
using namespace DFHack;
|
||||
using namespace df::enums;
|
||||
using std::vector;
|
||||
|
||||
// Uncomment this to make the Loading screen as fast as possible
|
||||
// This has the side effect of removing the dwarf face animation
|
||||
// (and briefly making the game become unresponsive)
|
||||
|
||||
//#define REALLY_FAST
|
||||
|
||||
DFHACK_PLUGIN("faststart");
|
||||
DFHACK_PLUGIN_IS_ENABLED(is_enabled);
|
||||
|
||||
struct prep_hook : df::viewscreen_initial_prepst
|
||||
{
|
||||
typedef df::viewscreen_initial_prepst interpose_base;
|
||||
|
||||
DEFINE_VMETHOD_INTERPOSE(void, logic, ())
|
||||
{
|
||||
#ifdef REALLY_FAST
|
||||
while (breakdown_level != interface_breakdown_types::STOPSCREEN)
|
||||
{
|
||||
render_count++;
|
||||
INTERPOSE_NEXT(logic)();
|
||||
}
|
||||
#else
|
||||
render_count = 4;
|
||||
INTERPOSE_NEXT(logic)();
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
IMPLEMENT_VMETHOD_INTERPOSE(prep_hook, logic);
|
||||
|
||||
DFhackCExport command_result plugin_enable(color_ostream &out, bool enable)
|
||||
{
|
||||
if (enable != is_enabled)
|
||||
{
|
||||
if (!INTERPOSE_HOOK(prep_hook, logic).apply(enable))
|
||||
return CR_FAILURE;
|
||||
|
||||
is_enabled = enable;
|
||||
}
|
||||
|
||||
return CR_OK;
|
||||
}
|
||||
|
||||
DFhackCExport command_result plugin_init ( color_ostream &out, vector <PluginCommand> &commands)
|
||||
{
|
||||
return CR_OK;
|
||||
}
|
||||
|
||||
DFhackCExport command_result plugin_shutdown ( color_ostream &out )
|
||||
{
|
||||
INTERPOSE_HOOK(prep_hook, logic).remove();
|
||||
return CR_OK;
|
||||
}
|
Loading…
Reference in New Issue