Example #1
0
        public override void ApplyDamageSkill(Unit attacker, Unit defender)
        {
            var gravityEffect = new GravityEffect();

            gravityEffect.ApplyEffect(defender);
            defender.UnitEffects.Add(gravityEffect);
        }
Example #2
0
 public override void Effect(GameObject target)
 {
     if (target.GetComponent <GravityEffect> () == null)
     {
         target.AddComponent <GravityEffect> ();
         GravityEffect eff = target.GetComponent <GravityEffect> ();
         eff.SetDuration(3);
     }
 }
        public void ToBytes(BinaryWriter writer)
        {
            writer.Write(basePos.X);
            writer.Write(basePos.Y);
            writer.Write(basePos.Z);

            writer.Write(DieInAir);
            writer.Write(DieInLiquid);
            writer.Write(SwimOnLiquid);
            for (int i = 0; i < 4; i++)
            {
                HsvaColor[i].ToBytes(writer);
            }
            GravityEffect.ToBytes(writer);
            LifeLength.ToBytes(writer);
            for (int i = 0; i < 3; i++)
            {
                PosOffset[i].ToBytes(writer);
            }
            Quantity.ToBytes(writer);
            Size.ToBytes(writer);
            for (int i = 0; i < 3; i++)
            {
                Velocity[i].ToBytes(writer);
            }
            writer.Write((byte)ParticleModel);
            writer.Write(VertexFlags);


            writer.Write(OpacityEvolve == null);
            if (OpacityEvolve != null)
            {
                OpacityEvolve.ToBytes(writer);
            }

            writer.Write(RedEvolve == null);
            if (RedEvolve != null)
            {
                RedEvolve.ToBytes(writer);
            }

            writer.Write(GreenEvolve == null);
            if (GreenEvolve != null)
            {
                GreenEvolve.ToBytes(writer);
            }

            writer.Write(BlueEvolve == null);
            if (BlueEvolve != null)
            {
                BlueEvolve.ToBytes(writer);
            }


            SizeEvolve.ToBytes(writer);
            writer.Write(SelfPropelled);
            writer.Write(TerrainCollision);
            writer.Write(ColorByBlock);

            writer.Write(VelocityEvolve != null);
            if (VelocityEvolve != null)
            {
                for (int i = 0; i < 3; i++)
                {
                    VelocityEvolve[i].ToBytes(writer);
                }
            }

            SecondarySpawnInterval.ToBytes(writer);
            if (SecondaryParticles == null)
            {
                writer.Write(0);
            }
            else
            {
                writer.Write(SecondaryParticles.Length);
                for (int i = 0; i < SecondaryParticles.Length; i++)
                {
                    SecondaryParticles[i].ToBytes(writer);
                }
            }


            if (DeathParticles == null)
            {
                writer.Write(0);
            }
            else
            {
                writer.Write(DeathParticles.Length);
                for (int i = 0; i < DeathParticles.Length; i++)
                {
                    DeathParticles[i].ToBytes(writer);
                }
            }

            writer.Write(WindAffectednes);
        }
Example #4
0
    // Update is called once per frame
    void Update()
    {
        if (Random.Range(0f, 100f) < 1)
        {
            Debug.Log("Add effect");
            GravityEffect gravityEffect = new GravityEffect();
            gravityEffect.position       = new Vector2(displacementTextureSize.x / 2, displacementTextureSize.y / 2);
            gravityEffect.size           = 128;
            gravityEffect.startStrength  = 0;
            gravityEffect.engageStrength = 0.75f;
            gravityEffect.endStrength    = 0;
            gravityEffect.startTime      = Time.time;
            gravityEffect.engageTime     = 0.5f;
            gravityEffect.stayTime       = 0.5f;
            gravityEffect.disengageTime  = 0.5f;
            gravityEffects.Add(gravityEffect);
        }

        for (int i = 0; i < pixelBufferX.Length; i++)
        {
            pixelBufferX[i] = 128;
            pixelBufferY[i] = 128;
        }

        List <GravityEffect> effectsToRemove = new List <GravityEffect>();

        foreach (GravityEffect gravityEffect in gravityEffects)
        {
            float phaseStartTime;
            float phaseEndTime;
            float phaseStartStrength;
            float phaseEndStrength;

            if (gravityEffect.startTime + gravityEffect.engageTime > Time.time)
            {
                phaseStartTime     = gravityEffect.startTime;
                phaseEndTime       = gravityEffect.startTime + gravityEffect.engageTime;
                phaseStartStrength = gravityEffect.startStrength;
                phaseEndStrength   = gravityEffect.engageStrength;
            }
            else if (gravityEffect.startTime + gravityEffect.engageTime + gravityEffect.stayTime > Time.time)
            {
                phaseStartTime     = gravityEffect.startTime + gravityEffect.engageTime;
                phaseEndTime       = gravityEffect.startTime + gravityEffect.engageTime + gravityEffect.stayTime;
                phaseStartStrength = gravityEffect.engageStrength;
                phaseEndStrength   = gravityEffect.engageStrength;
            }
            else if (gravityEffect.startTime + gravityEffect.engageTime + gravityEffect.stayTime + gravityEffect.disengageTime > Time.time)
            {
                phaseStartTime     = gravityEffect.startTime + gravityEffect.engageTime + gravityEffect.stayTime;
                phaseEndTime       = gravityEffect.startTime + gravityEffect.engageTime + gravityEffect.stayTime + gravityEffect.disengageTime;
                phaseStartStrength = gravityEffect.engageStrength;
                phaseEndStrength   = gravityEffect.endStrength;
            }
            else
            {
                effectsToRemove.Add(gravityEffect);
                continue;
            }

            float phaseTime = (Time.time - phaseStartTime) / (phaseEndTime - phaseStartTime);
            float strength  = phaseStartStrength * phaseTime + phaseEndStrength * (1 - phaseTime);

            for (int x = -gravityEffect.size; x < gravityEffect.size; x++)
            {
                for (int y = -gravityEffect.size; y < gravityEffect.size; y++)
                {
                    Vector2 pixelPosition = new Vector2(gravityEffect.position.x + x, gravityEffect.position.y + y);
                    if (pixelPosition.x < 0 || pixelPosition.x > displacementTextureSize.x)
                    {
                        continue;
                    }
                    if (pixelPosition.y < 0 || pixelPosition.y > displacementTextureSize.y)
                    {
                        continue;
                    }
                    Vector2 dist = new Vector2(x, y);
                    if (dist.magnitude > gravityEffect.size)
                    {
                        continue;
                    }

                    float offset = (1 - dist.magnitude / gravityEffect.size) * strength;

                    pixelBufferX[(int)(pixelPosition.x * displacementTextureSize.x + pixelPosition.y)] = 255;                  //(byte)(128 + 127 * offset * dist.normalized.x);
                    pixelBufferY[(int)(pixelPosition.x * displacementTextureSize.x + pixelPosition.y)] = 255;                  //(byte)(128 + 127 * offset * dist.normalized.y);
                }
            }
        }

        foreach (GravityEffect gravityEffect in effectsToRemove)
        {
            gravityEffects.Remove(gravityEffect);
        }

        displacementTextureX.LoadRawTextureData(pixelBufferX);
        displacementTextureX.Apply();

        displacementTextureY.LoadRawTextureData(pixelBufferY);
        displacementTextureY.Apply();
    }
