Esempio n. 1
0
        public void Connect()
        {
            if (isLocked)
            {
                return;
            }

            if (Main.netMode == 1)
            {
                SendRequest(TPUnchained.ModMessageID.RequestLock);
            }
            else
            {
                isLocked = true;

                int            address = GetAddress();
                TPTrackerWorld tracker = mod.GetModWorld <TPTrackerWorld>();
                foreach (var item in tracker.teleporters)
                {
                    if (item.GetAddress() == address)
                    {
                        if (item.Prev != Point16.Zero)
                        {
                            Prev                = item.Prev;
                            Next                = item.Position;
                            item.Prev           = Position;
                            GetByPos(Prev).Next = Position;
                            if (Main.netMode == 2)
                            {
                                GetByPos(Prev).SendData();
                                item.SendData();
                            }
                        }
                        else
                        {
                            item.Prev = Position;
                            item.Next = Position;
                            Prev      = item.Position;
                            Next      = item.Position;
                            if (Main.netMode == 2)
                            {
                                item.SendData();
                            }
                        }

                        if (Main.netMode == 2)
                        {
                            SendData();
                        }

                        break;
                    }
                }
                tracker.teleporters.Add(this);
            }
        }
Esempio n. 2
0
        private bool CanAuto(int player)
        {
            TPTrackerWorld tracker = mod.GetModWorld <TPTrackerWorld>();

            if (tracker.autoPrev[player] != ID)
            {
                tracker.autoPrev[player]     = GetByPos(Next).ID;
                tracker.autoCooldown[player] = TPTrackerWorld.cooldown;
                return(true);
            }
            return(false);
        }
Esempio n. 3
0
        public void Disconnect()
        {
            if (!isLocked)
            {
                return;
            }

            if (Main.netMode == 1)
            {
                SendRequest(TPUnchained.ModMessageID.RequestUnlock);
            }
            else
            {
                isLocked = false;

                TPTrackerWorld tracker = mod.GetModWorld <TPTrackerWorld>();
                if (Prev != Next)
                {
                    GetByPos(Prev).Next = Next;
                    GetByPos(Next).Prev = Prev;
                    if (Main.netMode == 2)
                    {
                        GetByPos(Prev).SendData();
                        GetByPos(Next).SendData();
                    }
                }
                else if (Next != Point16.Zero)
                {
                    GetByPos(Next).Next = Point16.Zero;
                    GetByPos(Next).Prev = Point16.Zero;
                    if (Main.netMode == 2)
                    {
                        GetByPos(Next).SendData();
                    }
                }

                Next = Point16.Zero;
                Prev = Point16.Zero;
                tracker.teleporters.Remove(this);

                if (Main.netMode == 2)
                {
                    SendData();
                }
            }
        }
Esempio n. 4
0
        public override void NetReceive(BinaryReader reader, bool lightReceive)
        {
            isLocked = reader.ReadBoolean();

            Prev = reader.ReadPackedVector2().ToPoint16();
            Next = reader.ReadPackedVector2().ToPoint16();

            TPTrackerWorld tracker = mod.GetModWorld <TPTrackerWorld>();

            if (!tracker.teleporters.Contains(this))
            {
                if (isLocked)
                {
                    tracker.teleporters.Add(this);
                }
            }
            else
            {
                if (!isLocked)
                {
                    tracker.teleporters.Remove(this);
                }
            }
        }