Esempio n. 1
0
        /// <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);

            // TODO: use this.Content to load your game content here
            player.Load(Content);
            enemy.Load(Content);

            var ViewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, ScreenWidth, ScreenHeight);

            Camera          = new Camera2D(ViewportAdapter);
            Camera.Position = new Vector2(0, ScreenHeight);

            Map = Content.Load <TiledMap>("Level1");
            foreach (TiledTileLayer Layer in Map.TileLayers)
            {
                if (Layer.Name == "Collisions")
                {
                    CollisionLayer = Layer;
                }
            }
            Arialfont = Content.Load <SpriteFont>("Arial");
            Heart     = Content.Load <Texture2D>("Heart");

            AIE.StateManager.CreateState("Splash", new SplashState());
            AIE.StateManager.CreateState("Game", new GameState());
            AIE.StateManager.CreateState("GamerOver", new GameOverState());

            AIE.StateManager.PushState("Splash");

            foreach (TiledObjectGroup Group in Map.ObjectGroups)
            {
                if (Group.Name == "Enemies")
                {
                    foreach (TiledObject Obj in Group.Objects)
                    {
                        Enemy enemy = new Enemy(this);
                        enemy.Load(Content);
                        enemy.Position = new Vector2(Obj.X, Obj.Y);
                        Enemies.Add(enemy);
                    }
                }
                if (Group.Name == "Goal")
                {
                    TiledObject Obj = Group.Objects[0];
                    if (Obj != null)
                    {
                        AnimatedTexture Anim = new AnimatedTexture(Vector2.Zero, 0, 1, 1);

                        Anim.Load(Content, "Goal", 1, 1);
                        Goal = new Sprite();
                        Goal.Add(Anim, 0, 5);
                        Goal.position = new Vector2(Obj.X, Obj.Y);
                    }
                }
            }
            GameMusic = Content.Load <Song>("SuperHero_original_no_Intro");
            MediaPlayer.Play(GameMusic);
        }
        private Entity CreateLivingEntity(PlayerData aPlayersInfo, TiledTileLayer myCollisionLayer)
        {
            var myEntity = createEntity(aPlayersInfo.UserID);

            myEntity.addComponent(new DirectionalSprite(aPlayersInfo.GetLastSpriteDirection()));
            return(myEntity);
        }
 public EnemyController(TiledTileLayer collisionLayer) : base()
 {
     _grid = new WeightedGridGraph(collisionLayer);
     this.collisionState = new TiledMapMover.CollisionState();
     _dir        = new Vector2();
     maxVelocity = 1f;
 }
Esempio n. 4
0
        public void LoadNextMap(ContentManager Content)
        {
            levelIndex++;
            if (levelIndex == 1)
            {
                Debug.WriteToFile("Trying to load Level " + levelIndex, true, false);
                map = Content.Load <TiledMap>("Level1");
                playerSpawningPosition = new Vector2(96, 96);

                map = Content.Load <TiledMap>("Level1");
                Debug.WriteToFile("Level " + levelIndex + " has been loaded", true, false);
            }
            else if (levelIndex == 2)
            {
                Game1.theGame.gameStates.InitGame();
                Game1.theGame.player.isVisible     = true;
                Game1.theGame.gameStates.isVisible = true;
                Debug.WriteToFile("Trying to load Level " + levelIndex, true, false);

                Game1.theGame.gameStates.isVisible = true;
                playerSpawningPosition             = new Vector2(576, 512);

                map = Content.Load <TiledMap>("Level2");
                Debug.WriteToFile("Level " + levelIndex + " has been loaded", true, false);
                Game1.theGame.gameStates.isVisible = true;
            }
            Game1.theGame.player.sPosition = playerSpawningPosition;
            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "Collisions")
                {
                    collisionLayer = layer;
                }
            }
        }
