public override void Update2(GameTime gameTime) { if (GetIntType() != -1) { InstanceManager.EmitParticle(GetIntType(), new Vector3(Position.X(), Y, Position.Y()), ref RotationMatrix, 0, Size.X(), 1); } Vector3 Position3 = new Vector3(Position.X(), Y, Position.Y()); ParticleManager.CreateRing(Position3, Size.X() * BuildingRingSizeMult, GetTeam()); WorldMatrix = Matrix.CreateScale(Size.X()) * Matrix.CreateFromYawPitchRoll(Rotation.getAsRadians() + RotationOffset.X, RotationOffset.Y, RotationOffset.Z) * Matrix.CreateTranslation(Position3); if (FreezeTime > 0 && StunState != AttackType.None) { switch (StunState) { case AttackType.Blue: ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(0.25f, 0.25f, 1), Size.X() * 5 * Rand.F(), 1); break; case AttackType.Red: ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(1, 0.25f, 0.25f), Size.X() * 5 * Rand.F(), 1); break; case AttackType.Green: ParticleManager.CreateParticle(Position3, Vector3.Zero, new Color(0.25f, 1, 0.25f), Size.X() * 5 * Rand.F(), 1); break; } } }
public override void Update(GameTime gameTime) { Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); float Mult = 2; ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 100 * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, (200 + Rand.F() * 200) * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, (50 + Rand.F() * 50) * Mult, 2); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, (50 + Rand.F() * 50) * Mult, 0); base.Update(gameTime); }
public override void Update(GameTime gameTime) { SearchTime += gameTime.ElapsedGameTime.Milliseconds; if (SearchTime > MaxSearchTime || (AttackTarget != null && AttackTarget.Dead)) { SearchTime -= MaxSearchTime; AttackTarget = null; float BestDistance = SearchDistance; QuadGrid quad = Parent2DScene.quadGrids.First.Value; foreach (Basic2DObject o in quad.Enumerate(Position.get(), new Vector2(SearchDistance * 2))) { if (o.GetType().IsSubclassOf(typeof(UnitBasic))) { UnitBasic s = (UnitBasic)o; if (!s.Dead && !s.IsAlly(ParentUnit)) { float d = Vector2.Distance(Position.get(), o.Position.get()); if (d < BestDistance) { BestDistance = d; AttackTarget = s; } } } } } if (AttackTarget != null) { Speed = Logic.ToVector2(Logic.Clerp(Logic.ToAngle(Speed), Logic.ToAngle(AttackTarget.Position.get() - Position.get()), TurnSpeed * gameTime.ElapsedGameTime.Milliseconds * 60 / 1000f)) * SpeedL; } int Mult = 4; Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 60 * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (70 + Rand.F() * 70) * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (10 + Rand.F() * 20) * Mult, 2); base.Update(gameTime); }
public override void Update(GameTime gameTime) { int Mult = TimeAlive * 4 / LifeTime + 1; Vector3 Position3 = new Vector3(Position.X(), Y, Position.Y()); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 60 * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 90 * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (70 + Rand.F() * 70) * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (10 + Rand.F() * 20) * Mult, 2); if (!Flashed) { Mult = 2; ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 80 * Mult, 0); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 80 * Mult, 4); Flashed = true; } base.Update(gameTime); }
public override void Update(GameTime gameTime) { int Mult = Big ? 2 : 1; Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 80 * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, (100 + Rand.F() * 100) * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, (20 + Rand.F() * 40) * Mult, 2); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, (20 + Rand.F() * 40) * Mult, 0); if (!Flashed) { Mult *= 2; ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 80 * Mult, 0); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 80 * Mult, 4); Flashed = true; } base.Update(gameTime); }
public override void Update(GameTime gameTime) { SoundInstance = SoundManager.PlayLoopingSound(SoundInstance, "SlowFieldHum", new Vector3(Position.X(), Y, Position.Y()), 0.03f, MaxEngagementDistance + 200, 2); Size.set(new Vector2(SlowFieldCard.STurretSize - 5 + 10 * Rand.F())); Vector2 ProjectedPosition = Position.get() + Rand.NV2() * MaxEngagementDistance; Vector3 Position3 = new Vector3(ProjectedPosition.X, Y, ProjectedPosition.Y); ParticleManager.CreateParticle(Position3, Rand.V3() * Size.X() * 2, ParticleColor, 40, 5); if (!Dead) { SearchTime += gameTime.ElapsedGameTime.Milliseconds; if (SearchTime > MaxSearchTime) { bool CanEmp = true; SearchTime -= MaxSearchTime; QuadGrid quad = Parent2DScene.quadGrids.First.Value; foreach (Basic2DObject o in quad.Enumerate(Position.get(), new Vector2(MaxEngagementDistance * 2))) { if (o.GetType().IsSubclassOf(typeof(UnitBasic))) { UnitBasic s = (UnitBasic)o; if (!s.Dead && !s.IsAlly(this) && Vector2.Distance(Position.get(), o.Position.get()) < MaxEngagementDistance - o.Size.X()) { if (s.GetType().IsSubclassOf(typeof(UnitShip))) { UnitShip s2 = (UnitShip)s; if (!s2.Slowed) { s2.Slowed = true; s2.Acceleration /= 2; if (s.Weakness == AttackType.Blue) { s2.Acceleration /= 2; if (CanEmp) { CanEmp = false; s2.EMP(this, IsUpdgraded ? 1 : 0); if (s2.TestTag(UnitTag.Monster)) { SearchTime -= MaxSearchTime / 5; } } } s2.MaxEngagementDistance /= 1.5f; s2.MinEngagementDistance /= 1.5f; } } } } } } } base.Update(gameTime); }
public virtual void Fire(GameTime gameTime) { if (ReloadTime <= 0) { bool CreatedMatrix = false; Matrix RotationMatrix = Matrix.Identity; ChargeTime += gameTime.ElapsedGameTime.Milliseconds; if (ChargeTime > MaxChargeTime) { while (ROF >= MaxROF && ClipSize > 0 && BurstSize > 0 && (Ammo > 0 || Ammo == -100)) { Vector3 P = Parent != null ? new Vector3(Parent.getParent().Position.X(), 0, Parent.getParent().Position.Y()) : new Vector3(ParentUnit.Position.X(), 0, ParentUnit.Position.Y()); SoundManager.Play3DSound(FireSound, P, FireVolume, FireDistance, FireExponent); ChargeTime = 0; if (!CreatedMatrix) { CreatedMatrix = true; if (Parent != null) { RotationMatrix = Matrix.CreateRotationZ(-Parent.getRotation()); } else if (ParentUnit.Guns != null) { RotationMatrix = Matrix.CreateRotationZ(-ParentUnit.Guns[0].getRotation()); } } ROF -= MaxROF; BurstTime = 0; ClipSize--; BurstSize--; if (Ammo > 0) { Ammo--; } for (int i = 0; i < BulletCount; i++) { Bullet b = getBullet(); if (Parent != null) { if (Parent.getParent().GetType().IsSubclassOf(typeof(UnitShip))) { UnitShip s = (UnitShip)Parent.getParent(); if (s.IsHuge) { b.Big = true; } } Parent.getParent().ParentLevel.AddObject(b); b.SetShipParent(Parent.getParent()); ParentUnit = Parent.getParent(); Vector3 P3 = InstanceManager.GetWeaponPosition(ParentUnit.GetIntType(), new Vector3(ParentUnit.Position.X(), ParentUnit.Y, ParentUnit.Position.Y()), ref ParentUnit.RotationMatrix, ParentUnit.WeaponIndexID++, ParentUnit.Size.X()); Vector2 P2 = getPositionPattern(i); if (P2 != Vector2.Zero) { P2 = Vector2.Transform(P2, RotationMatrix); } b.SetPosition(new Vector2(P3.X, P3.Z) + P2, false); b.Y = P3.Y; Vector2 v = BulletSpeed * Logic.ToVector2(Parent.getRotation() + Accuracy - Rand.F() * Accuracy * 2 + getDirectionPattern(i)); b.SetSpeed(v); } else { ParentUnit.ParentLevel.AddObject(b); if (ParentUnit.GetType().IsSubclassOf(typeof(UnitShip))) { UnitShip s = (UnitShip)ParentUnit; if (s.IsHuge) { b.Big = true; } } b.SetShipParent(ParentUnit); b.SetPosition(ParentUnit.Position.get() + Vector2.Transform(getPositionPattern(i), RotationMatrix), false); b.SetSpeed(BulletSpeed * Logic.ToVector2(ParentUnit.Guns[0].getRotation() + Accuracy - Rand.F() * Accuracy * 2 + getDirectionPattern(i))); } b.SetAttackType(attackType); b.SetStartingPosition(b.getPosition()); b.SetDamage(Damage, PushTime, PushVelocityMult); b.SetModifierFactor(ModifierFactor); b.SetLifeTime(LifeTime); b.SetExplosive(BulletExplosionDistance, BulletExplosionDamage); b.AddTime(ROF); } } } else { CreateChargeParticles(ChargeTime / (float)(MaxChargeTime)); } if (ClipSize <= 0) { ReloadTime += gameTime.ElapsedGameTime.Milliseconds; } } }
public override void Update(GameTime gameTime) { Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 120, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 150 + Rand.F() * 100, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 20 + Rand.F() * 40, 2); base.Update(gameTime); }
public override void Update(GameTime gameTime) { int Mult = 4; SearchTime += gameTime.ElapsedGameTime.Milliseconds; if (SearchTime > MaxSearchTime) { MaxSearchTime -= SearchTime; int EnemyCount = 0; QuadGrid quadGrid = Parent2DScene.quadGrids.First.Value; foreach (GameObject g in quadGrid.Enumerate(Position.get(), new Vector2(BulletExplosionDistance))) { if (g.GetType().IsSubclassOf(typeof(UnitBasic))) { UnitBasic s = (UnitBasic)g; if (Vector2.Distance(Position.get(), s.Position.get()) < BulletExplosionDistance / 8 && !s.IsAlly(ParentUnit) && !s.GetType().IsSubclassOf(typeof(UnitBuilding)) && !s.Dead) { EnemyCount += s.GetUnitWeight(); } } } if (BestEnemyCount > 4 && EnemyCount < BestEnemyCount) { Destroy(); } else { BestEnemyCount = EnemyCount; } } Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, 60 * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (70 + Rand.F() * 70) * Mult, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (10 + Rand.F() * 20) * Mult, 2); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor2, (10 + Rand.F() * 20) * Mult, 0); FlareSystem.AddLightning(Position3, ParticleColor2, 30, 20, 4, 10); base.Update(gameTime); }
public override void Update(GameTime gameTime) { Vector3 Position3 = new Vector3(Position.X(), 0, Position.Y()); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 80, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 100 + Rand.F() * 100, 1); ParticleManager.CreateParticle(Position3, Vector3.Zero, ParticleColor, 20 + Rand.F() * 40, 2); FlareSystem.AddLightning(Position3, ParticleColor2, 10, 20, 3, 5); base.Update(gameTime); }