void ManagerInput_FireNewInput(object sender, MyEventArgs.NewInputEventArgs e) { switch (e.Input) { case Input.Left: ManagerNetwork.SendInput(Keys.Left); break; case Input.Right: ManagerNetwork.SendInput(Keys.Right); break; case Input.Up: ManagerNetwork.SendInput(Keys.Up); break; case Input.Down: ManagerNetwork.SendInput(Keys.Down); break; case Input.None: break; case Input.Enter: break; case Input.A: break; case Input.S: break; case Input.Select: break; case Input.Start: break; default: throw new ArgumentOutOfRangeException(); } }
private void CheckKeyState(Keys keys, KeyboardState state) { bool collided = false; ManagerNetwork.Player._velocity = Vector2.Zero; if (state.IsKeyDown(keys)) { ManagerNetwork.SendInput(keys); switch (keys) { case Keys.Down: foreach (var item in ManagerNetwork.OtherPlayers) { if (ManagerNetwork.Player != item) { if (ManagerNetwork.Player._velocity.Y < 0 && IsTouchingBottom(ManagerNetwork.Player, item) || ManagerNetwork.Player._velocity.Y > 0 && IsTouchingTop(ManagerNetwork.Player, item)) { ManagerNetwork.Player._velocity.Y = 0f; collided = true; continue; } } } if (!collided) { ManagerNetwork.Player._velocity.Y += ManagerNetwork.Player.speed; } break; case Keys.Up: if (!collided) { GameTime gameTime = new GameTime(); ManagerNetwork.Player._velocity.Y -= ManagerNetwork.Player.jumpSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds; ManagerNetwork.Player._inAir = true; } foreach (var item in ManagerNetwork.OtherPlayers) { if (ManagerNetwork.Player != item) { if (ManagerNetwork.Player._velocity.Y < 0 && IsTouchingBottom(ManagerNetwork.Player, item) || ManagerNetwork.Player._velocity.Y > 0 && IsTouchingTop(ManagerNetwork.Player, item)) { ManagerNetwork.Player._velocity.Y = 0f; collided = true; continue; } } } break; case Keys.Left: if (!collided) { ManagerNetwork.Player._velocity.X -= ManagerNetwork.Player.speed; } foreach (var item in ManagerNetwork.OtherPlayers) { if (ManagerNetwork.Player != item) { if (ManagerNetwork.Player._velocity.X < 0 && IsTouchingRight(ManagerNetwork.Player, item) || ManagerNetwork.Player._velocity.X > 0 && IsTouchingLeft(ManagerNetwork.Player, item)) { ManagerNetwork.Player._velocity.X = 0f; collided = true; continue; } } } break; case Keys.Right: if (!collided) { ManagerNetwork.Player._velocity.X += ManagerNetwork.Player.speed; } foreach (var item in ManagerNetwork.OtherPlayers) { if (ManagerNetwork.Player != item) { if (ManagerNetwork.Player._velocity.Y > 0 && IsTouchingLeft(ManagerNetwork.Player, item) || ManagerNetwork.Player._velocity.X < 0 && IsTouchingRight(ManagerNetwork.Player, item)) { ManagerNetwork.Player._velocity.X = 0f; collided = true; continue; } } } break; } ManagerNetwork.Player._position += ManagerNetwork.Player._velocity; } }