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);
         }
     }
 }
示例#2
0
        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;
            }
        }