public static void Postfix(MapNotificationVM __instance, ref MapNotificationItemBaseVM __result, InformationData data) { // Vanilla didn't found the right type and returned a default one if (__result == null || __result.GetType() == typeof(MapNotificationItemBaseVM)) { if (data is MercenaryContractMapNotification) { var removeNotificationItemDelegate = RemoveNotificationItemMethod.CreateDelegate(typeof(Action <MapNotificationItemBaseVM>), __instance); __result = new MercenaryContractExpiredNotificationItemVM(data, (Action <MapNotificationItemBaseVM>)removeNotificationItemDelegate); } } }
private static void GetNotificationFromData(MapNotificationVM __instance, ref MapNotificationItemBaseVM __result, InformationData data) { Type type = data.GetType(); MapNotificationItemBaseVM mapNotification = null; if (type == typeof(CECaptorMapNotification)) { Action <MapNotificationItemBaseVM> onRemove = (MapNotificationItemBaseVM item) => { CEHelper.notificationCaptorExists = false; new CESubModule().LoadCampaignNotificationTexture("default"); RemoveNotificationItem.Invoke(__instance, new object[] { item }); }; mapNotification = new CECaptorMapNotificationItemVM(data); FieldInfo fi = mapNotification.GetType().BaseType.GetField("OnRemove", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static); if (fi != null) { fi.SetValue(mapNotification, onRemove); } __result = mapNotification; } else if (type == typeof(CEEventMapNotification)) { Action <MapNotificationItemBaseVM> onRemove = (MapNotificationItemBaseVM item) => { CEHelper.notificationEventExists = false; new CESubModule().LoadCampaignNotificationTexture("default", 1); RemoveNotificationItem.Invoke(__instance, new object[] { item }); }; mapNotification = new CEEventMapNotificationItemVM(data); FieldInfo fi = mapNotification.GetType().BaseType.GetField("OnRemove", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static); if (fi != null) { fi.SetValue(mapNotification, onRemove); } __result = mapNotification; } }