mirror of https://github.com/OpenRCT2/OpenRCT2.git
69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
/*****************************************************************************
|
|
* Copyright (c) 2014-2020 OpenRCT2 developers
|
|
*
|
|
* For a complete list of all authors, please refer to contributors.md
|
|
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
|
*
|
|
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
|
*****************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
#ifdef ENABLE_SCRIPTING
|
|
|
|
# include "../interface/InteractiveConsole.h"
|
|
# include "Duktape.hpp"
|
|
# include "ScriptEngine.h"
|
|
|
|
namespace OpenRCT2::Scripting
|
|
{
|
|
class ScConsole
|
|
{
|
|
private:
|
|
InteractiveConsole& _console;
|
|
|
|
public:
|
|
ScConsole(InteractiveConsole& console)
|
|
: _console(console)
|
|
{
|
|
}
|
|
|
|
void clear()
|
|
{
|
|
_console.Clear();
|
|
}
|
|
|
|
duk_ret_t log(duk_context* ctx)
|
|
{
|
|
std::string line;
|
|
auto nargs = duk_get_top(ctx);
|
|
for (duk_idx_t i = 0; i < nargs; i++)
|
|
{
|
|
auto arg = DukValue::copy_from_stack(ctx, i);
|
|
auto argsz = Stringify(arg);
|
|
if (i != 0)
|
|
{
|
|
line.push_back(' ');
|
|
}
|
|
line += argsz;
|
|
}
|
|
_console.WriteLine(line);
|
|
return 0;
|
|
}
|
|
|
|
void executeLegacy(const std::string& command)
|
|
{
|
|
_console.Execute(command);
|
|
}
|
|
|
|
static void Register(duk_context* ctx)
|
|
{
|
|
dukglue_register_method(ctx, &ScConsole::clear, "clear");
|
|
dukglue_register_method_varargs(ctx, &ScConsole::log, "log");
|
|
dukglue_register_method(ctx, &ScConsole::executeLegacy, "executeLegacy");
|
|
}
|
|
};
|
|
} // namespace OpenRCT2::Scripting
|
|
|
|
#endif
|