コード例 #1
0
ファイル: FCYResPackage.cs プロジェクト: zhangshunhua/fancy2d
        /// <summary>
        /// 从文件创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="Name">名称</param>
        /// <param name="FileName">文件名</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name, string FileName)
            : base(Parent, Name)
        {
            m_Package = ParentFile;

            FileStream tFile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);

            ReplaceStream(tFile);
        }
コード例 #2
0
ファイル: FCYResPackage.cs プロジェクト: zhangshunhua/fancy2d
        /// <summary>
        /// 从XML数据创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml数据</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.GetAttribute("Name"))
        {
            m_Package = ParentFile;

            // 检查Xml是否有效
            if (XmlNode.Name != "Node")
            {
                throw new FCYExcpInvalidNode("Not a Node.");
            }

            // 设置额外数据
            AdditionData = XmlNode.InnerText;

            // 原始大小
            if (XmlNode.HasAttribute("OrgSize"))
            {
                m_DataRealSize = Convert.ToUInt32(XmlNode.GetAttribute("OrgSize"));
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }

            // 压缩后大小
            if (XmlNode.HasAttribute("CompressedSize"))
            {
                m_DataCompressedSize = Convert.ToUInt32(XmlNode.GetAttribute("CompressedSize"));
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }

            // 位移量
            if (XmlNode.HasAttribute("Offset"))
            {
                m_MainDataOffset = Convert.ToUInt32(XmlNode.GetAttribute("Offset"));
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }

            // 是否压缩
            if (XmlNode.HasAttribute("IsCompressed"))
            {
                m_IsCompressed = XmlNode.GetAttribute("IsCompressed") == "yes" ? true : false;
            }
            else
            {
                throw new FCYExcpNodeErr("Attribute Err.");
            }
        }
コード例 #3
0
ファイル: FCYResPackage.cs プロジェクト: zhangshunhua/fancy2d
        /// <summary>
        /// 从Xml创建文件夹节点
        /// </summary>
        /// <param name="Package">绑定的资源包</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml节点</param>
        public FCYResPackageFloderNode(FCYResPackage Package, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.HasAttribute("Name") ? XmlNode.GetAttribute("Name") : "")
        {
            m_NodeList.Clear();

            foreach (XmlElement x in XmlNode)
            {
                if (x.Name == "Floder")
                {
                    FCYResPackageFloderNode tFloder = new FCYResPackageFloderNode(Package, this, x);
                    Add(tFloder);
                }
                else
                {
                    FCYResPackageDataNode tData = new FCYResPackageDataNode(Package, this, x);
                    Add(tData);
                }
            }
        }
コード例 #4
0
ファイル: FCYResPackage.cs プロジェクト: socoolch/fancy2d
        /// <summary>
        /// 从Xml创建文件夹节点
        /// </summary>
        /// <param name="Package">绑定的资源包</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml节点</param>
        public FCYResPackageFloderNode(FCYResPackage Package, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.HasAttribute("Name") ? XmlNode.GetAttribute("Name") : "")
        {
            m_NodeList.Clear();

            foreach (XmlElement x in XmlNode)
            {
                if (x.Name == "Floder")
                {
                    FCYResPackageFloderNode tFloder = new FCYResPackageFloderNode(Package, this, x);
                    Add(tFloder);
                }
                else
                {
                    FCYResPackageDataNode tData = new FCYResPackageDataNode(Package, this, x);
                    Add(tData);
                }
            }
        }
