public void HandleInput(GameTime gameTime) { if (Re.State == RhythmEngine.RhythmEngineState.Playing) { LeftController.Update(gameTime); RightController.Update(gameTime); } KeyboardState Current = Host.KeyboardInput.Current; if (Host.Debugging) { // Rhythm engine if (Host.KeyboardInput.IsTap(Keys.OemOpenBrackets)) { Re.Stop(); } if (Host.KeyboardInput.IsTap(Keys.OemCloseBrackets)) { Re.Play(); } if (Host.KeyboardInput.IsTap(Keys.OemPipe)) { Re.Pause(); } if (Current.IsKeyDown(Keys.OemPlus)) { Re.Shift(playerShift); } if (Current.IsKeyDown(Keys.OemMinus)) { Re.Shift(-playerShift); } } }
// Methods public PlayingState(ActGame Host, Configuration.IOConfig.KeyboardConfig.PlayerKeyConfig LeftControlConfig, Configuration.IOConfig.KeyboardConfig.PlayerKeyConfig RightControlConfig, LinkedList <TrackSelection>[] Selections) : base(Host) { FighterSpriteSheets = new SpriteSheet[noPlayers]; FighterSpriteSheets[atk] = Host.fighterSpriteSheet; FighterSpriteSheets[def] = Host.fighterSpriteSheet; InitialPositions = new Vector2[noPlayers]; InitialPositions[atk] = new Vector2(400, 400); InitialPositions[def] = new Vector2(400, 200); ValidRects = new Rectangle[noPlayers]; ValidRects[atk] = new Rectangle(250, 250, 300, 150); ValidRects[def] = new Rectangle(250, 50, 300, 150); bullet = new Bullet(); bullet.Sprite = Host.bulletSpriteSheet.FrameSprite(0); Fighters = new Fighter[noPlayers]; for (int i = 0; i < noPlayers; ++i) { Fighters[i] = new Fighter(Host, ValidRects[i], bullet, RegisterBullet); Fighters[i].Sprite = FighterSpriteSheets[i].FrameSprite(0); } Keyconfigs = new Configuration.IOConfig.KeyboardConfig.PlayerKeyConfig[noPlayers]; Keyconfigs[atk] = LeftControlConfig; Keyconfigs[def] = RightControlConfig; SetActivePlayer(PlayerIndex.One); Ps = new ParticleSystem(); Re = new RhythmEngine(Host.Config); Re.SelectionList = Selections; Re.LeftPlayer.VisibleRange = 2000; Re.RightPlayer.VisibleRange = 2000; Re.LeftPlayer.ShowDebug = false; Re.RightPlayer.ShowDebug = true; Rr = new RhythmRenderer(Re); Rr.Font = Host.sysFont; Rr.LeftDrawRect = new Rectangle(8, 8, 192, 350); Rr.RightDrawRect = new Rectangle(600, 8, 192, 350); LeftController = Host.LeftController; RightController = Host.RightController; // TODO: Debug AI //LeftController = new AiController(Host.Config.IO.Keyboard.Left.Rhythm.KeyCount, Fighters[atk], Re.players[atk]); RightController = new AiController(Host.Config.IO.Keyboard.Right.Rhythm.KeyCount, Fighters[def], Re.players[def]); Re.Lock(); Re.Play(); Particle particle = new Particle(Host.particle1SpriteSheet); GraphicsObject[] FighterGraphicObjs = new GraphicsObject[noPlayers]; for (int i = 0; i < noPlayers; ++i) { FighterGraphicObjs[i] = new GraphicsObject(Fighters[i]); } foreach (GraphicsObject obj in FighterGraphicObjs) { obj.CreateEmitter(new Vector2(0, 5), 0.15f, -MathHelper.PiOver2, MathHelper.PiOver4, 100, 250, 150, particle, true); obj.CreateEmitter(new Vector2(-5, 2), 0.15f, -0.6f * MathHelper.PiOver2, MathHelper.PiOver4 / 2.0f, 50, 250, 150, particle, true); obj.CreateEmitter(new Vector2(5, 2), 0.15f, -1.4f * MathHelper.PiOver2, MathHelper.PiOver4 / 2.0f, 50, 250, 150, particle, true); Ps.RegisterGraphicsObject(obj); } }