Example #1
0
        public static void SaveUsers()
        {
            if (File.Exists(usersFile))
            {
                if (m_users == null || (lastSavedUsers != null && lastSavedUsers.Equals(m_users)))
                {
                    return;
                }

                Debug.Log("Сохраняю список пользователей...");
                string backupFile = backupDir + "/" + usersFile + ".";
                Directory.CreateDirectory(backupDir);

                List <string> files = new List <string>(Directory.GetFiles(backupDir, "*.xml.*"));

                if (files.Count > 9)
                {
                    backupFile += "9";
                    if (File.Exists(backupFile))
                    {
                        File.Delete(backupFile);
                    }
                }
                else
                {
                    string last = "";

                    if (files.Count > 0)
                    {
                        files.Sort((a, b) => a.CompareTo(b));
                        files.Reverse();
                        last = files[0].Remove(0, files[0].LastIndexOf(".") + 1);
                    }

                    if (!int.TryParse(last, out int lastInt))
                    {
                        backupFile += "0";
                    }
                    else
                    {
                        backupFile += lastInt + 1;
                    }
                }

                File.Move(usersFile, backupFile);
            }

            XmlSerializer formatter = new XmlSerializer(typeof(UsersObj));

            using (FileStream fs = new FileStream(usersFile, FileMode.OpenOrCreate))
            {
                formatter.Serialize(fs, m_users);
            }
            using (FileStream fs = new FileStream(usersFile, FileMode.OpenOrCreate))
            {
                lastSavedUsers = (UsersObj)formatter.Deserialize(fs);
            }
        }
Example #2
0
        public static bool LoadUsers(byte id = 0)
        {
            if (File.Exists(usersFile))
            {
                try
                {
                    using (FileStream fs = new FileStream(usersFile, FileMode.Open))
                    {
                        XmlSerializer formatter = new XmlSerializer(typeof(UsersObj));
                        m_users = (UsersObj)formatter.Deserialize(fs);
                    }
                    using (FileStream fs = new FileStream(usersFile, FileMode.Open))
                    {
                        XmlSerializer formatter = new XmlSerializer(typeof(UsersObj));
                        lastSavedUsers = (UsersObj)formatter.Deserialize(fs);
                    }
                    return(true);
                }
                catch (Exception e)
                {
                    int    i       = 0;
                    string errFile = usersFile + ".err";

                    while (File.Exists(errFile + i))
                    {
                        if (++i > 9)
                        {
                            break;
                        }
                    }
                    File.Move(usersFile, errFile + i);

                    Debug.LogException(e);
                    return(LoadBackup(id));
                }
            }
            else
            {
                if (LoadBackup(id))
                {
                    return(true);
                }
                else
                {
                    m_users = new UsersObj();
                    SaveUsers();
                }

                return(false);
            }
        }
Example #3
0
        public bool Equals(UsersObj obj)
        {
            bool ret = users.Count == obj.users.Count;

            ret &= lastUMid == obj.lastUMid;
            ret &= lastSignalNumer == obj.lastSignalNumer;
            if (ret)
            {
                foreach (int user in obj.users)
                {
                    ret &= users.Contains(user);
                    if (!ret)
                    {
                        break;
                    }
                }
            }
            return(ret);
        }