private void Teleport(IVictim victim) { float x = ResolutionManager.GetWidth / 2.0f; x = x + _random.Next(-(ResolutionManager.GetWidth / 4), (ResolutionManager.GetWidth / 4)); float y = ResolutionManager.GetHeight / 2.0f; y = y + _random.Next(-(ResolutionManager.GetHeight / 4), (ResolutionManager.GetHeight / 4)); //Vector2 randomDirection = new Vector2(_random.Next(-10,10),_random.Next(-10,10)); //randomDirection.Normalize(); //victim.Direction = randomDirection; victim.Rotation = (float)(_random.Next(-180, 180) / 10); victim.Position = new Vector2(x, y); }
public void DealDamage(int attackerId) { Assert.IsTrue(attackerId > 0, "Invalid player id"); IVictim victim = GetEnemy(attackerId); // Victim already dead if (!victim.IsAlive()) { return; } IAttacker attacker = GetPlayer(attackerId); // Deal damage float damage = attacker.GetDamage(); if (damage <= 0) { return; } damage = victim.TakeDamage(damage); // Attacker attacker.DealDamage(damage); // Events eventManager.Trigger(new OnPlayerStatsChanged(victim.EntityId)); eventManager.Trigger(new OnPlayerStatsChanged(attacker.EntityId)); // Game over bool isAlive = victim.IsAlive(); if (!isAlive) { EndGame(); } }
private void CreateVictimBunshin(IVictim victim) { if (victim is Crystal) { Vector2 randomDirection = new Vector2(_random.Next(-30, 30), _random.Next(-30, 30)); randomDirection.Normalize(); EvilCrystal tempEvilCrystal = new EvilCrystal(victim.VictimTexture, victim.Position, DrawingHelper.DrawingLevel.Medium, _game, _world, victim.Color); tempEvilCrystal.Direction = randomDirection; tempEvilCrystal.LinearVelocity = victim.VictimLinearVelocity; _evilCrystalList.Add(tempEvilCrystal); SyncedGameCollection.ComponentCollection.Add(tempEvilCrystal); } else if (victim is Unit) { float randomAngleOffset = (_random.Next(-180, 180) / 10); EvilUnit tempEvilUnit = new EvilUnit(victim.VictimTexture, victim.Position, victim.Color, _game, _world, DrawingHelper.DrawingLevel.Medium, (Unit)victim, randomAngleOffset); _evilUnitList.Add(tempEvilUnit); SyncedGameCollection.ComponentCollection.Add(tempEvilUnit); } }
private void ResetEffect(IVictim victim) { victim.LocalTimeScale = 1.0f; }
private void SlowDown(IVictim victim) { victim.LocalTimeScale = 0.2f; }
public override void GiveDamage(IVictim victim) { throw new System.NotImplementedException(); }
private void MakeVisible(IVictim victim) { victim.InvisibilityAlpha = 1.0f; }
public void Attack(IVictim victim) { throw new System.NotImplementedException(); }
public abstract void GiveDamage(IVictim victim);