public static void BroadcastWormholeUpdateViaServer(WormholesMod mymod, string id) { if (Main.netMode != 2) { return; } // Server only WormholesWorld modworld = mymod.GetModWorld <WormholesWorld>(); WormholeLink link = modworld.Wormholes.GetLinkById(id); ModPacket packet = mymod.GetPacket(); if (link == null) { ErrorLogger.Log("WormholesNetProtocol.BroadcastWormholeUpdateViaServer - Invalid wormhole link id."); return; } packet.Write((byte)WormholeNetProtocolTypes.WormholeUpdate); packet.Write((string)id); packet.Write((float)link.RightPortal.Pos.X); packet.Write((float)link.RightPortal.Pos.Y); packet.Write((float)link.LeftPortal.Pos.X); packet.Write((float)link.LeftPortal.Pos.Y); packet.Send(); // Broadcast }
//////////////////////////////// // Recipients (Client) //////////////////////////////// private static void ReceiveWormholesAndSettingsOnClient(WormholesMod mymod, BinaryReader reader) { if (Main.netMode != 1) { return; } // Clients only WormholesWorld modworld = mymod.GetModWorld <WormholesWorld>(); string json = reader.ReadString(); int wormhole_count = reader.ReadInt32(); mymod.Config.DeserializeMe(json); for (int i = 0; i < wormhole_count; i++) { string id = reader.ReadString(); float worm_l_x = reader.ReadSingle(); float worm_l_y = reader.ReadSingle(); float worm_r_x = reader.ReadSingle(); float worm_r_y = reader.ReadSingle(); Vector2 pos_l = new Vector2(worm_l_x, worm_l_y); Vector2 pos_r = new Vector2(worm_r_x, worm_r_y); var link = new WormholeLink(id, WormholeLink.GetColor(i), pos_l, pos_r); modworld.Wormholes.Links.Insert(i, link); } }
public static void OpenPortal( WormholesMod mymod, Player player, Vector2 to, Vector2 fro ) { WormholesPlayer modplayer = player.GetModPlayer<WormholesPlayer>( mymod ); if( modplayer.MyPortal != null ) { modplayer.MyPortal.Close(); } var link = new WormholeLink( Color.Cyan, to, fro ); link.LeftPortal.AnimateOpen(); link.RightPortal.AnimateOpen(); modplayer.MyPortal = link; }
//////////////// protected override void ReceiveReply() { var mymod = WormholesMod.Instance; var myworld = ModContent.GetInstance <WormholesWorld>(); for (int i = 0; i < this.Ids.Length; i++) { var posR = new Vector2(this.RightPosX[i], this.RightPosY[i]); var posL = new Vector2(this.LeftPosX[i], this.LeftPosY[i]); var link = new WormholeLink(this.Ids[i], WormholeLink.GetColor(i), posL, posR); myworld.Wormholes.Links.Insert(i, link); } }
//////////////// protected override void ReceiveWithClient() { var mymod = WormholesMod.Instance; var myworld = mymod.GetModWorld <WormholesWorld>(); mymod.JsonConfig.SetData(this.ModSettings); for (int i = 0; i < this.Ids.Length; i++) { var pos_r = new Vector2(this.RightPosX[i], this.RightPosY[i]); var pos_l = new Vector2(this.LeftPosX[i], this.LeftPosY[i]); var link = new WormholeLink(this.Ids[i], WormholeLink.GetColor(i), pos_l, pos_r); myworld.Wormholes.Links.Insert(i, link); } }
public static void BroadcastToClients(string id) { var mymod = WormholesMod.Instance; var myworld = mymod.GetModWorld <WormholesWorld>(); WormholeLink link = myworld.Wormholes.GetLinkById(id); if (link == null) { LogHelpers.Log("WormholeUpdateProtocol.BroadcastToClients - Invalid wormhole link id " + id); return; } var protocol = new WormholeUpdateProtocol(id, link.RightPortal.Pos.X, link.RightPortal.Pos.Y, link.LeftPortal.Pos.X, link.LeftPortal.Pos.Y); protocol.SendToClient(-1, -1); }