// ============================== // Methods // ============================== public AiController(int noRhythmKeys, Fighter fighter, TrackPlayer player) : base(noRhythmKeys) { this.fighter = fighter; this.player = player; LastNotes = new LinkedListNode<Note>[noRhythmKeys]; }
// 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); } }
void SetActivePlayer(PlayerIndex PlayerNo) { Fighter[] fighters = null; switch (PlayerNo) { case PlayerIndex.One: fighters = new Fighter[noPlayers]; fighters[0] = Fighters[0]; fighters[1] = Fighters[1]; break; case PlayerIndex.Two: fighters = new Fighter[noPlayers]; fighters[0] = Fighters[1]; fighters[1] = Fighters[0]; break; default: break; } if (fighters != null) { for (int i = 0; i < noPlayers; ++i) { fighters[i].CurrentState = (i == 0) ? Fighter.State.Attack : Fighter.State.Defend; fighters[i].ValidRect = ValidRects[i]; fighters[i].Position = InitialPositions[i]; } } }