public override void NetReceive(BinaryReader reader, bool lightReceive) { //PathOfModifiers.Instance.Logger.Info($"NetReceive: {Main.netMode}"); var newTimeLeft = reader.ReadInt32(); bool isBoundsNull = reader.ReadBoolean(); var newBounds = isBoundsNull ? null : (Rectangle?)reader.ReadRectangle(); mapItem = ItemIO.Receive(reader, true); if (timeLeft == 0 && newTimeLeft != 0) { MapBorder.AddActiveBounds(newBounds.Value); } else if (timeLeft != 0 && newTimeLeft == 0) { MapBorder.RemoveActiveBounds(bounds.Value); } timeLeft = newTimeLeft; bounds = newBounds; if (Main.netMode == NetmodeID.MultiplayerClient) { if (MapDevice.activeMD?.Position == Position) { MapDeviceUI.ShowUI(this); } } }
public override bool NewRightClick(int i, int j) { Player player = Main.LocalPlayer; Main.mouseRightRelease = false; if (player.sign >= 0) { Main.PlaySound(SoundID.MenuClose); player.sign = -1; Main.editSign = false; Main.npcChatText = ""; } //TODO: (Or not to do) Hardcoded frame coordinate values because using TileObjectData is cancer. if (PoMUtil.TryGetTileEntity(i, j, 18, 18, out TileEntity te)) { MapDeviceTE clickedMD = (MapDeviceTE)te; if (clickedMD.timeLeft > 0 && IsTilePortal(clickedMD, i, j)) { Map map = ((Items.Map)clickedMD.mapItem.modItem).map; var teleportBounds = new Vector4( map.openMap.dimensions.Left + (map.openMap.dimensions.Width * map.spawnArea.X), map.openMap.dimensions.Top + (map.openMap.dimensions.Height * map.spawnArea.Y), map.openMap.dimensions.Width * map.spawnArea.Z, map.openMap.dimensions.Height * map.spawnArea.W); var newPlayerPos = new Vector2( Main.rand.NextFloat(teleportBounds.X * 16, (teleportBounds.X + teleportBounds.Z - 1) * 16), Main.rand.NextFloat(teleportBounds.Y * 16, (teleportBounds.Y + teleportBounds.W - 2) * 16)); #if DEBUG var oldPos = player.position; #endif player.Teleport(newPlayerPos, 3); #if DEBUG player.Teleport(oldPos, 3); #endif } else { if (MapDeviceUI.Instance.IsVisible && activeMD == clickedMD) { MapDeviceUI.HideUI(); } else { MapDeviceUI.ShowUI(clickedMD); } } return(true); } return(false); }