예제 #1
0
        private static void CheckForCharacterInteractionAtTilePostfix(Utility __instance, Vector2 tileLocation, Farmer who)
        {
            NPC character = Game1.currentLocation.isCharacterAtTile(tileLocation);

            if (CompanionManager.IsCustomCompanion(character))
            {
                Companion companion = character as Companion;
                if (companion.owner is null && companion.model != null && !String.IsNullOrEmpty(companion.model.InspectionDialogue))
                {
                    Game1.mouseCursor             = 4;
                    Game1.mouseCursorTransparency = Utility.tileWithinRadiusOfPlayer((int)tileLocation.X, (int)tileLocation.Y, 1, who) ? 1f : 0.5f;
                }
            }
        }
예제 #2
0
        private static void IsThereAFarmerOrCharacterWithinDistancePostfix(Utility __instance, ref Character __result, Vector2 tileLocation, int tilesAway, GameLocation environment)
        {
            if (__result != null && CompanionManager.IsCustomCompanion(__result))
            {
                foreach (NPC c in environment.characters.Where(c => !CompanionManager.IsCustomCompanion(c)))
                {
                    if (Vector2.Distance(c.getTileLocation(), tileLocation) <= tilesAway)
                    {
                        __result = c;
                        return;
                    }
                }

                __result = null;
            }
        }
        private void RemoveAllCompanions(string owner = null, GameLocation targetLocation = null)
        {
            foreach (GameLocation location in Game1.locations.Where(l => l != null && (targetLocation is null || l == targetLocation)))
            {
                if (location.characters != null)
                {
                    foreach (var creature in location.characters.Where(c => CompanionManager.IsCustomCompanion(c) && (owner is null || (c as Companion).model.Owner.Equals(owner, StringComparison.OrdinalIgnoreCase))).ToList())
                    {
                        location.characters.Remove(creature);
                    }
                }


                if (location is BuildableGameLocation)
                {
                    foreach (Building building in (location as BuildableGameLocation).buildings)
                    {
                        GameLocation indoorLocation = building.indoors.Value;
                        if (indoorLocation is null)
                        {
                            continue;
                        }

                        if (indoorLocation.characters != null)
                        {
                            foreach (var creature in indoorLocation.characters.Where(c => CompanionManager.IsCustomCompanion(c) && (owner is null || (c as Companion).model.Owner.Equals(owner, StringComparison.OrdinalIgnoreCase))).ToList())
                            {
                                indoorLocation.characters.Remove(creature);
                            }
                        }
                    }
                }
            }

            this.Reset();
        }