Beispiel #1
0
        /// <summary>
        /// Loads a map. Example: "maps/testmap/", "testmap.tmx"
        /// </summary>
        void LoadMap(string fileFolder, string fileName)
        {
            var fm = new FileManager <TTileMap>();

            map = fm.ImportRaw("Content/" + fileFolder + fileName);

            engine            = new Engine(map);
            cam               = new Camera2DControlled();
            cam.Zoom          = 3f;
            camera2DCutscenes = new List <Camera2DCutscene>();

            for (int i = 0; i < map.tileSets.Count; ++i)
            {
                var ts_fm      = new FileManager <TTileSet>();
                var loaded_set = ts_fm.ImportRaw("Content/" + fileFolder + map.tileSets[i].source);
                loaded_set.source   = map.tileSets[i].source;
                loaded_set.firstgid = map.tileSets[i].firstgid;
                var file = loaded_set.image.image_source.Remove(loaded_set.image.image_source.Length - 4, 4);
                loaded_set.image.texture = Content.Load <Texture2D>("maps/testmap/" + file);

                map.tileSets[i] = loaded_set;                               // Set new reference
                map.tileSets[i].Properties.CopyFrom(loaded_set.Properties); // Copy the properties
                map.tileSets[i].CreateClips();                              // Create clips after loading the *.tsx file.
            }

            foreach (var l in map.tileLayers)
            {
                l.tileData.ConstructTiles(map.tileWidth, l.width, l.height);
            }

            this.player = CreatePlayer();
            engine.AddEntity(player);

            var builder = new EntityBuilder();

            foreach (var ogroups in map.objectGroups)
            {
                foreach (var obj in ogroups.objects)
                {
                    var ent = builder.CreateFromFile(obj, "Content/entities/" + obj.type);
                    engine.AddEntity(ent);

                    if (ent.type.Equals("Spawn") && ent.name.Equals("spawn_start"))
                    {
                        this.spawn = ent.pos;
                        player.pos = spawn;
                    }

                    if (ent.type.Equals("LoadZone"))
                    {
                        var collider = ent.GetComponent <Collider>();
                        collider.Collided += LoadZone_LoadMap;
                    }
                }
            }
        }
Beispiel #2
0
 public Engine(TTileMap map)
 {
     this.map      = map;
     this.entities = new List <Entity>();
     this._uuid    = new UUID();
 }