Esempio n. 5
0
        /// <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);

            // TODO: use this.Content to load your game content here
            player.Load(Content);

            arialFont = Content.Load <SpriteFont>("Arial");
            heart     = Content.Load <Texture2D>("heart");


            var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice,
                                                            (int)(graphics.GraphicsDevice.Viewport.Width), (int)(graphics.GraphicsDevice.Viewport.Height));

            camera          = new Camera2D(viewportAdapter);
            camera.Position = player.Position - new Vector2(ScreenWidth, ScreenHeight);

            map = Content.Load <TiledMap>("Level1");
            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "Collisions")
                {
                    collisionLayer = layer;
                }
            }

            foreach (TiledObjectGroup group in map.ObjectGroups)
            {
                if (group.Name == "enemies")
                {
                    foreach (TiledObject obj in group.Objects)
                    {
                        Enemy enemy = new Enemy(this);
                        enemy.Load(Content);
                        enemy.Position = new Vector2(obj.X, obj.Y);
                        enemies.Add(enemy);
                    }
                }
                if (group.Name == "goal")
                {
                    TiledObject obj = group.Objects[0];
                    if (obj != null)
                    {
                        AnimatedTexture anim = new AnimatedTexture(
                            Vector2.Zero, 0, 1, 1);
                        anim.Load(Content, "chest", 1, 1);
                        goal = new Sprite();
                        goal.Add(anim, 0, 5);
                        goal.position = new Vector2(obj.X, obj.Y);
                    }
                }
            }

            gameMusic = Content.Load <Song>("Superhero_Violin");
            MediaPlayer.Play(gameMusic);
        }
Esempio n. 6
0
        public TiledMapComponent(TiledMap tiledmap, string collisionLayerName = null)
        {
            this.tiledMap = tiledmap;

            if (collisionLayerName != null)
            {
                collisionLayer = tiledmap.getLayer <TiledTileLayer>(collisionLayerName);
            }
        }
        public TiledMapComponent(TiledMap tiledMap, string collisionLayerName = null, bool shouldCreateColliders = true)
        {
            this.tiledMap          = tiledMap;
            _shouldCreateColliders = shouldCreateColliders;

            if (collisionLayerName != null)
            {
                collisionLayer = tiledMap.getLayer <TiledTileLayer>(collisionLayerName);
            }
        }
Esempio n. 8
0
        public Enemy(List <Subtexture> subtextures, TiledTileLayer collisionLayer, Effect flashEffect, EnemyType type = EnemyType.Patrol) : base("enemy")
        {
            var sprite = addComponent(new Sprite <Animations>(subtextures[32]));

            sprite.renderLayer = (int)Constants.RenderLayers.Object;
            material           = new FlashWhiteMaterial(flashEffect);
            sprite.material    = material;

            animationManager = new AnimationManager(sprite, subtextures);
            addComponent(animationManager);
            switch (type)
            {
            case EnemyType.Turret:
                sprite.play(Animations.RobotTurret);
                break;

            case EnemyType.ArcTurret:
                sprite.play(Animations.RobotArcTurret);
                break;

            default:
                sprite.play(Animations.RobotIdle);
                break;
            }

            var box = addComponent(new BoxCollider(16, 16));

            box.name               = Strings.MoveCollider;
            box.physicsLayer       = PhysicsLayers.move;
            box.collidesWithLayers = PhysicsLayers.tiles;

            addComponent(new TiledMapMover(collisionLayer));

            var hurtBox = addComponent(new BoxCollider(16, 14));

            hurtBox.name               = Strings.HitCollider;
            hurtBox.physicsLayer       = PhysicsLayers.enemyHit;
            hurtBox.collidesWithLayers = PhysicsLayers.playerBullet;
            hurtBox.isTrigger          = true;

            var hitBox = addComponent(new BoxCollider(16, 12));

            hitBox.name               = Strings.AttackCollider;
            hitBox.physicsLayer       = PhysicsLayers.enemyBullet;
            hitBox.collidesWithLayers = PhysicsLayers.playerHit;
            hitBox.isTrigger          = true;


            var hp = new Health(3, onHit, onDeath);

            addComponent(hp);
            var controller = new EnemyController(type);

            addComponent(controller);
        }
