public void UpdatePosition(int tileId, int x, int y) { if (tileId >= 0 && tileId <= 500) { HitTileObject obj = data[tileId]; obj.X = x; obj.Y = y; } }
public void UpdatePosition(int tileId, int x, int y) { if (tileId >= 0 && tileId <= 20) { HitTileObject hitTileObject = data[tileId]; hitTileObject.X = x; hitTileObject.Y = y; } }
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; }
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(); } } }
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); }
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); }
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; } } } }