コード例 #5
0
ファイル: FCYResPackage.cs プロジェクト: socoolch/fancy2d
        /// <summary>
        /// 从XML数据创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="XmlNode">Xml数据</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, XmlElement XmlNode)
            : base(Parent, XmlNode.GetAttribute("Name"))
        {
            m_Package = ParentFile;

            // 检查Xml是否有效
            if (XmlNode.Name != "Node")
                throw new FCYExcpInvalidNode("Not a Node.");

            // 设置额外数据
            AdditionData = XmlNode.InnerText;

            // 原始大小
            if (XmlNode.HasAttribute("OrgSize"))
                m_DataRealSize = Convert.ToUInt32(XmlNode.GetAttribute("OrgSize"));
            else
                throw new FCYExcpNodeErr("Attribute Err.");

            // 压缩后大小
            if (XmlNode.HasAttribute("CompressedSize"))
                m_DataCompressedSize = Convert.ToUInt32(XmlNode.GetAttribute("CompressedSize"));
            else
                throw new FCYExcpNodeErr("Attribute Err.");

            // 位移量
            if (XmlNode.HasAttribute("Offset"))
                m_MainDataOffset = Convert.ToUInt32(XmlNode.GetAttribute("Offset"));
            else
                throw new FCYExcpNodeErr("Attribute Err.");

            // 是否压缩
            if (XmlNode.HasAttribute("IsCompressed"))
                m_IsCompressed = XmlNode.GetAttribute("IsCompressed") == "yes" ? true : false;
            else
                throw new FCYExcpNodeErr("Attribute Err.");
        }
コード例 #6
0
ファイル: FCYResPackage.cs プロジェクト: socoolch/fancy2d
        /// <summary>
        /// 从文件创建一个节点
        /// </summary>
        /// <param name="ParentFile">父文件</param>
        /// <param name="Parent">父节点</param>
        /// <param name="Name">名称</param>
        /// <param name="FileName">文件名</param>
        public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name, string FileName)
            : base(Parent, Name)
        {
            m_Package = ParentFile;

            FileStream tFile = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
            ReplaceStream(tFile);
        }
コード例 #7
0
ファイル: FCYResPackage.cs プロジェクト: socoolch/fancy2d
 /// <summary>
 /// 创建一个节点
 /// </summary>
 /// <param name="ParentFile">父文件</param>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">名称</param>
 public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name)
     : base(Parent, Name)
 {
     m_Package = ParentFile;
 }
コード例 #8
0
ファイル: MainForm.cs プロジェクト: socoolch/fancy2d
        // --- 新建 ---
        private void toolStripButton_New_Click(object sender, EventArgs e)
        {
            if (treeView_Main.Tag != null)
            {
                if (MessageBox.Show("确认要创建新文件?", "创建", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                    return;
            }

            updateDetail(null);

            FCYResPackage tPackage = new FCYResPackage();

            // 清空
            treeView_Main.Nodes.Clear();

            // 创建根节点
            TreeNode tRootNode = new TreeNode("根节点",0,0);
            tRootNode.Tag = tPackage.RootNode;
            treeView_Main.Nodes.Add(tRootNode);

            // 绑定数据
            treeView_Main.Tag = tPackage;
            GC.Collect();
        }
コード例 #9
0
ファイル: MainForm.cs プロジェクト: socoolch/fancy2d
        private void openFile(string Path)
        {
            FCYResPackage tPackage = null;

            try
            {
                tPackage = new FCYResPackage(Path);
            }
            catch (FCYExcpOpenErr expt)
            {
                showErr("打开文件失败。该文件可能已被占用。\n\n详细信息:\n" + expt.Message, "打开失败");
                return;
            }

            // 清空
            treeView_Main.Nodes.Clear();

            updateDetail(null);

            // 创建根节点
            TreeNode tRootNode = new TreeNode("根节点", 0, 0);
            tRootNode.Tag = tPackage.RootNode;

            // 绑定数据
            treeView_Main.Tag = tPackage;
            GC.Collect();

            // 读取整个流
            foreach (FCYResPackageNode x in tPackage.RootNode.NodeList)
            {
                tRootNode.Nodes.Add(readNodes(x));
            }

            // 加入根节点
            treeView_Main.Nodes.Add(tRootNode);

            treeView_Main.ExpandAll();
        }
コード例 #10
0
ファイル: FCYResPackage.cs プロジェクト: zhangshunhua/fancy2d
 /// <summary>
 /// 创建一个节点
 /// </summary>
 /// <param name="ParentFile">父文件</param>
 /// <param name="Parent">父节点</param>
 /// <param name="Name">名称</param>
 public FCYResPackageDataNode(FCYResPackage ParentFile, FCYResPackageFloderNode Parent, string Name)
     : base(Parent, Name)
 {
     m_Package = ParentFile;
 }