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
 }
Example #2
0
 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.");
        }