Pass argc and argv through to DrivenEngine::event_init
This commit is contained in:
@@ -207,8 +207,8 @@ void DrivenEngine::drv_set_lua_source(util::LuaSourcePtr source) {
|
||||
rescan_lua_source_ = false;
|
||||
}
|
||||
|
||||
void DrivenEngine::drv_invoke_event_init() {
|
||||
event_init();
|
||||
void DrivenEngine::drv_invoke_event_init(int argc, char *argv[]) {
|
||||
event_init(argc, argv);
|
||||
}
|
||||
|
||||
void DrivenEngine::drv_invoke_event_update() {
|
||||
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
// The update callback. You may override this in a subclass.
|
||||
// This will be called whenever anything changes.
|
||||
//
|
||||
virtual void event_init() {}
|
||||
virtual void event_init(int argc, char *argv[]) {}
|
||||
virtual void event_update() {}
|
||||
|
||||
// Specify the set of listening ports.
|
||||
@@ -343,7 +343,7 @@ public:
|
||||
|
||||
// Invoke the init or update event.
|
||||
//
|
||||
void drv_invoke_event_init();
|
||||
void drv_invoke_event_init(int argc, char *argv[]);
|
||||
void drv_invoke_event_update();
|
||||
|
||||
// Check the 'rescan_lua_source' flag. If this flag is set, it means
|
||||
|
||||
@@ -325,7 +325,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void drive(DrivenEngine *de) {
|
||||
void drive(DrivenEngine *de, int argc, char *argv[]) {
|
||||
WSADATA whocares;
|
||||
assert(WSAStartup(MAKEWORD(2,2), &whocares) == 0);
|
||||
HANDLE hconsole = GetStdHandle(STD_INPUT_HANDLE);
|
||||
@@ -334,7 +334,7 @@ public:
|
||||
DrivenEngine::set(de);
|
||||
basetime_ = get_now();
|
||||
driven_->drv_set_lua_source(util::read_lua_source("lua"));
|
||||
driven_->drv_invoke_event_init();
|
||||
driven_->drv_invoke_event_init(argc, argv);
|
||||
handle_listen_ports();
|
||||
while (!de->drv_get_stop_driver()) {
|
||||
short_sleep_ = false;
|
||||
@@ -353,8 +353,8 @@ public:
|
||||
};
|
||||
|
||||
|
||||
void driver_drive(DrivenEngine *de) {
|
||||
void driver_drive(DrivenEngine *de, int argc, char *argv[]) {
|
||||
Driver driver;
|
||||
driver.drive(de);
|
||||
driver.drive(de, argc, argv);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
#include "drivenengine.hpp"
|
||||
|
||||
void driver_drive(DrivenEngine *de);
|
||||
void driver_drive(DrivenEngine *de, int argc, char *argv[]);
|
||||
|
||||
#endif // DRIVER_HPP
|
||||
|
||||
@@ -24,7 +24,7 @@ static void dump_lines(StreamBuffer *in, StreamBuffer *out, int chid) {
|
||||
class DriverListenTest : public DrivenEngine {
|
||||
public:
|
||||
std::vector<UniqueChannel> channels_;
|
||||
virtual void event_init() {
|
||||
virtual void event_init(int argc, char *argv[]) {
|
||||
listen_port(8085);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
class DriverWebServerTest : public DrivenEngine {
|
||||
public:
|
||||
std::vector<UniqueChannel> channels_;
|
||||
virtual void event_init() {
|
||||
virtual void event_init(int argc, char *argv[]) {
|
||||
UniqueChannel ch = new_outgoing_channel("stanford.edu:80");
|
||||
ch->out()->write_bytes("GET http://stanford.edu/index.html HTTP/1.1\n\n");
|
||||
channels_.emplace_back(std::move(ch));
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
class DriverDNSFailTest : public DrivenEngine {
|
||||
public:
|
||||
std::vector<UniqueChannel> channels_;
|
||||
virtual void event_init() {
|
||||
virtual void event_init(int argc, char *argv[]) {
|
||||
UniqueChannel ch = new_outgoing_channel("akjsdkajshdakjshd.alk:80");
|
||||
ch->out()->write_bytes("GET http://stanford.edu/index.html HTTP/1.1\n\n");
|
||||
channels_.emplace_back(std::move(ch));
|
||||
@@ -108,7 +108,7 @@ public:
|
||||
class DriverPrintClockTest : public DrivenEngine {
|
||||
public:
|
||||
int count;
|
||||
virtual void event_init() {
|
||||
virtual void event_init(int argc, char *argv[]) {
|
||||
count = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ public:
|
||||
void do_command(const StringVec &exp);
|
||||
|
||||
public:
|
||||
virtual void event_init() {
|
||||
virtual void event_init(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
virtual void event_update() {
|
||||
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
std::vector<std::unique_ptr<ServerClient>> clients_;
|
||||
|
||||
public:
|
||||
virtual void event_init() {
|
||||
virtual void event_init(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
virtual void event_update() {
|
||||
|
||||
@@ -33,7 +33,7 @@ static void usage() {
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
UniqueDrivenEngine engine;
|
||||
if (argc != 2) usage();
|
||||
if (argc < 2) usage();
|
||||
std::string mode = argv[1];
|
||||
for (int i = 0; makers[i].name != nullptr; i++) {
|
||||
if (mode == makers[i].name) {
|
||||
@@ -42,6 +42,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
if (engine == nullptr) usage();
|
||||
driver_drive(engine.get());
|
||||
// Remove one argument from the argument vector,
|
||||
// so that it looks like a normal argument vector.
|
||||
driver_drive(engine.get(), argc - 1, argv + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ private:
|
||||
void check_redirects();
|
||||
|
||||
public:
|
||||
virtual void event_init();
|
||||
virtual void event_init(int argc, char *argv[]);
|
||||
virtual void event_update();
|
||||
};
|
||||
|
||||
@@ -214,7 +214,7 @@ void TextGame::check_redirects() {
|
||||
}
|
||||
}
|
||||
|
||||
void TextGame::event_init()
|
||||
void TextGame::event_init(int argc, char *argv[])
|
||||
{
|
||||
world_.reset(new World(util::WORLD_TYPE_STANDALONE));
|
||||
world_->update_source(get_lua_source());
|
||||
|
||||
Reference in New Issue
Block a user