Exemplo n.º 1
0
/****************** Modifier Management **********************/
    public void RefreshModifiers()
    {
        _CombinedMods = new ModifierCollection(Modifiers);
        // TODO: Check for attunement to character
        foreach (Item item in EquippedItems)
        {
            _CombinedMods.Add(item.Modifiers);
        }
    }
Exemplo n.º 2
0
        private ModifierCollection GetNoDirModifiers(string moduleRootDir, DirectoryInfo dir)
        {
            ModifierCollection list = new ModifierCollection();

            Modifier m = new Modifier();
            m.ActionMode = ActionType.UpdateFile;
            m.FileMode = FileType.Directory;
            m.Path = PathHelper.GetServerPath(moduleRootDir, dir.FullName);
            list.Add(m);

            foreach (FileInfo file in dir.GetFiles())
            {
                Modifier fm = new Modifier();
                fm.FileMode = FileType.File;
                fm.ActionMode = ActionType.UpdateFile;
                fm.Path = file.FullName;
                list.Add(fm);
            }

            foreach (DirectoryInfo sub in dir.GetDirectories())
            {
                list.Import(GetNoDirModifiers(moduleRootDir, sub));
            }

            return list;
        }
Exemplo n.º 3
0
        private ModifierCollection CompareDir(DirectoryInfo dir, XmlElement dirElement)
        {
            ModifierCollection list = new ModifierCollection();

            XmlHelper h = new XmlHelper(dirElement);
            foreach (XmlElement subDir in h.GetElements("Directory"))
            {
                string name = subDir.GetAttribute("Name");
                DirectoryInfo sd = null;
                foreach (DirectoryInfo sub in dir.GetDirectories())
                {
                    if (sub.Name == name)
                    {
                        sd = sub;
                        break;
                    }
                }
                if (sd == null)
                {
                    Modifier m = new Modifier();
                    m.ActionMode = ActionType.SendDelete;
                    m.FileMode = FileType.Directory;
                    m.Path = PathHelper.GetServerPath(this, subDir);
                    list.Add(m);
                }
                else
                {
                    ModifierCollection mc = CompareDir(sd, subDir);
                    list.Import(mc);
                }
            }

            foreach (DirectoryInfo sub in dir.GetDirectories())
            {
                if (h.GetElement("Directory[@Name='" + sub.Name + "']") == null)
                {
                    ModifierCollection mc = this.GetNoDirModifiers(this.LocalPath, sub);
                    list.Import(mc);
                }
            }

            foreach (XmlElement subFile in h.GetElements("File"))
            {
                string name = subFile.GetAttribute("Name");
                FileInfo file = null;
                foreach (FileInfo sub in dir.GetFiles())
                {
                    if (sub.Name != name)
                        continue;
                    file = sub;
                    break;
                }
                if (file == null)
                {
                    Modifier m = new Modifier();
                    m.ActionMode = ActionType.SendDelete;
                    m.FileMode = FileType.File;
                    m.Path = PathHelper.GetServerPath(this, subFile);
                    list.Add(m);
                }
                else
                {
                    string md5 = subFile.GetAttribute("MD5");
                    string fileMD5 = this.ComputeFileMD5(file);

                    if (md5 != fileMD5)
                    {
                        Modifier m = new Modifier();
                        m.ActionMode = ActionType.UpdateFile;
                        m.FileMode = FileType.File;
                        m.Path = file.FullName;
                        list.Add(m);
                    }
                }
            }

            foreach (FileInfo sub in dir.GetFiles())
            {
                if (h.GetElement("File[@Name='" + sub.Name + "']") == null)
                {
                    Modifier m = new Modifier();
                    m.ActionMode = ActionType.UpdateFile;
                    m.FileMode = FileType.File;
                    m.Path = sub.FullName;
                    list.Add(m);
                }
            }
            return list;
        }