summaryrefslogtreecommitdiff
path: root/library/PluginManager.cpp
diff options
context:
space:
mode:
authorPetr Mrázek2011-12-31 13:09:12 +0100
committerPetr Mrázek2011-12-31 13:09:12 +0100
commitf35cdb84cdeaed99c0bb291423ffbc05183fd35f (patch)
tree84f910568748f97ed6f454e68b7b813687e0eb1a /library/PluginManager.cpp
parent9db20bd84de2b31a3a34f775af9ce6320f37d75a (diff)
parentb652ec4132ad97b88dfd648303bf7a99267f1742 (diff)
downloaddfhack-f35cdb84cdeaed99c0bb291423ffbc05183fd35f.tar.gz
dfhack-f35cdb84cdeaed99c0bb291423ffbc05183fd35f.tar.bz2
dfhack-f35cdb84cdeaed99c0bb291423ffbc05183fd35f.tar.xz
Merge https://github.com/angavrilov/dfhack
Conflicts: library/Core.cpp library/PluginManager.cpp library/include/Core.h library/include/PluginManager.h library/modules/Gui.cpp plugins/stockpiles.cpp
Diffstat (limited to 'library/PluginManager.cpp')
-rw-r--r--library/PluginManager.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/library/PluginManager.cpp b/library/PluginManager.cpp
index 29cc992b..9acd05aa 100644
--- a/library/PluginManager.cpp
+++ b/library/PluginManager.cpp
@@ -29,7 +29,6 @@ distribution.
#include "Console.h"
#include "DataDefs.h"
-#include "df/viewscreen.h"
using namespace DFHack;
@@ -292,21 +291,22 @@ command_result Plugin::invoke( std::string & command, std::vector <std::string>
CoreSuspender suspend(&c);
df::viewscreen *top = c.getTopViewscreen();
- if ((cmd.viewscreen_type && !cmd.viewscreen_type->is_instance(top))
- || !cmd.guard(&c, top))
+ if (!cmd.guard(&c, top))
{
c.con.printerr("Could not invoke %s: unsuitable UI state.\n", command.c_str());
- cr = CR_FAILURE;
+ cr = CR_WRONG_USAGE;
}
- else
+ else
{
cr = cmd.function(&c, parameters);
}
}
- else
+ else
{
cr = cmd.function(&c, parameters);
}
+ if (cr == CR_WRONG_USAGE && !cmd.usage.empty())
+ c.con << "Usage:\n" << cmd.usage << flush;
break;
}
}
@@ -325,20 +325,14 @@ bool Plugin::can_invoke_hotkey( std::string & command, df::viewscreen *top )
for (int i = 0; i < commands.size();i++)
{
PluginCommand &cmd = commands[i];
-
if(cmd.name == command)
{
if (cmd.interactive)
cr = false;
else if (cmd.guard)
- {
- cr = (!cmd.viewscreen_type || cmd.viewscreen_type->is_instance(top))
- && cmd.guard(&c, top);
- }
- else
- {
+ cr = cmd.guard(&c, top);
+ else
cr = default_hotkey(&c, top);
- }
break;
}
}