private void RegisterDefaultRelationships(object sender, EventArgsRegisterRelationships e) { #region OnHover e.RelationshipsOnHover.AddRange(new List <IRelationship>() { new PlayerRelationship(), new EasterEgg(), new PetRelationship(), new FarmAnimalRelationship(Config), new NPCGiftingRelationship(Config, Monitor), new NPCRelationship(Config, Monitor), new HorseRelationship(), new NonFriendNPCRelationship() }); if (Config.displayBirthday) { e.RelationshipsOnHover.Add(new VillagerBirthdayRelationship(Config)); } #endregion #region OnScreen e.RelationshipsOnScreen.AddRange(new List <IRelationship>() { new NameScreenRelationship(Config) }); #endregion }
private void Api_RegisterRelationships(object sender, EventArgsRegisterRelationships e) { //Just commenting out this part so we can try other mods. //e.RelationshipsOnHover.Add(new MyNewRelationship()); //e.RelationshipsOnScreen.Add(new MyNewRelationship()); e.RelationshipsOnHover.Add(new VillagerGenderNameRelationship()); e.RelationshipsOnHover.Add(new MonsterHealthRelationship(Monitor)); }
/// <summary> /// Subscribes the stored Relationships to the relevant events /// </summary> private void InitRelationships() { //Fire registration event EventArgsRegisterRelationships result = RelationshipAPI.FireRegistrationEvent(); //copy arrays HoverRelationships.AddRange(result.RelationshipsOnHover); ScreenRelationships.AddRange(result.RelationshipsOnScreen); //Sort by Priority HoverRelationships.Sort((x, y) => y.Priority - x.Priority); ScreenRelationships.Sort((x, y) => y.Priority - x.Priority); //Log Monitor.Log($"API found {HoverRelationships.Count()} Hover, and {ScreenRelationships.Count()} Screen registered types.", LogLevel.Info); string str = ""; str += $"{Environment.NewLine}Hover Types ({HoverRelationships.Count()}):"; str += String.Format("{0}{1,10} :: {2}", Environment.NewLine, "<Priority>", "<Fully Qualified Type>"); foreach (IRelationship r in HoverRelationships) { str += String.Format("{0}{1,10} :: {2}", Environment.NewLine, r.Priority, r.GetType().ToString()); } str += $"{Environment.NewLine}Screen Types ({ScreenRelationships.Count()}):"; str += String.Format("{0}{1,10} :: {2}", Environment.NewLine, "<Priority>", "<Fully Qualified Type>"); foreach (IRelationship r in ScreenRelationships) { str += String.Format("{0}{1,10} :: {2}", Environment.NewLine, r.Priority, r.GetType().ToString()); } Monitor.Log(str); //subscribe to events foreach (IRelationship r in HoverRelationships.Union(ScreenRelationships)) { if (r is Relationships.IUpdateable) { var o = r as Relationships.IUpdateable; if (o.OnTick != null) { GameEvents.UpdateTick += (obj, args) => { o.OnTick(selectedCharacter, heldItem); } } ; if (o.OnQuaterSecondTick != null) { GameEvents.QuarterSecondTick += (obj, args) => { o.OnQuaterSecondTick(selectedCharacter, heldItem); } } ; } if (r is IInputListener) { var o = r as IInputListener; if (o.ButtonPressed != null) { InputEvents.ButtonPressed += (obj, args) => { o.ButtonPressed.Invoke(selectedCharacter, heldItem, args); } } ; if (o.ButtonReleased != null) { InputEvents.ButtonReleased += (obj, args) => { o.ButtonReleased(selectedCharacter, heldItem, args); } } ; } if (r is IPerSaveSerializable) { var o = r as IPerSaveSerializable; if (o.SaveData != null) { SaveEvents.AfterSave += (obj, args) => { o.SaveData(Helper); } } ; if (o.LoadData != null) { SaveEvents.AfterLoad += (obj, args) => { o.LoadData(Helper); } } ; } } Monitor.Log("Relationship Event Subscription Complete."); }