Exemplo n.º 1
0
        public bool reloadMapContent(string folder)
        {
            try
            {
                if (this.TextureSequences == null)
                    this.TextureSequences = new List<TileSequence>();

                if (this.ObjectSequences == null)
                    this.ObjectSequences = new List<TileSequence>();

                if (this.TileEvents == null)
                    this.TileEvents = new List<TileEvent>();

                this.UpdateTileMapGraphicsContent();

                //Creer le tableau a 2D des tiles
                this.TabTiles = new Tile[this.NbLines, this.NbColumns];

                JSONTileMap jsonMap = new JSONTileMap();
                jsonMap.deserialize(folder, this);
                jsonMap = null;

                for (int i = 0; i < this.NbLines; i++)
                {
                    for (int j = 0; j < this.NbColumns; j++)
                    {
                        Tile tile = new Tile(i, j, this.TilesWidth, this.TilesHeight, true, this) ;
                        int indexTileInTab = i * this.NbColumns + j;

                        if (this.textureContent != null)
                        {
                            int indexTexture = this.textureContent[indexTileInTab];
                            if (indexTexture > -1 && this.TileModelsTextureUsed.Count > indexTexture)
                            {

                                tile.setTexture(this.TileModelsTextureUsed[indexTexture]);
                            }

                        }

                        if (this.objectContent != null)
                        {
                            int indexObject = this.objectContent[indexTileInTab];
                            if (indexObject > -1 && this.TileModelsObjectsUsed.Count > indexObject)
                                tile.setObjectImage(this.TileModelsObjectsUsed[indexObject]);

                        }

                        if (this.textureSequenceContent != null)
                        {
                            int indexSequenceTexture = this.textureSequenceContent[indexTileInTab];
                            if (indexSequenceTexture > -1 && this.TextureSequences.Count > indexSequenceTexture)
                                tile.setTextureSequence(this.TextureSequences[indexSequenceTexture]);
                        }

                        if (this.objectSequenceContent != null)
                        {
                            int indexSequenceObject = this.objectSequenceContent[indexTileInTab];
                            if (indexSequenceObject > -1 && this.ObjectSequences.Count > indexSequenceObject)
                                tile.setObjectSequence(this.ObjectSequences[indexSequenceObject]);

                        }

                        if (this.collisionContent != null)
                        {
                            int collide = this.collisionContent[indexTileInTab];
                            if (collide == 0)
                                tile.IsCrossable = true;
                            else
                                tile.IsCrossable = false;

                        }

                        if (this.eventContent != null)
                        {
                            int indexEvent = this.eventContent[indexTileInTab];
                            if (indexEvent > -1 && this.TileEvents.Count > indexEvent)
                                tile.setEvent(this.TileEvents[indexEvent]);

                        }
                        this.TabTiles[i, j] = tile;

                    }
                }

                return true;
            }
            catch(Exception ex)
            {
                return false;
            }
        }
Exemplo n.º 2
0
        public bool reloadFromFile(string folder)
        {
            try
            {
                //Creer un tableau de textureFrame
                int nbTotalTiles = this.NbColumns * this.NbLines;

                //Creer le tableau a 2D des tiles
                this.TabTiles = new Tile[this.NbLines, this.NbColumns];

                string[] tabFrameTexture = new string[nbTotalTiles];
                string[] tabFrameObj = new string[nbTotalTiles];

                //Lire le fichier des textures devant exister
                string finalpath = folder + "\\" + this.TilesMapName.ToLower() + "texturesinitfile.txt";

                //Lire le fichier des objets devant exister
                string finalpathObj = folder + "\\" + this.TilesMapName.ToLower() + "objectsinitfile.txt";

                if (File.Exists(finalpath) && File.Exists(finalpathObj))
                {
                    //Lire le fichier
                    string[] textContent = File.ReadAllLines(finalpath);

                    //Lire le fichier
                    string[] objContent = File.ReadAllLines(finalpathObj);

                    int indexDepText = 0;
                    int indexFinText = 0;
                    string indexFrameTexture = null;
                    int lastIndexOfText = 0;

                    int indexDepObj = 0;
                    int indexFinObj = 0;
                    string indexFrameObj = null;
                    int lastIndexOfObj = 0;

                    for (int i = 0; i < this.NbLines; i++)
                    {
                        indexDepText = 0;
                        indexFinText = 0;
                        indexFrameTexture = null;
                        lastIndexOfText = 0;

                        indexDepObj = 0;
                        indexFinObj = 0;
                        indexFrameObj = null;
                        lastIndexOfObj = 0;

                        for (int j = 0; j < this.NbColumns; j++)
                        {

                            //Creer une Tile
                            Tile tile = new Tile(i, j, this.TilesWidth, this.TilesHeight, true, this);

                            //Recuperer la texture
                            indexDepText = textContent[i].IndexOf("i", lastIndexOfText);
                            indexFinText = textContent[i].IndexOf("i", indexDepText + 1);

                            indexFrameTexture = textContent[i].Substring(indexDepText + 1, indexFinText - indexDepText - 1);
                            lastIndexOfText = indexFinText;

                            //Definir la texture du tile si elle existe
                            if (indexFrameTexture != null && !indexFrameTexture.Equals("N"))
                            {
                                int index = Convert.ToInt32(indexFrameTexture) - 1;
                                if (index < this.TileModelsTextureUsed.Count && index > -1)
                                    tile.setTexture(this.TileModelsTextureUsed[index]);
                            }

                            //Recuperer l'objet
                            indexDepObj = objContent[i].IndexOf("i", lastIndexOfObj);
                            indexFinObj = objContent[i].IndexOf("i", indexDepObj + 1);
                            indexFrameObj = objContent[i].Substring(indexDepObj + 1, indexFinObj - indexDepObj - 1);
                            lastIndexOfObj = indexFinObj;

                            //Definir l'image objet du tile si elle existe
                            if (indexFrameObj != null && !indexFrameObj.Equals("N"))
                            {
                                int index = Convert.ToInt32(indexFrameObj) - 1;
                                if (index < this.TileModelsObjectsUsed.Count && index > -1)
                                    tile.setObjectImage(this.TileModelsObjectsUsed[index]);

                            }

                            //L'inserer dans les tableau des tiles
                            this.TabTiles[i, j] = tile;
                        }
                    }

                }
                else
                {
                    return false;
                }

                return true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error during tiles map reloading !\n" + ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return false;
            }
        }