public void UpdateState(string new_state) { if (!_statusList.ContainsKey(Game1.player.UniqueMultiplayerID) || _statusList[Game1.player.UniqueMultiplayerID] != new_state) { _statusList.Remove(Game1.player.UniqueMultiplayerID); _statusList.Add(Game1.player.UniqueMultiplayerID, new_state); } }
public virtual void Update() { _AddSpecialRulesIfNecessary(); if (_objectiveRegistrationDirty) { _objectiveRegistrationDirty = false; _UpdateObjectiveRegistration(); } if (!readyForRemoval.Value) { if (questState.Value == QuestState.InProgress && !participants.ContainsKey(Game1.player.UniqueMultiplayerID)) { participants[Game1.player.UniqueMultiplayerID] = true; } else if (questState.Value == QuestState.Complete) { if (unclaimedRewards.ContainsKey(Game1.player.UniqueMultiplayerID)) { unclaimedRewards.Remove(Game1.player.UniqueMultiplayerID); Game1.stats.QuestsCompleted++; Game1.playSound("questcomplete"); Game1.dayTimeMoneyBox.questsDirty = true; foreach (OrderReward reward in rewards) { reward.Grant(); } } if (participants.ContainsKey(Game1.player.UniqueMultiplayerID) && GetMoneyReward() <= 0) { RemoveFromParticipants(); } } } donateMutex.Update(Game1.getOnlineFarmers()); if (donateMutex.IsLockHeld() && Game1.activeClickableMenu == null) { donateMutex.ReleaseLock(); } if (Game1.activeClickableMenu == null) { _highlightLookup = null; } if (Game1.IsMasterGame && questState.Value != 0) { MarkForRemovalIfEmpty(); if (readyForRemoval.Value) { _RemoveSpecialRuleIfNecessary(); Game1.player.team.specialOrders.Remove(this); } } }
public override void UpdateWhenCurrentLocation(GameTime time) { base.UpdateWhenCurrentLocation(time); foreach (KeyValuePair <long, FarmAnimal> kvp2 in animals.Pairs) { _tempAnimals.Add(kvp2); } foreach (KeyValuePair <long, FarmAnimal> kvp in _tempAnimals) { if (kvp.Value.updateWhenCurrentLocation(time, this)) { animals.Remove(kvp.Key); } } _tempAnimals.Clear(); }
public void RemoveOutgoingProposal() { proposals.Remove(Game1.player.UniqueMultiplayerID); }
/// <summary>The method to call before <see cref="Utility.fixAllAnimals"/>.</summary> private static bool Before_FixAllAnimals() { if (!Game1.IsMasterGame) { return(false); } foreach (var loc in Mod.GetAllLocations()) { if (loc is BuildableGameLocation farm && loc is IAnimalLocation farm_animals) { foreach (Building building in farm.buildings) { if (building.indoors.Value is AnimalHouse house) { foreach (long id in house.animalsThatLiveHere) { FarmAnimal animal = Utility.getAnimal(id); if (animal != null) { animal.home = building; animal.homeLocation.Value = new Vector2(building.tileX.Value, building.tileY.Value); } } } } List <FarmAnimal> farmAnimalList1 = new List <FarmAnimal>(); foreach (FarmAnimal allFarmAnimal in UtilityPatcher.GetAllFarmAnimals(farm)) { if (allFarmAnimal.home == null) { farmAnimalList1.Add(allFarmAnimal); } } foreach (FarmAnimal farmAnimal in farmAnimalList1) { NetDictionary <long, FarmAnimal, NetRef <FarmAnimal>, SerializableDictionary <long, FarmAnimal>, NetLongDictionary <FarmAnimal, NetRef <FarmAnimal> > > .PairsCollection pairs; KeyValuePair <long, FarmAnimal> keyValuePair; foreach (Building building in farm.buildings) { if (building.indoors.Value is AnimalHouse house) { for (int index = house.animals.Count() - 1; index >= 0; --index) { pairs = house.animals.Pairs; keyValuePair = pairs.ElementAt(index); if (keyValuePair.Value.Equals(farmAnimal)) { NetLongDictionary <FarmAnimal, NetRef <FarmAnimal> > animals = house.animals; pairs = house.animals.Pairs; keyValuePair = pairs.ElementAt(index); long key = keyValuePair.Key; animals.Remove(key); } } } } for (int index = farm_animals.Animals.Count() - 1; index >= 0; --index) { pairs = farm_animals.Animals.Pairs; keyValuePair = pairs.ElementAt(index); if (keyValuePair.Value.Equals(farmAnimal)) { NetLongDictionary <FarmAnimal, NetRef <FarmAnimal> > animals = farm_animals.Animals; pairs = farm_animals.Animals.Pairs; keyValuePair = pairs.ElementAt(index); long key = keyValuePair.Key; animals.Remove(key); } } } foreach (Building building in farm.buildings) { if (building.indoors.Value is AnimalHouse house) { for (int index = house.animalsThatLiveHere.Count - 1; index >= 0; --index) { if (Utility.getAnimal(house.animalsThatLiveHere[index]).home != building) { house.animalsThatLiveHere.RemoveAt(index); } } } } foreach (FarmAnimal farmAnimal in farmAnimalList1) { foreach (Building building in farm.buildings) { if (building.buildingType.Contains(farmAnimal.buildingTypeILiveIn.Value) && building.indoors.Value is AnimalHouse house && !house.isFull()) { farmAnimal.home = building; farmAnimal.homeLocation.Value = new Vector2(building.tileX.Value, building.tileY.Value); farmAnimal.setRandomPosition(farmAnimal.home.indoors.Value); (farmAnimal.home.indoors.Value as AnimalHouse).animals.Add(farmAnimal.myID.Value, farmAnimal); (farmAnimal.home.indoors.Value as AnimalHouse).animalsThatLiveHere.Add(farmAnimal.myID.Value); break; } } } List <FarmAnimal> farmAnimalList2 = new List <FarmAnimal>(); foreach (FarmAnimal farmAnimal in farmAnimalList1) { if (farmAnimal.home == null) { farmAnimalList2.Add(farmAnimal); } } foreach (FarmAnimal farmAnimal in farmAnimalList2) { farmAnimal.Position = Utility.recursiveFindOpenTileForCharacter(farmAnimal, farm, new Vector2(40f, 40f), 200) * 64f; if (!farm_animals.Animals.ContainsKey(farmAnimal.myID.Value)) { farm_animals.Animals.Add(farmAnimal.myID.Value, farmAnimal); } } } } return(false); }
public virtual void RemoveSittingFarmer(Farmer farmer) { sittingFarmers.Remove(farmer.UniqueMultiplayerID); }
public virtual void RemoveFromParticipants() { participants.Remove(Game1.player.UniqueMultiplayerID); MarkForRemovalIfEmpty(); }
public static bool Prefix() { if (!Game1.IsMasterGame) { return(false); } foreach (var loc in Mod.GetAllLocations()) { if (loc is BuildableGameLocation farm && loc is IAnimalLocation farm_animals) { foreach (Building building in farm.buildings) { if (building.indoors.Value != null && building.indoors.Value is AnimalHouse) { foreach (long id in (NetList <long, NetLong>)(building.indoors.Value as AnimalHouse).animalsThatLiveHere) { FarmAnimal animal = Utility.getAnimal(id); if (animal != null) { animal.home = building; animal.homeLocation.Value = new Vector2(( float )( int )(NetFieldBase <int, NetInt>)building.tileX, ( float )( int )(NetFieldBase <int, NetInt>)building.tileY); } } } } List <FarmAnimal> farmAnimalList1 = new List <FarmAnimal>(); foreach (FarmAnimal allFarmAnimal in getAllFarmAnimals(farm)) { if (allFarmAnimal.home == null) { farmAnimalList1.Add(allFarmAnimal); } } foreach (FarmAnimal farmAnimal in farmAnimalList1) { NetDictionary <long, FarmAnimal, NetRef <FarmAnimal>, SerializableDictionary <long, FarmAnimal>, NetLongDictionary <FarmAnimal, NetRef <FarmAnimal> > > .PairsCollection pairs; KeyValuePair <long, FarmAnimal> keyValuePair; foreach (Building building in farm.buildings) { if (building.indoors.Value != null && building.indoors.Value is AnimalHouse) { for (int index = (building.indoors.Value as AnimalHouse).animals.Count() - 1; index >= 0; --index) { pairs = (building.indoors.Value as AnimalHouse).animals.Pairs; keyValuePair = pairs.ElementAt(index); if (keyValuePair.Value.Equals(( object )farmAnimal)) { NetLongDictionary <FarmAnimal, NetRef <FarmAnimal> > animals = (building.indoors.Value as AnimalHouse).animals; pairs = (building.indoors.Value as AnimalHouse).animals.Pairs; keyValuePair = pairs.ElementAt(index); long key = keyValuePair.Key; animals.Remove(key); } } } } for (int index = farm_animals.Animals.Count() - 1; index >= 0; --index) { pairs = farm_animals.Animals.Pairs; keyValuePair = pairs.ElementAt(index); if (keyValuePair.Value.Equals(( object )farmAnimal)) { NetLongDictionary <FarmAnimal, NetRef <FarmAnimal> > animals = farm_animals.Animals; pairs = farm_animals.Animals.Pairs; keyValuePair = pairs.ElementAt(index); long key = keyValuePair.Key; animals.Remove(key); } } } foreach (Building building in farm.buildings) { if (building.indoors.Value != null && building.indoors.Value is AnimalHouse) { for (int index = (building.indoors.Value as AnimalHouse).animalsThatLiveHere.Count - 1; index >= 0; --index) { if (Utility.getAnimal((building.indoors.Value as AnimalHouse).animalsThatLiveHere[index]).home != building) { (building.indoors.Value as AnimalHouse).animalsThatLiveHere.RemoveAt(index); } } } } foreach (FarmAnimal farmAnimal in farmAnimalList1) { foreach (Building building in farm.buildings) { if (building.buildingType.Contains(( string )(NetFieldBase <string, NetString>)farmAnimal.buildingTypeILiveIn) && building.indoors.Value != null && (building.indoors.Value is AnimalHouse && !(building.indoors.Value as AnimalHouse).isFull())) { farmAnimal.home = building; farmAnimal.homeLocation.Value = new Vector2(( float )( int )(NetFieldBase <int, NetInt>)building.tileX, ( float )( int )(NetFieldBase <int, NetInt>)building.tileY); farmAnimal.setRandomPosition(( GameLocation )(NetFieldBase <GameLocation, NetRef <GameLocation> >)farmAnimal.home.indoors); (farmAnimal.home.indoors.Value as AnimalHouse).animals.Add(( long )farmAnimal.myID, farmAnimal); (farmAnimal.home.indoors.Value as AnimalHouse).animalsThatLiveHere.Add(( long )farmAnimal.myID); break; } } } List <FarmAnimal> farmAnimalList2 = new List <FarmAnimal>(); foreach (FarmAnimal farmAnimal in farmAnimalList1) { if (farmAnimal.home == null) { farmAnimalList2.Add(farmAnimal); } } foreach (FarmAnimal farmAnimal in farmAnimalList2) { farmAnimal.Position = Utility.recursiveFindOpenTileForCharacter(( Character )farmAnimal, ( GameLocation )farm, new Vector2(40f, 40f), 200) * 64f; if (!farm_animals.Animals.ContainsKey(( long )farmAnimal.myID)) { farm_animals.Animals.Add(( long )farmAnimal.myID, farmAnimal); } } } } return(false); }