コード例 #1
0
ファイル: ObjectManager.cs プロジェクト: Zeraan/Xasteroids
 public void AddShockwave(float xPos, float yPos, int size, Player owner)
 {
     var shockwave = new Shockwave(xPos, yPos, size, owner);
     Shockwaves.Add(shockwave);
 }
コード例 #2
0
ファイル: AsteroidManager.cs プロジェクト: Zeraan/Xasteroids
 public void HandleShockwave(Shockwave shockwave, float frameDeltaTime)
 {
     foreach (var asteroid in _asteroidsInCell)
     {
         if (asteroid.HP <= 0)
         {
             continue;
             //This asteroid was destroyed already, stop checking
         }
         float tx2 = asteroid.PositionX + asteroid.VelocityX * frameDeltaTime;
         float ty2 = asteroid.PositionY + asteroid.VelocityY * frameDeltaTime;
         float rx = tx2 - shockwave.PositionX;
         float ry = ty2 - shockwave.PositionY;
         if ((float)Math.Sqrt(rx * rx + ry * ry) < (shockwave.Radius)) //Shockwave hits it
         {
             asteroid.HP -= shockwave.Size * 100;
             if (asteroid.HP <= 0 && shockwave.OwnerName != null)
             {
                 //Give money to player who destroyed it
                 int value;
                 switch (asteroid.AsteroidType)
                 {
                     case AsteroidType.GENERIC:
                         value = 15;
                         break;
                     case AsteroidType.CLUMPY:
                         value = 10;
                         break;
                     case AsteroidType.MAGNETIC:
                         value = 50;
                         break;
                     case AsteroidType.REPULSER:
                         value = 30;
                         break;
                     case AsteroidType.GRAVITIC:
                         value = 40;
                         break;
                     case AsteroidType.DENSE:
                         value = 30;
                         break;
                     case AsteroidType.ZIPPY:
                         value = 15;
                         break;
                     case AsteroidType.EXPLOSIVE:
                         value = 40;
                         break;
                     case AsteroidType.BLACK:
                         value = 30;
                         break;
                     case AsteroidType.GOLD:
                         value = 200;
                         break;
                     default:
                         value = 50;
                         break;
                 }
                 if (PlayerIsOwedMoney != null)
                 {
                     PlayerIsOwedMoney(shockwave.OwnerName, value * asteroid.Size);
                 }
             }
         }
     }
 }