コード例 #1
0
    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();
    }
コード例 #2
0
 public override void Enter(EnemyTank enemy)
 {
 }
コード例 #3
0
ファイル: Game1.cs プロジェクト: alittle1234/XNA_Project
        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);
        }
コード例 #4
0
 public override void Stay(EnemyTank enemy)
 {
     enemy.DestoryTank();
 }
コード例 #5
0
 public override void Exit(EnemyTank enemy)
 {
 }
コード例 #6
0
 public void AddEnemyTank(EnemyTank eTank)
 {
     EnemyTanks.Add(eTank);
 }
コード例 #7
0
 public void DestroyEnemy(EnemyTank eTank)
 {  
     _gameItemsInfo.DestroyEnemyTank(eTank);
 }
コード例 #8
0
ファイル: EnemyAgent.cs プロジェクト: HyVong007/BattleCity
 public static async UniTask <EnemyTank> SpawnTank()
 {
     return(await EnemyTank.Spawn(EnemyTank.Type.Big, Tank.Color.Red, new Vector3(2.5f, 2.5f)));
 }
コード例 #9
0
 public override void Exit(EnemyTank enemy)
 {
     enemy.FindPathToCurrentTarget();
 }
コード例 #10
0
 public override void Enter(EnemyTank enemy)
 {
     enemy.currentTarget = enemy.transform.position;
 }
コード例 #11
0
ファイル: State.cs プロジェクト: scream870102/SonaruIsugeTank
 public abstract void Exit(EnemyTank enemy);
コード例 #12
0
ファイル: State.cs プロジェクト: scream870102/SonaruIsugeTank
 public abstract void Stay(EnemyTank enemy);
コード例 #13
0
ファイル: State.cs プロジェクト: scream870102/SonaruIsugeTank
 public abstract void Enter(EnemyTank enemy);
コード例 #14
0
        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;
                }
            }
        }