// Add an OnHit effect to the player public void AddOnHit(Effect effect) { if (effect.Unique == true) { bool found = false; foreach (Effect e in _onHitEffects) { if (e.GetType() == effect.GetType()) { Debug.LogError("Cannot add effect. Unique effect already exists on player"); found = true; } } if (!found) { _onHitEffects.Add(effect); EffectPackage ePack = new EffectPackage(effect); //_packagedEffects.Add(ePack); //_packageLinker[effect] = ePack; // Do NOT activate the effect or set an owner } } else { _onHitEffects.Add(effect); EffectPackage ePack = new EffectPackage(effect); //_packagedEffects.Add(ePack); //_packageLinker[effect] = ePack; // Do NOT activate the effect or set an owner } }
private static object DeserializeEffectPackage(StreamBuffer inStream, short length) { EffectPackage package = new EffectPackage(); byte[] buffer = new byte[length]; inStream.Read(buffer, 0, length); int index = 0; // Effect type package.effectType = buffer[index]; index++; // Effect byte array size Protocol.Deserialize(out package.sizeofEffect, buffer, ref index); // Effect info byte array package.effectInfo = new byte[package.sizeofEffect]; Array.Copy(buffer, index, package.effectInfo, 0, package.sizeofEffect); package.Deserialize(); return(package); }
private static short SerializeEffectPackage(StreamBuffer outStream, object customObject) { EffectPackage package = (EffectPackage)customObject; short sizeofPackage = (short)(1 + 4 + package.sizeofEffect); byte[] bytes = new byte[sizeofPackage]; int index = 0; // Effect enum [int] bytes[index] = package.effectType; // Info size [int] Protocol.Serialize(package.sizeofEffect, bytes, ref index); // Effect info [byte array] for (int i = 0; i < package.sizeofEffect; i++) { bytes[index] = package.effectInfo[i]; } outStream.Write(bytes, 0, sizeofPackage); return(sizeofPackage); }