public SideBar(Game game) { sideButton = new Button(true, ">>", 0, 0, 32, Editor.Graphics.PreferredBackBufferHeight); hitBox = new Rectangle(0, 0, WIDTH, Editor.Graphics.PreferredBackBufferHeight); PageIndex = 0; pages = new Page[3]; // File page pages[0] = new Page(); pages[0].Add(new Button(true, "New", 21, 64)); pages[0].Add(new Button(true, "Save", 71, 64)); pages[0].Add(new Button(true, "Load", 132, 64)); pages[0].Add(new Button(true, "Draw static\n polygon", 37, 128)); pages[0].Add(new Button(true, "Done", 74, 185)); // Tiles page pages[1] = new Page(); string[] files = Directory.GetFiles("Content\\tiles"); foreach (string f in files) Console.WriteLine(f); List<string> tiles = new List<string>(); for (int i = 0; i < files.Length; i++) tiles.Add(files[i].Replace(".xnb", "").Split('\\')[files[i].Split('\\').Length - 1]); for (int i = 0; i < tiles.Count; i++) pages[1].Add(new Button(tiles[i], 24 + (i % 2) * 86, 48 + 90 * (int)(i / 2), 72, 72)); // Objects page pages[2] = new Page(); }
public void Update() { MouseState mstate = Mouse.GetState(); Point coordinates = new Point(mstate.X, mstate.Y); Button changedButton = null; foreach (Button b in buttons) { if (b.HitBox.Contains(coordinates)) { if (mstate.LeftButton == ButtonState.Pressed) { if (b.State == Button.BState.Hover) { changedButton = b; b.State = Button.BState.Held; selectedButton = b; break; } } else { if (b.State == Button.BState.Held) b.State = Button.BState.Selected; else if (b.State == Button.BState.Idle) b.State = Button.BState.Hover; } } else if (b.State == Button.BState.Hover) b.State = Button.BState.Idle; } if (changedButton != null) { foreach (Button b in buttons) { if (b != changedButton) b.State = Button.BState.Idle; } } if (totalButtonHeight > Editor.Graphics.PreferredBackBufferHeight) { if (Keyboard.GetState().IsKeyUp(Keys.LeftControl)) { scrollValue -= Editor.DScroll; if (scrollValue < 0) scrollValue = 0; else if (scrollValue + Editor.Graphics.PreferredBackBufferHeight > totalButtonHeight + 16) scrollValue = totalButtonHeight - Editor.Graphics.PreferredBackBufferHeight + 16; foreach (Button b in buttons) b.Y = b.InitialY - scrollValue; } } }
public void DeselectButton() { selectedButton.Deselect(); selectedButton = null; }
public void SelectPolygonButton() { // This is a terrible way of doing this and I should be ashamed of myself if (buttons.Count >= 4) { selectedButton = buttons[3]; buttons[3].State = Button.BState.Selected; } }
public void Add(Button button) { buttons.Add(button); foreach (Button b in buttons) { if (b.Y + b.Height + 2> totalButtonHeight) totalButtonHeight = b.Y + b.Height + 2; } }