private void Callback() { for (int radius = 2; radius < 16; radius++) { foreach (Point point in Utility.GetCircle(Position.X + 1, Position.Y + 1, radius)) { if (Utility.InWorldBounds(point.X, point.Y) && !WorldGen.TileEmpty(point.X, point.Y) && Main.tile[point.X, point.Y].type == TileID.IceBlock) { WorldGen.KillTile(point.X, point.Y, noItem: true); for (int i = 0; i < 10; i++) { Vector2 start = point.ToWorldCoordinates(Main.rand.NextFloat() * 16f, Main.rand.NextFloat() * 16f); Vector2 end = Position.ToWorldCoordinates(24f, 24f); Vector2 dir = Vector2.Normalize(end - start); int timeLeft = (int)(Vector2.Distance(start, end) / dir.Length()); Photon.Spawn(start, dir, new Color(0, 237, 217), timeLeft, () => EnergyHandler.InsertEnergy(100)); } return; } } } }
private void Callback() { if (EnergyHandler.Energy < EnergyHandler.Capacity) { foreach (BaseGelumTE tile in Connections) { if (tile is IEnergySource source && source.EnergyHandler.Energy > 0) { Vector2 start = tile.Position.ToWorldCoordinates(tile.InsertionPoint); Vector2 end = Position.ToWorldCoordinates(InsertionPoint); Vector2 dir = Vector2.Normalize(end - start); int timeLeft = (int)(Vector2.Distance(start, end) / dir.Length()); long extracted = -source.EnergyHandler.ExtractEnergy(100); Photon.Spawn(start, dir, new Color(0, 237, 217), timeLeft, () => EnergyHandler.InsertEnergy(extracted)); } } } foreach (BaseGelumTE tile in Connections) { if (tile is IEnergyReceiver receiver && receiver.EnergyHandler.Energy < receiver.EnergyHandler.Capacity) { foreach (EnergyRelay relay in Network.Tiles.OfType <EnergyRelay>()) { if (relay.EnergyHandler.Energy <= 0) { continue; } Vector2 start = Position.ToWorldCoordinates(InsertionPoint); Vector2 end = tile.Position.ToWorldCoordinates(tile.InsertionPoint); Vector2 dir = Vector2.Normalize(end - start); int timeLeft = (int)(Vector2.Distance(start, end) / dir.Length()); long extracted = -relay.EnergyHandler.ExtractEnergy(100); Photon.Spawn(start, dir, new Color(0, 237, 217), timeLeft, () => receiver.EnergyHandler.InsertEnergy(extracted)); } } } }