Example #5
0
    //Change card.effectType and this
    public Effect[] GetEffects(Card.EffectType[] effectNames)
    {
        Effect[] effects = new Effect[effectNames.Length];
        for (int i = 0; i < effectNames.Length; i++)
        {
            switch (effectNames[i])
            {
            case Card.EffectType.VitDamage:
                effects[i] = new VitDamageEffect();
                break;

            case Card.EffectType.ShieldDamage:
                effects[i] = new ShieldDamageEffect();
                break;

            case Card.EffectType.VitDamageAll:
                effects[i] = new VitDamageAll();
                break;

            case Card.EffectType.ShieldDamageAll:
                effects[i] = new ShieldDamageAll();
                break;

            case Card.EffectType.PiercingDamage:
                effects[i] = new PiercingDamageEffect();
                break;

            case Card.EffectType.PiercingDamageAll:
                effects[i] = new PiercingDamageAll();
                break;

            case Card.EffectType.SetKnockBackDamage:
                effects[i] = new SetKnockBackDamage();
                break;

            case Card.EffectType.ForcedMovement:
                effects[i] = new ForcedMovementEffect();
                break;

            case Card.EffectType.TauntEffect:
                effects[i] = new TauntEffect();
                break;

            case Card.EffectType.GetMissingHealth:
                effects[i] = new GetMissingHealth();
                break;

            case Card.EffectType.Buff:
                effects[i] = new ApplyBuffEffect();
                break;

            case Card.EffectType.Cleanse:
                effects[i] = new CleanseEffect();
                break;

            case Card.EffectType.CreateObject:
                effects[i] = new CreateObjectEffect();
                break;

            case Card.EffectType.GetCurrentAttack:
                effects[i] = new GetCurrentAttackEffect();
                break;

            case Card.EffectType.DrawCards:
                effects[i] = new DrawCardEffect();
                break;

            case Card.EffectType.GetCurrentShield:
                effects[i] = new GetCurrentShield();
                break;

            case Card.EffectType.GetBonusShield:
                effects[i] = new GetBonusArmorEffect();
                break;

            case Card.EffectType.GetNumberOfTargetsInRangeEffect:
                effects[i] = new GetNumberOfTargetsInRangeEffect();
                break;

            case Card.EffectType.GetDamageDoneEffect:
                effects[i] = new GetDamageDoneEffect();
                break;

            case Card.EffectType.GetNumberOfCardsPlayedInTurn:
                effects[i] = new GetNumberOfCardsPlayedEffect();
                break;

            case Card.EffectType.Swap:
                effects[i] = new SwapEffect();
                break;

            case Card.EffectType.Teleport:
                effects[i] = new TeleportEffect();
                break;

            case Card.EffectType.ManaGain:
                effects[i] = new ManaGainEffect();
                break;

            case Card.EffectType.EnergyGain:
                effects[i] = new EnergyGainEffect();
                break;

            case Card.EffectType.SetDuration:
                effects[i] = new SetDurationEffect();
                break;

            case Card.EffectType.GetNumberInStack:
                effects[i] = new GetNumberInStackEffect();
                break;

            case Card.EffectType.GravityEffect:
                effects[i] = new GravityEffect();
                break;

            case Card.EffectType.CardCostReductionDrawn:
                effects[i] = new CardCostReductionDrawn();
                break;

            case Card.EffectType.DrawManaCards:
                effects[i] = new DrawManaCardEffect();
                break;

            case Card.EffectType.Sacrifice:
                effects[i] = new SacrificeEffect();
                break;

            case Card.EffectType.GetNumberOfAttackers:
                effects[i] = new GetNumberOfAttackersEffect();
                break;

            case Card.EffectType.ModifyTempValue:
                effects[i] = new ModifyTempValueEffect();
                break;

            default:
                effects[i] = null;
                break;
            }
        }
        return(effects);
    }