Exemplo n.º 1
0
 // 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
     }
 }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }