using System; using System.Collections.Generic; #if ANDROID using Android.App; #endif using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Input.Touch; using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework.Storage; namespace MonoGame.Samples.Input { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; SpriteFont font; Color clearColor = Color.CornflowerBlue; KeyboardState currentKeyboardState; GamePadState currentGamePadState; TouchCollection currentTouchState; public Game1 () { graphics = new GraphicsDeviceManager (this); Content.RootDirectory = "Content"; graphics.PreferMultiSampling = true; graphics.IsFullScreen = true; graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight | DisplayOrientation.Portrait ; } /// /// 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. /// protected override void Initialize () { // TODO: Add your initialization logic here TouchPanel.EnabledGestures = GestureType.Tap | GestureType.DoubleTap; base.Initialize (); } /// /// LoadContent will be called once per game and is the place to load /// all of your content. /// protected override void LoadContent () { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch (GraphicsDevice); // TODO: use this.Content to load your game content here font = Content.Load ("spriteFont1"); } /// /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// /// Provides a snapshot of timing values. protected override void Update (GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) { Exit(); } currentKeyboardState = Keyboard.GetState (); currentGamePadState = GamePad.GetState (PlayerIndex.One); currentTouchState = TouchPanel.GetState(); while (TouchPanel.IsGestureAvailable) { var gesture = TouchPanel.ReadGesture(); switch (gesture.GestureType) { case GestureType.DoubleTap: clearColor = clearColor == Color.CornflowerBlue ? Color.Red : Color.CornflowerBlue; break; case GestureType.Tap: clearColor = clearColor == Color.CornflowerBlue ? Color.Black : Color.CornflowerBlue; break; } } base.Update (gameTime); } /// /// This is called when the game should draw itself. /// /// Provides a snapshot of timing values. protected override void Draw (GameTime gameTime) { graphics.GraphicsDevice.Clear (clearColor); // Won't be visible until we hide the movie spriteBatch.Begin(); Vector2 center = new Vector2(GraphicsDevice.Viewport.Width /2, GraphicsDevice.Viewport.Height /2); Vector2 s1 = font.MeasureString("Touch the Screen"); center.X -= (s1.X /2); spriteBatch.DrawString(font, "Touch the Screen", center, Color.Red); center.Y += 20; spriteBatch.DrawString(font, GraphicsDevice.Viewport.Width.ToString() + " x " + GraphicsDevice.Viewport.Height.ToString(), center, Color.Red); center.Y += 20; spriteBatch.DrawString(font, GraphicsDevice.PresentationParameters.DisplayOrientation.ToString(), center, Color.Red); spriteBatch.DrawString(font, "0,0", new Vector2(0,0), Color.Red); string s = GraphicsDevice.Viewport.Width.ToString() + ",0"; Vector2 v = font.MeasureString(s); spriteBatch.DrawString(font, s, new Vector2(GraphicsDevice.Viewport.Width-v.X, 0), Color.Red); s = "0,"+GraphicsDevice.Viewport.Height.ToString(); v = font.MeasureString(s); spriteBatch.DrawString(font, s , new Vector2(0, GraphicsDevice.Viewport.Height-v.Y), Color.Red); string wandh = GraphicsDevice.Viewport.Width.ToString() + ", " + GraphicsDevice.Viewport.Height.ToString(); Vector2 wh = font.MeasureString(wandh); spriteBatch.DrawString(font, wandh, new Vector2(GraphicsDevice.Viewport.Width-wh.X, GraphicsDevice.Viewport.Height-wh.Y), Color.Red); if (currentTouchState != null && currentTouchState.Count > 0) { for (int i = 0 ; i < currentTouchState.Count; i++) { center.Y += s1.Y; Vector2 p = currentTouchState[i].Position; spriteBatch.DrawString(font, "+", p, Color.Red); spriteBatch.DrawString(font, p.ToString(), center, Color.Red); } } spriteBatch.End(); } } }