Esempio n. 9
0
        public void CheckForCollision(TiledMap map)
        {
            // Collision with bottom of map
            if (this.BoundingRect.Bottom > map.HeightInPixels)
            {
                this.position.Y = map.HeightInPixels - texture.Height;
                this.velocity.Y = 0;
                onGround        = true;
            }
            // Collision with top of map
            if (this.BoundingRect.Top < 0)
            {
                this.position.Y = 0;
                this.velocity.Y = 0;
            }
            // Collision with top of map
            if (this.BoundingRect.Left < 0)
            {
                this.position.X = 0;
                this.velocity.X = 0;
            }
            // Collision with top of map
            if (this.BoundingRect.Right > map.WidthInPixels)
            {
                this.position.X = map.WidthInPixels - texture.Width;
                this.velocity.X = 0;
            }


            // Check for collision using collision layer
            TiledTileLayer layer = (TiledTileLayer)map.GetLayer("Collision");

            foreach (var tile in layer.Tiles)
            {
                if (
                    ((tile.X * 32) > this.BoundingRect.Right) ||
                    ((tile.Y * 32) > this.BoundingRect.Bottom) ||
                    (((tile.X * 32) + 32) < this.BoundingRect.Left) ||
                    (((tile.Y * 32) + 32) < this.BoundingRect.Top)
                    )
                {
                    continue;
                }


                var region = map.GetTileRegion(tile.Id);
                if (region != null && region.Texture.Name == "Tilesets/collision" &&
                    (region.X + region.Y == 35))
                {
                    this.position.Y = (tile.Y * 32) - this.BoundingRect.Height;
                    this.velocity.Y = 0;
                    onGround        = true;
                }
            }
        }
Esempio n. 10
0
        public TiledMapComponent(TiledMap tiledmap, string collisionLayerName = null)
        {
            this.tiledmap = tiledmap;

            if (collisionLayerName != null)
            {
                _collisionLayer = tiledmap.getLayer <TiledTileLayer>(collisionLayerName);
            }

            Debug.warnIf(tiledmap.renderOrder != TiledRenderOrder.RightDown, "The TiledMap render order is not RightDown. Bad things might happen because of that.");
        }
Esempio n. 11
0
        public void Load(NezContentManager content, Vector2 ScreenVector)
        {
            myMap = new TiledMap(0, (int)ScreenVector.X, (int)ScreenVector.Y, TileData.TileSize, TileData.TileSize, TiledMapOrientation.Orthogonal);
            //TODO: multilayer support
            TiledTileLayer Floors = (TiledTileLayer)myMap.createTileLayer("Floors", (int)ScreenVector.X, (int)ScreenVector.Y);

            Collidables = (TiledTileLayer)myMap.createTileLayer("Walls", (int)ScreenVector.X, (int)ScreenVector.Y);
            int          XOffset        = (int)Mathf.ceil(0.5f * (ScreenVector.X / TileData.TileSize));
            int          YOffset        = (int)Mathf.ceil(0.5f * (ScreenVector.Y / TileData.TileSize));
            TiledTileset BaseMapTileset = myMap.createTileset(content.Load <Texture2D>(this.MapTextureAtlas), 0, 64, 64, true, 0, 0, this.TextureAtlasTileWidth, this.TextureAtlasTileHeight);

            for (int x = 0; x < Mathf.ceil(ScreenVector.X / TileData.TileSize); x++)
            {
                for (int y = 0; y < Mathf.ceil(ScreenVector.X / TileData.TileSize); x++)
                {
                    TileData  myTileData;
                    TiledTile myTile;
                    Tuple <float, float, float> tuple = new Tuple <float, float, float>(x, y, (float)Math.Ceiling(TileData.MaxHeight * myNoise.GetNoise(x, y)));
                    if (myModifiedTiles.TryGetValue(tuple, out myTileData))
                    {
                        myTile         = new TiledTile(myTileData.TileSetID);
                        myTile.tileset = myMap.createTileset(content.Load <Texture2D>(myTileData.TilesetName), 0, TileData.TileSize, TileData.TileSize, true, 0, 0, myTileData.TextureAtlasTileWidth, myTileData.TextureAtlasTileHeight);
                        if (myTileData.isWall)
                        {
                            Collidables.setTile(myTile);
                        }
                        else
                        {
                            Floors.setTile(myTile);
                        }
                    }
                    else
                    {
                        if (tuple.Item3 > 0)
                        {
                            myTile         = new TiledTile(1);
                            myTile.tileset = BaseMapTileset;
                            Collidables.setTile(myTile);
                        }
                        else if (tuple.Item3 == 0)
                        {
                            myTile         = new TiledTile(0);
                            myTile.tileset = BaseMapTileset;
                            Floors.setTile(myTile);
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
            }
        }
Esempio n. 12
0
        /// <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);

            player.Load(Content);

            var ViewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice, ScreenWidth, ScreenHeight);

            camera          = new Camera2D(ViewportAdapter);
            camera.Position = new Vector2(0, ScreenHeight);
            map             = Content.Load <TiledMap>("Level1");

            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "Collisions")
                {
                    collisionLayer = layer;
                }

                gameMusic = Content.Load <Song>("SuperHero_original_no_Intro");
                MediaPlayer.Play(gameMusic);
            }

            foreach (TiledObjectGroup group in map.ObjectGroups)
            {
                if (group.Name == "Enemies")
                {
                    foreach (TiledObject obj in group.Objects)
                    {
                        Enemy enemy = new Enemy(this);
                        enemy.Load(Content);
                        enemy.Position = new Vector2(obj.X, obj.Y);
                        enemies.Add(enemy);
                    }
                }
                Debug.WriteLine(group.Name);
                if (group.Name == "Goal")
                {
                    TiledObject obj = group.Objects[0];
                    if (obj != null)
                    {
                        AnimatedTexture anim = new AnimatedTexture(Vector2.Zero, 0, 1, 1);
                        anim.Load(Content, "chest", 1, 1);
                        goal = new Sprite();
                        goal.Add(anim, 0, 5);
                        goal.position = new Vector2(obj.X, obj.Y);
                    }
                }
                // TODO: use this.Content to load your game content here
            }
        }
