private void Add(IAsteroid asteroid) { asteroid.BecomeInvisible += OnAsteroidInvisible; asteroid.CollisionPerformed += OnCollisionDetected; asteroid.Speed = Math.Max(1.0f, _flightTime / 3.0f); }
void IPlayerShipView.Die(IAsteroid asteroidHit) { if(asteroidHit != null) asteroidHit.GetRekt(); OnDie.Invoke(); transform.localPosition = new Vector3(0, 0, 0); }
public AsteroidDestroyedPayload(AsteroidType asteroidType, Vector2 pos, IAsteroid asteroid) { EventName = GameConsts.AsteroidDestroyed; AsteroidType = asteroidType; Pos = pos; Asteroid = asteroid; }
public void Add(IAsteroid asteroid) { lock (lockHandle) { _AsteroidCollection.AddFirst(new Asteroid(asteroid)); _Count++; } }
/// <summary> /// Copy- Konstuktor /// </summary> /// <param name="src"></param> public Asteroid(IAsteroid src) : this( Name : src.Name, DistanceSunInAU : src.DistanceSunInAU, DiameterInKm : src.DiameterInKm, E : src.E, OrbitalTime : src.OrbitalTimeInEarthYears, Albedo : src.Albedo) { }
public void Construct( IAsteroid asteoid, Pool asteroidPool, AsteroidCommonSettings asteroidCommonSettings ) { this.asteroid = asteoid; this.asteroidPool = asteroidPool; this.asteroidCommonSettings = asteroidCommonSettings; currentHealth = asteroidCommonSettings.Health; }
public AsteroidMoveHandler( IAsteroid asteroid, AsteroidFacade asteroidFacade, AsteroidFacade.Pool asteroidFactory, ScreenBoundary screenBoundary ) { this.asteroid = asteroid; this.asteroidFacade = asteroidFacade; this.asteroidFactory = asteroidFactory; this.screenBoundary = screenBoundary; }
private void OnTriggerEnter2D(Collider2D collision) { IAsteroid asteroid = collision.GetComponent <IAsteroid>(); if (asteroid != null && shieldBlock == true) { updateShieldHealth(-gc.asteroidShieldDamage); gc.score += gc.asteroidPoints; asteroid.Split(); } else if (collision.gameObject.tag == "EnemyAmmo" && shieldBlock == true) { updateShieldHealth(-gc.asteroidShieldDamage); Destroy(collision.gameObject); } }
private void OnTriggerEnter2D(Collider2D collision) { IAsteroid asteroid = collision.GetComponent <IAsteroid>(); IEnemy enemy = collision.GetComponent <IEnemy>(); if (asteroid != null) { asteroid.Split(); gc.score += gc.asteroidPoints; removeObject(); } else if (enemy != null) { enemy.takeDamage(1); gc.money += enemy.getMoneyWorth(); removeObject(); } }
public void Add(IAsteroid a) { if (!_Asteroids.Any(ast => ast.Name == a.Name)) { _Asteroids.Add( new Asteroid( Name: a.Name, DiameterInKm: a.DiameterInKm, Albedo: a.Albedo, DistanceSunInAU: a.DistanceSunInAU, E: a.E, OrbitalTime: a.OrbitalTimeInEarthYears)); } else { throw new ArgumentException("Der Asteroid mit dem Namen " + a.Name + " ist bereits erfasst"); } }
static void Main(string[] args) { RandomAsteroidFactory factory = new RandomAsteroidFactory(); Console.WriteLine("Our Asteroid Factory will create randomly some asteroids"); int numberOfAsteroids = 0; Task[] asteroidTasks = new Task[20]; List <IAsteroid> asteroids = new List <IAsteroid>(); while (numberOfAsteroids < 20) { IAsteroid newAsteroid = factory.CreateAsteroid(); asteroids.Add(newAsteroid); asteroidTasks[numberOfAsteroids] = newAsteroid.MoveTask; numberOfAsteroids++; } Task.WaitAll(asteroidTasks); foreach (IAsteroid asteroid in asteroids) { Console.WriteLine($"Asteroid_{numberOfAsteroids}:" + $"\n\tType: {asteroid.GetType().Name}" + $"\n\t\tChildren:"); int numberOfChild = 0; if (asteroid.Children.Count > 0) { foreach (IAsteroid child in asteroid.Children) { Console.WriteLine($"\t\t\t* Child_{++numberOfChild}: {child.GetType().Name}"); } } } }
private void OnCollisionDetected(IAsteroid asteroid, Vector3 pos) { FxPlayer.PlaySmallBlast(pos); RemoveAsteroid(asteroid); SpaceShip.Hp--; }
private void OnAsteroidInvisible(IAsteroid asteroid) { RemoveAsteroid(asteroid); }
public AsteroidRotationHandler(IAsteroid asteroid) { this.asteroid = asteroid; }
public void AddAsteroid(IAsteroid asteroidToAdd) { asteroids.Add(asteroidToAdd); }
public static void SkipRef() { Ref = null; }
public static void Process() { // столкновения List<Point> mean = new List<Point>(); Point pos1, pos2; int r1, r2; for (int i = 0; i < Asteroids.Count; i++) { pos1 = Asteroids[i].GetCoords(); r1 = Asteroids[i].GetRadius(); mean = Cell.GetMeaningfulCells(Asteroids[i].GetCoords(), Asteroids[i].GetRadius() + MaxRadius); for (int j = 0; j < mean.Count; j++) { for (int k = 0; k < Field[mean[j].X][mean[j].Y].AsterLinks.Count; k++) { if (Field[mean[j].X][mean[j].Y].AsterLinks[k] != i) { pos2 = Asteroids[Field[mean[j].X][mean[j].Y].AsterLinks[k]].GetCoords(); r2 = Asteroids[Field[mean[j].X][mean[j].Y].AsterLinks[k]].GetRadius(); if (r1 + r2 > (int)Math.Sqrt((pos1.X - pos2.X) * (pos1.X - pos2.X) + (pos1.Y - pos2.Y) * (pos1.Y - pos2.Y))) { Clash(i, Field[mean[j].X][mean[j].Y].AsterLinks[k], pos1, pos2, r1, r2); } } } } } // движение for (int i = 0; i < Asteroids.Count; i++) Asteroids[i].Move(); // смерть for (int i = Asteroids.Count - 1; i >= 0; i--) if (!Asteroids[i].IsAlive()) { if (Asteroids[i].IsExplode()) { Point pos = Asteroids[i].GetCoords(); if (!((pos.X < -MaxRadius) || (pos.X > WorldSize + MaxRadius) || (pos.Y < -MaxRadius) || (pos.Y > WorldSize + MaxRadius))) AsterMassDestroed += Asteroids[i].GetMass(); Explosions.Add(AsterAvalible.GetExplosionName(Asteroids[i].GetIntType()), pos.X, pos.Y); } else AsterMassDestroed -= Asteroids[i].GetMass(); if (Ref != null) { if (Ref.Equals(Asteroids[i])) Ref = null; } Asteroids.RemoveAt(i); } }
private void RemoveAsteroid(IAsteroid asteroid) { asteroid.BecomeInvisible -= OnAsteroidInvisible; asteroid.CollisionPerformed -= OnCollisionDetected; asteroid.SelfDestroy(); }
// -1 -нету, иначе есть public static int GetAsteroid(Point pos) { int x, y; for (int i = 0; i < Asteroids.Count; i++) { x = Asteroids[i].GetCoords().X; y = Asteroids[i].GetCoords().Y; if (Asteroids[i].GetRadius() >= (int)Math.Sqrt((pos.X - x) * (pos.X - x) + (pos.Y - y) * (pos.Y - y))) { Ref = Asteroids[i]; return i; } } return -1; }
public static void CreateWorld(int worldrad) { Ref = null; AsterMassDestroed = 0; Asteroids = new List<IAsteroid>(); Field = new Cell[Cell.MaxInd.X + 1][]; for (int i = 0; i < Field.Length; i++) { Field[i] = new Cell[Cell.MaxInd.Y + 1]; for (int j = 0; j < Field[i].Length; j++) Field[i][j] = new Cell(new Point(i, j)); } }
private void SpawnAsteroid(IAsteroid asteroid) { asteroid.SetPositionAndRotation(GetRandomSpawn()); asteroid.SetActive(true); }
public void RemoveAsteroid(IAsteroid asteroidToRemove) { asteroids.Remove(asteroidToRemove); }
public static void Prepare() { Point ind; int i = 0; ClearCells(); while (i < Asteroids.Count) { while ((i < Asteroids.Count) && (!CheckDistance(Asteroids[i].GetCoords()))) { if (Ref != null) { if (Ref.Equals(Asteroids[i])) Ref = null; } Asteroids.RemoveAt(i); } if (i < Asteroids.Count) { ind = Cell.GetCellIndex(Asteroids[i].GetCoords()); Field[ind.X][ind.Y].AddAsterLink(i); } i++; } }
public void Die(IAsteroid asteroidHit) { if (controller.isInvincible) return; view.Die(asteroidHit); controller.Die(); }