//private static IntPtr JassStringHandleToStringHook(IntPtr stringJassHandle) //{ // var vtable = Memory.Read<IntPtr>(stringJassHandle); // if (vtable == UnknownStringType1VTable || vtable == UnknownStringType2VTable) // { // // The two checks above are vtables for the two only know string handles. // return JassStringHandleToString(stringJassHandle); // } // // Anything but the two types above must be strings that doesn't need to be converted. // return stringJassHandle; //} //private static IntPtr JassStringManager__ResizeHook(JassStringManager* @this, UInt32 newSize) //{ // var result = JassStringManager__Resize(@this, newSize); // InternalNatives.JassStringManager = @this; // return result; //} private static void CTriggerWar3__ExecuteHook(CTriggerWar3Ptr @this, IntPtr a2) { try { InternalNatives.CTriggerWar3__Execute(@this, a2); InternalNatives.TriggerRunActions(@this); } catch (Exception e) { Trace.WriteLine("CTriggerWar3__ExecuteHook"); Trace.WriteLine(e.ToString()); } }
public static void TriggerRunActions(CTriggerWar3Ptr key) { try { HashSet <ManagedActionBase> bucket; if (InternalNatives.actions.TryGetValue(key, out bucket)) { foreach (var action in bucket) { action.Invoke(InternalNatives.handles[key]); } } } catch (Exception e) { Trace.WriteLine("TriggerRunActions"); Trace.WriteLine(e.ToString()); } }
public static void CTriggerWar3__ExecutePrototype(CTriggerWar3Ptr @this, IntPtr a2) { ThisCall.Invoke <IntPtr>(GameAddresses.CTriggerWar3__Execute, @this, a2); }