Esempio n. 13
0
        private static void ReadCsvTileLayer(TiledTileLayer layer, XElement root)
        {
            var value = root.Value;

            if (!String.IsNullOrEmpty(value))
            {
                var parsed = value.Split(',')
                                   .Select(s => Int32.Parse(s, NumberStyles.Integer | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingWhite, CultureInfo.InvariantCulture))
                                   .ToArray();

                layer.SetTileData(parsed);
            }
        }
        private static void InitializeTiledLayer(TiledTileLayer layer, int tilesCount)
        {
            if (layer.Tiles == null || layer.Tiles.Length != tilesCount)
            {
                layer.Tiles = new TiledTile[tilesCount];
            }

            for (var i = 0; i < tilesCount; i++)
            {
                layer.Tiles[i] = new TiledTile
                {
                    Id = 70
                };
            }
        }
        public override void onStart()
        {
            myMapData.Load(content, ScreenVector);
            myCollisionLayer = myMapData.GetCollisionLayer();
            List <PlayerData> myPlayers = myMapData.GetAllPlayersData();

            foreach (PlayerData A in myPlayers)
            {
                if (A != myPlayerInfo)
                {
                    myActiveEntities.Add(CreateLivingEntity(A, myCollisionLayer));
                }
            }
            base.onStart();
        }
Esempio n. 16
0
 public Enemy(String inEntityType, int inTotalLife, TiledMap inMap, bool enemyHasGun, int ntargetPositionRange)
 {
     EntityType          = inEntityType;
     TileMap             = inMap;
     TotalLife           = inTotalLife;
     CurrentLife         = TotalLife;
     CollisionLayer      = TileMap.getLayer <TiledTileLayer>("collisionLayer");
     WeightedGraph       = new WeightedGridGraph(CollisionLayer);
     Start               = new Point(1, 1);
     End                 = new Point(10, 10);
     WeightedSearchPath  = WeightedGraph.search(Start, End);
     EnemyCanShootGun    = enemyHasGun;
     TargetPositionRange = ntargetPositionRange;
     PlayerRef           = Player.PlayerRef;
 }
