/// <summary> /// Add a quality (can be negative) /// </summary> /// <param name="value">The value you're adding</param> /// <param name="additive">Is this additive or replace-ive</param> /// <returns>The new value</returns> public int SetQuality(int value, string quality, bool additive) { IQuality currentQuality = Qualities.FirstOrDefault(qual => qual.Name.Equals(quality, StringComparison.InvariantCultureIgnoreCase)); if (currentQuality == null) { Qualities.Add(new Quality() { Name = quality, Type = QualityType.Aspect, Visible = true, Value = value }); return(value); } if (additive) { currentQuality.Value += value; } else { currentQuality.Value = value; } return(value); }
private void OnDeserialized(StreamingContext context) { if (_raw.ContainsKey("hMusic")) { Qualities.Add(SongQuality.HQ); } if (_raw.ContainsKey("mMusic")) { Qualities.Add(SongQuality.MQ); } if (_raw.ContainsKey("lMusic")) { Qualities.Add(SongQuality.LQ); } }
private async Task Refresh() { await _semaphoreSlim.WaitAsync(); IsBusy = true; try { Qualities.Clear(); Qualities.Add(new QualityItem() { Id = "", Name = "Auto" }); var qualities = await _service.GetStreamQualities(); foreach (var q in qualities) { Qualities.Add(q); } } finally { IsBusy = false; _semaphoreSlim.Release(); OnPropertyChanged(nameof(IsBusy)); OnPropertyChanged(nameof(Qualities)); Device.BeginInvokeOnMainThread(() => { SelectQualityByConfg(); }); } }
public CommunityCenterBundles() { try { this.Building = Game1.getLocationFromName("CommunityCenter") as CommunityCenter; this.IsJojaMember = Game1.MasterPlayer.mailReceived.Contains("JojaMember"); // Possible TODO Do names of received mail depend on current language? #if ANDROID && LEGACYVERSION Dictionary <string, string> RawBundleData = Game1.content.Load <Dictionary <string, string> >(@"Data\Bundles"); #else Dictionary <string, string> RawBundleData = Game1.netWorldState.Value.BundleData; #endif Dictionary <string, List <Tuple <int, string> > > GroupedByRoomName = new Dictionary <string, List <Tuple <int, string> > >(); foreach (KeyValuePair <string, string> KVP in RawBundleData) { string RoomName = KVP.Key.Split('/').First(); int TaskIndex = int.Parse(KVP.Key.Split('/').Last()); List <Tuple <int, string> > Tasks; if (!GroupedByRoomName.TryGetValue(RoomName, out Tasks)) { Tasks = new List <Tuple <int, string> >(); GroupedByRoomName.Add(RoomName, Tasks); } Tasks.Add(Tuple.Create(TaskIndex, KVP.Value)); } GroupedByRoomName.Remove("Vault"); this.Rooms = GroupedByRoomName.Select(x => new BundleRoom(this, x.Key, x.Value)).ToList().AsReadOnly(); Dictionary <int, BundleTask> IndexedTasks = Rooms.SelectMany(x => x.Tasks).ToDictionary(x => x.BundleIndex); // Fill in data for which items of which tasks have been completed foreach (var KVP in Building.bundlesDict()) // maybe use Game1.netWorldState.Value.Bundles instead? { if (IndexedTasks.TryGetValue(KVP.Key, out BundleTask Task)) { try { for (int i = 0; i < Task.Items.Count; i++) { Task.Items[i].IsCompleted = KVP.Value[i]; } } catch (Exception exception) { ItemBagsMod.ModInstance.Monitor.Log(string.Format("Error while initializing completed items for bundle index = {0}: {1}", KVP.Key, exception.Message), LogLevel.Error); } } } // Fill in data for which tasks have been completed foreach (BundleTask Task in IndexedTasks.Values) { if (Building.isBundleComplete(Task.BundleIndex) || IsJojaMember) { Task.Items.ToList().ForEach(x => x.IsCompleted = true); } } // Index the required bundle items by their Id and accepted Qualities this.IncompleteBundleItemIds = new Dictionary <ContainerSize, Dictionary <int, HashSet <ObjectQuality> > >(); foreach (ContainerSize Size in BundleBag.ValidSizes) { IncompleteBundleItemIds.Add(Size, new Dictionary <int, HashSet <ObjectQuality> >()); } IterateAllBundleItems(Item => { if (!Item.IsCompleted) { int Id = Item.Id; ObjectQuality Quality = Item.MinQuality; string RoomName = Item.Task.Room.Name; foreach (ContainerSize Size in BundleBag.ValidSizes) { if (!BundleBag.InvalidRooms[Size].Contains(RoomName)) { Dictionary <int, HashSet <ObjectQuality> > IndexedItems = IncompleteBundleItemIds[Size]; if (!IndexedItems.TryGetValue(Id, out HashSet <ObjectQuality> Qualities)) { Qualities = new HashSet <ObjectQuality>(); IndexedItems.Add(Id, Qualities); } Qualities.Add(Quality); } } } }); } catch (Exception ex) { this.IsJojaMember = false; this.Rooms = new List <BundleRoom>().AsReadOnly(); this.IncompleteBundleItemIds = new Dictionary <ContainerSize, Dictionary <int, HashSet <ObjectQuality> > >(); ItemBagsMod.ModInstance.Monitor.Log(string.Format("Error while instantiating CommunityCenterBundles: {0}", ex.Message), LogLevel.Error); ItemBagsMod.ModInstance.Monitor.Log(string.Format("Error while instantiating CommunityCenterBundles: {0}", ex.ToString()), LogLevel.Error); } }