static void Postfix(ref AgingCampaignBehavior __instance, Hero current) { if (!current.IsTemplate && current.IsAlive) { if ((int)current.BirthDay.ElapsedDaysUntilNow == (int)CampaignTime.Years((float)Campaign.Current.Models.AgeModel.HeroComesOfAge).ToDays) { if (current.HeroState != Hero.CharacterStates.Active) { CampaignEventDispatcher dispatcher = GameComponent.CampaignEventDispatcher(); if (null != dispatcher) { ReflectUtils.ReflectMethodAndInvoke("OnHeroComesOfAge", dispatcher, new Object[] { current }); } } } else if ((int)current.BirthDay.ElapsedDaysUntilNow == (int)CampaignTime.Years((float)Campaign.Current.Models.AgeModel.BecomeTeenagerAge).ToDays) { // CampaignEventDispatcher.Instance.OnHeroReachesTeenAge(current); } else if ((int)current.BirthDay.ElapsedDaysUntilNow == (int)CampaignTime.Years((float)Campaign.Current.Models.AgeModel.BecomeChildAge).ToDays) { // CampaignEventDispatcher.Instance.OnHeroGrowsOutOfInfancy(current); } } }
public static void SendEvent(String eventMethod, object[] objectParams) { CampaignEventDispatcher dispatcher = GameComponent.CampaignEventDispatcher(); if (null != dispatcher) { ReflectUtils.ReflectMethodAndInvoke("OnHeroComesOfAge", dispatcher, objectParams); } }
public static CampaignEventDispatcher CampaignEventDispatcher() { CampaignEventDispatcher dispatcher = null;; PropertyInfo propertyInfo = Campaign.Current.GetType().GetProperty("CampaignEventDispatcher", BindingFlags.Instance | BindingFlags.NonPublic); if (null != propertyInfo) { dispatcher = (CampaignEventDispatcher)propertyInfo.GetValue(Campaign.Current); } return(dispatcher); }
internal static void OnArmyDispersed(this CampaignEventDispatcher __instance, Army army, Army.ArmyDispersionReason reason, bool isPlayersArmy) { throw new NotImplementedException("Need to patch first"); }