Esempio n. 17
0
        /// <summary>
        /// creates a WeightedGridGraph from a TiledTileLayer. Present tile are walls and empty tiles are passable.
        /// </summary>
        /// <param name="tiledLayer">Tiled layer.</param>
        public AstarGridGraph(TiledTileLayer tiledLayer)
        {
            _width  = tiledLayer.Width;
            _height = tiledLayer.Height;

            for (var y = 0; y < tiledLayer.TiledMap.Height; y++)
            {
                for (var x = 0; x < tiledLayer.TiledMap.Width; x++)
                {
                    if (tiledLayer.GetTile(x, y) != null)
                    {
                        Walls.Add(new Point(x, y));
                    }
                }
            }
        }
        public UnweightedGridGraph(TiledTileLayer tiledLayer)
        {
            _width  = tiledLayer.width;
            _height = tiledLayer.height;

            for (var y = 0; y < tiledLayer.tiledMap.height; y++)
            {
                for (var x = 0; x < tiledLayer.tiledMap.width; x++)
                {
                    if (tiledLayer.getTile(x, y) != null)
                    {
                        walls.Add(new Point(x, y));
                    }
                }
            }
        }
Esempio n. 19
0
        public override void initialize()
        {
            clearColor = Color.CornflowerBlue;
            var renderer = addRenderer(new DefaultRenderer());

            tiledMap = content.Load <TiledMap>("test");
            var tiledEntity       = this.createEntity("debugMap");
            var tiledMapComponent = tiledEntity.addComponent(new TiledMapComponent(tiledMap, "collision"));

            tiledMapComponent.setLayersToRender("collision");
            collisionLayer = tiledMapComponent.collisionLayer;
            var offscreenColliders = addEntity(new Entity());

            offscreenColliders.addComponent(new BoxCollider(-32, 112, 32, 32));
            offscreenColliders.addComponent(new BoxCollider(256, 112, 32, 32));
        }
Esempio n. 20
0
        public int CellAtTileCoord(int tx, int ty, TiledTileLayer layer)
        {
            if (tx < 0 || tx >= map.Width || ty < 0)
            {
                return(1);
            }

            if (ty >= map.Height)
            {
                return(0);
            }

            TiledTile tile = layer.GetTile(tx, ty);

            return(tile.Id);
        }
Esempio n. 21
0
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            player.Load(Content);

            LoadEmitter();

            arialFont = Content.Load <SpriteFont>("Arial");

            heart = Content.Load <Texture2D>("Heart");

            var viewportAdapter = new BoxingViewportAdapter(GraphicsDevice, viewWidth, viewHeight);

            camera          = new Camera2D(viewportAdapter);
            camera.Position = new Vector2(0, ScreenHeight / 2);

            map = Content.Load <TiledMap>("PLS");
            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "Collisions")
                {
                    collisionLayer = layer;
                }
            }

            map = Content.Load <TiledMap>("PLS");
            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "KillTiles")
                {
                    killLayer = layer;
                }
            }

            // game music
            gameMusic = Content.Load <Song>("SuperHero_violin_no_Intro");
            MediaPlayer.Play(gameMusic);

            //loading enemies
            LoadAllEnemies();

            //loading items
            LoadAllCoins();
        }
Esempio n. 22
0
        public Debris(TiledTileLayer collisionLayer, Vector2 position, List <Subtexture> subtextures, float xDir = 0f, float yDir = 0f) : base()
        {
            //get initial vel
            float xSpeed = Nez.Random.range(-maxSpeedX, maxSpeedX);
            float ySpeed = Nez.Random.range(-maxYSpeed, minYSpeed);

            if (xDir > 0f)
            {
                xSpeed = Nez.Random.range(0f, 2f * maxSpeedX);
            }
            else if (xDir < 0f)
            {
                xSpeed = Nez.Random.range(-maxSpeedX, 0f);
            }
            if (yDir > 0f)
            {
                ySpeed = Nez.Random.range(0f, maxYSpeed);
            }
            else if (yDir < 0f)
            {
                ySpeed = Nez.Random.range(-maxYSpeed, 0f);
            }
            //sprite
            int spriteNum = Nez.Random.range(144, 149);
            var sprite    = new Sprite(subtextures[spriteNum]);

            sprite.renderLayer = (int)Constants.RenderLayers.Decorative;
            //sprite.color = new Color(90, 83, 83);
            addComponent(sprite);
            //move collide box
            var box = new BoxCollider(4, 4);

            box.name = Constants.Strings.MoveCollider;
            addComponent(box);
            //tiled mover
            var tiledMover = new TiledMapMover(collisionLayer);

            addComponent(tiledMover);
            //debris controller
            var controller = new DebrisController();

            controller.SetInitialy(new Vector2(xSpeed, ySpeed));
            addComponent(controller);

            this.position = position;
        }
