Exemplo n.º 1
0
 public RhythmRenderer(RhythmEngine engine)
 {
     host = engine;
     leftRender = new TrackRenderer(host.LeftPlayer);
     rightRender = new TrackRenderer(host.RightPlayer);
 }
Exemplo n.º 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);
                }
        }