예제 #1
0
        public void SavePuzzle()
        {
            string       saveName = Happiness.PuzzleSaveName(m_Puzzle.m_iSize, m_iPuzzleIndex);
            FileStream   fs       = File.Open(saveName, FileMode.Create);
            BinaryWriter bw       = new BinaryWriter(fs);

            bw.Write(ElapsedTime);
            bw.Write(m_iHintCount);
            bw.Write(m_iMegaHintCount);
            bw.Write(m_History.Count);
            foreach (Action a in m_History)
            {
                a.Save(bw, m_Puzzle.m_iSize);
            }
            for (int iRow = 0; iRow < m_Puzzle.m_iSize; iRow++)
            {
                for (int iCol = 0; iCol < m_Puzzle.m_iSize; iCol++)
                {
                    for (int iIcon = 0; iIcon < m_Puzzle.m_iSize; iIcon++)
                    {
                        bw.Write(m_Puzzle.m_Rows[iRow].m_Cells[iCol].m_bValues[iIcon]);
                    }
                }
            }
            bw.Close();
        }
예제 #2
0
        public void LoadPuzzle()
        {
            string saveName = Happiness.PuzzleSaveName(m_Puzzle.m_iSize, m_iPuzzleIndex);

            if (File.Exists(saveName))
            {
                FileStream   fs = File.OpenRead(saveName);
                BinaryReader br = new BinaryReader(fs);

                double elapsed = br.ReadDouble();
                m_PuzzleStart    = m_PuzzleStart.AddSeconds(-elapsed);
                m_iHintCount     = br.ReadInt32();
                m_iMegaHintCount = br.ReadInt32();
                int historyCount = br.ReadInt32();
                m_History = new List <Action>();
                for (int i = 0; i < historyCount; i++)
                {
                    m_History.Add(Action.Load(br, m_Puzzle.m_iSize));
                }
                for (int iRow = 0; iRow < m_Puzzle.m_iSize; iRow++)
                {
                    for (int iCol = 0; iCol < m_Puzzle.m_iSize; iCol++)
                    {
                        for (int iIcon = 0; iIcon < m_Puzzle.m_iSize; iIcon++)
                        {
                            m_Puzzle.m_Rows[iRow].m_Cells[iCol].m_bValues[iIcon] = br.ReadBoolean();
                        }
                        m_Puzzle.m_Rows[iRow].m_Cells[iCol].m_iFinalIcon = m_Puzzle.m_Rows[iRow].m_Cells[iCol].GetRemainingIcon();
                    }
                }
                br.Close();
            }
        }
예제 #3
0
        public void SavePuzzle()
        {
            string       saveName = Happiness.PuzzleSaveName(m_Puzzle.m_iSize, m_iPuzzleIndex);
            MemoryStream ms       = new MemoryStream();
            BinaryWriter bw       = new BinaryWriter(ms);

            bw.Write(ElapsedTime);
            bw.Write(m_iHintCount);
            bw.Write(m_iMegaHintCount);
            bw.Write(m_History.Count);
            foreach (Action a in m_History)
            {
                a.Save(bw, m_Puzzle.m_iSize);
            }
            for (int iRow = 0; iRow < m_Puzzle.m_iSize; iRow++)
            {
                for (int iCol = 0; iCol < m_Puzzle.m_iSize; iCol++)
                {
                    for (int iIcon = 0; iIcon < m_Puzzle.m_iSize; iIcon++)
                    {
                        bw.Write(m_Puzzle.m_Rows[iRow].m_Cells[iCol].m_bValues[iIcon]);
                    }
                }
            }
            FileManager.Instance.WriteAllBytes(saveName, ms.ToArray());
            bw.Dispose();
        }
예제 #4
0
        void DeleteSavedPuzzle()
        {
            string saveName = Happiness.PuzzleSaveName(m_Puzzle.m_iSize, m_iPuzzleIndex);

            if (File.Exists(saveName))
            {
                File.Delete(saveName);
            }
        }