Esempio n. 23
0
        public UnweightedGridGraph(TiledTileLayer tiledLayer)
        {
            _width  = tiledLayer.Width;
            _height = tiledLayer.Height;
            _dirs   = CARDINAL_DIRS;

            for (var y = 0; y < tiledLayer.TiledMap.Height; y++)
            {
                for (var x = 0; x < tiledLayer.TiledMap.Width; x++)
                {
                    if (tiledLayer.GetTile(x, y) != null)
                    {
                        Walls.Add(new Point(x, y));
                    }
                }
            }
        }
Esempio n. 24
0
        private static void ReadBase64TileLayer(TiledTileLayer layer, XElement root)
        {
            var compression = root.ReadAttribute("compression", string.Empty);
            var content = root.Value;

            using (var unencoded = new MemoryStream(Convert.FromBase64String(content), false))
            using (var uncompressed = unencoded.GetDecompressor(compression))
            using (var reader = new BinaryReader(uncompressed))
            {
                var tiles = new int[layer.Width * layer.Height];
                for (var i = 0; i < layer.Width * layer.Height; i++)
                {
                    tiles[i] = reader.ReadInt32();
                }
                layer.SetTileData(tiles);
            }
        }
Esempio n. 25
0
        public void LayerAccessTest()
        {
            var map = new TiledMap("test.tmx");

            Assert.IsNotNull(map.Layers[0] as TiledTileLayer);
            Assert.IsNotNull(map.Layers[1] as TiledObjectGroup);
            Assert.IsNotNull(map.Layers[2] as TiledTileLayer);

            Assert.IsNotNull(map["Background"] as TiledTileLayer);
            Assert.IsNotNull(map["Middleground"] as TiledObjectGroup);
            Assert.IsNotNull(map["Foreground"] as TiledTileLayer);

            map["Middleground"] = new TiledTileLayer {
                Name = "Middleground"
            };

            Assert.IsNotNull(map["Middleground"]);
        }
Esempio n. 26
0
        private static void ReadBase64TileLayer(TiledTileLayer layer, XElement root)
        {
            string compression = root.ReadAttribute<string>("compression", string.Empty);
            bool canCompress = new[] { "gzip", "zlib", string.Empty }.Contains(compression.ToLower());

            string content = root.Value;

            using (Stream unencoded = new MemoryStream(Convert.FromBase64String(content), false))
            using (Stream uncompressed = unencoded.GetDecompressor(compression))
            using (BinaryReader reader = new BinaryReader(uncompressed))
            {
                var tiles = new int[layer.Width * layer.Height];
                for (int i = 0; i < layer.Width * layer.Height; i++)
                {
                    tiles[i] = reader.ReadInt32();
                }
                layer.SetTileData(tiles);
            }
        }
Esempio n. 27
0
        private void Restart()
        {
            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "Collisions")
                {
                    collisionLayer = layer;
                }

                gameMusic = Content.Load <Song>("SuperHero_original_no_Intro");
                MediaPlayer.Play(gameMusic);
            }

            foreach (TiledObjectGroup group in map.ObjectGroups)
            {
                if (group.Name == "Enemies")
                {
                    foreach (TiledObject obj in group.Objects)
                    {
                        Enemy enemy = new Enemy(this);
                        enemy.Load(Content);
                        enemy.Position = new Vector2(obj.X, obj.Y);
                        enemies.Add(enemy);
                    }
                }
                Debug.WriteLine(group.Name);
                if (group.Name == "Goal")
                {
                    TiledObject obj = group.Objects[0];
                    if (obj != null)
                    {
                        AnimatedTexture anim = new AnimatedTexture(Vector2.Zero, 0, 1, 1);
                        anim.Load(Content, "chest", 1, 1);
                        goal = new Sprite();
                        goal.Add(anim, 0, 5);
                        goal.position = new Vector2(obj.X, obj.Y);
                    }
                }
                // TODO: use this.Content to load your game content here
            }
        }
