private void CreatePlayer(int playerIndex) { PlayerEvent playerEvent = new PlayerEvent(); Player player = PlayerFactory.CreatePlayer(physicsSystem.world, (PlayerIndex)playerIndex, playerEvent, Vector2.Zero); entityManager.Add(player); Viewport playerViewport = defaultViewport; if ((PlayerIndex)playerIndex == PlayerIndex.One) { playerViewport = topLeftViewport; } else if ((PlayerIndex)playerIndex == PlayerIndex.Two) { playerViewport = topRightViewport; } else if ((PlayerIndex)playerIndex == PlayerIndex.Three) { playerViewport = bottomLeftViewport; } else if ((PlayerIndex)playerIndex == PlayerIndex.Four) { playerViewport = bottomRightViewport; } PlayerRepresentation playerRepresentation = PlayerFactory.CreatePlayerRepresentation(player, playerEvent, Content, playerViewport, map.LevelMap.Width, map.LevelMap.Height); representationManager.Add(playerRepresentation); PlayerController playerController = PlayerFactory.CreatePlayerController(player); controllerManager.Add(playerController); }
private void spawnEnemy(Enemy enemy, EnemyRepresentation enemyRepresentation, EnemyController enemyController) { entityManager.Add(enemy); representationManager.Add(enemyRepresentation); controllerManager.Add(enemyController); }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); // for debug view DebugView = new DebugViewXNA(physicsSystem.world); DebugView.DefaultShapeColor = Color.White; DebugView.SleepingShapeColor = Color.LightGray; DebugView.AppendFlags(DebugViewFlags.ContactPoints); DebugView.AppendFlags(DebugViewFlags.DebugPanel); DebugView.RemoveFlags(DebugViewFlags.Joint); DebugView.LoadContent(GraphicsDevice, Content); // for splitscreen SetUpSplitScreen(); entityManager = new EntityManager(); representationManager = new RepresentationManager(Content); controllerManager = new ControllerManager(); LevelMap levelMap = Content.Load<LevelMap>("simplelevelmap"); map = new Map(physicsSystem.world, levelMap, entityManager, representationManager, controllerManager); mapRepresentation = new MapRepresentation(map); mapRepresentation.LoadContent(Content); representationManager.Add(mapRepresentation); GameVariables.LevelHeight = map.LevelMap.Height; GameVariables.EnemyRespawnDelay = 10f; GameVariables.CamCulling = new Vector2(640 * 0.5f, 360 * 0.5f); // create the players int numPlayers = GameVariables.NumPlayers; CreatePlayer((int)PlayerIndex.One); if (numPlayers > 1) { CreatePlayer((int)PlayerIndex.Two); } if (numPlayers > 2) { CreatePlayer((int)PlayerIndex.Three); } if (numPlayers > 3) { CreatePlayer((int)PlayerIndex.Four); } map.SetUpTiles(); // test for a slanted platform /* Vector2 position = new Vector2(180, 270); Vertices vertices = new Vertices(); vertices.Add(ConvertUnits.ToSimUnits(new Vector2(290, 480))); vertices.Add(ConvertUnits.ToSimUnits(new Vector2(578, 384))); vertices.Add(ConvertUnits.ToSimUnits(new Vector2(578, 480))); Body body = BodyFactory.CreatePolygon(physicsSystem.world, vertices, 1f); body.BodyType = BodyType.Static; body.Restitution = 0f; body.Friction = 0.5f; body.CollisionCategories = GameConstants.PlatformCollisionCategory; */ // test for a thin platform //Vector2 position = new Vector2(300, 400); /* Body body = BodyFactory.CreateEdge(physicsSystem.world, ConvertUnits.ToSimUnits(new Vector2(300, 400)), ConvertUnits.ToSimUnits(new Vector2(500, 400))); //StaticPhysicsObject physicsObject = new StaticPhysicsObject(this, physicsSystem.world, position, 64, 1); //Body body = physicsObject.body; body.BodyType = BodyType.Static; body.Restitution = 0f; body.Friction = 0.5f; body.CollisionCategories = GameConstants.PlatformCollisionCategory; */ //oneWayTile = new OneWayGroundTile(physicsSystem.world, position, 64); /* Vector2 startPosition = new Vector2(268, 400); Vector2 endPosition = new Vector2(332, 400); Body body = BodyFactory.CreateEdge(physicsSystem.world, ConvertUnits.ToSimUnits(startPosition), ConvertUnits.ToSimUnits(endPosition)); body.BodyType = BodyType.Static; body.Restitution = 0f; body.Friction = 0.5f; */ // set player spawn positions from map List<Player> players = entityManager.Players; foreach (Player player in players) { player.SpawnPosition = map.PlayerSpawn; } // spawn the living entities entityManager.SpawnLivingEntities(); tmpTex = Content.Load<Texture2D>("blank"); }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); // for debug view DebugView = new DebugViewXNA(physicsSystem.world); DebugView.DefaultShapeColor = Color.White; DebugView.SleepingShapeColor = Color.LightGray; DebugView.AppendFlags(DebugViewFlags.ContactPoints); DebugView.AppendFlags(DebugViewFlags.DebugPanel); DebugView.RemoveFlags(DebugViewFlags.Joint); DebugView.LoadContent(GraphicsDevice, Content); // for splitscreen SetUpSplitScreen(); entityManager = new EntityManager(); representationManager = new RepresentationManager(Content); controllerManager = new ControllerManager(); LevelMap levelMap = Content.Load <LevelMap>("simplelevelmap"); map = new Map(physicsSystem.world, levelMap, entityManager, representationManager, controllerManager); mapRepresentation = new MapRepresentation(map); mapRepresentation.LoadContent(Content); representationManager.Add(mapRepresentation); GameVariables.LevelHeight = map.LevelMap.Height; GameVariables.EnemyRespawnDelay = 10f; GameVariables.CamCulling = new Vector2(640 * 0.5f, 360 * 0.5f); // create the players int numPlayers = GameVariables.NumPlayers; CreatePlayer((int)PlayerIndex.One); if (numPlayers > 1) { CreatePlayer((int)PlayerIndex.Two); } if (numPlayers > 2) { CreatePlayer((int)PlayerIndex.Three); } if (numPlayers > 3) { CreatePlayer((int)PlayerIndex.Four); } map.SetUpTiles(); // test for a slanted platform /* * Vector2 position = new Vector2(180, 270); * Vertices vertices = new Vertices(); * vertices.Add(ConvertUnits.ToSimUnits(new Vector2(290, 480))); * vertices.Add(ConvertUnits.ToSimUnits(new Vector2(578, 384))); * vertices.Add(ConvertUnits.ToSimUnits(new Vector2(578, 480))); * Body body = BodyFactory.CreatePolygon(physicsSystem.world, vertices, 1f); * body.BodyType = BodyType.Static; * body.Restitution = 0f; * body.Friction = 0.5f; * body.CollisionCategories = GameConstants.PlatformCollisionCategory; */ // test for a thin platform //Vector2 position = new Vector2(300, 400); /* * Body body = BodyFactory.CreateEdge(physicsSystem.world, ConvertUnits.ToSimUnits(new Vector2(300, 400)), ConvertUnits.ToSimUnits(new Vector2(500, 400))); * //StaticPhysicsObject physicsObject = new StaticPhysicsObject(this, physicsSystem.world, position, 64, 1); * //Body body = physicsObject.body; * body.BodyType = BodyType.Static; * body.Restitution = 0f; * body.Friction = 0.5f; * body.CollisionCategories = GameConstants.PlatformCollisionCategory; */ //oneWayTile = new OneWayGroundTile(physicsSystem.world, position, 64); /* * Vector2 startPosition = new Vector2(268, 400); * Vector2 endPosition = new Vector2(332, 400); * Body body = BodyFactory.CreateEdge(physicsSystem.world, ConvertUnits.ToSimUnits(startPosition), ConvertUnits.ToSimUnits(endPosition)); * body.BodyType = BodyType.Static; * body.Restitution = 0f; * body.Friction = 0.5f; */ // set player spawn positions from map List <Player> players = entityManager.Players; foreach (Player player in players) { player.SpawnPosition = map.PlayerSpawn; } // spawn the living entities entityManager.SpawnLivingEntities(); tmpTex = Content.Load <Texture2D>("blank"); }