private void AddList(Manager manager) { List = new ControlList <AchievementLogItem>(manager); List.Init(); List.Top = TopPanel.Height + 4; List.Left = 4; List.Width = ClientWidth - (List.Left * 2); List.Height = ClientHeight - List.Top - 4; Add(List); }
private void AddList(Manager manager) { List = new ControlList <ContentPackListControl>(manager); List.Init(); List.Top = TopPanel.Height + 4; List.Left = 4; List.Width = ClientWidth - (List.Left * 2); List.Height = ClientHeight - List.Top - 12 - 32; Add(List); }
public LobbyWindow(Manager manager) : base(manager) { //Setup the window CaptionVisible = false; TopPanel.Visible = false; Movable = false; Resizable = false; Width = 700; Height = 500; Shadow = true; Center(); //Group panels grpLobby = new GroupPanel(Manager) { Width = ClientWidth / 2, Height = ClientHeight - BottomPanel.Height + 2, Text = "Rooms" }; grpLobby.Init(); Add(grpLobby); grpServer = new GroupPanel(Manager) { Left = (ClientWidth / 2) - 1, Width = (ClientWidth / 2) + 1, Height = ClientHeight - BottomPanel.Height + 2, Text = "Server" }; grpServer.Init(); Add(grpServer); //Top controls txtSearch = new TextBox(Manager) { Left = 8, Top = 8, Width = (ClientWidth / 4) - 16, }; txtSearch.Init(); txtSearch.Text = searchStr; txtSearch.TextChanged += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { RefreshRooms(); }); //Show "Search..." text, but make it dissapear on focus txtSearch.FocusGained += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { if (txtSearch.Text.Trim() == searchStr) txtSearch.Text = string.Empty; }); txtSearch.FocusLost += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { if (txtSearch.Text.Trim() == string.Empty) txtSearch.Text = searchStr; }); grpLobby.Add(txtSearch); cmbSort = new ComboBox(Manager) { Left = txtSearch.Right + 8, Top = 8, Width = (ClientWidth / 4) - 16 - 20, }; cmbSort.Init(); cmbSort.Items.AddRange(sortFilters); cmbSort.ItemIndex = 0; cmbSort.ItemIndexChanged += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { RefreshRooms(); }); grpLobby.Add(cmbSort); btnReload = new Button(Manager) { Left = cmbSort.Right + 8, Top = 8, Width = 20, Height = 20, Text = string.Empty, }; btnReload.Init(); btnReload.Glyph = new Glyph(ContentPack.Textures["gui\\icons\\refresh"]); btnReload.ToolTip.Text = "Refresh"; btnReload.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { Game.NetManager.Send(new RequestMessage(MessageTypes.Lobby)); }); grpLobby.Add(btnReload); //Main room list RoomListCtrl = new ControlList<LobbyDataControl>(Manager) { Left = 8, Top = txtSearch.Bottom + 8, Width = grpLobby.Width - 16, Height = grpLobby.Height - 16 - txtSearch.Bottom - 24 }; RoomListCtrl.Init(); grpLobby.Add(RoomListCtrl); //Server info labels lblName = new Label(Manager) { Text = "Loading...", Top = 8, Font = FontSize.Default20, Left = 8, Alignment = Alignment.MiddleCenter, Height = 30, Width = grpServer.ClientWidth - 16 }; lblName.Init(); grpServer.Add(lblName); lblDescription = new Label(Manager) { Text = string.Empty, Top = 8 + lblName.Bottom, Left = 8, Alignment = Alignment.MiddleCenter, Width = grpServer.ClientWidth - 16 }; lblDescription.Init(); grpServer.Add(lblDescription); lblInfo = new Label(Manager) { Text = string.Empty, Top = 8 + lblDescription.Bottom, Left = 8, Alignment = Alignment.TopLeft, Width = grpServer.ClientWidth - 16, Height = grpServer.Height }; lblInfo.Init(); grpServer.Add(lblInfo); //Bottom buttons btnCreate = new Button(Manager) { Top = 8, Text = "Create" }; btnCreate.Left = (ClientWidth / 2) - (btnCreate.Width / 2); btnCreate.Init(); btnCreate.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { CreateWorldDialog window = new CreateWorldDialog(manager, this); window.Init(); Manager.Add(window); window.Show(); }); BottomPanel.Add(btnCreate); btnJoin = new Button(Manager) { Right = btnCreate.Left - 8, Top = 8, Text = "Join" }; btnJoin.Init(); btnJoin.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { JoinRoom(RoomListCtrl.ItemIndex); }); BottomPanel.Add(btnJoin); btnDisconnect = new Button(Manager) { Left = btnCreate.Right + 8, Top = 8, Text = "Quit" }; btnDisconnect.Init(); btnDisconnect.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { Game.NetManager.Disconnect("Left Lobby"); Game.CurrentGameState = GameState.Login; Interface.MainWindow.ScreenManager.SwitchScreen(new LoginScreen()); }); BottomPanel.Add(btnDisconnect); //When finished, request server send lobby data Game.NetManager.Send(new RequestMessage(MessageTypes.Lobby)); }
public ServerWindow(Manager manager) : base(manager) { //Setup server pinger/query Pinger = new ServerPinger(); //Setup the window CaptionVisible = false; Caption.Text = "Welcome to Bricklayer!"; Description.Text = "An open source, fully moddable and customizable 2D\nbuilding game built with the community in mind."; Movable = false; Resizable = false; Width = 450; Height = 350; Shadow = true; Center(); //Player config NameLbl = new Label(Manager) { Left = 8, Top = TopPanel.Bottom + 10, Width = 64, Text = "Username:"******"Color:" }; ColorLbl.Init(); Add(ColorLbl); BodyClr = new ColorPicker(Manager) { Left = ColorLbl.Right + 4, Top = TopPanel.Bottom + 8, Width = 128, Saturation = GlobalSettings.ColorSaturation, Value = GlobalSettings.ColorValue }; BodyClr.Init(); BodyClr.ValueChanged += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { BodyImg.Color = BodyClr.SelectedColor; Game.MyColor = BodyClr.SelectedColor; Game.MyHue = BodyClr.Hue; }); Add(BodyClr); BodyImg = new ImageBox(Manager) { Left = BodyClr.Right + 6, Top = TopPanel.Bottom + 8, Width = 18, Height = 18, Color = Game.MyColor, Image = ContentPack.Textures["entity\\body"] }; BodyImg.Init(); Add(BodyImg); SmileyImg = new ImageBox(Manager) { Left = BodyClr.Right + 6, Top = TopPanel.Bottom + 8, Width = 18, Height = 18, Image = ContentPack.Textures["entity\\smileys"], SourceRect = new Rectangle(0, 0, 18, 18) }; SmileyImg.Init(); SmileyImg.ToolTip.Text = "I love this color!"; Add(SmileyImg); BodyClr.Hue = Game.MyHue; //Create main server list ServerListCtrl = new ControlList<ServerDataControl>(manager) { Left = 8, Top = TopPanel.Bottom + 34, Width = ClientWidth - 16, Height = ClientHeight - TopPanel.Height - BottomPanel.Height - 42 }; ServerListCtrl.Init(); Add(ServerListCtrl); RefreshServerList(); //Add BottomPanel controls JoinBtn = new Button(manager) { Text = "Connect", Left = 24, Top = 8, Width = 100, }; JoinBtn.Init(); JoinBtn.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { //Logical place to save name/color settings IO.SaveSettings(new Settings() { Username = Game.Username, Color = Game.MyHue, ContentPack = Game.ContentPackName, Resolution = new Point(Game.Resolution.Width, Game.Resolution.Height), UseVSync = Game.MainWindow.Manager.Graphics.SynchronizeWithVerticalRetrace }); //Connect if (ServerListCtrl.Items.Count > 0) { if ((ServerListCtrl.Items[ServerListCtrl.ItemIndex] as ServerDataControl).Ping != null && (ServerListCtrl.Items[ServerListCtrl.ItemIndex] as ServerDataControl).Ping.Error) return; //Create a world and connect JoinBtn.Enabled = false; JoinBtn.Text = "Connecting..."; Game.NetManager.Connect(Servers[ServerListCtrl.ItemIndex].IP, Servers[ServerListCtrl.ItemIndex].Port); } }); BottomPanel.Add(JoinBtn); AddBtn = new Button(manager) { Text = "Add", Left = JoinBtn.Right + 8, Top = 8, Width = 64, }; AddBtn.Init(); AddBtn.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { AddServerDialog window = new AddServerDialog(manager, this,ServerListCtrl.ItemIndex, false, string.Empty, string.Empty); window.Init(); Manager.Add(window); window.Show(); }); BottomPanel.Add(AddBtn); EditBtn = new Button(manager) { Text = "Edit", Left = AddBtn.Right + 8, Top = 8, Width = 64, }; EditBtn.Init(); EditBtn.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { if (ServerListCtrl.Items.Count > 0) { AddServerDialog window = new AddServerDialog(manager, this, ServerListCtrl.ItemIndex, true, Servers[ServerListCtrl.ItemIndex].Name, Servers[ServerListCtrl.ItemIndex].GetHostString()); window.Init(); Manager.Add(window); window.Show(); } }); BottomPanel.Add(EditBtn); RemoveBtn = new Button(manager) { Text = "Remove", Left = EditBtn.Right + 8, Top = 8, Width = 64 }; RemoveBtn.Init(); RemoveBtn.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { if (ServerListCtrl.Items.Count > 0) { MessageBox confirm = new MessageBox(manager, MessageBoxType.YesNo, "Are you sure you would like to remove\nthis server from your server list?", "[color:Red]Confirm Removal[/color]"); confirm.Init(); confirm.Closed += new WindowClosedEventHandler(delegate(object sender, WindowClosedEventArgs args) { if ((sender as Dialog).ModalResult == ModalResult.Yes) //If user clicked yes { Servers.RemoveAt(ServerListCtrl.ItemIndex); ServerListCtrl.Items.RemoveAt(ServerListCtrl.ItemIndex); IO.WriteServers(Servers); RefreshServerList(); } }); Manager.Add(confirm); confirm.Show(); } }); BottomPanel.Add(RemoveBtn); RefreshBtn = new Button(manager) { Text = "Refresh", Left = RemoveBtn.Right + 8, Top = 8, Width = 64 }; RefreshBtn.Init(); RefreshBtn.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { RefreshServerList(); }); BottomPanel.Add(RefreshBtn); MainWindow.ScreenManager.FadeIn(); validateUsername(); }
public ServerWindow(Manager manager, ServerScreen screen) : base(manager) { this.screen = screen; // Setup the window CaptionVisible = false; TopPanel.Visible = false; Movable = false; Resizable = false; Width = 550; Height = 500; Shadow = true; Center(); // Create main server list lstServers = new ControlList <ServerDataControl>(manager) { Left = 8, Top = 8, Width = ClientWidth - 16, Height = ClientHeight - BottomPanel.Height - 16, }; lstServers.Init(); Add(lstServers); RefreshServerList(); lstServers.DoubleClick += (sender, args) => { if (lstServers.ItemIndex < 0) { return; } var sdc = (ServerDataControl)lstServers.Items[lstServers.ItemIndex]; // Make sure the user clicks the item and not the empty space in the list if (sdc.CheckPositionMouse(((MouseEventArgs)args).Position - lstServers.AbsoluteRect.Location)) { this.screen.Client.Network.SendSessionRequest(servers[lstServers.ItemIndex].Host, servers[lstServers.ItemIndex].Port); } }; // Add controls to the bottom panel. (Add server, edit server, etc.) btnEdit = new Button(manager) { Text = "Edit", Top = 8, Width = 64 }; btnEdit.Init(); btnEdit.Left = (Width / 2) - (btnEdit.Width / 2); btnEdit.Click += (sender, args) => { if (lstServers.Items.Count <= 0) { return; } var window = new AddServerDialog(Manager, this, lstServers.ItemIndex, true, servers[lstServers.ItemIndex].Name, servers[lstServers.ItemIndex].Host, servers[lstServers.ItemIndex].Port); window.Init(); Manager.Add(window); window.ShowModal(); }; BottomPanel.Add(btnEdit); btnRemove = new Button(manager) { Text = "Remove", Left = btnEdit.Right + 8, Top = 8, Width = 64 }; btnRemove.Init(); btnRemove.Click += (clickSender, clickArgs) => { // Show a messagebox that asks for confirmation to delete the selected server. if (lstServers.Items.Count > 0) { var confirm = new MessageBox(manager, MessageBoxType.YesNo, "Are you sure you would like to remove\nthis server from your server list?", "Confirm Removal"); confirm.Init(); // When the message box is closed, check if the user clicked yes, if so, removed the server from the list. confirm.Closed += (closedSender, closedArgs) => { var dialog = closedSender as Dialog; if (dialog?.ModalResult != ModalResult.Yes) { return; } // If user clicked Yes servers.RemoveAt(lstServers.ItemIndex); lstServers.Items.RemoveAt(lstServers.ItemIndex); screen.Client.IO.WriteServers(servers); // Write the new server list to disk. }; Manager.Add(confirm); confirm.Show(); } }; BottomPanel.Add(btnRemove); btnAdd = new Button(manager) { Text = "Add", Top = 8, Width = 64 }; btnAdd.Init(); btnAdd.Right = btnEdit.Left - 8; btnAdd.Click += (sender, args) => { // Show add server dialog var window = new AddServerDialog(Manager, this, lstServers.ItemIndex, false, string.Empty, string.Empty, Globals.Values.DefaultServerPort); window.Init(); Manager.Add(window); window.ShowModal(); }; BottomPanel.Add(btnAdd); btnJoin = new Button(manager) { Text = "Connect", Top = 8, Width = 100 }; btnJoin.Init(); btnJoin.Right = btnAdd.Left - 8; btnJoin.Click += (sender, args) => { if (lstServers.ItemIndex < 0) { return; } btnJoin.Enabled = false; btnJoin.Text = "Connecting..."; this.screen.Client.Network.SendSessionRequest(servers[lstServers.ItemIndex].Host, servers[lstServers.ItemIndex].Port); }; BottomPanel.Add(btnJoin); btnRefresh = new Button(manager) { Text = "Refresh", Left = btnRemove.Right + 8, Top = 8, Width = 64 }; btnRefresh.Init(); btnRefresh.Click += (sender, args) => { RefreshServerList(); }; BottomPanel.Add(btnRefresh); // Listen for when init message is recieved screen.Client.Events.Network.Game.InitReceived.AddHandler(OnInit); // If user was disconnected from the server screen.Client.Events.Network.Game.Disconnected.AddHandler(OnDisconnect); }
/// <summary> /// Setup the game UI. /// </summary> public override void Add(ScreenManager screenManager) { base.Add(screenManager); // Status bar. sbStats = new StatusBar(Manager); sbStats.Init(); sbStats.Bottom = Manager.ScreenHeight; sbStats.Left = 0; sbStats.Width = Manager.ScreenWidth; lblStats = new Label(Manager) { Top = 4, Left = 8, Width = Manager.ScreenWidth - 16 }; lblStats.Init(); sbStats.Add(lblStats); Window.Add(sbStats); // Inventory. pnlInventory = new InventoryControl(this, Manager); pnlInventory.Left = Manager.TargetWidth / 2 - (pnlInventory.Width / 2); pnlInventory.Init(); Window.Add(pnlInventory); // Chat. txtChat = new TextBox(Manager); txtChat.Init(); txtChat.Left = 8; txtChat.DrawFormattedText = false; txtChat.Bottom = sbStats.Top - 8; txtChat.Width = (int)(Manager.TargetWidth * .4f) - 16; // Remove 16 to align due to invisible scrollbar txtChat.Visible = false; txtChat.Passive = true; Window.Add(txtChat); lstChats = new ControlList <ChatDataControl>(Manager) { Left = txtChat.Left, Width = txtChat.Width + 16, Height = (int)(Manager.TargetHeight * .25f) }; lstChats.Init(); lstChats.Color = Color.Transparent; lstChats.HideSelection = true; lstChats.Passive = true; lstChats.HideScrollbars = true; lstChats.Top = txtChat.Top - lstChats.Height; Window.Add(lstChats); // Tablist. lstPlayers = new ControlList <PlayerListDataControl>(Manager) { Width = 256, Top = 256 }; lstPlayers.Init(); lstPlayers.HideSelection = true; lstPlayers.Left = Manager.TargetWidth / 2 - (lstPlayers.Width / 2); lstPlayers.Passive = true; lstPlayers.HideScrollbars = true; lstPlayers.Visible = false; Window.Add(lstPlayers); foreach (var player in Level.Players) { lstPlayers.Items.Add(new PlayerListDataControl(player, Manager, lstPlayers)); } // Listen for later player joins. Client.Events.Network.Game.PlayerJoinReceived.AddHandler( args => { lstPlayers.Items.Add(new PlayerListDataControl(args.Player, Manager, lstPlayers)); }); // Listen for ping updates for players. Client.Events.Network.Game.PingUpdateReceived.AddHandler(args => { foreach (var ping in args.Pings) { var control = (PlayerListDataControl) lstPlayers.Items.FirstOrDefault(i => ((PlayerListDataControl)i).User.UUID == ping.Key); control?.ChangePing(ping.Value); } }); // Hackish way to get chats to start at the bottom. for (var i = 0; i < (Manager.TargetHeight * 0.25f) / 18; i++) { lstChats.Items.Add(new ChatDataControl("", Manager, lstChats, this)); } Client.Events.Network.Game.ChatReceived.AddHandler(args => { AddChat(args.Message, Manager, lstChats); }); // Level event handlers. Client.Events.Game.Level.BlockPlaced.AddHandler(args => { // Directly access the tile array, as we don't want to send two BlockPlaced events, as the tile indexer will // automatically call the event and send a network message. if (args.Level != null) { args.Level.Tiles.Tiles[args.X, args.Y, args.Z] = new Tile(args.Type); } }); }
public LobbyWindow(Manager manager, LobbyScreen screen) : base(manager) { lobbyScreen = screen; // Setup the window CaptionVisible = false; TopPanel.Visible = false; Movable = false; Resizable = false; Width = (int)(Manager.ScreenWidth * .9); Height = (int)(Manager.ScreenHeight * .9); Shadow = true; Center(); // Group panels grpServer = new GroupPanel(Manager) { Left = ClientWidth - Globals.Values.MaxBannerWidth - 1, Width = Globals.Values.MaxBannerWidth, Height = ClientHeight - BottomPanel.Height + 2, Text = "Server" }; grpServer.Init(); Add(grpServer); var grpLobby = new GroupPanel(Manager) { Width = ClientWidth - grpServer.Width, // Fill remaining space Height = ClientHeight - BottomPanel.Height + 2, Text = "Levels" }; grpLobby.Init(); Add(grpLobby); // Top controls txtSearch = new TextBox(Manager) { Left = 8, Top = 8, Width = (int)((grpLobby.Width / 2d) - 16) }; txtSearch.Init(); txtSearch.Text = searchStr; txtSearch.TextChanged += (sender, args) => { RefreshLevels(); }; // Show "Search..." text, but make it dissapear on focus txtSearch.FocusGained += (sender, args) => { if (txtSearch.Text.Trim() == searchStr) { txtSearch.Text = string.Empty; } }; txtSearch.FocusLost += (sender, args) => { if (txtSearch.Text.Trim() == string.Empty) { txtSearch.Text = searchStr; } }; grpLobby.Add(txtSearch); cmbSort = new ComboBox(Manager) { Left = txtSearch.Right + 8, Top = 8, Width = (grpLobby.Width / 2) - 16 - 20 }; cmbSort.Init(); cmbSort.Items.AddRange(sortFilters); cmbSort.ItemIndex = 0; cmbSort.ItemIndexChanged += (sender, args) => { RefreshLevels(); }; grpLobby.Add(cmbSort); var btnReload = new Button(Manager) { Left = cmbSort.Right + 8, Top = 8, Width = 20, Height = 20, Text = string.Empty }; btnReload.Init(); btnReload.Glyph = new Glyph(screen.Client.Content["gui.icons.refresh"]); btnReload.ToolTip.Text = "Refresh"; btnReload.Click += (sender, args) => { btnReload.Enabled = false; lobbyScreen.Client.Network.Send(new RequestMessage(MessageTypes.Init)); }; grpLobby.Add(btnReload); // Main level list lstLevels = new ControlList <LobbyDataControl>(Manager) { Left = 8, Top = txtSearch.Bottom + 8, Width = grpLobby.Width - 16, Height = grpLobby.Height - 16 - txtSearch.Bottom - 24 }; lstLevels.Init(); lstLevels.DoubleClick += (sender, args) => { if (lstLevels.ItemIndex < 0) { return; } var ldc = (LobbyDataControl)lstLevels.Items[lstLevels.ItemIndex]; // Make sure the user clicks the item and not the empty space in the list if (ldc.CheckPositionMouse(((MouseEventArgs)args).Position - lstLevels.AbsoluteRect.Location)) { JoinLevel(lstLevels.ItemIndex); } }; grpLobby.Add(lstLevels); // Server info labels lblName = new Label(Manager) { Text = "Loading...", Top = 8, Font = FontSize.Default20, Left = 8, Alignment = Alignment.MiddleCenter, Height = 30, Width = grpServer.ClientWidth - 16 }; lblName.Init(); grpServer.Add(lblName); lblDescription = new Label(Manager) { Text = string.Empty, Top = 8 + lblName.Bottom, Left = 8, Alignment = Alignment.MiddleCenter, Width = grpServer.ClientWidth - 16 }; lblDescription.Init(); grpServer.Add(lblDescription); lblInfo = new Label(Manager) { Text = string.Empty, Top = 8 + lblDescription.Bottom, Left = 8, Alignment = Alignment.TopLeft, Width = grpServer.ClientWidth - 16, Height = grpServer.Height }; lblInfo.Init(); grpServer.Add(lblInfo); // Bottom buttons var btnCreate = new Button(Manager) { Top = 8, Text = "Create" }; btnCreate.Left = (ClientWidth / 2) - (btnCreate.Width / 2); btnCreate.Init(); btnCreate.Click += (sender, args) => { var window = new CreateLevelDialog(manager, screen); window.Init(); Manager.Add(window); window.ShowModal(); }; BottomPanel.Add(btnCreate); var btnJoin = new Button(Manager) { Right = btnCreate.Left - 8, Top = 8, Text = "Join" }; btnJoin.Init(); btnJoin.Click += (sender, args) => { JoinLevel(lstLevels.ItemIndex); }; BottomPanel.Add(btnJoin); var btnDisconnect = new Button(Manager) { Left = btnCreate.Right + 8, Top = 8, Text = "Quit" }; btnDisconnect.Init(); btnDisconnect.Click += (sender, args) => { lobbyScreen.Client.Network.NetClient.Disconnect("Left Lobby"); MainWindow.ScreenManager.SwitchScreen(new LoginScreen()); }; BottomPanel.Add(btnDisconnect); // When client gets banner data from server screen.Client.Events.Network.Game.LobbyBannerReceived.AddHandler(LobbyBannerReceived); // When client receives level data after joining/creating a level screen.Client.Events.Network.Game.LevelDataReceived.AddHandler(LevelDataReceived); // When the lobby data is received (after connecting or on reload) screen.Client.Events.Network.Game.InitReceived.AddHandler(InitReceived); LoadLevels(); screen.Client.Network.Send(new RequestMessage(MessageTypes.Banner)); }
public TaskSandbox(Manager manager, MainWindow window) : base(manager) { MainWindow = window; Resizable = false; Movable = false; CaptionVisible = false; TopPanel.Visible = false; BottomPanel.Visible = false; if (MainWindow.prgLoading != null) { MainWindow.prgLoading.Visible = MainWindow.lblLoading.Visible = MainWindow.lblLoadingDesc.Visible = false; } Top = MainWindow.sidebar.Height + 16; Width = 868; Left = (MainWindow.ClientWidth / 2) - (Width / 2); Height = MainWindow.ClientHeight - Top - 16; GroupPanel MapPanel = new GroupPanel(manager) { Text = "Map List", Left = 8, Top = 8, Width = 316, Height = ClientHeight - 16, }; MapPanel.Init(); Add(MapPanel); GroupPanel JoinPanel = new GroupPanel(manager) { Text = "Open Map", Left = MapPanel.Left + MapPanel.Width + 8, Top = 8, Width = 512, Height = (ClientHeight / 2) - 16, }; JoinPanel.Init(); Add(JoinPanel); GroupPanel CreatePanel = new GroupPanel(manager) { Text = "Create Map", Left = JoinPanel.Left, Top = (ClientHeight / 2) + 8, Width = 512, Height = (ClientHeight / 2) - 16, }; CreatePanel.Init(); Add(CreatePanel); MapList = new ControlList <MapListItem>(Manager); MapList.Init(); MapList.Left = 8; MapList.Top = 8; MapList.Width = 300; MapList.Height = MapPanel.ClientHeight - 16; MapList.ItemIndexChanged += MapList_ItemIndexChanged; MapPanel.Add(MapList); List(); Map = new Label(manager) { Text = "No Maps Found", Left = 8, Top = 8, Font = FontSize.Default14, Width = JoinPanel.Width - 32, Height = 20 }; Map.Init(); JoinPanel.Add(Map); Author = new Label(manager) { Text = "", Left = 8, Top = Map.Top + Map.Height + 4, Width = JoinPanel.Width - 32, Height = 12 }; Author.Init(); JoinPanel.Add(Author); Description = new Label(manager) { Text = "", Alignment = TomShane.Neoforce.Controls.Alignment.TopLeft, Left = 8, Top = Author.Top + Author.Height + 4, Width = JoinPanel.Width - 32, Height = 12 * 4 }; Description.Init(); JoinPanel.Add(Description); LastSaved = new Label(manager) { Text = "", Left = 8, Top = Description.Top + Description.Height + 4, Width = JoinPanel.Width - 32, Height = 12 }; LastSaved.Init(); JoinPanel.Add(LastSaved); Version = new Label(manager) { Text = "", Left = 8, Top = LastSaved.Top + LastSaved.Height + 4, Width = JoinPanel.Width - 32, Height = 12 }; Version.Init(); JoinPanel.Add(Version); Size = new Label(manager) { Text = "", Left = 8, Top = Version.Top + Version.Height + 4, Width = JoinPanel.Width - 32, Height = 12 }; Size.Init(); JoinPanel.Add(Size); Seed = new Label(manager) { Text = "", Left = 8, Top = Size.Top + Size.Height + 4, Width = JoinPanel.Width - 32, Height = 12 }; Seed.Init(); JoinPanel.Add(Seed); Rename = new Button(manager); Rename.Left = ((JoinPanel.Width) / 2) - (Rename.Width / 2); Rename.Top = JoinPanel.ClientHeight - Rename.Height - 8; Rename.Text = "Rename"; Rename.Click += Rename_Click; JoinPanel.Add(Rename); Delete = new Button(manager); Delete.Left = ((JoinPanel.Width) / 2) - (Delete.Width / 2) - (Rename.Width) - 8; Delete.Top = JoinPanel.ClientHeight - Delete.Height - 8; Delete.Text = "Delete"; Delete.Click += Delete_Click; JoinPanel.Add(Delete); Open = new Button(manager); Open.Left = ((JoinPanel.Width) / 2) + (Rename.Width / 2) + 8; Open.Top = JoinPanel.ClientHeight - Rename.Height - 8; Open.Text = "Join"; Open.Color = Color.LightGreen; Open.Click += Open_Click; JoinPanel.Add(Open); Delete.Enabled = Rename.Enabled = Open.Enabled = false; //--------------------------------------------- NameLbl = new Label(manager); NameLbl.Init(); NameLbl.Top = 8; NameLbl.Left = 8; NameLbl.Text = "Name:"; NameLbl.Width = CreatePanel.Width / 2 - 16; CreatePanel.Add(NameLbl); NameInput = new TextBox(manager); NameInput.Init(); NameInput.Top = NameLbl.Top + NameLbl.Height + 2; NameInput.Left = 8; NameInput.TextChanged += NameInput_TextChanged; NameInput.Width = NameLbl.Width; CreatePanel.Add(NameInput); DescriptionLbl = new Label(manager); DescriptionLbl.Init(); DescriptionLbl.Width = NameLbl.Width; DescriptionLbl.Top = NameInput.Top + NameInput.Height + 2; DescriptionLbl.Left = 8; DescriptionLbl.Text = "Description:"; CreatePanel.Add(DescriptionLbl); DescriptionInput = new TextBox(manager); DescriptionInput.Init(); DescriptionInput.Mode = TextBoxMode.Multiline; DescriptionInput.Top = DescriptionLbl.Top + DescriptionLbl.Height + 2; DescriptionInput.Left = 8; DescriptionInput.Width = NameInput.Width; DescriptionInput.Height = 64; DescriptionInput.ScrollBars = ScrollBars.Vertical; DescriptionInput.Text = "A short description\nof the level"; SizeLbl = new Label(manager); SizeLbl.Init(); SizeLbl.Top = 8; SizeLbl.Left = 16 + NameInput.Width; SizeLbl.Text = "Size:"; CreatePanel.Add(SizeLbl); CreatePanel.Add(DescriptionInput); SizeCmb = new ComboBox(manager); SizeCmb.Init(); SizeCmb.Left = SizeLbl.Left; SizeCmb.Top = SizeLbl.Top + SizeLbl.Height + 2; SizeCmb.Width = NameInput.Width; SizeCmb.Height = 20; SizeCmb.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; SizeCmb.Items.Add("Mini 1000x300"); SizeCmb.Items.Add("Small 2000x600"); SizeCmb.Items.Add("Mild 3000x900"); SizeCmb.Items.Add("Regular 4000x1200"); SizeCmb.Items.Add("Moderate 5000x1500"); SizeCmb.Items.Add("Big 6000x1800"); SizeCmb.Items.Add("Immense 7000x2100"); SizeCmb.ReadOnly = true; SizeCmb.OutlineMoving = SizeCmb.OutlineResizing = false; SizeCmb.ItemIndex = 0; SizeCmb.Detached = false; CreatePanel.Add(SizeCmb); SeedLbl = new Label(manager); SeedLbl.Init(); SeedLbl.Width = NameLbl.Width; SeedLbl.Top = SizeCmb.Top + SizeCmb.Height + 2; SeedLbl.Left = SizeLbl.Left; SeedLbl.Text = "Seed:"; SeedLbl.ToolTip.Text = "Seeds are an id used to generate a unique world, using the same seed will generate the same world as anothe seed that is the same."; CreatePanel.Add(SeedLbl); SeedInput = new TextBox(manager); SeedInput.Init(); SeedInput.Top = SeedLbl.Top + SeedLbl.Height + 2; SeedInput.Left = SizeLbl.Left; SeedInput.Width = NameInput.Width; SeedInput.TextChanged += SeedInput_TextChanged; SeedInput.Text = Guid.NewGuid().GetHashCode().ToString(); GeneratorLbl = new Label(manager); GeneratorLbl.Init(); GeneratorLbl.Top = SeedInput.Top + SeedInput.Height + 4; GeneratorLbl.Left = SizeLbl.Left; GeneratorLbl.Text = "Generator:"; GeneratorLbl.Width = SeedLbl.Width; CreatePanel.Add(GeneratorLbl); GeneratorCmb = new ComboBox(manager); GeneratorCmb.Init(); GeneratorCmb.Detached = false; GeneratorCmb.Left = SizeLbl.Left; GeneratorCmb.Top = GeneratorLbl.Top + GeneratorLbl.Height + 4; GeneratorCmb.Width = NameInput.Width; GeneratorCmb.Height = 20; GeneratorCmb.Anchor = Anchors.Left | Anchors.Top | Anchors.Right; GeneratorCmb.Items.Add("Normal Planet"); GeneratorCmb.Items.Add("Flat World"); GeneratorCmb.ItemIndex = 0; GeneratorCmb.ReadOnly = true; GeneratorCmb.OutlineMoving = GeneratorCmb.OutlineResizing = false; CreatePanel.Add(GeneratorCmb); CreatePanel.Add(SeedInput); Generate = new Button(manager); Generate.Init(); Generate.Top = DescriptionInput.Top + DescriptionInput.Height + 8; Generate.Left = (CreatePanel.Width / 2) - (Generate.Width / 2); Generate.Click += Generate_Click; Generate.Text = "Create"; Generate.Color = Color.LightGreen; Generate.Enabled = false; CreatePanel.Add(Generate); //----------------------------------------- OpenFolder = new Button(manager); OpenFolder.Init(); OpenFolder.Width = 140; OpenFolder.Left = ((MainWindow.ClientWidth) / 2) - (OpenFolder.Width / 2); OpenFolder.Top = MainWindow.sidebar.Height + MainWindow.sidebar.Top - 58; OpenFolder.Text = "[color:Gold]Open[/color] map folder"; OpenFolder.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { System.Diagnostics.Process.Start(IO.Directories["Maps"]); }); MainWindow.sidebar.Add(OpenFolder); VisitSite = new Button(manager); VisitSite.Init(); VisitSite.Width = 140; VisitSite.Left = ((MainWindow.ClientWidth) / 2) - (OpenFolder.Width / 2) - (VisitSite.Width) - 8; VisitSite.Top = MainWindow.sidebar.Height + MainWindow.sidebar.Top - 58; VisitSite.Text = "[color:Gold]Get[/color] maps from site"; VisitSite.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { System.Diagnostics.Process.Start(link); }); VisitSite.Enabled = false; // 2018 MainWindow.sidebar.Add(VisitSite); Exit = new Button(manager); Exit.Init(); Exit.Width = 140; Exit.Left = ((MainWindow.ClientWidth) / 2) + (VisitSite.Width / 2) + 8; Exit.Top = MainWindow.sidebar.Height + MainWindow.sidebar.Top - 58; Exit.Text = "[color:Gold]Exit[/color] to main menu"; Exit.Click += new TomShane.Neoforce.Controls.EventHandler(delegate(object o, TomShane.Neoforce.Controls.EventArgs e) { Close(); MainWindow.InitMainScreen(); }); MainWindow.sidebar.Add(Exit); Exit.BringToFront(); VisitSite.BringToFront(); OpenFolder.BringToFront(); if (MapList.Items.Count > 0) { MapList.ItemIndex = 0; (MapList.Items[MapList.ItemIndex] as MapListItem).sb.Color = Color.LightGreen; } Closed += TaskSandbox_Closed; CheckGenerate(); }