Esempio n. 28
0
        /// <summary>
        /// This is called when the game should draw itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Draw(GameTime gameTime)
        {
            // Draw background

            GraphicsDevice.Clear(_tiledMap.BackgroundColor ?? Color.Black);

            _spriteBatch.Begin();
            _spriteBatch.Draw(background, new Rectangle(0, 0, 800, 480), Color.White);
            _spriteBatch.End();

            _spriteBatch.Begin(transformMatrix: _camera.GetViewMatrix());

            // or you can have more control over drawing each individual layer
            foreach (var layer in _tiledMap.Layers)
            {
                TiledTileLayer tiledTileLayer = layer as TiledTileLayer;
                TiledTile      t = tiledTileLayer.GetTile(0, 24);
                _spriteBatch.Draw(layer, _camera);
            }

            _spriteBatch.Draw(_sprite);              // Draws a sprite over the cursor

            _spriteBatch.End();

            //mainUI.Update (_spriteBatch, _world.WorldCalendar, gameTime);

            //			var textColor = Color.White;
            //			_spriteBatch.Begin(samplerState: SamplerState.PointClamp, blendState: BlendState.AlphaBlend);
            //			_spriteBatch.DrawString(_bitmapFont, "WASD/Arrows: move", new Vector2(5, 32), textColor);
            //			_spriteBatch.DrawString(_bitmapFont, "RF: zoom", new Vector2(5, 32 + _bitmapFont.LineSpacing), textColor);
            //			_spriteBatch.DrawString(_bitmapFont, $"FPS: {_fpsCounter.AverageFramesPerSecond:0}", Vector2.One, Color.AliceBlue);
            //			_spriteBatch.DrawString(_bitmapFont, "Tile: " + mouseOverTile.X + "," + mouseOverTile.Y, new Vector2(5, 32 + _bitmapFont.LineSpacing*2), Color.AliceBlue);
            //			_spriteBatch.DrawString(_bitmapFont, "MouseOver: " + mouseScreenPostion.X + "," + mouseScreenPostion.Y, new Vector2(5, 32 + _bitmapFont.LineSpacing*3), Color.AliceBlue);
            //			_spriteBatch.End();

            base.Draw(gameTime);
        }
Esempio n. 29
0
        public Player(InputHandler input, List <Subtexture> subtextures, TiledTileLayer collisionLayer, Entity followEntity, Vector2 velocity = new Vector2()) : base("player")
        {
            this.followEntity = followEntity;
            var sprite = addComponent(new Sprite <Animations>(subtextures[32]));

            sprite.renderLayer = (int)Constants.RenderLayers.Object;
            var weaponSprite = addComponent(new Sprite(subtextures[82]));

            weaponSprite.renderLayer = (int)Constants.RenderLayers.Foreground;
            weaponSprite.name        = Strings.Weapon;

            var animManager = new AnimationManager(sprite, subtextures);

            addComponent(animManager);
            var box = addComponent(new BoxCollider(16, 16));

            box.name               = Strings.MoveCollider;
            box.physicsLayer       = PhysicsLayers.move;
            box.collidesWithLayers = PhysicsLayers.tiles;
            addComponent(new TiledMapMover(collisionLayer));
            var playerController = addComponent(new PlayerController(input, followEntity));

            playerController.velocity = velocity;

            var collectionBox = addComponent(new BoxCollider(12, 12));

            collectionBox.isTrigger          = true;
            collectionBox.physicsLayer       = PhysicsLayers.collect;
            collectionBox.collidesWithLayers = PhysicsLayers.mcguff;

            var hurtBox = addComponent(new BoxCollider(12, 12));

            hurtBox.isTrigger          = true;
            hurtBox.physicsLayer       = Constants.PhysicsLayers.playerHit;
            hurtBox.collidesWithLayers = Constants.PhysicsLayers.enemyBullet;
            hurtBox.name = Constants.Strings.HitCollider;
        }
        /// <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);

            // TODO: use this.Content to load your game content here
            player.Load(Content);
            asteroid.Load(Content);

            var viewportAdapter = new BoxingViewportAdapter(Window, GraphicsDevice,
                                                            ScreenWidth, ScreenHeight);

            camera          = new Camera2D(viewportAdapter);
            camera.Position = new Vector2(0, ScreenHeight);

            map = Content.Load <TiledMap>("nm1");
            foreach (TiledTileLayer layer in map.TileLayers)
            {
                if (layer.Name == "Floor")
                {
                    collisionLayer = layer;
                }
            }
        }
