private bool BuildMCNK(BinaryReader reader)
        {
            try
            {
                for (int x = 0; x < Constants.TileSize; x++)
                {
                    for (int y = 0; y < Constants.TileSize; y++)
                    {
                        reader.SetPosition(TilesInformation[x, y].offset);

                        DataChunkHeader.Fill(reader);
                        if (DataChunkHeader.Token != Tokens.MCNK)
                        {
                            throw new Exception($"Invalid token, got [{DataChunkHeader.Token}] expected {"[MCNK]"}");
                        }

                        Tiles[x, y] = new SMChunk(reader);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
            }

            return(false);
        }
        private bool ReadMODF()
        {
            try
            {
                if (this.IsEOF())
                {
                    return(false);
                }

                DataChunkHeader.Fill(this);
                if (DataChunkHeader.Token == Tokens.MODF)
                {
                    MODF = new SMMapObjDef(this);
                }
                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
            }

            return(false);
        }