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); } }
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); }
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(); } } }
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); } } }