Files
2026-02-09 20:10:14 +08:00

225 lines
7.3 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import FairyGUI = CS.FairyGUI;
import FairyEditor = CS.FairyEditor;
import System = CS.System;
const App = FairyEditor.App;
const File = System.IO.File;
const Directory = System.IO.Directory;
export class MemberData {
public id: string
public name: string
/** 使用自定义脚本 **/
public useCustomScript: boolean
public annotation: string = "";
}
export class ComponentData {
constructor() {
this.member = {}
}
public url: string;
public name: string;
public scriptType: string = "";
public isCustomName: boolean = false
public customName: string = "";
public annotation: string = "";
public member = {}
}
export class GenCodeSettingData {
constructor() {
this.components = {}
}
public components = {}
}
export class GenCodeSettings {
private static instance: GenCodeSettings;
static getInstance() {
if (!this.instance) {
this.instance = new GenCodeSettings();
}
return this.instance;
}
public settingPath: string = "";
public componentsSettingBasePath: string = "";
private settingData: GenCodeSettingData;
constructor() {
this.settingPath = App.project.settingsPath + "/WhootGencodeSetting.json"
this.componentsSettingBasePath = App.project.settingsPath + "/whoot"
if (!System.IO.Directory.Exists(this.componentsSettingBasePath)) {
console.log("whoot配置文件目录不存在创建")
System.IO.Directory.CreateDirectory(this.componentsSettingBasePath)
}
this.readAll()
}
/**
* 清理已经失效的url
*/
public clearFailureConfig() {
console.log("清理全部已经失效的资源")
}
public test() {
console.log("hahah")
}
public getComponentSetting(url: string) {
if (this.settingData.components != null && this.settingData.components.hasOwnProperty(url)) {
return this.settingData.components[url]
}
return null
}
public changeComponentSetting(url: string, type: string, name: string, isCuston: boolean = false, customName: string = "", annotation: string = "") {
let com: ComponentData = null
if (!this.settingData.components.hasOwnProperty(url)) {
com = new ComponentData()
//新建
this.settingData.components[url] = com;
} else {
com = this.settingData.components[url]
}
com.url = url
com.scriptType = type
com.isCustomName = isCuston
com.customName = customName
com.name = name
com.annotation = annotation
this.save(url)
}
public packageItemChange(context: FairyGUI.EventContext) {
var item = context.data as FairyEditor.FPackageItem
if (item != null && item.isDisposed) {
console.log("包的文件改变了,有文件被删除", this.settingData)
if (this.settingData != null && this.settingData.components != null) {
let url = item.GetURL()
console.log("删除了的url=" + url)
this.delete(url)
delete this.settingData.components[url]
}
} else if (item != null) {
console.log("包的文件改变了。文件增加")
}
}
// public getMemberSettingByName(baseUrl: string, name: string) {
// var baseData: ComponentData = this.getComponentSetting(baseUrl);
// if (baseData != null) {
// if (baseData.member != null) {
// for (let key in baseData.member) {
// let item: MemberData = baseData.member[key]
// if (item.name == name) {
// return baseData.member[item.id]
// }
// }
// }
// }
// return null;
// }
// public getMemberSetting(baseUrl: string, id: string) {
// var baseData: ComponentData = this.getComponentSetting(baseUrl);
// if (baseData != null) {
// if (baseData.member != null && baseData.member.hasOwnProperty(id)) {
// return baseData.member[id]
// }
// }
// return null;
// }
// public changeMemberSetting(baseUrl: string, id: string, state: boolean, name: string = "", annotation: string = "") {
// if (this.settingData.components == null || !this.settingData.components.hasOwnProperty(baseUrl)) {
// console.error("父节点未设置参数,设置退出 baseUrl=" + baseUrl)
// return
// }
// let isChange = false
// let com: ComponentData = this.settingData.components[baseUrl]
// let mem: MemberData = null
// if (!com.member.hasOwnProperty(id)) {
// mem = new MemberData();
// //新建
// com.member[id] = mem;
// isChange = true
// } else {
// mem = com.member[id]
// if (mem.name != name || mem.useCustomScript != state || mem.annotation != annotation) {
// isChange = true
// }
// }
// if (isChange) {
// mem.id = id
// mem.name = name
// mem.useCustomScript = state
// mem.annotation = annotation
// this.save(baseUrl)
// }
// }
//获取所有的文件的路径
public getAllDirector(path: string, list: Array<string>) {
let files = Directory.GetFiles(path, "*.json")
console.log("开始读取所有配置=", path)
for (let f = 0; f < files.Length; f++) {
list.push(files.get_Item(f))
}
}
public readAll() {
try {
let list: Array<string> = []
this.getAllDirector(this.componentsSettingBasePath, list)
console.log("初始化所有配置,count=", list.length)
this.settingData = new GenCodeSettingData();
this.settingData.components = {}
for (let index = 0; index < list.length; index++) {
let p = list[index];
if (p === undefined) continue;
let jsonStr = File.ReadAllText(p);
let data: ComponentData = JSON.parse(jsonStr);
let url = data.url
this.settingData.components[url] = data
}
} catch (err) {
console.error("读取配置文件失败=", err)
}
}
public delete(url: string) {
let path = this.componentsSettingBasePath + "/" + this.urlDecode(url) + ".json";
File.Delete(url)
}
public save(url: string) {
try {
if (this.settingData.components != null && this.settingData.components.hasOwnProperty(url)) {
let path = this.componentsSettingBasePath + "/" + this.urlDecode(url) + ".json";
let data = this.settingData.components[url]
let jsonStr = JSON.stringify(data);
File.WriteAllText(path, jsonStr)
console.log("配置文件更新:" + url)
} else {
console.error("要保存的配置不存在:" + url)
}
} catch {
console.error("保存配置文件失败")
}
}
public urlDecode(url: string) {
return url.replace("ui://", "")
}
}
export default GenCodeSettings.getInstance();