예제 #1
0
        public GameScene(GraphicsDevice graphicsDevice, ContentManager content, TileMap tileMap, Vector2 sceneryOffSet)
        {
            this.content        = content;
            this.graphicsDevice = graphicsDevice;
            this.sceneryOffSet  = sceneryOffSet;
            cameraManager       = new CameraManager();
            camera              = new Camera(Vector2.Zero, new Vector2(this.Width, this.Height), new Vector2(50000, 50000));
            this.tileMap        = tileMap;
            this.tileMap.Camera = camera;
            actorManager        = new ActorManager();
            gateMapper          = new ActorMapper(content, this.tileMap);
            actorManager.Reset();
            player        = new Actors.Player(actorManager, tileMap, camera, new Vector2(-100, -100), content.Load <Texture2D>(@"Textures/player"), 25.0f, 16, 16, 15, 15);
            chasingCamera = new ChasingCamera(player.location, camera, 2.0f);
            cameraManager.SetCameraScript(chasingCamera);
            IsCameraFree       = false;
            this.weaponManager = new WeaponManager();
            //cameraManager.AddCameraHandler(new Rotater(0.0f, MathHelper.PiOver2, 8));
            cameraManager.AddCameraHandler(new Zoomer(1.0f, 1.0f, 0.5f, 0.01f));

            UpdateRenderTarget();
            this.sceneryOffSet = sceneryOffSet;
            PuzzleEngineAlpha.Resolution.ResolutionHandler.Changed += ResetSizes;
            this.tileMap.NewMap += NewMapHandling;
            particleManager      = new ParticleManager(content, this.camera);
        }
예제 #2
0
        void NewMapHandling(object sender, EventArgs e)
        {
            actorManager.Reset();
            List <Vector2> playerLocations = tileMap.GetLocationOfCodeValue("player");

            if (playerLocations.Count > 0)
            {
                foreach (Vector2 playerLocation in playerLocations)
                {
                    player = new Actors.Player(actorManager, tileMap, camera, playerLocation + new Vector2(16, 16), content.Load <Texture2D>(@"Textures/player"), 25.0f, 16, 16, 15, 15);
                    actorManager.AddPlayer(player);
                }
            }
            else
            {
                player = new Actors.Player(actorManager, tileMap, camera, new Vector2(16, 16), content.Load <Texture2D>(@"Textures/player"), 25.0f, 16, 16, 15, 15);
                actorManager.AddPlayer(player);
            }

            this.player = actorManager.GetNextPlayer();

            Dictionary <Vector2, int> actors = tileMap.GetActorsLocationAndID();

            foreach (KeyValuePair <Vector2, int> actor in actors)
            {
                StaticObject obj;
                if (actor.Value <= gateMapper.LastGateID)
                {
                    obj = new Gate(this.tileMap, this.camera, actor.Key, gateMapper.GetTextureByID(actor.Value), tileMap.SourceTileWidth, tileMap.SourceTileHeight, gateMapper.GetTagByID(actor.Value), gateMapper.IsGateEnabled(actor.Value));
                }
                else if (actor.Value == gateMapper.CoinID)
                {
                    obj = new Coin(this.tileMap, this.camera, actor.Key, gateMapper.GetTextureByID(actor.Value), tileMap.SourceTileWidth, tileMap.SourceTileHeight, gateMapper.GetTagByID(actor.Value));
                }
                else if (actor.Value == gateMapper.HiddenWallID)
                {
                    obj = new HiddenWall(this.tileMap, this.camera, actor.Key, gateMapper.GetTextureByID(actor.Value), tileMap.SourceTileWidth, tileMap.SourceTileHeight, gateMapper.GetTagByID(actor.Value));
                }
                else if (actor.Value == gateMapper.CloneBoxID)
                {
                    obj = new CloneBox(this.actorManager, this.particleManager, this.tileMap, this.camera, actor.Key, gateMapper.GetTextureByID(actor.Value), content, tileMap.SourceTileWidth, tileMap.SourceTileHeight, gateMapper.GetTagByID(actor.Value));
                }
                else
                {
                    obj = new Button(this.tileMap, this.camera, actor.Key, gateMapper.GetTextureByID(actor.Value), tileMap.SourceTileWidth, tileMap.SourceTileHeight, gateMapper.GetTagByID(actor.Value));
                }
                obj.CollisionRectangle   = gateMapper.GetCollisionRectangleByID(actor.Value, actor.Key);
                obj.InteractionRectangle = gateMapper.GetInteractionRectangleByID(actor.Value, actor.Key);

                actorManager.AddStaticObject(obj);
            }
        }
예제 #3
0
        public void Update(GameTime gameTime)
        {
            if (PuzzleEngineAlpha.Input.InputHandler.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.E))
            {
                player = actorManager.GetNextPlayer();
            }

            ToggleCameraScripts();


            particleManager.Update(gameTime);
            weaponManager.Update(gameTime);
            actorManager.Update(gameTime);
            actorManager.MovePlayers(gameTime, IsCameraFree);
            cameraManager.TargetLocation = player.RelativeCenter;
            cameraManager.Update(gameTime);
        }