private void HandleAnyTankPickup(PlayerTank player, EnemyTank enemy) { RESWITCH: switch (Type) { case PickUpType.Tank: { if (player) { ClassicGameManager.s_Instance.AddLife(); } else { Type = PickUpType.Helmet; goto RESWITCH; } break; } case PickUpType.Star: { if (player) { if (player.Characteristics.StarBonusLevel < 2) { player.Characteristics.StarBonusLevel = player.Characteristics.StarBonusLevel + 1; } } else { foreach (EnemyTank enemyTank in ClassicGameManager.s_Instance.ActiveEnemyTanks) { enemyTank.CanDestroyConcrete = true; } } break; } case PickUpType.Pistol: { if (player) { player.Characteristics.HasGun = true; } else { enemy.ArmorLevel = EnemyTank.MaxArmorLevel; enemy.CanDestroyConcrete = true; enemy.CanDestroyForest = true; } break; } case PickUpType.Grenade: { if (player) { foreach (var enemyTank in ClassicGameManager.s_Instance.ActiveEnemyTanks) { enemyTank.Destroy(); } } else { foreach (PlayerTank playerTank in ClassicGameManager.s_Instance.ActivePlayerTanks) { playerTank.Destroy(); } } break; } case PickUpType.Helmet: { if (enemy) { foreach (EnemyTank enemyTank in ClassicGameManager.s_Instance.ActiveEnemyTanks) { if (enemyTank.IsBounusTank) { enemyTank.IsBounusTank = false; enemyTank.ArmorLevel = EnemyTank.MaxArmorLevel; } else { enemyTank.IsBounusTank = true; } } } else { player.HelmetTimer = 10f; } break; } case PickUpType.Clock: { if (player) { ClassicGameManager.s_Instance.EnemyTanksAISystem.FreezeFor(10f); } else { foreach (PlayerTank playerTank in ClassicGameManager.s_Instance.ActivePlayerTanks) { playerTank.FreezeFor(10f); } } break; } case PickUpType.Shovel: { foreach (var eagle in ClassicGameManager.s_Instance.Eagles) { eagle.ActivateShowelEffect(player != null); } break; } } player?.Characteristics.Recalculate(); }
public override void Enter(EnemyTank enemy) { }
void SpawnEnemy(Spawn SpawnPoint, Dictionary<String, String> EnemyStats) { EnemyTank tank = new EnemyTank(this, LoadedResources.ModelList[EnemyStats["Model"]].Model_rez, LoadedResources.ModelList[EnemyStats["Model"]].Textures_rez); tank.position = SpawnPoint.Position; float h = 0.0f; Vector3 n; terrainEngine.GetHeight(SpawnPoint.Position, out h, out n); if (SpawnPoint.Position.Y < h) tank.position = new Vector3 (tank.position.X, h ,tank.position.Z); tank.FacingDirection = SpawnPoint.leftRightRotation; enemyTanks.Add(tank); }
public override void Stay(EnemyTank enemy) { enemy.DestoryTank(); }
public override void Exit(EnemyTank enemy) { }
public void AddEnemyTank(EnemyTank eTank) { EnemyTanks.Add(eTank); }
public void DestroyEnemy(EnemyTank eTank) { _gameItemsInfo.DestroyEnemyTank(eTank); }
public static async UniTask <EnemyTank> SpawnTank() { return(await EnemyTank.Spawn(EnemyTank.Type.Big, Tank.Color.Red, new Vector3(2.5f, 2.5f))); }
public override void Exit(EnemyTank enemy) { enemy.FindPathToCurrentTarget(); }
public override void Enter(EnemyTank enemy) { enemy.currentTarget = enemy.transform.position; }
public abstract void Exit(EnemyTank enemy);
public abstract void Stay(EnemyTank enemy);
public abstract void Enter(EnemyTank enemy);
private static void CalculateEnemyShotForDirection(Point point, Direction direction, EnemyTank tank) { var startShotPoint = point; //var startIndex = Math.Min(-1 - tank.ShotCountdownLeft, 1); var startIndex = 1; for (var i = startIndex; i <= Bullet.DefaultSpeed * AppSettings.EnemyTankShotPredictionDepth; i++) { var shotPoint = BaseMobile.Shift(startShotPoint, direction); var shotCell = Field.GetCell(shotPoint); if (shotCell.IsWall) { break; } //var depth = (int)Math.Ceiling((decimal)i / 2); //var actualDepth = Math.Max(1, tank.ShotCountdownLeft) + depth; var depth = (int)Math.Ceiling((decimal)i / 2); var shotCountDownLeft = tank.ShotCountdownLeft; var actualDepth = shotCountDownLeft + depth; shotCell.AddPrediction(actualDepth, PredictionType.EnemyShot); if (shotCell.CanShootThrough) { startShotPoint = shotPoint; } else { break; } } }