コード例 #1
0
 // ==============================
 // Methods
 // ==============================
 public AiController(int noRhythmKeys, Fighter fighter, TrackPlayer player)
     : base(noRhythmKeys)
 {
     this.fighter = fighter;
     this.player = player;
     LastNotes = new LinkedListNode<Note>[noRhythmKeys];
 }
コード例 #2
0
        // 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);
                }
        }
コード例 #3
0
 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];
         }
     }
 }