Example #1
0
        public Mundo(RenderWindow window, View view)
        {
            /* Inicializa um Mundo */

            this.window    = window;
            this.view      = view;
            GerenciadorEnt = new GerenciadorEntidades(window, view);
            auxVec         = new Vector2f();
            MusicaAux      = null;
            musicas        = new List <Musica>();
            EscadaAux1     = null;
            EscadaAux2     = null;
        }
        public void CarregarMundo(GerenciadorEntidades ger)
        {
            /* Carrega um mundo a partir de um arquivo binário
             * Não carrega mecanismos, escadas, armadilhas, músicas, diálogos e eventos */

            string path = "";

            // Cria uma janela de carregamento
            OpenFileDialog openFileDialog = new OpenFileDialog
            {
                InitialDirectory = @"C:\",
                Title            = "Carregar Mundo",
                CheckFileExists  = true,
                CheckPathExists  = true,
                DefaultExt       = "aql",
                RestoreDirectory = true,

                // Define que o arquivo carregado terá a extensão 'aql' (Alveric's Quest Level)
                Filter = "aql files (*.aql)|*.aql",
            };

            // Abre a janela de carregamento, se o botão 'OK' for pressionado 'path' recebe o caminho para o arquivo
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                path = openFileDialog.FileName;
            }

            if (path != "")
            {
                try
                {
                    // Limpa o mundo atual
                    ger.LimparListas();

                    using FileStream input = File.OpenRead(path);

                    // Abre um arquivo binário e restaura um mundo com suas informações
                    using (BinaryReader reader = new BinaryReader(input))
                    {
                        // Recebe a quandiade de elementos extistentes em cada lista
                        int etCount  = reader.ReadInt32();
                        int eiCount  = reader.ReadInt32();
                        int mecCount = reader.ReadInt32();
                        int armCount = reader.ReadInt32();
                        int escCount = reader.ReadInt32();

                        // Recria as entidades tangíeis salvas
                        for (int i = 0; i < etCount; i++)
                        {
                            ger.InserirEntidade(reader.ReadSingle(), reader.ReadSingle(), reader.ReadInt32(), reader.ReadInt32());
                        }

                        // Recria as entidades intangíeis salvas
                        for (int i = 0; i < eiCount; i++)
                        {
                            ger.InserirEntidade(reader.ReadSingle(), reader.ReadSingle(), reader.ReadInt32(), reader.ReadInt32());
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }