private void OnRecvUpdateAura(MessageReceivedEvent e) { S2C_UpdateAura ret = MarshalConversion.PtrToStruct <S2C_UpdateAura>(e.MessagePtr); AuraInstance aura = null; if (ret.UnitId == GameEngine.EngineInstance.LocalPlayer.CharacterID) { if (GameEngine.EngineInstance.LocalPlayer.Auras.TryGetValue(ret.Slot, out aura)) { aura.UpdateData(ret.StackCount, ret.RemainTime, ret.MaxDuration); GameEngine.EngineInstance.LocalPlayer.OnAuraDataChanged(new AuraChangeEventArgs(aura)); } } else { RemoteCharacterController rcc = GameEngine.EngineInstance.FindCharacterController(ret.UnitId); if (rcc != null) { if (rcc.Auras.TryGetValue(ret.Slot, out aura)) { aura.UpdateData(ret.StackCount, ret.RemainTime, ret.MaxDuration); rcc.OnAuraDataChanged(new AuraChangeEventArgs(aura)); } } else { NLogger.Instance.WriteString(LogType.Warning, string.Format("S2C_UpdateAura can not find controller UintID=[{0}]", ret.UnitId)); } } }
public AuraChangeEventArgs(AuraInstance aura) { this.Aura = aura; }