Beispiel #1
0
        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);
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        public override void PostSetupContent()
        {
            PoMDataLoader.Initialize();

            if (Main.netMode != 2)
            {
                new ModifierForgeUI().Initialize();
                modifierForgeUI = new UserInterface();
                ModifierForgeUI.HideUI();

                new MapDeviceUI().Initialize();
                mapDeviceUI = new UserInterface();
                MapDeviceUI.HideUI();
            }
        }
Beispiel #4
0
 public override void OnKill()
 {
     if (Main.netMode != NetmodeID.MultiplayerClient)
     {
         if (timeLeft > 0)
         {
             CloseMap();
         }
         else if (!mapItem.IsAir)
         {
             PoMUtil.DropItem(new Vector2(Position.X * 16, Position.Y * 16), mapItem, 2);
         }
     }
     if (Main.netMode != NetmodeID.Server && MapDevice.activeMD == this)
     {
         MapDeviceUI.HideUI();
     }
 }
Beispiel #5
0
 public override void PreSaveAndQuit()
 {
     ModifierForgeUI.HideUI();
     MapDeviceUI.HideUI();
 }