public static void OnStart() { Console.WriteLine("OnStart() called"); Scripts = NWNEventHandler.GetHandlersFromAssembly(); Events.ExamineEvent.AfterExamineObject += e => Console.WriteLine($"{e.Player.Name} examined {e.ExaminedObject.Name}"); }
public static void OnMainLoop(ulong frame) { try { NWNEventHandler.OnMainLoop(frame); } catch (Exception e) { Console.WriteLine(e.ToString()); } }
private static int OnRunScript(string script, uint oidSelf) { var ret = 0; OBJECT_SELF = oidSelf; ScriptContexts.Push(new ScriptContext { OwnerObject = oidSelf, ScriptName = script }); try { ret = NWNEventHandler.OnRunScript(script, oidSelf); } catch (Exception e) { Console.WriteLine(e.ToString()); } ScriptContexts.Pop(); OBJECT_SELF = ScriptContexts.Count == 0 ? OBJECT_INVALID : ScriptContexts.Peek().OwnerObject; return(ret); }
public static int Bootstrap(IntPtr arg, int argLength) { if (arg == (IntPtr)0) { Console.WriteLine("Received NULL bootstrap structure"); return(1); } var expectedLength = Marshal.SizeOf(typeof(BootstrapArgs)); if (argLength < expectedLength) { Console.WriteLine( $"Received bootstrap structure too small - actual={argLength}, expected={expectedLength}"); return(1); } if (argLength > expectedLength) { Console.WriteLine( $"WARNING: Received bootstrap structure bigger than expected - actual={argLength}, expected={expectedLength}"); Console.WriteLine(" This usually means that native code version is ahead of the managed code"); } NativeFunctions = Marshal.PtrToStructure <BootstrapArgs>(arg); AllHandlers handlers; handlers.MainLoop = OnMainLoop; handlers.RunScript = OnRunScript; handlers.Closure = OnClosure; RegisterHandlers(handlers); try { NWNEventHandler.OnStart(); } catch (Exception e) { Console.WriteLine(e.ToString()); } return(0); }