private static void ReceivePackets(int channel = -1) { int i = 0; int max = 10; if (channel != -1) { i = channel; max = channel + 1; } for (i = 0; i < max; i++) { while (SteamNetworking.IsP2PPacketAvailable(out uint messageSize, i)) { Console.WriteLine("Packet available of size: " + messageSize); byte[] pubDest = new byte[messageSize]; if (SteamNetworking.ReadP2PPacket(pubDest, messageSize, out uint bytesRead, out CSteamID steamIdRemote, i)) { switch (i) { case BB_LevelData: IsActive = true; WorldConfigFile config = (WorldConfigFile)CalcHelper.ConvertToObject(pubDest); config.LoadIntoEditor(); break; case BB_Ready: _playersReadyCount++; break; case BB_StartTime: _startTime = new DateTime((long)CalcHelper.ConvertToObject(pubDest)); break; case BB_TileIdChange: Packet.TileIdChange packet = (Packet.TileIdChange)CalcHelper.ConvertToObject(pubDest); LevelEditor.UpdateTileFromP2P(packet); break; case BB_AllEntities: UpdateEntities(pubDest); break; case BB_EntityUpdate: UpdateEntities(pubDest); break; } // Relay message to others. if (IsHost) { var allButSender = (from client in OtherPlayers where client != steamIdRemote select client).ToList(); Send(pubDest, EP2PSend.k_EP2PSendReliable, i, allButSender); } } } } }
public static void SendLevel() { DataFolder.DeleteLevel(DataFolder.LevelDirectory + "/temp.lvl"); string filePath = DataFolder.CreateNewLevel("temp", 256, 256); WorldConfigFile config = DataFolder.GetWorldConfigFile(filePath); byte[] levelData = CalcHelper.ToByteArray(config); Send(levelData, EP2PSend.k_EP2PSendReliable, BB_LevelData, null); config.LoadIntoEditor(); }
/// <summary> /// Used to load a level into gameworld and edit it. /// </summary> /// <param name="filePath"></param> public static void EditLevel(string filePath) { WorldConfigFile config = GetWorldConfigFile(filePath); if (config.TileIDs.Length == 0) { TMBAW_Game.MessageBox.Show("There is something wrong with this level and it cannot be loaded."); return; } if (!config.CanBeEdited) { TMBAW_Game.MessageBox.Show("This level cannot be edited."); return; } CurrentLevelFilePath = filePath; config.LoadIntoEditor(); }
public void CreateNewWorld(string levelName) { WorldConfigFile config = new WorldConfigFile(levelName,256, 256); config.LoadIntoEditor(); }