public override bool Equals(object obj) { if (obj is AdditionState) { AdditionState obj2 = obj as AdditionState; return(obj2.Addition == this.Addition); } else if (obj is uint) { return(this.Addition == Convert.ToUInt32(obj, NumberFormatInfo.InvariantInfo)); } return(false); }
/// <summary> /// Creates a new addition which is a timed addition /// </summary> /// <param name="target">Target on which the addition is casted</param> /// <param name="addition">Addition which is casted</param> /// <param name="duration">How long the addition lasts (ms)</param> public static void CreateAddition(Actor target, uint addition, uint duration) { Saga.Factory.Additions.Info info; if (Singleton.Additions.TryGetAddition(addition, out info)) { target._additions._skipcheck = true; Singleton.Additions.ApplyAddition(addition, target); AdditionState state = new AdditionState(addition, duration, info); state.canexpire = true; target._additions.timed_additions.Add(state); SendExchangeStatus(target, addition, duration); target._additions._skipcheck = false; } }
bool IDataAdditionCollection.Create(uint addition, uint duration) { Saga.Factory.Additions.Info info; if (Singleton.Additions.TryGetAddition(addition, out info)) { if (duration > 0) { AdditionState state = new AdditionState(addition, duration, info); state.canexpire = true; additions.timed_additions.Add(state); } else { AdditionState state = new AdditionState(addition, duration, info); additions.additions.Add(state); } return true; } return false; }
/// <summary> ///Updates a existing addition or removes the old addition to replace it ///by the new one (static). /// </summary> /// <param name="target">Target on which the addition is casted</param> /// <param name="Addition">Addition which is casted</param> /// <param name="Duration">How long the addition lasts (ms)</param> public static void UpdateAddition(Actor target, uint addition) { Saga.Factory.Additions.Info info; if (Singleton.Additions.TryGetAddition(addition, out info)) { Predicate<AdditionState> c = delegate(AdditionState state) { return state.Addition == addition; }; target._additions._skipcheck = true; int index = target._additions.additions.FindIndex(c); if (index > -1) //reset lifetime { AdditionState state = target._additions.timed_additions[index]; state.Lifetime = info.EffectDuration; SendDeleteStatus(target, addition); SendExchangeStatus(target, addition, info.EffectDuration); } else //add new { Singleton.Additions.ApplyAddition(addition, target); AdditionState state = new AdditionState(addition, info.EffectDuration, info); state.canexpire = true; target._additions.timed_additions.Add(state); SendExchangeStatus(target, addition, info.EffectDuration); } //if (index < 0) //reset lifetime //{ // Singleton.Additions.ApplyAddition(addition, target); // AdditionState state = new AdditionState(addition, 0, info); // state.canexpire = false; // target._additions.additions.Add(state); // SendExchangeStatus(target, addition, 0); //} target._additions._skipcheck = false; } }