summaryrefslogtreecommitdiff
path: root/library/Hooks-egg.cpp
diff options
context:
space:
mode:
authorPetr Mrázek2012-02-28 03:37:56 +0100
committerPetr Mrázek2012-02-28 03:37:56 +0100
commit731472a4781f091ae313bd39d512207e920db10c (patch)
tree25242218ca8f641ef4b36c6d6f46b4ad6cfb1f62 /library/Hooks-egg.cpp
parentf8721c88b57b22842a2d0ecf60f58b31d151b600 (diff)
downloaddfhack-731472a4781f091ae313bd39d512207e920db10c.tar.gz
dfhack-731472a4781f091ae313bd39d512207e920db10c.tar.bz2
dfhack-731472a4781f091ae313bd39d512207e920db10c.tar.xz
Add eggy hooks (linux only for now)
Diffstat (limited to 'library/Hooks-egg.cpp')
-rw-r--r--library/Hooks-egg.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/library/Hooks-egg.cpp b/library/Hooks-egg.cpp
new file mode 100644
index 00000000..34b31d22
--- /dev/null
+++ b/library/Hooks-egg.cpp
@@ -0,0 +1,91 @@
+/*
+https://github.com/peterix/dfhack
+Copyright (c) 2009-2011 Petr Mrázek (peterix@gmail.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <vector>
+#include <string>
+#include <map>
+
+#include "Core.h"
+#include "Hooks.h"
+#include <iostream>
+
+// hook - called before rendering
+DFhackCExport int egg_init(void)
+{
+ // reroute stderr
+ freopen("stderr.log", "w", stderr);
+ // we don't reroute stdout until we figure out if this should be done at all
+ // See: Console-linux.cpp
+ fprintf(stderr,"dfhack: hooking successful\n");
+ return true;
+}
+
+// hook - called before rendering
+DFhackCExport int egg_shutdown(void)
+{
+ DFHack::Core & c = DFHack::Core::getInstance();
+ return c.Shutdown();
+}
+
+// hook - called for each game tick (or more often)
+DFhackCExport int egg_tick(void)
+{
+ DFHack::Core & c = DFHack::Core::getInstance();
+ return c.Update();
+}
+// hook - called before rendering
+DFhackCExport int egg_prerender(void)
+{
+ return true;
+}
+
+// hook - called for each SDL event, returns 0 when the event has been consumed. 1 otherwise
+DFhackCExport int egg_sdl_event(SDL::Event* event)
+{
+ // if the event is valid, intercept
+ if( event != 0 )
+ {
+ DFHack::Core & c = DFHack::Core::getInstance();
+ return c.SDL_Event(event);
+ }
+ return true;
+}
+
+// return this if you want to kill the event.
+const int curses_error = -1;
+// hook - ncurses event, -1 signifies error.
+DFhackCExport int egg_curses_event(int orig_return)
+{
+ /*
+ if(orig_return != -1)
+ {
+ DFHack::Core & c = DFHack::Core::getInstance();
+ int out;
+ return c.ncurses_wgetch(orig_return,);
+ }*/
+ return orig_return;
+}