public static IsComponentWiredByPort ( Terraria.Plugins.Common.ObjectMeasureData measureData ) : bool | ||
measureData | Terraria.Plugins.Common.ObjectMeasureData | |
Résultat | bool |
public bool HandleTileEdit(TSPlayer player, TileEditType editType, int blockType, DPoint location, int objectStyle) { switch (editType) { case TileEditType.PlaceTile: { switch (blockType) { case AdvancedCircuits.BlockType_WirelessTransmitter: if ( AdvancedCircuits.IsComponentWiredByPort(location, new DPoint(1, 1)) && !this.Metadata.WirelessTransmitters.ContainsKey(location) ) { this.Metadata.WirelessTransmitters.Add(location, player.Name); } break; } break; } case TileEditType.PlaceWire: case TileEditType.PlaceWireBlue: case TileEditType.PlaceWireGreen: { // Check if we just wired an unregistered component's port. foreach (DPoint adjacentTileLocation in AdvancedCircuits.EnumerateComponentPortLocations(location, new DPoint(1, 1))) { ITile tile = TerrariaUtils.Tiles[adjacentTileLocation]; if (tile.active() && tile.type == AdvancedCircuits.BlockType_WirelessTransmitter) { if (!this.Metadata.WirelessTransmitters.ContainsKey(adjacentTileLocation)) { this.Metadata.WirelessTransmitters.Add(adjacentTileLocation, player.Name); } } } break; } case TileEditType.TileKill: case TileEditType.TileKillNoItem: { if (!TerrariaUtils.Tiles[location].active()) { break; } switch (TerrariaUtils.Tiles[location].type) { case TileID.Timers: { if (this.Metadata.ActiveTimers.ContainsKey(location)) { this.Metadata.ActiveTimers.Remove(location); } break; } case TileID.GrandfatherClocks: { ObjectMeasureData measureData = TerrariaUtils.Tiles.MeasureObject(location); if (this.Metadata.Clocks.ContainsKey(measureData.OriginTileLocation)) { this.Metadata.Clocks.Remove(measureData.OriginTileLocation); } break; } case AdvancedCircuits.BlockType_Swapper: { if (this.Metadata.Swappers.ContainsKey(location)) { this.Metadata.Swappers.Remove(location); } break; } case AdvancedCircuits.BlockType_ANDGate: case AdvancedCircuits.BlockType_ORGate: case AdvancedCircuits.BlockType_XORGate: { if (this.Metadata.GateStates.ContainsKey(location)) { this.Metadata.GateStates.Remove(location); } break; } case AdvancedCircuits.BlockType_BlockActivator: { if (this.Metadata.BlockActivators.ContainsKey(location)) { this.Metadata.BlockActivators.Remove(location); } break; } case AdvancedCircuits.BlockType_WirelessTransmitter: { if (this.Metadata.WirelessTransmitters.ContainsKey(location)) { this.Metadata.WirelessTransmitters.Remove(location); } break; } } break; } } return(false); }
private bool CheckTilePermission(TSPlayer player, DPoint location, int blockType, int objectStyle, PaintColor paint, bool dropItem = false) { switch (blockType) { case TileID.Statues: { DPoint originTileLocation = new DPoint(location.X - 1, location.Y - 2); if (!TerrariaUtils.Tiles.IsObjectWired(originTileLocation, new DPoint(2, 3))) { break; } StatueStyle statueStyle = TerrariaUtils.Tiles.GetStatueStyle(objectStyle); StatueConfig statueConfig; if (!this.Config.StatueConfigs.TryGetValue(statueStyle, out statueConfig) || statueConfig == null) { break; } if (!player.Group.HasPermission(statueConfig.WirePermission)) { player.SendTileSquareEx(location, 10); if (dropItem) { int itemTypeToDrop; itemTypeToDrop = TerrariaUtils.Tiles.GetItemTypeFromStatueStyle(statueStyle); Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, itemTypeToDrop); } this.TellNoStatueWiringPermission(player, statueStyle); return(false); } break; } case TileID.Traps: { ITile destTile = TerrariaUtils.Tiles[location]; if (!destTile.HasWire()) { break; } TrapConfig trapConfig; TrapStyle trapStyle = TerrariaUtils.Tiles.GetTrapStyle(destTile.frameY / 18); TrapConfigKey configKey = new TrapConfigKey(trapStyle, paint); if (!this.Config.TrapConfigs.TryGetValue(configKey, out trapConfig)) { break; } if (!player.Group.HasPermission(trapConfig.WirePermission)) { player.SendTileSquareEx(location, 10); if (dropItem) { int itemTypeToDrop = TerrariaUtils.Tiles.GetItemTypeFromTrapStyle(trapStyle); Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, itemTypeToDrop); } this.TellMissingComponentWiringPermission(player, blockType); return(false); } break; } case TileID.Boulder: { DPoint originTileLocation = new DPoint(location.X - 1, location.Y - 1); if (!TerrariaUtils.Tiles.IsObjectWired(originTileLocation, new DPoint(2, 2))) { break; } if (!player.Group.HasPermission(AdvancedCircuitsPlugin.WireBoulder_Permission)) { player.SendTileSquareEx(location, 10); if (dropItem) { Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, ItemID.Boulder); } this.TellMissingComponentWiringPermission(player, blockType); return(false); } break; } case TileID.Signs: { if (!TerrariaUtils.Tiles.IsObjectWired(location, new DPoint(2, 2))) { break; } if (!player.Group.HasPermission(AdvancedCircuitsPlugin.WireSign_Permission)) { player.SendTileSquareEx(location, 10); if (dropItem) { Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, ItemID.Sign); } this.TellMissingComponentWiringPermission(player, blockType); return(false); } break; } case TileID.InletPump: case TileID.OutletPump: { DPoint originTileLocation = new DPoint(location.X - 1, location.Y - 1); if (!TerrariaUtils.Tiles.IsObjectWired(originTileLocation, new DPoint(2, 2))) { break; } PumpConfig pumpConfig; if (!this.Config.PumpConfigs.TryGetValue(paint, out pumpConfig)) { break; } if (string.IsNullOrEmpty(pumpConfig.WirePermission)) { break; } if (!player.Group.HasPermission(pumpConfig.WirePermission)) { player.SendTileSquareEx(location, 10); if (dropItem) { int itemTypeToDrop = ItemID.OutletPump; if (blockType == ItemID.InletPump) { itemTypeToDrop = ItemID.InletPump; } Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, itemTypeToDrop); } this.TellMissingComponentWiringPermission(player, blockType); return(false); } break; } case AdvancedCircuits.BlockType_WirelessTransmitter: { if (!AdvancedCircuits.IsComponentWiredByPort(location, new DPoint(1, 1))) { break; } WirelessTransmitterConfig transmitterConfig; if (!this.Config.WirelessTransmitterConfigs.TryGetValue(paint, out transmitterConfig)) { break; } if (!player.Group.HasPermission(transmitterConfig.WirePermission)) { player.SendTileSquareEx(location, 1); if (dropItem) { Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, ItemID.AdamantiteOre); } this.TellMissingComponentWiringPermission(player, blockType); return(false); } break; } case ItemID.Teleporter: { DPoint originTileLocation = new DPoint(location.X - 1, location.Y - 1); if (!TerrariaUtils.Tiles.IsObjectWired(originTileLocation, new DPoint(3, 1))) { break; } if (!player.Group.HasPermission(AdvancedCircuitsPlugin.WireTeleporter_Permission)) { player.SendTileSquareEx(location, 10); if (dropItem) { Item.NewItem(location.X * TerrariaUtils.TileSize, location.Y * TerrariaUtils.TileSize, 0, 0, ItemID.Teleporter); } this.TellMissingComponentWiringPermission(player, blockType); return(false); } break; } } return(true); }
public static bool IsComponentWiredByPort(ObjectMeasureData measureData) { return(AdvancedCircuits.IsComponentWiredByPort(measureData.OriginTileLocation, measureData.Size)); }