天津23维预案
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.

282 lines
9.5 KiB

3 years ago
using UnityEngine;
using System.Collections;
using AX.TrackRecord;
using UnityEngine.UI;
using AX.NetworkSystem;
using System.IO;
using System.Collections.Generic;
using AX.MessageSystem;
using System.Xml;
using System;
using HelpXHSxml;
using System.Xml.Serialization;
public class SavePrepareCourse : MonoBehaviour
{
/// <summary>
/// 保存备课课件
/// </summary>
private InputField CourseName;
private Text TheText;
void Start()
{
CourseName = this.gameObject.transform.Find("InputField").GetComponent<InputField>();
TheText = CourseName.transform.Find("Text").GetComponent<Text>();
CourseName.onValidateInput += ValidCharDetect._OnValidateInput;
}
public void SaveCourseBtn()
{
if (TheText.text==null || TheText.text=="")
{
MessageDispatcher.SendMessage("Operatinghints", (object)"请输灾情名称");
return;
}
string ThePath = "";
//string path = ExamInfoHelpClass.CurrentWorkPath + "/" + "Coursewares/";
//string fileDir = Path.GetDirectoryName(path);
//if (Directory.Exists(fileDir))
//{
// string[] files = Directory.GetFiles(fileDir);
// foreach (string file in files)
// {
// string str = Path.GetFileName(file);
// string ext = Path.GetExtension(file);
// if (ext == ".xml")
// {
// ThePath += str + ";";//这种方式最后会多加一个‘;’
// }
// }
//}
if (TheText.text.Contains("/") || TheText.text.Contains("\\"))
{
TheText.text = "";
MessageDispatcher.SendMessage("Operatinghints", (object)"名字不能包含/或\\");
return;
}
string path_ = Application.dataPath + @"/ExtendFolder/xml/SaveCoursewares/";
string fileDir_ = Path.GetDirectoryName(path_);
if (Directory.Exists(fileDir_))
{
string[] files = Directory.GetDirectories(path_);
foreach (string file in files)
{
string str = Path.GetFileName(file);
if (str.Equals(TheText.text.ToString().Trim()))
{
TheText.text = "";
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
return;
}
}
}
if (ExamInfoHelpClass.loadSceneMode == ExamInfoHelpClass.LoadSceneMode.PrepareMode)
{
string path = Application.dataPath + @"/ExtendFolder/xml/SaveCoursewares/";
string fileDir = Path.GetDirectoryName(path);
if (Directory.Exists(fileDir))
{
string[] files = Directory.GetDirectories(path);
foreach (string file in files)
{
string str = Path.GetFileName(file);
if (str.Equals(TheText.text.ToString().Trim()))
{
TheText.text = "";
MessageDispatcher.SendMessage("Operatinghints", (object)"已经有此名字");
return;
}
}
}
//创建该文件夹
string Firstpath = path + TheText.text.ToString().Trim() + "/";
Directory.CreateDirectory(Firstpath);
//创建子存放xml的文件夹
string Secondpath = path + TheText.text.ToString().Trim() + "/" + "savexml/";
Directory.CreateDirectory(Secondpath);
//移动namelistxml和xml文件
string namexml = Application.dataPath + @"/ExtendFolder/xml/NodeNameList.xml";
string fileDirnamexml = Path.GetDirectoryName(namexml);
if (File.Exists(namexml))
{
File.Move(namexml, Firstpath + "NodeNameList.xml");
}
if (Directory.Exists(Secondpath))
{
string[] files = Directory.GetFiles(ExamInfoHelpClass.CurrentWorkPath);
foreach (string file in files)
{
string str = Path.GetFileName(file);
File.Move(file, Secondpath + str);
}
}
//图片xml路径
string picXmlDirPath = Application.dataPath + @"/ExtendFolder/xml/Coursewares/TemporaryPicfile/PicData.xml";
if (File.Exists(picXmlDirPath))
{
File.Move(picXmlDirPath, Firstpath + "PicData.xml");
}
for (int i = 0; i < NodeSet.Instance.NodeListName.Count; i++)
{
string name = NodeSet.Instance.NodeListName[i].ToString();
ThePath += name + ";";//这种方式最后会多加一个‘;’
}
XML(TheText.text.ToString().Trim());
}
else
{
string Filepath = NodeSet.Cousrsewse.FilePath.Substring(0, NodeSet.Cousrsewse.FilePath.Length - 1);
string thepath = Path.GetFileNameWithoutExtension(Filepath);
changenamexml(thepath, TheText.text.ToString().Trim());//修改XML的名称
string path = Application.dataPath + @"/ExtendFolder/xml/SaveCoursewares/";
File.Move(NodeSet.Cousrsewse.FilePath, path + TheText.text.ToString().Trim());//修改文件夹名称
}
///创建场景中XHS文件
XHSdata(TheText.text.ToString().Trim());
this.gameObject.SetActive(false);
MySceneManager.BackToLastScene();
}
public void XHSdata(string CourseName)
{
string XHSpath = Application.dataPath + @"/ExtendFolder/xml/SaveCoursewares/" + CourseName + "/" + "XHS.xml";
if (File.Exists(XHSpath))
{
File.Delete(XHSpath);
}
RootRecordItem Root = new RootRecordItem();
List<GameObject> XHSlist = new List<GameObject>();
XHSlist = CreateXHS.instance.XHSList;
if (XHSlist.Count == 0)
{
return;
}
for (int i = 0; i < XHSlist.Count; i++)
{
GameObject XHS = XHSlist[i] as GameObject;
BaseDataAttri Attri = new BaseDataAttri();
Attri.buidType = XHS.GetComponent<CengID>().CengIDBuildType;
Attri.CengID = XHS.GetComponent<CengID>().cengID;
Attri.Name = XHS.name;
Attri.position = XHS.transform.localPosition;
Attri.scale = XHS.transform.localScale;
Attri.rotation = XHS.transform.localEulerAngles;
Root.BaseList.Add(Attri);
}
//序列化为xml
XmlSerializer xml = new XmlSerializer(typeof(RootRecordItem));
StreamWriter writer = new StreamWriter(XHSpath);
xml.Serialize(writer, Root);
writer.Close();
}
public void changenamexml(string name,string Name_)
{
string namexml = Application.dataPath + @"/ExtendFolder/xml/CourseXML.xml";
if (File.Exists(namexml))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(namexml);
XmlNode root = xmlDoc.SelectSingleNode("CourseNameList");
XmlNodeList nodeList = root.ChildNodes;
foreach (XmlElement elem in nodeList)
{
if (elem.Name == "CourseName")
{
foreach (XmlElement node in elem)
{
if (node.Name == "Name" && node.InnerText == name)
{
node.InnerText = Name_;
}
}
}
}
xmlDoc.Save(namexml);
}
}
public void XML(string name)
{
string namexml = Application.dataPath + @"/ExtendFolder/xml/CourseXML.xml";
//if (!File.Exists(namexml))
//{
// CreateXML();
//}
WriteXML(namexml, name);
}
public void WriteXML(string path,string name)
{
string filepath = path;
if (File.Exists(filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNode root = xmlDoc.SelectSingleNode("CourseNameList");
XmlNodeList nodeList = root.ChildNodes;
foreach (XmlElement elem in nodeList)
{
if (elem.Name == "CourseName")
{
XmlElement jiedian = xmlDoc.CreateElement("Name");
jiedian.SetAttribute("ID", MySceneManager.GetActiveScene().name);
jiedian.InnerText = name;
elem.AppendChild(jiedian);
root.AppendChild(elem);
}
}
xmlDoc.AppendChild(root);
xmlDoc.Save(filepath);
}
}
public void CreateXML()
{
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(dec);
//根
XmlElement root = doc.CreateElement("CourseNameList");
doc.AppendChild(root);
//创建节点(二级)
XmlElement Name = doc.CreateElement("CourseName");
root.AppendChild(Name);
doc.Save(Application.dataPath + @"/ExtendFolder/xml/CourseXML.xml");
Console.Write(doc.OuterXml);
}
public void CloseBtn()
{
RecordManager.Instance.IsPause = false;
CourseName.text = "";
}
public void GoBackSence()
{
}
void OnDestroy()
{
//NodeSet.Instance.NodeListName.Clear();
}
}