///<summary>To be used with Mouse and NOT with gamepad</summary> internal void UpdateMouse() { if (Currentstate != MenuButtonState.Disabled) { var M = Mouse.GetState(); var i = Inside(M.Position); var m = M.LeftButton == ButtonState.Pressed; var b = Currentstate == MenuButtonState.ButtonPressed; if (i) { if (m) { Currentstate = MenuButtonState.ButtonPressed; } else if (b) { Currentstate = MenuButtonState.ButtonReleased; } else { Currentstate = MenuButtonState.OnButton; } } else if (b && m) { Currentstate = MenuButtonState.ButtonPressed; } else { Currentstate = MenuButtonState.Idle; } } Update(Currentstate); }
//Menu Button Switch //MenuUpdate* public void MenuButtonSwitch(KeyboardState key1) { previousKey = key; key = Keyboard.GetState(); switch (currentMenuButtonState) { case MenuButtonState.ActivePlayButton: if (key.IsKeyDown(Keys.Down)) { currentMenuButtonState = MenuButtonState.ActiveOptionButton; } else if (key.IsKeyDown(Keys.Enter) && previousKey.IsKeyUp(Keys.Enter) == true) { Game1.currentGameState = GameState.PlayGame; } break; case MenuButtonState.ActiveOptionButton: if (key.IsKeyDown(Keys.Up)) { currentMenuButtonState = MenuButtonState.ActivePlayButton; } else if (key.IsKeyDown(Keys.Enter)) { Game1.currentGameState = GameState.Options; } break; } }
//Constructors public Buttons() { currentMenuButtonState = MenuButtonState.ActivePlayButton; currentOptionButtonState = OptionButtonState.ActiveEasy; currentPauseButtonState = PauseButtonState.ActiveResume; currentGameOverState = GameOverState.ActiveRestart; }
public void Update() { // There are much better ways to impliment button interaction than this // but here is a simple example: // If the mouse cursor is on our MenuButton... if (InputManager.GetMouseBounds(true).Intersects(bounds)) { // And if the Left mouse button is down... if (InputManager.GetIsMouseButtonDown(MouseButton.Left, true)) { // Then our MenuButton is down! currentState = MenuButtonState.Pressed; } // Else if the Left mouse button WAS down but isn't any more... else if (InputManager.GetIsMouseButtonDown(MouseButton.Left, false)) { // Then our MenuButton has been clicked! currentState = MenuButtonState.Clicked; } // Otherwise... else { // The mouse cursor is simply hovering above our MenuButton! currentState = MenuButtonState.Hovered; } } else { // If the cursor does not intersect with the MenuButton then just set the state to released. currentState = MenuButtonState.Released; } }
public MenuButton(Texture2D texture, Vector2 position) { this.texture = texture; this.position = position; // Cast position X and Y to ints for the rectangle's constructor. bounds = new Rectangle((int)position.X, (int)position.Y, texture.Width, texture.Height); // MenuButton starts off as Released. currentState = MenuButtonState.Released; }
// ******************* // * Unity Callbacks * // ******************* private void Start() { animator = GetComponent <Animator>(); if (SceneManager.Instance.currentState.Equals(MenuManager.MenuStates.Main)) { menuButtonState = MenuButtonState.Open; } else { menuButtonState = MenuButtonState.Back; } ChangeState(menuButtonState); // Debug.Log("HH"); }
public bool ButtonUpdate() { mouseState = Mouse.GetState(); prevMouseState = currMouseState; currMouseState = mouseState.LeftButton == ButtonState.Pressed; if (new Rectangle(mouseState.X, mouseState.Y, 1, 1).Intersects(rectangle)) { if (!mouseIsIntersecting) { Audio.SoundBank.PlayCue("tap"); mouseIsIntersecting = true; } if (currMouseState) { state = MenuButtonState.MouseButtonDown; color = Color.LimeGreen; return false; } else if (!currMouseState && prevMouseState) { if (state == MenuButtonState.MouseButtonDown) { Audio.SoundBank.PlayCue("clunch"); state = MenuButtonState.MouseButtonReleased; return true; } return false; } else { state = MenuButtonState.MouseHover; color = Color.Green; return false; } } else { state = MenuButtonState.MouseButtonUp; mouseIsIntersecting = false; color = Color.White; } return false; }
public SimpleMenuButton(string t, int Width, int Height, int Posx, int Posy) { var h4 = 4 * Height; ButtonSprite = new Texture2D(G.Gdm.GraphicsDevice, 1, h4); Dest = new Rectangle(Posx, Posy, Width, Height); Source = new Rectangle(0, 0, 1, Height); Color[] xx = new Color[h4]; for (int x = 0; x < h4; x++) { xx[x] = GPMenuFunctions.buttonColor[x / Height]; } ButtonSprite.SetData <Color>(xx); Sf = GPMenuFunctions.Sf; Text = t; Currentstate = MenuButtonState.Idle; GPMenuFunctions.FitTextCentered(Text, Dest, Sf, out TextPosition, out Scale); }
public void ManageState(bool reverse = false) { switch (menuButtonState) { case MenuButtonState.Open: // Means ham burger sign if (reverse) { menuButtonState = MenuButtonState.Close; ManageState(); return; } EnableHeader(false); break; case MenuButtonState.Close: // Means cross sign if (reverse) { menuButtonState = MenuButtonState.Open; ManageState(); return; } EnableHeader(true); break; case MenuButtonState.Back: if (reverse) { menuButtonState = MenuButtonState.Close; MenuManager.Instance.ChangeState(MenuManager.MenuStates.Main); ManageState(); // SelectButton(); return; } EnableHeader(true); break; } a_MenuButton.SetInteger("State", (int)menuButtonState); }
private void setMenuButtonState(MenuButtonState state) { if (state.Equals(MenuButtonState.Default)) { //default state Button_DownloadLiveData.IsEnabled = true; } else if (state.Equals(MenuButtonState.Operating)) { //data loaded Button_DownloadLiveData.IsEnabled = false; } else if (state.Equals(MenuButtonState.DataLoaded)) { //data loaded Button_DownloadLiveData.IsEnabled = true; } else if (state.Equals(MenuButtonState.DataProcessed)) { //data loaded and processed Button_DownloadLiveData.IsEnabled = true; } }
///<summary>To be used with GamePad and NOT with mouse</summary> internal void Update(MenuButtonState s) { Source.Y = (int)s % 4 * Source.Height; }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { // getting gamePad, keyboard, and mouse info foreach(Player p in playerList) { p.Controls.Refresh(); } // TODO: Add your update logic here switch(GlobalVariables.gameState) { case GlobalVariables.GameState.Menu: menuPlayer.Controls.Refresh(); if(menuPlayer.Controls.CurrentGPS.IsConnected) { //currentGPS = GamePad.GetState(0); if(SingleKeyPress(Buttons.LeftThumbstickUp)) { if(menuButtonState == MenuButtonState.None) { menuButtonState = MenuButtonState.Quit; } else if(menuButtonState == MenuButtonState.Single) { menuButtonState = MenuButtonState.Quit; } else if(menuButtonState == MenuButtonState.Multi) { menuButtonState = MenuButtonState.Single; } else if(menuButtonState == MenuButtonState.Quit) { menuButtonState = MenuButtonState.Multi; } } if(SingleKeyPress(Buttons.LeftThumbstickDown)) { if(menuButtonState == MenuButtonState.None) { menuButtonState = MenuButtonState.Single; } else if(menuButtonState == MenuButtonState.Single) { menuButtonState = MenuButtonState.Multi; } else if(menuButtonState == MenuButtonState.Multi) { menuButtonState = MenuButtonState.Quit; } else if(menuButtonState == MenuButtonState.Quit) { menuButtonState = MenuButtonState.Single; } } if(menuPlayer.Controls.CurrentGPS.IsButtonDown(Buttons.A)) { playerList.Clear(); // Empty the player list. if(menuButtonState == MenuButtonState.Single) { playerList.Add(new Player("Name", 1, new Rectangle(200, 345, humanoidWidth, humanoidHeight))); GlobalVariables.gameState = GlobalVariables.GameState.InGame; singleTinkerInstance = new Tinkering.SingleTinker(playerList[0]); } if(menuButtonState == MenuButtonState.Multi) { if(GamePad.GetState(PlayerIndex.One).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.One, new Rectangle(200, 345, humanoidWidth, humanoidHeight))); } if(GamePad.GetState(PlayerIndex.Two).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.Two, new Rectangle(220, 345, humanoidWidth, humanoidHeight))); } if(GamePad.GetState(PlayerIndex.Three).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.Three, new Rectangle(240, 345, humanoidWidth, humanoidHeight))); } if(GamePad.GetState(PlayerIndex.Four).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.Four, new Rectangle(260, 345, humanoidWidth, humanoidHeight))); } GlobalVariables.gameState = GlobalVariables.GameState.InGame; } if(menuButtonState == MenuButtonState.Quit) { this.Exit(); } } } else { if(menuPlayer.Controls.CurrentMS.X > 280 && menuPlayer.Controls.CurrentMS.X < 500) { if(menuPlayer.Controls.CurrentMS.Y > 165 && menuPlayer.Controls.CurrentMS.Y < 210) { menuButtonState = MenuButtonState.Single; } else if(menuPlayer.Controls.CurrentMS.Y > 265 && menuPlayer.Controls.CurrentMS.Y < 310) { menuButtonState = MenuButtonState.Multi; } else if(menuPlayer.Controls.CurrentMS.Y > 365 && menuPlayer.Controls.CurrentMS.Y < 410) { menuButtonState = MenuButtonState.Quit; } else { menuButtonState = MenuButtonState.None; } } else { menuButtonState = MenuButtonState.None; } } if(menuPlayer.Controls.CurrentMS.LeftButton == ButtonState.Pressed) { playerList.Clear(); // Empty the player list. if(menuButtonState == MenuButtonState.Single) { playerList.Add(new Player("Name", 1, new Rectangle(200, 345, humanoidWidth, humanoidHeight))); GlobalVariables.gameState = GlobalVariables.GameState.InGame; singleTinkerInstance = new Tinkering.SingleTinker(playerList[0]); } if(menuButtonState == MenuButtonState.Multi) { if(GamePad.GetState(PlayerIndex.One).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.One, new Rectangle(200, 345, humanoidWidth, humanoidHeight))); } if(GamePad.GetState(PlayerIndex.Two).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.Two, new Rectangle(220, 345, humanoidWidth, humanoidHeight))); } if(GamePad.GetState(PlayerIndex.Three).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.Three, new Rectangle(240, 345, humanoidWidth, humanoidHeight))); } if(GamePad.GetState(PlayerIndex.Four).IsConnected) { playerList.Add(new Player("Name", PlayerIndex.Four, new Rectangle(260, 345, humanoidWidth, humanoidHeight))); } GlobalVariables.gameState = GlobalVariables.GameState.InGame; } if(menuButtonState == MenuButtonState.Quit) { this.Exit(); } } break; case GlobalVariables.GameState.InGame: //Console.Clear(); foreach(Player p in playerList) { if(p.Tinkering) { if(playerList.Count == 1) { singleTinkerInstance.Update(); } else { ; } } else { p.Update(gameTime, platformTilesList, bulletList); } } bool go = true; Portal use = null; foreach(Player p in playerList) { if(p.Vote != null) { if(use == null || p.Vote == use) { use = p.Vote; } else { go = false; } } else { go = false; } } if(go && use != null) { GlobalVariables.map.SwitchArea(use.LinkTo); if(use.LinkTo.Name.Equals("Safehouse", StringComparison.OrdinalIgnoreCase)) { foreach(Player p in playerList) { p.X = use.LinkX; p.Y = use.LinkY; p.Vote = null; p.RefillClips(); } } else { foreach(Player p in playerList) { p.X = use.LinkX; p.Y = use.LinkY; p.Vote = null; } } zombieList.Clear(); activeItems.Clear(); } if(!(GlobalVariables.map.AtSafehouse)) { //chance of spawning a zombie if(rgen.Next(100) == 0 && zombieList.Count < (playerList.Count * 5)) zombieList.Add(new Zombie(new Rectangle(rgen.Next() * viewportWidth, viewportHeight / 2, humanoidWidth, humanoidHeight))); for(int i = 0; i < zombieList.Count; i++) { //run zombie actions Zombie zombie = zombieList[i]; if(zombie.ZombieAction == ZombieActions.Chase) { //get closest player int distanceClosestPlayer = int.MaxValue; Player closestPlayer = null; foreach(Player player in playerList) { int dist = (int)Math.Sqrt(Math.Pow((player.X - zombie.X), 2) + Math.Pow((player.Y - zombie.Y), 2)); if(dist < distanceClosestPlayer) { distanceClosestPlayer = dist; closestPlayer = player; } } //chase after closest player if(zombie.X > closestPlayer.X) { zombie.WalkLeft(); zombie.FacingRight = false; } else if(zombie.X < closestPlayer.X) { zombie.WalkRight(); zombie.FacingRight = true; } if(closestPlayer.Y < zombie.Y) { int side = 1; if(zombie.FacingRight) { side *= -1; } Rectangle inFront = new Rectangle(zombie.X + (side * (tileSize - 23)), zombie.Y - 10, zombie.Location.Width, zombie.Location.Height); //check for lack of platform in front of them to jump foreach(Platform tile in GlobalVariables.map.GetTiles()) { if(tile.Location.Intersects(inFront)) { zombie.Jump(); } } } if(zombie.Jumping == true) { zombie.MoveSpeed = 2; } else { zombie.MoveSpeed = 1; } } else if(zombie.ZombieAction == ZombieActions.Patrol) { //move back and forth until player is detected foreach(Player player in playerList) { if(zombie.DetectPlayers(player)) zombie.ZombieAction = ZombieActions.Chase; } if(zombie.FacingRight) zombie.WalkRight(); else zombie.WalkLeft(); zombie.changeDirection(); } else zombie.ZombieAction = ZombieActions.Patrol; zombie.PosUpdate(); zombie.Gravity(); foreach(Player player in playerList) { player.CheckCollisions(zombie, player); } for(int j = 50; j < 75; j++) { zombie.CheckCollisions(platformTilesList[j], zombie); } foreach(Platform pl in GlobalVariables.map.GetTiles()) { zombie.CheckCollisions(pl, zombie); } if (zombie.HP <= 0) { int itemDrop = rgen.Next(100); /* ============ Zombie Item Drops ============= */ //25% if (itemDrop > 85) //15% activeItems.Add(new AmmoItem(rgen.Next(50, 100), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - ammoImage.Height, ammoImage.Width, ammoImage.Height))); else if (itemDrop > 75) //10% activeItems.Add(new HealingItem(new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - medkitImage.Height, medkitImage.Width, medkitImage.Height))); /* ============ Zombie GunBit Drops ============= */ //35% else if (itemDrop > 69) //6% activeItems.Add(new GunBarrel(rgen.Next(25, 75), rgen.Next(5, 20), rgen.Next(1, 8), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["GunBarrel"].Height, gunImagesList["GunBarrel"].Width, gunImagesList["GunBarrel"].Height))); else if (itemDrop > 63) //6% activeItems.Add(new GunStock(rgen.Next(25, 75), rgen.Next(1, 8), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["GunStock"].Height, gunImagesList["GunStock"].Width, gunImagesList["GunStock"].Height))); else if (itemDrop > 54) //9% activeItems.Add(new GunClip(rgen.Next(1, 10), rgen.Next(5, 50), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["GunClip"].Height, gunImagesList["GunClip"].Width, gunImagesList["GunClip"].Height))); else if (itemDrop > 45) //9% activeItems.Add(new GunBody(rgen.Next(25, 75), rgen.Next(1, 8), rgen.Next(10, 50), rgen.Next(5, 20), rgen.Next(1, 10), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["GunBody"].Height, gunImagesList["GunBody"].Width, gunImagesList["GunBody"].Height))); else if (itemDrop > 40) //5% activeItems.Add(new GunScope(rgen.Next(25, 75), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["GunScope"].Height, gunImagesList["GunScope"].Width, gunImagesList["GunScope"].Height))); /* ============ Zombie Weapon Drops ============= */ //12% else if (itemDrop > 35) //5% activeItems.Add(new WeaponStock("Pistol", rgen.Next(60, 100), rgen.Next(1, 5), rgen.Next(10, 25), rgen.Next(1, 3), rgen.Next(6, 12), "Pistol", rgen.Next(5, 10), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["Pistol"].Height * 3, gunImagesList["Pistol"].Width * 3, gunImagesList["Pistol"].Height * 3))); else if (itemDrop > 30) //5% activeItems.Add(new WeaponStock("SMG", rgen.Next(50, 100), rgen.Next(6, 10), rgen.Next(10, 25), rgen.Next(2, 5), rgen.Next(20, 40), "SMG", rgen.Next(10, 20), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["SMG"].Height * 2, gunImagesList["SMG"].Width * 2, gunImagesList["SMG"].Height * 2))); else if (itemDrop > 28) //2% activeItems.Add(new WeaponStock("AR", rgen.Next(75, 100), rgen.Next(11, 20), rgen.Next(20, 50), rgen.Next(4, 10), rgen.Next(30, 50), "AR", rgen.Next(5, 15), new Rectangle(zombieList[i].X, zombieList[i].Y + zombieList[i].Location.Height - gunImagesList["AR"].Height, gunImagesList["AR"].Width, gunImagesList["AR"].Height))); zombieList.Remove(zombieList[i]); } } } //end loop through zombies' actions //check if player can pickup item foreach(Item item in activeItems) { foreach(Player p in playerList) { p.PickUpItemCheck(item); } } //move bullets //counts backwards so deleting bullets won't mess with the loop for(int i = bulletList.Count - 1; i >= 0; i--) { Bullet bullet = bulletList[i]; if(bullet.Active == true) { bullet.Move(); foreach(Zombie z in zombieList) z.CheckCollisions(bullet, z); if(bullet.X < 0 || bullet.X > viewportWidth || bullet.Y < 0 || bullet.Y > viewportHeight) bulletList.RemoveAt(i); } else bulletList.RemoveAt(i); } //move bullets //counts backwards so deleting bullets won't mess with the loop for(int i = bulletList.Count - 1; i >= 0; i--) { Bullet bullet = bulletList[i]; if(bullet.Active == true) { bullet.Move(); if(bullet.X < 0 || bullet.X > viewportWidth || bullet.Y < 0 || bullet.Y > viewportHeight) bulletList.RemoveAt(i); } else bulletList.RemoveAt(i); } // Check Player Liveliness List<Player> temp = new List<Player>(playerList); // Create a temporary list to be looping through foreach(Player p in temp) { if(p.HP <= 0) { // If they're dead playerList.Remove(p); // Remove from player list } } if(playerList.Count == 0) { // If everyone's dead GlobalVariables.gameState = GlobalVariables.GameState.GameOver; // Game Over. } break; //end case inGame case GlobalVariables.GameState.Pause: foreach(Player p in playerList) { if(SingleKeyPress(p, Buttons.A) || SingleKeyPress(p, Keys.Enter)) { GlobalVariables.gameState = GlobalVariables.GameState.InGame; break; } } break; case GlobalVariables.GameState.GameOver: menuPlayer.Controls.Refresh(); if(SingleKeyPress(Buttons.A) || SingleKeyPress(Keys.Enter)) { GlobalVariables.gameState = GlobalVariables.GameState.Menu; menuButtonState = MenuButtonState.None; break; } break; } base.Update(gameTime); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { // TODO: Add your initialization logic here menuButtonState = MenuButtonState.None; GlobalVariables.gameState = GlobalVariables.GameState.Menu; hpBarWidth = 130; tileSize = 32; viewportHeight = GraphicsDevice.Viewport.Height; viewportWidth = GraphicsDevice.Viewport.Width; humanoidHeight = 75; humanoidWidth = 23; platformTilesList = new List<Platform>(); zombieList = new List<Zombie>(); activeItems = new List<Item>(); bulletList = new List<Bullet>(); playerList = new List<Player>(); gunImagesList = new Dictionary<string, Rectangle>(); gunImagesList.Add("Pistol", new Rectangle(0, 0, 11, 8)); gunImagesList.Add("SMG", new Rectangle(13, 0, 23, 13)); gunImagesList.Add("AR", new Rectangle(36, 0, 40, 12)); gunImagesList.Add("GunBarrel", new Rectangle(0, 13, 29, 10)); gunImagesList.Add("GunScope", new Rectangle(0, 23, 26, 10)); gunImagesList.Add("GunStock", new Rectangle(29, 13, 20, 12)); gunImagesList.Add("GunBody", new Rectangle(26, 25, 28, 16)); gunImagesList.Add("GunClip", new Rectangle(54, 12, 18, 24)); initializeGround(); rgen = new Random(); IsMouseVisible = true; base.Initialize(); }
public override void onUpdate() { MouseState mouse = sourceMenu.viewport.getMouse(); if(enabled) { if(mouse.X > dimensions.X && mouse.X < dimensions.X + dimensions.Width && mouse.Y > dimensions.Y && mouse.Y < dimensions.Y + dimensions.Height) { if(mouse.LeftButton == ButtonState.Pressed) state = MenuButtonState.down; else { if(sourceMenu.viewport.getLastMouse() != null && sourceMenu.viewport.getLastMouse().LeftButton == ButtonState.Pressed) sourceMenu.performEvent(id); state = MenuButtonState.over; } } else state = MenuButtonState.up; } }
public void ChangeState(MenuButtonState newState) { menuButtonState = newState; ManageState(); }
// Returns if clicked public Boolean Update() { MouseState mouseState = Mouse.GetState(); if (Active) if (Bounds.Contains(ScaledMouse.ScaledMousePosition())) { if (mouseState.LeftButton == ButtonState.Pressed) // MouseDown { CurrentMenuButtonState = MenuButtonState.MouseDown; } else if (mouseState.LeftButton == ButtonState.Released && oldState == ButtonState.Pressed) //Mouse Up { CurrentMenuButtonState = MenuButtonState.Default; oldState = mouseState.LeftButton; onClicked(EventArgs.Empty); return true; } else // Mouse Over { CurrentMenuButtonState = MenuButtonState.MouseOver; } } else { CurrentMenuButtonState = MenuButtonState.Default; } else CurrentMenuButtonState = MenuButtonState.Disabled; oldState = mouseState.LeftButton; return false; }