Ejemplo n.º 1
0
        internal void Load_Game()
        {
            if (File.Exists("chess.sav"))
            {
                GetActivePlayer().timer.Stop();
                this.View.movesList.Items.Clear();

                FileStream      fileStream = new FileStream("chess.sav", FileMode.Open);
                BinaryFormatter formatter  = new BinaryFormatter();

                this.white          = (Player)formatter.Deserialize(fileStream);
                this.black          = (Player)formatter.Deserialize(fileStream);
                this.board.chessman = (List <Chessman>)formatter.Deserialize(fileStream);
                this.logger.logs    = (List <LogEntry>)formatter.Deserialize(fileStream);

                fileStream.Close();

                // Nach dem Laden den Schachfiguren die Eigenschaft - Game - neu zuweisen
                // und die Figuren auf dem Brett neu aufstellen
                foreach (Chessman chessman in this.board.chessman)
                {
                    chessman.Game = this;
                }

                board.Clear();
                board.DisplayChessman();
                this.ShowInfo("");

                // Timer neu zuweisen
                white.timer.display = this.view.timer_lbl_1;
                black.timer.display = this.view.timer_lbl_2;

                white.timer.Reset();
                black.timer.Reset();

                white.timer.RefreshDisplay();
                black.timer.RefreshDisplay();

                GetActivePlayer().timer.Start();

                // Log-Einträge ( Historie der Züge )
                // der Liste wieder neu hinzufügen
                foreach (LogEntry log in this.logger.logs)
                {
                    this.View.movesList.Items.Add(log);
                }

                // Die Status-Anzeige des Schachbretts aktualisieren
                RefreshBoardStatus();
            }
            else
            {
                this.ShowInfo("KEIN GESPEICHERTES SPIEL VORHANDEN");
            }
        }