public void CommitResearch(string playerID, string key, ResearchProgression itemProgression) { var progression = GetProgression(playerID); progression[key] = itemProgression; _progressions[playerID] = progression; }
private void SendItemResearchMessage(Item item, ResearchProgression progression) { var itemResearchedMessage = new ItemResearchedMessage { Key = Helpers.GetItemUniqueKey(item), Progression = progression }; _helper.Multiplayer.SendMessage(itemResearchedMessage, MessageKeys.PROGRESSION_ITEM_RESEARCHED, new[] { _modManifest.UniqueID }); }
private ResearchProgression TryInitAndReturnProgressionItem(Item item) { var key = Helpers.GetItemUniqueKey(item); ResearchProgression progressionItem; if (_progression.ContainsKey(key)) { progressionItem = _progression[key]; } else { progressionItem = new ResearchProgression(); _progression[key] = new ResearchProgression(); } return(progressionItem); }
private ItemProgressionRaw GetItemProgressionRaw(Item item, out ResearchProgression progressionItem, bool itemActive = false) { var spawnableItem = ModManager.Instance.GetSpawnableItem(item, out _); if (spawnableItem == null) { progressionItem = null; return(new ItemProgressionRaw { current = -1, max = -1 }); } var itemQuality = (ItemQuality)((item as Object)?.Quality ?? 0); return(GetItemProgressionRaw(spawnableItem, out progressionItem, itemQuality, itemActive)); }
private ItemProgressionRaw GetItemProgressionRaw(SpawnableItem item, out ResearchProgression progressionItem, ItemQuality quality = ItemQuality.Normal, bool itemActive = false) { var category = ModManager.Instance.AvailableCategories.FirstOrDefault(c => I18n.GetByKey(c.Label).ToString().Equals(item.Category)); // if (itemActive) // { // _monitor.Log($"Current item - name: {item.Name}, ID: {item.ID}, category: {item.Category}", // LogLevel.Alert); // _monitor.Log($"Unique key: {Helpers.GetItemUniqueKey(item.Item)}", // LogLevel.Alert); // } var maxProgression = ModManager.Instance.ModMode switch { ModMode.Buy => 1, _ => category?.ResearchCount ?? 1 }; progressionItem = TryInitAndReturnProgressionItem(item.Item); var itemProgression = quality switch { ItemQuality.Silver => progressionItem.ResearchCountSilver, ItemQuality.Gold => progressionItem.ResearchCountGold, ItemQuality.Iridium => progressionItem.ResearchCountIridium, _ => progressionItem.ResearchCount }; itemProgression = (int)MathHelper.Clamp(itemProgression, 0, maxProgression); return(new ItemProgressionRaw { current = itemProgression, max = maxProgression }); }