public static bool TryPurchaseAugment(ItemIndex itemIndex, AugmentId augmentId, NetworkInstanceId clientId) { return(AugmentResolver.TryAddOrUpgradeAugmentToPlayer(clientId, itemIndex, augmentId)); }
public static bool IsAugmentActiveForPlayer(ItemIndex itemIndex, AugmentId augmentId, NetworkInstanceId clientId) { if (!ClientAugmentBinding.TryGetValue(clientId, out var items)) { return(false); } return(items.Augments.TryGetValue(itemIndex, out var augments) && augments.ContainsKey(augmentId)); }
public static bool TryAddOrUpgradeAugmentToPlayer(NetworkInstanceId id, ItemIndex itemIndex, AugmentId augmentId) { if (!AllAvailableAugments.TryGetValue(itemIndex, out var availableAugments) || !availableAugments.TryGetValue(augmentId, out var augmentToAdd)) { return(false); } var(getAugmentsSuccess, augmentList) = GetAugments(); if (!getAugmentsSuccess) { return(false); } var existsAlready = false; //If list contains augments for item if (augmentList.Augments.TryGetValue(itemIndex, out var existingItemAugments)) { //If player already has augment, or if it couldnt be added existsAlready = existingItemAugments.ContainsKey(augmentId); if (!existsAlready && !existingItemAugments.TryAdd(augmentId, augmentToAdd)) { return(false); } } //Player does not have any augments for item else { //Create new dictionary of augments for item var newAugmentDictionary = new ConcurrentDictionary <AugmentId, AugmentBase>(); if (!newAugmentDictionary.TryAdd(augmentId, augmentToAdd)) { return(false); } if (!augmentList.Augments.TryAdd(itemIndex, newAugmentDictionary)) { return(false); } } Chat.AddMessage($"Exists: {existsAlready}"); if (existsAlready) { return(augmentToAdd.TryLevelUp(id)); } Chat.AddMessage($"Activate {augmentToAdd.Name}"); augmentToAdd.Activate(); augmentToAdd.TryLevelUp(id); return(true); (bool succes, PlayerAugments existingAugments) GetAugments() { //If client does not have any augments, add a new list. if (!ClientAugmentBinding.ContainsKey(id)) { if (!ClientAugmentBinding.TryAdd(id, new PlayerAugments(id))) { return(false, null); } ; } //Try get the existing or newly added list. if (!ClientAugmentBinding.TryGetValue(id, out var existingAugments)) { return(false, null); } return(true, existingAugments); } }