public MonsterStatusEffect UpdateAndGetStatusEffect(ulong address, int index, float maxBuildup, float currentBuildup, float maxDuration, float currentDuration, int timesActivatedCount) { MonsterStatusEffect statusEffect = StatusEffects.SingleOrDefault(collectionStatusEffect => collectionStatusEffect.Index == index); // TODO: check address??? if (statusEffect != null) { //statusEffect.Address = Address; statusEffect.Duration.Max = maxDuration; statusEffect.Duration.Current = currentDuration; statusEffect.Buildup.Max = maxBuildup; statusEffect.Buildup.Current = currentBuildup; statusEffect.TimesActivatedCount = timesActivatedCount; } else { statusEffect = new MonsterStatusEffect(this, address, index, maxBuildup, currentBuildup, maxDuration, currentDuration, timesActivatedCount); statusEffect.Changed += PartOrStatusEffect_Changed; StatusEffects.Add(statusEffect); } statusEffect.NotifyPropertyChanged(nameof(MonsterStatusEffect.IsVisible)); return(statusEffect); }
public MonsterStatusEffect UpdateAndGetStatusEffect(ulong address, int id, float maxBuildup, float currentBuildup, float maxDuration, float currentDuration, int timesActivatedCount) { MonsterStatusEffect statusEffect = StatusEffects.SingleOrDefault(collectionStatusEffect => collectionStatusEffect.Address == address); if (statusEffect != null) { statusEffect.Duration.Max = maxDuration; statusEffect.Duration.Current = maxDuration - currentDuration; statusEffect.Buildup.Max = maxBuildup; statusEffect.Buildup.Current = currentBuildup; statusEffect.TimesActivatedCount = timesActivatedCount; } else if (!ConfigHelper.MonsterData.Values.StatusEffects.ContainsKey(id)) { return(null); } else { statusEffect = new MonsterStatusEffect(this, address, id, maxBuildup, currentBuildup, maxDuration, currentDuration, timesActivatedCount); StatusEffects.Add(statusEffect); } bool isValidId = ConfigHelper.MonsterData.Values.StatusEffects.ContainsKey(id); if (!isValidId) { statusEffect.IsVisible = false; } else { DateTimeOffset initialTime = statusEffect.InitialTime; if (statusEffect.InitialTime > initialTime) { initialTime = statusEffect.InitialTime; } DateTimeOffset?lastChangedTime = statusEffect.LastChangedTime; if (lastChangedTime == null || (statusEffect.LastChangedTime != null && statusEffect.LastChangedTime > lastChangedTime)) { lastChangedTime = statusEffect.LastChangedTime; } statusEffect.IsVisible = CanShowStatusEffect(initialTime, lastChangedTime); } return(statusEffect); }
public MonsterStatusEffect UpdateAndGetStatusEffect(ulong address, int id, float maxBuildup, float currentBuildup, float maxDuration, float currentDuration, int timesActivatedCount) { MonsterStatusEffect statusEffect = StatusEffects.SingleOrDefault(collectionStatusEffect => collectionStatusEffect.Address == address); if (statusEffect != null) { statusEffect.Duration.Max = maxDuration; statusEffect.Duration.Current = maxDuration - currentDuration; statusEffect.Buildup.Max = maxBuildup; statusEffect.Buildup.Current = currentBuildup; statusEffect.TimesActivatedCount = timesActivatedCount; } else if (!ConfigHelper.MonsterData.Values.StatusEffects.ContainsKey(id)) { return(null); } else { statusEffect = new MonsterStatusEffect(this, address, id, maxBuildup, currentBuildup, maxDuration, currentDuration, timesActivatedCount); statusEffect.Changed += PartOrStatusEffect_Changed; StatusEffects.Add(statusEffect); } bool isValidId = ConfigHelper.MonsterData.Values.StatusEffects.ContainsKey(id); if (!isValidId) { statusEffect.IsVisible = false; } else { statusEffect.UpdateVisibility(); } return(statusEffect); }