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); }
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); } }
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); }