此模組的目標為提供一個框架,使得各模組可以透過Socket傳訊、執行特定功能等;同時希望降低各模組的依賴項,將單一模組內容以更細的粒度拆分,需要特定功能時才載入對應之模組。
此模組之更新時間與更新之功能不定,如果有任何新想法,歡迎加入Discord群組一起討論。
此模組初期可能會經過大量修改,以確定設計方向,故本模組並不穩定,如想使用請謹慎考慮。
建議可以先查看模組測試的部分,其中的unit_test資料夾可以參考,內含檔案同時是範例實作。
可以透過下列程式碼以完成註冊:
let lib_name: string // 函式庫之名稱
let user: BasicUser<any> = CG.EnhBase.core.libManager.registerLib(lib_name);
欲接受傳入資料,請使用下列程式碼:
let socket_unique_name: string // 可辨識之Socket名稱
let socket: Socket = user.createSocket();
socket.addHandler("data", function(data, senderCode) {
// 處理資料如何使用
})
socket.listen(socket_unique_name);
而欲傳輸資料給目標Socket,請使用下列程式碼:
let target_socket_name // 目標Socket名稱
socket.send("YOUR_DATA", target_socket_name);
接續前面,假設已經取得了BasicUser物件,預設該物件會帶有一個變數表,透過下列程式碼存取:
const varTable = lib.varTable;
預設該變數表會啟用保護功能,禁止外部存取,於v0.0.2引入了保護用的Key,設定為true或false可控制外部是否可存取,未來可能會更動,請謹慎使用。
// enable protection
varTable.setValue(BaseVariableTable.ABILITYS.PROTECT, true, true);
// or
varTable.removeValue(BaseVariableTable.ABILITYS.PROTECT)
varTable.setValue(BaseVariableTable.ABILITYS.PROTECT, true);
// disable protection
varTable.removeValue(BaseVariableTable.ABILITYS.PROTECT)
// or
varTable.setValue(BaseVariableTable.ABILITYS.PROTECT, false, true);
同時,就算沒有LibUser物件,也可以直接利用
let varTable = new SimpleVariableTable();
// or (syncable)
let varTable = new GenericVariableTable();
以取得變數表,並透過下列方法將變數表註冊於manager上:
core.getInstance<VariableTableManager>("VariableTableManager").addVariableTable(varTable);
// or
core.variableTableManager.addVariableTable(varTable);