Exemple #1
0
 public void UpdatePosition(int tileId, int x, int y)
 {
     if (tileId >= 0 && tileId <= 500)
     {
         HitTileObject obj = data[tileId];
         obj.X = x;
         obj.Y = y;
     }
 }
Exemple #2
0
 public void UpdatePosition(int tileId, int x, int y)
 {
     if (tileId >= 0 && tileId <= 20)
     {
         HitTileObject hitTileObject = data[tileId];
         hitTileObject.X = x;
         hitTileObject.Y = y;
     }
 }
Exemple #3
0
 public HitTile()
 {
     rand  = new UnifiedRandom();
     data  = new HitTileObject[501];
     order = new int[501];
     for (int i = 0; i <= 500; i++)
     {
         data[i]  = new HitTileObject();
         order[i] = i;
     }
     bufferLocation = 0;
 }
Exemple #4
0
 public void ClearThisTile(int x, int y)
 {
     for (int i = 0; i <= 500; i++)
     {
         int           num           = order[i];
         HitTileObject hitTileObject = data[num];
         if (hitTileObject.X == x && hitTileObject.Y == y)
         {
             Clear(i);
             Prune();
         }
     }
 }
Exemple #5
0
        public int AddDamage(int tileId, int damageAmount, bool updateAmount = true)
        {
            if (tileId < 0 || tileId > 20)
            {
                return(0);
            }
            if (tileId == bufferLocation && damageAmount == 0)
            {
                return(0);
            }
            HitTileObject hitTileObject = data[tileId];

            if (!updateAmount)
            {
                return(hitTileObject.damage + damageAmount);
            }
            hitTileObject.damage    += damageAmount;
            hitTileObject.timeToLive = 60;
            if (tileId == bufferLocation)
            {
                bufferLocation = order[20];
                data[bufferLocation].Clear();
                for (int num = 20; num > 0; num--)
                {
                    order[num] = order[num - 1];
                }
                order[0] = bufferLocation;
            }
            else
            {
                int num;
                for (num = 0; num <= 20 && order[num] != tileId; num++)
                {
                }
                while (num > 1)
                {
                    int num2 = order[num - 1];
                    order[num - 1] = order[num];
                    order[num]     = num2;
                    num--;
                }
                order[1] = tileId;
            }
            return(hitTileObject.damage);
        }
 public int TryFinding(int x, int y, int hitType)
 {
     for (int i = 0; i <= 500; i++)
     {
         int           num           = order[i];
         HitTileObject hitTileObject = data[num];
         if (hitTileObject.type == hitType)
         {
             if (hitTileObject.X == x && hitTileObject.Y == y)
             {
                 return(num);
             }
         }
         else if (i != 0 && hitTileObject.type == 0)
         {
             break;
         }
     }
     return(-1);
 }
Exemple #7
0
        public int AddDamage(int tileId, int damageAmount, bool updateAmount = true)
        {
            if (tileId < 0 || tileId > 500)
            {
                return(0);
            }
            if (tileId == bufferLocation && damageAmount == 0)
            {
                return(0);
            }
            HitTileObject hitTileObject = data[tileId];

            if (!updateAmount)
            {
                return(hitTileObject.damage + damageAmount);
            }
            hitTileObject.damage              += damageAmount;
            hitTileObject.timeToLive           = 60;
            hitTileObject.animationTimeElapsed = 0;
            hitTileObject.animationDirection   = (Main.rand.NextFloat() * ((float)Math.PI * 2f)).ToRotationVector2() * 2f;
            SortSlots(tileId);
            return(hitTileObject.damage);
        }
Exemple #8
0
        public void Prune()
        {
            bool flag = false;

            for (int i = 0; i <= 500; i++)
            {
                HitTileObject hitTileObject = data[i];
                if (hitTileObject.type == 0)
                {
                    continue;
                }
                Tile tile = Main.tile[hitTileObject.X, hitTileObject.Y];
                if (hitTileObject.timeToLive <= 1)
                {
                    hitTileObject.Clear();
                    flag = true;
                    continue;
                }
                hitTileObject.timeToLive--;
                if ((double)hitTileObject.timeToLive < 12.0)
                {
                    hitTileObject.damage -= 10;
                }
                else if ((double)hitTileObject.timeToLive < 24.0)
                {
                    hitTileObject.damage -= 7;
                }
                else if ((double)hitTileObject.timeToLive < 36.0)
                {
                    hitTileObject.damage -= 5;
                }
                else if ((double)hitTileObject.timeToLive < 48.0)
                {
                    hitTileObject.damage -= 2;
                }
                if (hitTileObject.damage < 0)
                {
                    hitTileObject.Clear();
                    flag = true;
                }
                else if (hitTileObject.type == 1)
                {
                    if (!tile.active())
                    {
                        hitTileObject.Clear();
                        flag = true;
                    }
                }
                else if (tile.wall == 0)
                {
                    hitTileObject.Clear();
                    flag = true;
                }
            }
            if (!flag)
            {
                return;
            }
            int num = 1;

            while (flag)
            {
                flag = false;
                for (int j = num; j < 500; j++)
                {
                    if (data[order[j]].type == 0 && data[order[j + 1]].type != 0)
                    {
                        int num2 = order[j];
                        order[j]     = order[j + 1];
                        order[j + 1] = num2;
                        flag         = true;
                    }
                }
            }
        }