forked from DFHack/dfhack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfaststart.cpp
More file actions
69 lines (55 loc) · 1.52 KB
/
faststart.cpp
File metadata and controls
69 lines (55 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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;
}