public static void NextLevel() { CancellationTokenSource.Cancel(); Thread.Sleep(100); CancellationTokenSource = new CancellationTokenSource(); if (Level != null) { Console.Clear(); } GameScreen.SetLevelScreen(); var nextLevel = (LevelType)Enum.Parse(typeof(LevelType), _currentLevel > 9 ? "_" + _currentLevel : "_0" + _currentLevel); IsGameLevelRunning = true; Level = new Level(nextLevel); Level.Write(); ScoreScreen.SideScreen(Level.Player1, Level.Type, Level.AITanks); }
private void AttachEvents(IEntity entity) { entity.MoveEvent += () => { if (CheckPositionInMatrix(entity.Position)) { entity.IsHidden = false; var obstacles = GetObstacles(entity); bool result = !obstacles.Any() && CheckPositionInMatrix(entity.GetDirectionPosition()); foreach (var obstacle in obstacles) { result = entity.ApplyAffection(obstacle); if (!result) { break; } } if (entity is Player) { this._playerPosition = entity.Position; } if (entity is AI) { this.SpawnNextAI(); } if (result) { //SetTankPosition(entity); } if (!IsPositionOccupied(entity)) { return(false); } return(result); } else if (entity.EntityType == EntityType.Item) { entity.IsDestroyed = true; entity.Position = this.GetPreviousPosition(entity); if (!entity.IsHidden) { entity.Clear(); } this.Layout[entity.Position.X, entity.Position.Y] = new Item(ItemType.Nothing, entity.Position); } return(false); }; entity.DestroyEvent += () => { if (entity is ITank) { var tank = entity as ITank; if (tank is AI) { Statistics.DestroyTankPoints(tank.Type); } if (tank.Lives > 0) { if (tank is Player) { this.Spawn(tank); } } else if (Statistics.Player1Points % 50 == 0) { if (tank is AI) { this.SpawnItem(tank); } } ScoreScreen.SideScreen(this.Player1, this.Type, this.AITanks); } else if (!(entity is Item) || (entity as Item).Type != ItemType.Projectile) { this.Layout[entity.Position.X, entity.Position.Y] = new Item(ItemType.Nothing, entity.Position); } return(true); }; if (entity is AI) { (entity as AI).AIDownEvent += () => { Entities.Remove(entity); this.AIsSpawned--; SpawnNextAI(); }; } return; }