/*File or directory*/ private void Open(string Path) { if (Path.Contains(".")) { /*File*/ new FileInfo(Path).Open(FileMode.Open); } else { DirectoryData.Clear(); LoadDirectoryInfo(Path); /*Directory*/ } }
/// /// <summary> /// Handles the Tick event of the ServerTimer control. /// This is where the server logic is performed. /// </summary> /// /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> /// private void ServerTimer_Tick(Object sender, EventArgs e) { // Update the clients list. ListViewItemCollection players = new ListViewItemCollection(PlayersView); players.Clear(); foreach (NetConnection client in server.Connections) { players.Add(new ListViewItem(new String[] { client.Status.ToString(), client.RemoteEndPoint.Address.ToString() })); } // Read all incoming messages. NetIncomingMessage message; int messageCount = 0; while ((message = server.ReadMessage()) != null) { messageCount++; switch (message.MessageType) { case NetIncomingMessageType.VerboseDebugMessage: case NetIncomingMessageType.DebugMessage: case NetIncomingMessageType.WarningMessage: case NetIncomingMessageType.ErrorMessage: log("Info", message.ReadString()); break; case NetIncomingMessageType.Data: switch (message.ReadUInt32()) { // Client requested world refresh. case Game.NETWORK_REFRESH_REQUEST: sendWorldRefresh(message.SenderConnection); log("Info", "Sent a world refresh to " + message.SenderConnection); break; case Game.NETWORK_TILE_UPDATE_REQUEST: int tileX = message.ReadInt32(); int tileZ = message.ReadInt32(); Tile updatedTile = Tile.readFromNetwork(ref message); world.tiles[tileX, tileZ] = updatedTile; log("Info", "Received new tile data at " + tileX + ", " + tileZ + ". (" + world.tiles[tileX, tileZ].getName() + ")"); foreach (NetConnection client in server.Connections) { NetOutgoingMessage tileUpdateResponse = server.CreateMessage(); tileUpdateResponse.Write(Game.NETWORK_TILE_UPDATE_RESPONSE); tileUpdateResponse.Write(tileX); tileUpdateResponse.Write(tileZ); writeTileData(tileX, tileZ, ref tileUpdateResponse); server.SendMessage(tileUpdateResponse, client, NetDeliveryMethod.ReliableOrdered); //log("Info", "Relaying tile data to " + client.RemoteEndPoint.Address.ToString()); //sendWorldRefresh(client); } break; case Game.NETWORK_NEW_ITEM_REQUEST: float itemX = message.ReadFloat(); float itemZ = message.ReadFloat(); Item newItem = Item.readFromNetwork(ref message); newItem.position = new Vector2(itemX, itemZ); world.items.Add(newItem); foreach (NetConnection client in server.Connections) { NetOutgoingMessage newItemResponse = server.CreateMessage(); newItemResponse.Write(Game.NETWORK_NEW_ITEM_RESPONSE); newItemResponse.Write(itemX); newItemResponse.Write(itemZ); writeItemData(newItem, ref newItemResponse); server.SendMessage(newItemResponse, client, NetDeliveryMethod.ReliableOrdered); log("Info", "Relaying item data to " + client.RemoteEndPoint.Address.ToString()); } break; default: log("Error", "Unknown message from client!"); break; } break; case NetIncomingMessageType.ConnectionApproval: message.SenderConnection.Approve(); break; case NetIncomingMessageType.DiscoveryRequest: NetOutgoingMessage response = server.CreateMessage(); server.SendDiscoveryResponse(response, message.SenderEndPoint); break; case NetIncomingMessageType.StatusChanged: log("Net", "Server->Client status changed: " + message.SenderConnection.Status); break; default: log("Error", "Unhandled message type: " + message.MessageType); break; } server.Recycle(message); } }