Esempio n. 31
0
        private Object[] CollisionLogic(TiledTileLayer layer)
        {
            int tx = game.PixelToTile(sprite.position.X);
            int ty = game.PixelToTile(sprite.position.Y);

            // x % y divides x by y then looks at the remainder
            // because tile = 64, when the sprite's position (a single pixel)
            // is equal to 64, the remainder is zero,
            // therefore the sprite is only on one tile
            // in any other case, it is overlapping two or more tiles
            // therefore the bools are true
            // nx checks left/right overlapping
            // ny checks up/down overlapping

            bool nx = (sprite.position.X) % Game1.tile != 0;
            bool ny = (sprite.position.Y) % Game1.tile != 0;

            bool cell      = game.CellAtTileCoord(tx, ty, layer) != 0;
            bool cellright = game.CellAtTileCoord(tx + 1, ty, layer) != 0;
            bool celldown  = game.CellAtTileCoord(tx, ty + 1, layer) != 0;
            bool celldiag  = game.CellAtTileCoord(tx + 1, ty + 1, layer) != 0;

            return(new Object[] { tx, ty, nx, ny, cell, cellright, celldown, celldiag });
        }
Esempio n. 32
0
        private static void ReadTileLayer(TiledMap map, XElement root)
        {
            var layer = new TiledTileLayer();

            // Read generic layer information.
            ReadGenericLayerInformation(layer, root);

            // Read layer data.
            var dataElement = root.Element("data");
            if (dataElement != null)
            {
                ReadTileLayerData(layer, dataElement);
            }

            map.Layers.Add(layer);
        }
Esempio n. 33
0
 public TiledCollisionSystem(IPossibleMovements possibleMovements, TiledMap map, string collisionLayerName) : base(possibleMovements)
 {
     TileCollisionLayer = map.GetLayer <TiledTileLayer>(collisionLayerName);
 }
Esempio n. 34
0
        private static void ReadTileLayerData(TiledTileLayer layer, XElement root)
        {
            var encoding = root.ReadAttribute<string>("encoding", null);

            if (encoding != null)
            {
                if (encoding.Equals("csv", StringComparison.OrdinalIgnoreCase))
                    ReadCsvTileLayer(layer, root);
                else if (encoding.Equals("base64", StringComparison.OrdinalIgnoreCase))
                    ReadBase64TileLayer(layer, root);
            }
        }
Esempio n. 35
0
        private static TileLayerContent CreateTileLayer(TiledMap source, MapContent map, TiledTileLayer layer, int id)
        {
            var content = new TileLayerContent();

            content.Id      = id;
            content.Name    = layer.Name;
            content.Opacity = layer.Opacity;

            for (var gridIndex = 0; gridIndex < layer.Tiles.Length; gridIndex++)
            {
                var tileIndex = layer.Tiles[gridIndex];
                if (tileIndex == 0)
                {
                    // The tile with index 0 is reserved (nothing).
                    continue;
                }

                // Find witch tiled tileset the index belongs to...
                var tiledTileset = source.Tilesets.Where(t => t.FirstId <= tileIndex).OrderByDescending(t => t.FirstId).FirstOrDefault();
                if (tiledTileset == null)
                {
                    tiledTileset = source.Tilesets.Where(t => t.FirstId >= tileIndex).OrderByDescending(t => t.FirstId).FirstOrDefault();
                    if (tiledTileset == null)
                    {
                        throw new InvalidOperationException("Could not find tileset.");
                    }
                }

                // Find the tileset reference.
                var tileset = map.Tilesets[source.Tilesets.IndexOf(tiledTileset)];

                var tileContent = new TileContent();
                tileContent.GridIndex    = gridIndex;
                tileContent.TileSetId    = tileset.Index;
                tileContent.TilesetIndex = tileIndex - tiledTileset.FirstId;

                content.Tiles.Add(tileContent);
            }
            return(content);
        }