public override void DoWiredAction(RoomUnitUser user, HashSet <uint> used) { foreach (RoomItem item_ in this.SelectedItems) { MatchFurniData data = this.MatchFurniData[item_.ID]; if (!item_.WiredIgnoreExtraData()) { if (this.FurniState) { item_.ExtraData = data.ExtraData; item_.UpdateState(true, true); if (!this.Direction && !this.Position) { this.Room.RoomGamemapManager.GetTile(item_.X, item_.Y).UpdateTile(); foreach (AffectedTile tile in item_.AffectedTiles) { this.Room.RoomGamemapManager.GetTile(tile.X, tile.Y).UpdateTile(); } } } } if (this.Direction || this.Position) { int oldRot = item_.Rot; int oldX = item_.X; int oldY = item_.Y; double oldZ = item_.Z; if (this.Room.RoomItemManager.MoveFloorItemOnRoom(null, item_, this.Position ? data.X : item_.X, this.Position ? data.Y : item_.Y, this.Direction ? data.Rot : item_.Rot, this.Position ? data.Z : -1.0, false)) { this.Room.RoomItemManager.MoveAnimation[item_.ID] = new RoomItemRollerMovement(item_.ID, item_.X, item_.Y, item_.Z, 0, oldX, oldY, oldZ); } } } }
public override bool IsBlocking(RoomUnitUser triggerer) { foreach (RoomItem item_ in this.SelectedItems) { MatchFurniData data = this.MatchFurniData[item_.ID]; if (this.FurniState && !item_.WiredIgnoreExtraData() && item_.ExtraData == data.ExtraData) { return(true); } if (this.Direction && item_.Rot == data.Rot) { return(true); } if (this.Position && item_.X == data.X && item_.Y == data.Y) { return(true); } } return(false); }