You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1334 lines
48 KiB
1334 lines
48 KiB
3 years ago
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using AX.MessageSystem;
|
||
|
using AX.TrackRecord;
|
||
|
using UnityEngine.EventSystems;
|
||
|
using UnityEngine.UI;
|
||
|
using System;
|
||
|
using System.IO;
|
||
|
using UnityEngine.SceneManagement;
|
||
|
using AX.NetworkSystem;
|
||
|
using System.Text.RegularExpressions;
|
||
|
using System.Linq;
|
||
|
using System.Xml;
|
||
|
using DevelopEngine;
|
||
|
|
||
|
public class NodeSet : SingletonMono<NodeSet> {
|
||
|
/**
|
||
|
* 节点显示面板
|
||
|
*/
|
||
|
private Button XinJianBtn;//新建按钮
|
||
|
public Button JiaZaiBtn;//加载按钮
|
||
|
public GameObject NodePrefab;//节点预设
|
||
|
private GameObject NodeFather;//节点预设的父物体
|
||
|
private Text XinJianText;//新建按钮下的文本框
|
||
|
private Text BtText;//标题文本框
|
||
|
[HideInInspector]
|
||
|
public GameObject PlaneWithRercod;//添加记录的面板
|
||
|
private InputField XinJianNodeName;//记录面板的详细输入框
|
||
|
private InputField XinJianIntroName;//记录面板的名字输入框
|
||
|
private InputField NodeNameWithRecord;//编辑节点名称输入框
|
||
|
private InputField NodeIntroWithRecord;//编辑节点详细输入框
|
||
|
private GameObject PingBiKuang;//屏蔽框
|
||
|
//public static NodeSet Instance;
|
||
|
public GameObject AddBtn;
|
||
|
private Text CousrseName;
|
||
|
public static CoursewareInfo Cousrsewse;
|
||
|
|
||
|
void Awake()
|
||
|
{
|
||
|
//if (Instance == null)
|
||
|
//{
|
||
|
// Instance = this;
|
||
|
//}
|
||
|
//CheckPath();
|
||
|
AwakeOnDestroy();
|
||
|
}
|
||
|
void Start ()
|
||
|
{
|
||
|
|
||
|
|
||
|
XinJianBtn = this.transform.Find("XianJian").GetComponent<Button>();
|
||
|
JiaZaiBtn = this.transform.Find("JiaZai").GetComponent<Button>();
|
||
|
CousrseName = this.transform.Find("BT").GetComponent<Text>();
|
||
|
NodeFather = this.transform.Find("Scroll View (1)").Find("Viewport").Find("Content").gameObject;
|
||
|
BtText = this.transform.Find("BT").GetComponent<Text>();
|
||
|
XinJianText = XinJianBtn.transform.Find("Text").GetComponent<Text>();
|
||
|
PlaneWithRercod = this.transform.parent.Find("XianJianJieDianPlane").gameObject;
|
||
|
XinJianNodeName = PlaneWithRercod.transform.Find("Name").GetComponent<InputField>();
|
||
|
XinJianIntroName = PlaneWithRercod.transform.Find("Scroll View/Viewport/Intro").GetComponent<InputField>();
|
||
|
NodeNameWithRecord = this.transform.parent.Find("NodeIntroShowWin").Find("Name").GetComponent<InputField>();
|
||
|
NodeIntroWithRecord = this.transform.parent.Find("NodeIntroShowWin").Find("Scroll View/Viewport/Intro").GetComponent<InputField>();
|
||
|
XinJianNodeName.onValidateInput += ValidCharDetect._OnValidateInput;
|
||
|
NewFuGaiIntro = this.transform.parent.Find("NewFuGaiShowWin").Find("Intro").GetComponent<InputField>();
|
||
|
|
||
|
XinJianBtn.onClick.AddListener(StrartRecord);
|
||
|
JiaZaiBtn.onClick.AddListener(LoadNode);
|
||
|
|
||
|
MessageDispatcher.AddListener("SpaceControl", SpacnControl);
|
||
|
if (ExamInfoHelpClass.loadSceneMode != ExamInfoHelpClass.LoadSceneMode.PrepareMode)
|
||
|
{
|
||
|
this.XinJianBtn.gameObject.SetActive(false);
|
||
|
if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.EditCourceware)
|
||
|
{
|
||
|
this.XinJianBtn.gameObject.SetActive(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
MySceneManager.BackToLastSceneEvent += BackToLastSceneEvent;
|
||
|
|
||
|
JiaZaiBtn.gameObject.SetActive(false);
|
||
|
//第二套
|
||
|
//this.gameObject.SetActive(false);
|
||
|
}
|
||
|
public void SpacnControl(IMessage mes)
|
||
|
{
|
||
|
if ((string)mes.Data == "NodeSet")
|
||
|
{
|
||
|
if (LoadManager.Instance.IsPlayBacking && !TheBackView.instance.VidoSHOW.activeInHierarchy && !TheBackView.instance.PictSHOW.activeInHierarchy)
|
||
|
{
|
||
|
TheBackView.instance.ControlBtn();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
private void BackToLastSceneEvent(MyEventArgs args)
|
||
|
{
|
||
|
if (args.destinateScene == "PrepareLessons")
|
||
|
{
|
||
|
NodeListName.Clear();
|
||
|
Debug.Log("NodeListName"+NodeListName.Count);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void GenerateNodexml()
|
||
|
{
|
||
|
string filepath = Application.dataPath + @"/ExtendFolder/xml/" + "NodeNameList.xml";
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Name")
|
||
|
{
|
||
|
foreach (XmlElement node in elem)
|
||
|
{
|
||
|
GameObject checkBox = Instantiate(NodePrefab) as GameObject;
|
||
|
checkBox.transform.SetParent(NodeFather.transform);
|
||
|
checkBox.transform.localScale = new Vector3(1, 1, 1);
|
||
|
checkBox.GetComponentInChildren<Text>().text = node.InnerText;
|
||
|
checkBox.name = node.InnerText;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
void GenerateNode() //开始创建节点预设
|
||
|
{
|
||
|
//List<string> Node = new List<string>();
|
||
|
|
||
|
//string path = ExamInfoHelpClass.CurrentWorkPath;
|
||
|
//string fileDir = Path.GetDirectoryName(path);
|
||
|
|
||
|
//if (Directory.Exists(fileDir))
|
||
|
//{
|
||
|
// string[] files = Directory.GetFiles(fileDir);
|
||
|
// List<string> ssss = files.OrderBy(ss => new FileInfo(ss).CreationTime).ToList();
|
||
|
// foreach (string file in ssss)
|
||
|
// {
|
||
|
|
||
|
// string str = Path.GetFileName(file);
|
||
|
// if (!str.Contains(".meta"))
|
||
|
// {
|
||
|
// GameObject checkBox = Instantiate(NodePrefab) as GameObject;
|
||
|
// checkBox.transform.SetParent(NodeFather.transform);
|
||
|
// checkBox.transform.localScale = new Vector3(1, 1, 1);
|
||
|
|
||
|
// checkBox.GetComponentInChildren<Text>().text = str.Substring(0,str.Length-4);
|
||
|
// checkBox.name = str.Substring(0, str.Length - 4);
|
||
|
// Debug.Log(checkBox.name);
|
||
|
// checkBox.transform.SetAsLastSibling();
|
||
|
// }
|
||
|
// }
|
||
|
//}
|
||
|
|
||
|
|
||
|
//string Data = Cousrsewse.FilePath;
|
||
|
//CousrseName.text = Cousrsewse.Name;
|
||
|
//string[] char_Data = Data.Split(new char[] { ';' },System.StringSplitOptions.RemoveEmptyEntries);
|
||
|
//int t = 0;
|
||
|
//for (int i = 0; i <char_Data.Length; i++)
|
||
|
//{
|
||
|
// GameObject checkBox = Instantiate(NodePrefab) as GameObject;
|
||
|
// checkBox.transform.SetParent(NodeFather.transform);
|
||
|
// checkBox.transform.localScale = new Vector3(1, 1, 1);
|
||
|
|
||
|
// string name = char_Data[i].Substring(0,char_Data[i].Length-4);
|
||
|
// checkBox.GetComponentInChildren<Text>().text = name;
|
||
|
// checkBox.name = name;
|
||
|
// //针对编辑课件模式,要将当前课件文件复制到与新建课件统一的路径下,并添加到节点名数组中
|
||
|
// if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.EditCourceware)
|
||
|
// {
|
||
|
// File.Copy(ExamInfoHelpClass.CurrentWorkPath + "Coursewares/" + Cousrsewse.ID + "/" + char_Data[i], ExamInfoHelpClass.CurrentWorkPath + "Coursewares/" + char_Data[i]);
|
||
|
// NodeListName.Add(char_Data[i]);
|
||
|
// }
|
||
|
//}
|
||
|
}
|
||
|
public void StrartRecord()//开始记录方法
|
||
|
{
|
||
|
if (XinJianText.text == "新建记录")
|
||
|
{
|
||
|
|
||
|
if (CheckHasFireSpreading())
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"蔓延中,不能新建节点!");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (TreeViewControl__.Instance.HasItemSelected() < 0)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"请勾选确定新建位置!");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
XinJianText.text = "停止记录";
|
||
|
|
||
|
AddBtn.SetActive(true);
|
||
|
|
||
|
RecordManager.Instance.StartRecord();
|
||
|
|
||
|
JiaZaiBtn.gameObject.SetActive(false);
|
||
|
|
||
|
AddRecordTag.Instance.ThisButton.enabled = true;//zzj
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
XinJianText.text = "新建记录";
|
||
|
AddBtn.SetActive(false);
|
||
|
RecordManager.Instance.IsPause = true;
|
||
|
MessageDispatcher.SendMessage("OPEN", (object)PlaneWithRercod.name, "CUBE");
|
||
|
|
||
|
//JiaZaiBtn.gameObject.SetActive(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void StrartRecord_new(bool newFlag = true)//开始记录方法
|
||
|
{
|
||
|
if (newFlag)//新建节点
|
||
|
{
|
||
|
if (CheckHasFireSpreading())
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"蔓延中,不能新建节点!");
|
||
|
return;
|
||
|
}
|
||
|
if (LoadManager.Instance.IsPlayBacking)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"回放中,不能新建节点!");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
AddBtn.SetActive(true);
|
||
|
|
||
|
RecordManager.Instance.StartRecord();
|
||
|
|
||
|
AddRecordTag.Instance.ThisButton.enabled = true;//zzj
|
||
|
|
||
|
}
|
||
|
else//停止记录,保存节点
|
||
|
{
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private bool CheckHasFireSpreading()
|
||
|
{
|
||
|
Transform pfire = GameObject.Find("pfire").transform;
|
||
|
foreach(Transform fire in pfire)
|
||
|
{
|
||
|
if (fire.GetComponent<FireSpreadCtrl>())
|
||
|
{
|
||
|
if (fire.GetComponent<FireSpreadCtrl>().isSpreading)
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
public List<string> NodeListName = new List<string>();
|
||
|
public void SaveNode()//保存记录 //新建一个节点
|
||
|
{
|
||
|
if (XinJianNodeName.text.Equals("已经有此名字") || XinJianNodeName.text == "名字不能为空")
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
return;
|
||
|
}
|
||
|
if (XinJianNodeName.text == "" || XinJianNodeName.text==null)
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能为空");
|
||
|
return;
|
||
|
}
|
||
|
if(XinJianNodeName.text.Contains("/")|| XinJianNodeName.text.Contains("\\"))
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能包含/或\\");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
bool b = XinJianNodeName.text.IndexOf("\r\n") > 0;
|
||
|
if (b)
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能包含回车符号");
|
||
|
return;
|
||
|
}
|
||
|
if (TreeViewControl__.Instance.CheckFileTreeItems())
|
||
|
{
|
||
|
JiaZaiBtn.gameObject.SetActive(true);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
JiaZaiBtn.gameObject.SetActive(false);
|
||
|
}
|
||
|
|
||
|
string NodeName = XinJianNodeName.text;
|
||
|
string NodeIntro = XinJianIntroName.text;
|
||
|
string path = ExamInfoHelpClass.CurrentWorkPath;
|
||
|
string fileDir = Path.GetDirectoryName(path);
|
||
|
string ThePath = NodeName;
|
||
|
|
||
|
|
||
|
ShowNameText = "";
|
||
|
var treeItems = TreeViewControl__.Instance.TreeItems;
|
||
|
TreeViewname.Clear();
|
||
|
|
||
|
foreach (Transform item in treeItems)
|
||
|
{
|
||
|
if (item.GetComponentInChildren<Toggle>() && item.GetComponentInChildren<Toggle>().isOn)
|
||
|
{
|
||
|
var treeViewItem = item.GetComponent<TreeViewItem__>();
|
||
|
var count = treeViewItem.GetChildrenNumber();
|
||
|
var filepath = ExamInfoHelpClass.CurrentWorkPath + treeViewItem.Name + ".xml";
|
||
|
if (!File.Exists(filepath) && treeViewItem.GetHierarchy() < treeViewItem.maxHierarchy - 1)//新建节点添加到该层级下,Add即可
|
||
|
{
|
||
|
var pid = treeViewItem.ID;
|
||
|
ShowTheText(item);
|
||
|
|
||
|
for (int i = TreeViewname.Count - 1; i >= 0; i--)
|
||
|
{
|
||
|
ShowNameText += TreeViewname[i].ToString() + "-";
|
||
|
}
|
||
|
ShowNameText += ThePath;
|
||
|
|
||
|
if (TreeViewControl__.Instance.GetHierarchy_Name(treeViewItem.GetHierarchy(), ShowNameText))
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else//新建节点添加到该节点后边,需要Insert
|
||
|
{
|
||
|
|
||
|
var pid = treeViewItem.parentID;
|
||
|
ShowTheText(item);
|
||
|
|
||
|
for (int i = TreeViewname.Count - 1; i >= 0; i--)
|
||
|
{
|
||
|
ShowNameText += TreeViewname[i].ToString() + "-";
|
||
|
}
|
||
|
ShowNameText += ThePath;
|
||
|
|
||
|
if (TreeViewControl__.Instance.GetHierarchy_Name(treeViewItem.GetHierarchy(), ShowNameText))
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
if (Directory.Exists(fileDir))
|
||
|
{
|
||
|
string[] files = Directory.GetFiles(fileDir);
|
||
|
foreach (string file in files)
|
||
|
{
|
||
|
string str = Path.GetFileName(file);
|
||
|
if (str.Equals(ShowNameText+".xml"))
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
string filename = ExamInfoHelpClass.CurrentWorkPath + ShowNameText+ ".xml";
|
||
|
RecordManager.Instance.record.Intro = NodeIntro;
|
||
|
RecordManager.Instance.StopRecord_SerializeRecordToXML(filename, RecordManager.Instance.record);
|
||
|
XinJianNodeName.text = "";
|
||
|
XinJianIntroName.text = "";
|
||
|
MessageDispatcher.SendMessage("CLOSE", (object)PlaneWithRercod.name, "CUBE");
|
||
|
|
||
|
TreeViewControl__.Instance.AddNode(ShowNameText);
|
||
|
|
||
|
NodeListName.Add(NodeName + ".xml");
|
||
|
|
||
|
}
|
||
|
public void SaveNode_new()//保存记录 //新建一个节点
|
||
|
{
|
||
|
if (XinJianNodeName.text.Equals("已经有此名字") || XinJianNodeName.text == "名字不能为空")
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
return;
|
||
|
}
|
||
|
if (XinJianNodeName.text == "" || XinJianNodeName.text == null)
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能为空");
|
||
|
return;
|
||
|
}
|
||
|
if (XinJianNodeName.text.Contains("/") || XinJianNodeName.text.Contains("\\"))
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能包含/或\\");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
bool b = XinJianNodeName.text.IndexOf("\r\n") > 0;
|
||
|
if (b)
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能包含回车符号");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
string NodeName = XinJianNodeName.text;
|
||
|
string NodeIntro = XinJianIntroName.text;
|
||
|
string path = ExamInfoHelpClass.CurrentWorkPath;
|
||
|
string fileDir = Path.GetDirectoryName(path);
|
||
|
|
||
|
List<TreeViewData> nodeList = new List<TreeViewData>();
|
||
|
GetAllDates(ref nodeList);
|
||
|
var curNode = NodeSecondLevelControl.Instance.curNodeItem_SL;
|
||
|
var curParentID = TempDataManager.Instance.CurNodeID;//当前选中的一级节点的ID
|
||
|
if (curNode != null)
|
||
|
{
|
||
|
curParentID = curNode.GetData().ParentID;
|
||
|
}
|
||
|
var node = nodeList.Find(n =>
|
||
|
{
|
||
|
return n.ParentID == curParentID && n.Name == NodeName;
|
||
|
});
|
||
|
if (node != null)
|
||
|
{
|
||
|
XinJianNodeName.text = "";
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
string filename = ExamInfoHelpClass.CurrentWorkPath + NodeName + ".xml";
|
||
|
RecordManager.Instance.record.Intro = NodeIntro;
|
||
|
RecordManager.Instance.StopRecord_SerializeRecordToXML(filename, RecordManager.Instance.record);
|
||
|
XinJianNodeName.text = "";
|
||
|
XinJianIntroName.text = "";
|
||
|
MessageDispatcher.SendMessage("CLOSE", (object)PlaneWithRercod.name, "CUBE");
|
||
|
|
||
|
NodeSecondLevelControl.Instance.AddNode(NodeName, curParentID, GetNextID());
|
||
|
|
||
|
NodeListName.Add(NodeName + ".xml");
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// 通过键盘Arrow加载node 第一套
|
||
|
/// </summary>
|
||
|
public void KeyDownLoadNode2(int num)
|
||
|
{
|
||
|
if (TheBackView.instance.VidoSHOW.activeInHierarchy || TheBackView.instance.PictSHOW.activeInHierarchy)
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
var list = TreeViewControl__.Instance.Data;
|
||
|
int Count = TempDataManager.Instance.CurNodeID;
|
||
|
var data = list.Find(d => { return d.ID == Count; });
|
||
|
int Hierarchy = data.Hierarchy;
|
||
|
var index = list.FindIndex(d => { return d.ID == Count; });
|
||
|
if (num == 1)
|
||
|
{
|
||
|
for (int i = index + 1; i < list.Count; i++)
|
||
|
{
|
||
|
|
||
|
var filepath = ExamInfoHelpClass.CurrentWorkPath + list[i].Name + ".xml";
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
TheBackView.instance.ChongZhi();
|
||
|
string filename_ = list[i].Name + ".xml";
|
||
|
LoadManager.Instance.GetRecord_Load(filename_);
|
||
|
RecordFileName = filename_;
|
||
|
TreeViewControl__.Instance.SetToggleTrue(list[i].ID);
|
||
|
TempDataManager.Instance.CurNodeID = list[i].ID;
|
||
|
ShowNameText = "";
|
||
|
TreeViewname.Clear();
|
||
|
ShowNameText = TreeViewControl__.Instance.GetToggleGame().transform.GetComponent<TreeViewItem__>().Name;
|
||
|
MessageDispatcher.SendMessage("NodeLoadHints", (object)ShowNameText);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
for (int i = index - 1; i >= 0; i--)
|
||
|
{
|
||
|
|
||
|
var filepath = ExamInfoHelpClass.CurrentWorkPath + list[i].Name + ".xml";
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
TheBackView.instance.ChongZhi();
|
||
|
string filename_ = list[i].Name + ".xml";
|
||
|
LoadManager.Instance.GetRecord_Load(filename_);
|
||
|
RecordFileName = filename_;
|
||
|
TreeViewControl__.Instance.SetToggleTrue(list[i].ID);
|
||
|
TempDataManager.Instance.CurNodeID = list[i].ID;
|
||
|
ShowNameText = "";
|
||
|
TreeViewname.Clear();
|
||
|
ShowNameText = TreeViewControl__.Instance.GetToggleGame().transform.GetComponent<TreeViewItem__>().Name;
|
||
|
MessageDispatcher.SendMessage("NodeLoadHints", (object)ShowNameText);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// <summary>
|
||
|
/// 通过键盘Arrow加载node 第二套
|
||
|
/// </summary>
|
||
|
//public void KeyDownLoadNode2(int num)
|
||
|
//{
|
||
|
// if (TheBackView.instance.VidoSHOW.activeInHierarchy || TheBackView.instance.PictSHOW.activeInHierarchy)
|
||
|
// {
|
||
|
// return;
|
||
|
// }
|
||
|
// int CurID = TempDataManager.Instance.CurNodeID;
|
||
|
// GameObject chose = NodeSecondLevelControl.Instance.GetToggleGame();
|
||
|
// int index = chose.transform.GetSiblingIndex();
|
||
|
// GameObject Next = NodeSecondLevelControl.Instance.CheckGetSiblingIndex(index + num);
|
||
|
// if (Next != null)//如果当前选中的下一个不是空物体设置为选中状态
|
||
|
// {
|
||
|
// Next.GetComponent<Toggle>().isOn = true;
|
||
|
// }
|
||
|
// else//如果当前选中的下一个是空物体,展示下一个一级节点
|
||
|
// {
|
||
|
// GameObject OneLevel = HorizontalTreeSet.instance_.GetChoseToggle(num);
|
||
|
// if (OneLevel != null)
|
||
|
// {
|
||
|
// NodeSecondLevelControl.Instance.GetFather().GetComponent<Toggle>().isOn = true;
|
||
|
// }
|
||
|
// }
|
||
|
//}
|
||
|
/// <summary>
|
||
|
/// 关闭所有选中状态
|
||
|
/// </summary>
|
||
|
public void CLOSEALLToggle()
|
||
|
{
|
||
|
|
||
|
foreach (Transform child in NodeFather.transform) //遍历谁被勾选
|
||
|
{
|
||
|
if (child.Find("Toggle").GetComponent<Toggle>().isOn)
|
||
|
{
|
||
|
child.Find("Toggle").GetComponent<Toggle>().isOn = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 检查有没有选中的节点
|
||
|
/// </summary>
|
||
|
public GameObject checkToggle()
|
||
|
{
|
||
|
|
||
|
foreach (Transform child in NodeFather.transform) //遍历谁被勾选
|
||
|
{
|
||
|
if (child.Find("Toggle").GetComponent<Toggle>().isOn)
|
||
|
{
|
||
|
return child.gameObject;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
public void Back()
|
||
|
{
|
||
|
MySceneManager.BackToLastScene();
|
||
|
}
|
||
|
public void ClosePlaneWithRercod()//取消记录的保存
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("CLOSE", (object)PlaneWithRercod.name, "CUBE");
|
||
|
|
||
|
GameObject TipWindow = Instantiate(Resources.Load<GameObject>("UIPrefab/TipWindow"));
|
||
|
TipWindow.GetComponent<TipWindowManager>().SetWindow(
|
||
|
"是否放弃此条记录?", new UnityEngine.Events.UnityAction(OKSubmit), new UnityEngine.Events.UnityAction(NOSubmit));
|
||
|
}
|
||
|
public void OKSubmit()
|
||
|
{
|
||
|
XinJianText.text = "新建记录";
|
||
|
RecordManager.Instance.IsRecording = false;
|
||
|
AddBtn.SetActive(false);
|
||
|
XinJianNodeName.text = "";
|
||
|
XinJianIntroName.text = "";
|
||
|
if (TreeViewControl__.Instance.CheckFileTreeItems())
|
||
|
{
|
||
|
JiaZaiBtn.gameObject.SetActive(true);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
JiaZaiBtn.gameObject.SetActive(false);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
public void NOSubmit()
|
||
|
{
|
||
|
XinJianText.text = "停止记录";
|
||
|
JiaZaiBtn.gameObject.SetActive(false);
|
||
|
RecordManager.Instance.IsPause = false;
|
||
|
XinJianNodeName.text = "";
|
||
|
XinJianIntroName.text = "";
|
||
|
AddBtn.SetActive(true);
|
||
|
}
|
||
|
string TheFilePath;
|
||
|
|
||
|
public string RecordFileName;//用于修改标签简介时候的路径
|
||
|
public void LoadNode()//加载记录方法
|
||
|
{
|
||
|
//********************原来的加在节点的方法***********************
|
||
|
//bool hasIson = false;
|
||
|
//foreach (Transform child in NodeFather.transform)
|
||
|
//{
|
||
|
// if (child.Find("Toggle").GetComponent<Toggle>().isOn)
|
||
|
// {
|
||
|
// hasIson = true;
|
||
|
// }
|
||
|
//}
|
||
|
//if (!hasIson)
|
||
|
//{
|
||
|
// MessageDispatcher.SendMessage("Operatinghints", (object)"请勾选节点加载");
|
||
|
// return;
|
||
|
//}
|
||
|
//CheckPath();
|
||
|
//TheBackView.instance.ChongZhi();
|
||
|
//GameObject.Find("Canvas").transform.Find("时间轴").gameObject.SetActive(true);
|
||
|
//foreach (Transform child in NodeFather.transform)
|
||
|
//{
|
||
|
// if (child.Find("Toggle").GetComponent<Toggle>().isOn)
|
||
|
// {
|
||
|
// string filename_ =child.name + ".xml";
|
||
|
// LoadRecordFromFile(filename_);
|
||
|
// RecordFileName = filename_;
|
||
|
|
||
|
// if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.MakeScore)
|
||
|
// {
|
||
|
// GameObject.Find("Canvas").transform.Find("AddTag").gameObject.SetActive(true);
|
||
|
// }
|
||
|
|
||
|
// }
|
||
|
//}
|
||
|
//***************结束*****************************************
|
||
|
//record_Load = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename);
|
||
|
//GameObject
|
||
|
|
||
|
//**********************新的方法**********************
|
||
|
|
||
|
var treeItems = TreeViewControl__.Instance.TreeItems;
|
||
|
if (TreeViewControl__.Instance.HasItemSelected() < 0)
|
||
|
{
|
||
|
MessageDispatcher.SendMessage("Operatinghints", (object)"请勾选节点加载");
|
||
|
return;
|
||
|
}
|
||
|
Transform Trager = GameObject.Find("target").transform; Trager.transform.parent = null;
|
||
|
TheBackView.instance.ChongZhi();
|
||
|
//GameObject.Find("Canvas").transform.Find("时间轴").gameObject.SetActive(true);
|
||
|
foreach (Transform item in treeItems)
|
||
|
{
|
||
|
if(item.GetComponentInChildren<Toggle>() && item.GetComponentInChildren<Toggle>().isOn)
|
||
|
{
|
||
|
var treeviewItem = item.GetComponent<TreeViewItem__>();
|
||
|
string filename_ = treeviewItem.Name + ".xml";
|
||
|
//LoadRecordFromFile(filename_);
|
||
|
LoadManager.Instance.GetRecord_Load(filename_);
|
||
|
RecordFileName = filename_;
|
||
|
ShowNameText = "";
|
||
|
TreeViewname.Clear();
|
||
|
ShowTheText(item);
|
||
|
|
||
|
for (int i = TreeViewname.Count-1; i >= 0; i--)
|
||
|
{
|
||
|
ShowNameText += TreeViewname[i].ToString()+"-";
|
||
|
}
|
||
|
string STR;
|
||
|
if (treeviewItem.Name.Contains("-"))
|
||
|
{
|
||
|
string[] str = treeviewItem.Name.Split('-');
|
||
|
STR= str[str.Length - 1];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
STR = treeviewItem.Name;
|
||
|
}
|
||
|
|
||
|
ShowNameText += STR;
|
||
|
MessageDispatcher.SendMessage("NodeLoadHints", (object)ShowNameText);
|
||
|
TempDataManager.Instance.CurNodeID = treeviewItem.ID;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 点击显示节点信息后开始加载节点
|
||
|
/// </summary>
|
||
|
public void BecauseClickLoadNode()
|
||
|
{
|
||
|
if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.EditCourceware)
|
||
|
{
|
||
|
GameObject.Find("Canvas").transform.Find("AddTag").gameObject.SetActive(true);
|
||
|
}
|
||
|
GameObject.Find("Canvas").transform.Find("时间轴").gameObject.SetActive(true);
|
||
|
LoadManager.Instance.StartPlayBack(RecordFileName);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
string ShowNameText = "";
|
||
|
List<string> TreeViewname = new List<string>();
|
||
|
public void ShowTheText(Transform item)
|
||
|
{
|
||
|
|
||
|
var parent=item.GetComponent<TreeViewItem__>().GetParent();
|
||
|
if (parent != null)
|
||
|
{
|
||
|
if (parent.GetHierarchy() > 0)
|
||
|
{
|
||
|
TreeViewname.Add(parent.Name);
|
||
|
ShowTheText(parent.transform);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
//public void SendNodeMessage()
|
||
|
//{
|
||
|
// GameObject Node = GameObject.Find("Canvas").transform.Find("NodeMessage").gameObject;
|
||
|
// Node.SetActive(true);
|
||
|
// Node.GetComponent<Animator>().Play("QIShow");
|
||
|
// Node.transform.Find("Viewport/Content").GetComponent<Text>().text = LoadManager.Instance.record_Load.Intro;
|
||
|
//}
|
||
|
|
||
|
|
||
|
public void CheckPath()
|
||
|
{
|
||
|
|
||
|
if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.PrepareMode)
|
||
|
{
|
||
|
ExamInfoHelpClass.CurrentWorkPath = ExamInfoHelpClass.CurrentWorkPath + "Temporaryfile/";
|
||
|
}
|
||
|
else if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.EditCourceware)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
else if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.PrepareModeLook)
|
||
|
{
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
public void LoadRecordFromFile(string filename)
|
||
|
{
|
||
|
//GameObject.Find("Canvas").transform.Find("时间轴").gameObject.SetActive(true);
|
||
|
//LoadManager.Instance.StartPlayBack(filename);
|
||
|
}
|
||
|
private GameObject GameNode;
|
||
|
public void GetMessageNode(GameObject game) //点击删除和编辑预设传来的当前预设
|
||
|
{
|
||
|
//************原来的方法****************
|
||
|
//GameNode = game;
|
||
|
//if (this.transform.Find("NodeIntroShowWin").gameObject.activeInHierarchy)
|
||
|
//{
|
||
|
// NodeNameWithRecord.text = GameNode.GetComponent<NodePrefabController>().name;
|
||
|
// string filename_ = GameNode.name + ".xml";
|
||
|
// Record_One_root recordLoad = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename_);
|
||
|
// NodeIntroWithRecord.text = recordLoad.Intro;
|
||
|
//}
|
||
|
//****************结束*****************
|
||
|
|
||
|
//*************新方法******************
|
||
|
GameNode = game;
|
||
|
if (this.transform.parent.Find("NodeIntroShowWin").gameObject.activeInHierarchy)
|
||
|
{
|
||
|
NodeNameWithRecord.text = GameNode.GetComponent<TreeViewItem__>().Name;
|
||
|
string filename_ = NodeNameWithRecord.text + ".xml";
|
||
|
var filepath = ExamInfoHelpClass.CurrentWorkPath + filename_;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
|
||
|
LoadManager.Instance.record_Load = null;
|
||
|
LoadManager.Instance.record_Load = TrackRecordHelpClass.LoadRecord_DeserializeXMLToRecord(filename_);
|
||
|
NodeIntroWithRecord.text = LoadManager.Instance.record_Load.Intro;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
NodeIntroWithRecord.text = "";
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
//*************结束*******************
|
||
|
}
|
||
|
public void DelectNode()//删除节点方法
|
||
|
{
|
||
|
string path = ExamInfoHelpClass.CurrentWorkPath;
|
||
|
string fileDir = Path.GetDirectoryName(path);
|
||
|
string ThePath = GameNode.name+".xml";
|
||
|
|
||
|
if (Directory.Exists(fileDir))
|
||
|
{
|
||
|
string[] files = Directory.GetFiles(fileDir);
|
||
|
foreach (string file in files)
|
||
|
{
|
||
|
string str = Path.GetFileName(file);
|
||
|
if (str.Equals(ThePath))
|
||
|
{
|
||
|
File.Delete(file);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
DelXml(GameNode.name);
|
||
|
Destroy(GameNode);
|
||
|
string str_ = "AskDeslectNode";
|
||
|
NodeListName.Remove(ThePath);
|
||
|
MessageDispatcher.SendMessage("CLOSE", (object)str_, "CUBE");
|
||
|
}
|
||
|
|
||
|
public void EditNode()//编辑节点方法
|
||
|
{
|
||
|
if (NodeNameWithRecord.text.Equals("已经有此名字") || NodeNameWithRecord.text == "名字不能为空")
|
||
|
{
|
||
|
return;
|
||
|
}
|
||
|
if (NodeNameWithRecord.text == "" || NodeNameWithRecord.text == null)
|
||
|
{
|
||
|
NodeNameWithRecord.text = "名字不能为空";
|
||
|
return;
|
||
|
}
|
||
|
string Name = NodeNameWithRecord.text;
|
||
|
string Intro = NodeIntroWithRecord.text;
|
||
|
|
||
|
string fileDir = Path.GetDirectoryName(ExamInfoHelpClass.CurrentWorkPath);
|
||
|
string ThePath = Name + ".xml";
|
||
|
|
||
|
//判断新编辑的有没有重复的名字
|
||
|
if (Directory.Exists(fileDir))
|
||
|
{
|
||
|
string[] files = Directory.GetFiles(fileDir);
|
||
|
foreach (string file in files)
|
||
|
{
|
||
|
string str = Path.GetFileName(file);
|
||
|
if (str.Equals(ThePath))
|
||
|
{
|
||
|
Debug.Log(file);
|
||
|
NodeNameWithRecord.text = "已经有此名字";
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//***********************原来的方法*************************
|
||
|
////修改课件名称
|
||
|
//string name = GameNode.name + ".xml";
|
||
|
//if (Directory.Exists(fileDir))
|
||
|
//{
|
||
|
// string[] files = Directory.GetFiles(fileDir);
|
||
|
// foreach (string file in files)
|
||
|
// {
|
||
|
// string str = Path.GetFileName(file);
|
||
|
// Debug.Log(Path.GetPathRoot(file));
|
||
|
// if (str.Equals(name))
|
||
|
// {
|
||
|
// File.Move(ExamInfoHelpClass.CurrentWorkPath + str, ExamInfoHelpClass.CurrentWorkPath+ Name + ".xml");
|
||
|
// }
|
||
|
// }
|
||
|
//}
|
||
|
//ChangeXml(GameNode.name, Name);
|
||
|
//int ZID = GameNode.GetComponent<NodePrefabController>().FatherID;
|
||
|
//int JID = GameNode.GetComponent<NodePrefabController>().id;
|
||
|
////string str_= "NodeIntroShowWin";
|
||
|
//GameNode.transform.Find("Name").GetComponent<Text>().text = Name;
|
||
|
//GameNode.name=Name;
|
||
|
//GameNode.GetComponent<NodePrefabController>().Intro = Intro;
|
||
|
//*********************结束************************
|
||
|
|
||
|
//***************新方法***************************
|
||
|
var treeViewItem = GameNode.GetComponent<TreeViewItem__>();
|
||
|
var oriFile = ExamInfoHelpClass.CurrentWorkPath + treeViewItem.Name + ".xml";
|
||
|
if (File.Exists(oriFile))
|
||
|
{
|
||
|
// LoadManager.Instance.record_Load.Intro = Intro;
|
||
|
//File.Move(oriFile, ExamInfoHelpClass.CurrentWorkPath + Name + ".xml");
|
||
|
// RecordManager.Instance.StopRecord_SerializeRecordToXML(ExamInfoHelpClass.CurrentWorkPath+Name + ".xml", LoadManager.Instance.record_Load);
|
||
|
var destFile = ExamInfoHelpClass.CurrentWorkPath + Name + ".xml";
|
||
|
EditXML_Name_Intro(oriFile, destFile, Intro);
|
||
|
if (File.Exists(destFile))
|
||
|
{
|
||
|
File.Delete(oriFile);
|
||
|
}
|
||
|
}
|
||
|
ChangeXml_(treeViewItem.ID.ToString(), Name);
|
||
|
|
||
|
GameNode.transform.Find("TreeViewText").GetComponent<Text>().text = Name;
|
||
|
treeViewItem.Name = Name;
|
||
|
//Data中的数据也的变
|
||
|
var data = TreeViewControl__.Instance.Data.Find(d => { return d.ID == treeViewItem.ID; });
|
||
|
data.Name = Name;
|
||
|
// GameNode.GetComponent<NodePrefabController>().Intro = Intro;
|
||
|
//***************结束***************************
|
||
|
if (NodeListName.Contains(name))
|
||
|
{
|
||
|
NodeListName.Remove(name);
|
||
|
}
|
||
|
NodeListName.Add(Name + ".xml");
|
||
|
MessageDispatcher.SendMessage("CLOSE", (object)"NodeIntroShowWin", "CUBE");
|
||
|
|
||
|
}
|
||
|
|
||
|
private InputField NewFuGaiName;
|
||
|
private InputField NewFuGaiIntro;
|
||
|
|
||
|
//只有评分模块允许在回放记录时添加标签,添加评分
|
||
|
public void NewFuGaiNodeShowWin()//回放中添加标签需要保存新的文件
|
||
|
{
|
||
|
string NodeName = XinJianNodeName.text;
|
||
|
string NodeIntro = XinJianIntroName.text;
|
||
|
|
||
|
string filename = "score/"+TrackRecordHelpClass.GetFileNameAccordingTime(DateTime.Now);//待确定
|
||
|
RecordManager.Instance.StopRecord_SerializeRecordToXML(filename, RecordManager.Instance.record);//另存为一份新的轨迹记录文件,作为考卷评价
|
||
|
}
|
||
|
|
||
|
public void AwakeOnDestroy()
|
||
|
{
|
||
|
//string path = ExamInfoHelpClass.CurrentWorkPath;
|
||
|
//string fileDir = Path.GetDirectoryName(path);
|
||
|
//if (Directory.Exists(fileDir))
|
||
|
//{
|
||
|
// string[] files = Directory.GetFiles(path);
|
||
|
// foreach (string file in files)
|
||
|
// {
|
||
|
// File.Delete(file);
|
||
|
// }
|
||
|
//}
|
||
|
}
|
||
|
void OnDestroy()
|
||
|
{
|
||
|
MessageDispatcher.RemoveListener("SpaceControl", SpacnControl);
|
||
|
string path = Application.dataPath + @"/ExtendFolder/xml/Coursewares/Temporaryfile/";
|
||
|
string fileDir = Path.GetDirectoryName(path);
|
||
|
if (Directory.Exists(fileDir))
|
||
|
{
|
||
|
string[] files = Directory.GetFiles(path);
|
||
|
foreach (string file in files)
|
||
|
{
|
||
|
File.Delete(file);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#region XML控制相关
|
||
|
|
||
|
/// <summary>
|
||
|
/// 添加一条新的xml数据
|
||
|
/// </summary>
|
||
|
/// <param name="nodename"></param>
|
||
|
public void ADDXml(string nodename)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Name")
|
||
|
{
|
||
|
XmlElement jiedian = xmlDoc.CreateElement("Node");
|
||
|
jiedian.InnerText = nodename;
|
||
|
elem.AppendChild(jiedian);
|
||
|
root.AppendChild(elem);
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.AppendChild(root);
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public int GetNextID()
|
||
|
{
|
||
|
int result = 0;
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "NextID")
|
||
|
{
|
||
|
result = int.Parse(elem.InnerText);
|
||
|
elem.InnerText = (result + 1).ToString();
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(filepath);
|
||
|
|
||
|
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
public void ADDXml(string nodename, TreeViewData data)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Nodes")
|
||
|
{
|
||
|
XmlElement jiedian = xmlDoc.CreateElement("Node");
|
||
|
jiedian.InnerText = nodename;
|
||
|
jiedian.SetAttribute("ID", data.ID.ToString());
|
||
|
jiedian.SetAttribute("ParentID", data.ParentID.ToString());
|
||
|
jiedian.SetAttribute("Name", data.Name.ToString());
|
||
|
jiedian.SetAttribute("Hierarchy", data.Hierarchy.ToString());
|
||
|
elem.AppendChild(jiedian);
|
||
|
root.AppendChild(elem);
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.AppendChild(root);
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void InsertXml(string id, TreeViewData data)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Nodes")
|
||
|
{
|
||
|
foreach (XmlElement node in elem.ChildNodes)
|
||
|
{
|
||
|
if (node.GetAttribute("ID") == id)
|
||
|
{
|
||
|
XmlElement jiedian = xmlDoc.CreateElement("Node");
|
||
|
jiedian.InnerText = data.Name;
|
||
|
jiedian.SetAttribute("ID", data.ID.ToString());
|
||
|
jiedian.SetAttribute("ParentID", data.ParentID.ToString());
|
||
|
jiedian.SetAttribute("Name", data.Name.ToString());
|
||
|
jiedian.SetAttribute("Hierarchy", data.Hierarchy.ToString());
|
||
|
//elem.AppendChild(jiedian);
|
||
|
elem.InsertAfter(jiedian, node);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void DeleteXml(List<int> needDeleteList)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Nodes")
|
||
|
{
|
||
|
for (int i = elem.ChildNodes.Count - 1; i >= 0; i--)
|
||
|
{
|
||
|
var node = elem.ChildNodes[i] as XmlElement;
|
||
|
if (needDeleteList.Contains(int.Parse(node.GetAttribute("ID"))))
|
||
|
{
|
||
|
var fp = ExamInfoHelpClass.CurrentWorkPath + node.GetAttribute("Name") + ".xml";
|
||
|
if (File.Exists(fp))
|
||
|
{
|
||
|
File.Delete(fp);
|
||
|
}
|
||
|
node.RemoveAll();
|
||
|
elem.RemoveChild(node);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
public void GetAllDates(ref List<TreeViewData> datas)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Nodes")
|
||
|
{
|
||
|
foreach (XmlElement node in elem.ChildNodes)
|
||
|
{
|
||
|
TreeViewData data = new TreeViewData();
|
||
|
data.ID = int.Parse(node.GetAttribute("ID"));
|
||
|
data.Name = node.GetAttribute("Name");
|
||
|
data.ParentID = int.Parse(node.GetAttribute("ParentID"));
|
||
|
data.Hierarchy = int.Parse(node.GetAttribute("Hierarchy"));
|
||
|
datas.Add(data);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 插入一条新的xml数据
|
||
|
/// </summary>
|
||
|
/// <param name="nodename"></param>
|
||
|
public void InserXml(string nodename, string chosename)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Name")
|
||
|
{
|
||
|
foreach (XmlElement node in elem)
|
||
|
{
|
||
|
if (node.Name == "Node" && node.InnerText == chosename)
|
||
|
{
|
||
|
XmlElement jiedian = xmlDoc.CreateElement("Node");
|
||
|
jiedian.InnerText = nodename;
|
||
|
elem.AppendChild(jiedian);
|
||
|
elem.InsertAfter(jiedian, node);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 修改一条xml数据
|
||
|
/// </summary>
|
||
|
/// <param name="nodename"></param>
|
||
|
|
||
|
public void ChangeXml(string nodename, string newname)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Name")
|
||
|
{
|
||
|
foreach (XmlElement node in elem)
|
||
|
{
|
||
|
if (node.Name == "Node" && node.InnerText == nodename)
|
||
|
{
|
||
|
node.InnerText = newname;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void EditXML_Name_Intro(string oriFile,string destFile,string intro)
|
||
|
{
|
||
|
if (File.Exists(oriFile))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(oriFile);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("Record_One_root");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Intro")
|
||
|
{
|
||
|
elem.InnerText = intro;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(destFile);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public void ChangeXml_(string id, string newname)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Nodes")
|
||
|
{
|
||
|
foreach (XmlElement node in elem.ChildNodes)
|
||
|
{
|
||
|
if (node.GetAttribute("ID") == id)
|
||
|
{
|
||
|
node.InnerText = newname;
|
||
|
node.SetAttribute("Name", newname);
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 拖动修改xml数据位置
|
||
|
/// </summary>
|
||
|
/// after=true choseid为选中拖动的id,ID为拖动到对应位置的ID
|
||
|
XmlElement ChoseXml;
|
||
|
XmlElement IDXml;
|
||
|
public void TranslocationXML(string Choseid, string ID, bool after)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Nodes")
|
||
|
{
|
||
|
foreach (XmlElement node in elem.ChildNodes)
|
||
|
{
|
||
|
if (node.GetAttribute("ID") == Choseid)
|
||
|
{
|
||
|
ChoseXml = node;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
foreach (XmlElement node in elem.ChildNodes)
|
||
|
{
|
||
|
if (node.GetAttribute("ID") == ID)
|
||
|
{
|
||
|
IDXml = node;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
if (after)
|
||
|
{
|
||
|
elem.InsertAfter(ChoseXml, IDXml);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
elem.InsertBefore(ChoseXml, IDXml);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 删除一条xml数据
|
||
|
/// </summary>
|
||
|
|
||
|
public void DelXml(string nodename)
|
||
|
{
|
||
|
string filepath = ExamInfoHelpClass.NameListWorkPath;
|
||
|
if (File.Exists(filepath))
|
||
|
{
|
||
|
XmlDocument xmlDoc = new XmlDocument();
|
||
|
xmlDoc.Load(filepath);
|
||
|
XmlNode root = xmlDoc.SelectSingleNode("NodeNameList");
|
||
|
XmlNodeList nodeList = root.ChildNodes;
|
||
|
foreach (XmlElement elem in nodeList)
|
||
|
{
|
||
|
if (elem.Name == "Name")
|
||
|
{
|
||
|
foreach (XmlElement node in elem)
|
||
|
{
|
||
|
if (node.Name == "Node" && node.InnerText == nodename)
|
||
|
{
|
||
|
node.RemoveAll();
|
||
|
elem.RemoveChild(node);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
xmlDoc.Save(filepath);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
#endregion
|
||
|
}
|