private void UpdatePylonsListAndBroadcastChanges() { Utils.Swap(ref _pylons, ref _pylonsOld); _pylons.Clear(); foreach (TileEntity value in TileEntity.ByPosition.Values) { TETeleportationPylon tETeleportationPylon = value as TETeleportationPylon; if (tETeleportationPylon != null && tETeleportationPylon.TryGetPylonType(out TeleportPylonType pylonType)) { TeleportPylonInfo teleportPylonInfo = default(TeleportPylonInfo); teleportPylonInfo.PositionInTiles = tETeleportationPylon.Position; teleportPylonInfo.TypeOfPylon = pylonType; TeleportPylonInfo item = teleportPylonInfo; _pylons.Add(item); } } IEnumerable <TeleportPylonInfo> enumerable = _pylonsOld.Except(_pylons); foreach (TeleportPylonInfo item2 in _pylons.Except(_pylonsOld)) { NetManager.Instance.BroadcastOrLoopback(NetTeleportPylonModule.SerializePylonWasAddedOrRemoved(item2, NetTeleportPylonModule.SubPacketType.PylonWasAdded)); } foreach (TeleportPylonInfo item3 in enumerable) { NetManager.Instance.BroadcastOrLoopback(NetTeleportPylonModule.SerializePylonWasAddedOrRemoved(item3, NetTeleportPylonModule.SubPacketType.PylonWasRemoved)); } }
public void OnPlayerJoining(int playerIndex) { foreach (TeleportPylonInfo pylon in _pylons) { NetManager.Instance.SendToClient(NetTeleportPylonModule.SerializePylonWasAddedOrRemoved(pylon, NetTeleportPylonModule.SubPacketType.PylonWasAdded), playerIndex); } }
private void UpdatePylonsListAndBroadcastChanges() { Utils.Swap <List <TeleportPylonInfo> >(ref this._pylons, ref this._pylonsOld); this._pylons.Clear(); foreach (TileEntity tileEntity in TileEntity.ByPosition.Values) { TeleportPylonType pylonType; if (tileEntity is TETeleportationPylon teleportationPylon && teleportationPylon.TryGetPylonType(out pylonType)) { this._pylons.Add(new TeleportPylonInfo() { PositionInTiles = teleportationPylon.Position, TypeOfPylon = pylonType }); } } IEnumerable <TeleportPylonInfo> teleportPylonInfos = this._pylonsOld.Except <TeleportPylonInfo>((IEnumerable <TeleportPylonInfo>) this._pylons); foreach (TeleportPylonInfo info in this._pylons.Except <TeleportPylonInfo>((IEnumerable <TeleportPylonInfo>) this._pylonsOld)) { NetManager.Instance.BroadcastOrLoopback(NetTeleportPylonModule.SerializePylonWasAddedOrRemoved(info, NetTeleportPylonModule.SubPacketType.PylonWasAdded)); } foreach (TeleportPylonInfo info in teleportPylonInfos) { NetManager.Instance.BroadcastOrLoopback(NetTeleportPylonModule.SerializePylonWasAddedOrRemoved(info, NetTeleportPylonModule.SubPacketType.PylonWasRemoved)); } }
public void RequestTeleportation(TeleportPylonInfo info, Player player) { NetManager.Instance.SendToServerOrLoopback(NetTeleportPylonModule.SerializeUseRequest(info)); }