From de3f36318cb3c4ad41b9a94862825bb1427b4fba Mon Sep 17 00:00:00 2001 From: wanderer Date: Tue, 9 Nov 2021 01:03:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=95Debugger=E7=9A=84=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Runtime/Debugger/DebuggerManager.cs | 10 ++- GameFramework/Runtime/LiteDB/CustomerData.cs | 13 ++++ .../Runtime/LiteDB/CustomerData.cs.meta | 11 +++ GameFramework/Runtime/LiteDB/ILiteData.cs | 11 +++ .../Runtime/LiteDB/ILiteData.cs.meta | 11 +++ GameFramework/Runtime/LiteDB/LiteDBManager.cs | 76 +++++++++++++++++-- 6 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 GameFramework/Runtime/LiteDB/CustomerData.cs create mode 100644 GameFramework/Runtime/LiteDB/CustomerData.cs.meta create mode 100644 GameFramework/Runtime/LiteDB/ILiteData.cs create mode 100644 GameFramework/Runtime/LiteDB/ILiteData.cs.meta diff --git a/GameFramework/Runtime/Debugger/DebuggerManager.cs b/GameFramework/Runtime/Debugger/DebuggerManager.cs index e9e0126a..8eb7bc76 100644 --- a/GameFramework/Runtime/Debugger/DebuggerManager.cs +++ b/GameFramework/Runtime/Debugger/DebuggerManager.cs @@ -49,6 +49,8 @@ public DebuggerManager() //FullRect = _settingMgr.Get("DebuggerManager.FullRect", _defaultFullRect); FullRect = _defaultFullRect; WindowScale = _settingMgr.Get("DebuggerManager.WindowScale", _defaultWindowScale); + + _defaultSmallRect.position = _settingMgr.Get("DebuggerManager.Small.Position",Vector2.one*10); } //初始化 @@ -175,7 +177,13 @@ public void OnImGui() } else { - _defaultSmallRect = GUILayout.Window(0, _defaultSmallRect, DrawDebuggerSmallWindow, "DEBUGGER"); + var smallRect = GUILayout.Window(0, _defaultSmallRect, DrawDebuggerSmallWindow, "DEBUGGER"); + + if (smallRect != _defaultSmallRect) + { + _defaultSmallRect = smallRect; + _settingMgr.Set("DebuggerManager.Small.Position", _defaultSmallRect.position); + } } GUI.matrix = lastMatrix; GUI.skin = lastGuiSkin; diff --git a/GameFramework/Runtime/LiteDB/CustomerData.cs b/GameFramework/Runtime/LiteDB/CustomerData.cs new file mode 100644 index 00000000..1e11f5ee --- /dev/null +++ b/GameFramework/Runtime/LiteDB/CustomerData.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Wanderer.GameFramework +{ + public class CustomerData : ILiteData + { + public int Id { get; set; } + public string Key { get; set; } + public T Data { get; set; } + } +} diff --git a/GameFramework/Runtime/LiteDB/CustomerData.cs.meta b/GameFramework/Runtime/LiteDB/CustomerData.cs.meta new file mode 100644 index 00000000..1d8cfbcf --- /dev/null +++ b/GameFramework/Runtime/LiteDB/CustomerData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cb091b26572631b40a5146d2901c902d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GameFramework/Runtime/LiteDB/ILiteData.cs b/GameFramework/Runtime/LiteDB/ILiteData.cs new file mode 100644 index 00000000..330439a1 --- /dev/null +++ b/GameFramework/Runtime/LiteDB/ILiteData.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Wanderer.GameFramework +{ + public interface ILiteData + { + public int Id { get; set; } + } +} \ No newline at end of file diff --git a/GameFramework/Runtime/LiteDB/ILiteData.cs.meta b/GameFramework/Runtime/LiteDB/ILiteData.cs.meta new file mode 100644 index 00000000..8f36ff7b --- /dev/null +++ b/GameFramework/Runtime/LiteDB/ILiteData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e1f1f9abf32eeb47b221dd527417047 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/GameFramework/Runtime/LiteDB/LiteDBManager.cs b/GameFramework/Runtime/LiteDB/LiteDBManager.cs index 2484dc83..c90a5121 100644 --- a/GameFramework/Runtime/LiteDB/LiteDBManager.cs +++ b/GameFramework/Runtime/LiteDB/LiteDBManager.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using System.IO; +using System.Text.RegularExpressions; using UnityEngine; namespace Wanderer.GameFramework @@ -10,15 +11,13 @@ public class LiteDBManager : GameFrameworkModule { private Dictionary _litedbs = new Dictionary(); - - public LiteDBMapper Select(string dbName) + public LiteDBMapper Select(string dbPath) { LiteDBMapper mapper; - if (!_litedbs.TryGetValue(dbName, out mapper)) + if (!_litedbs.TryGetValue(dbPath, out mapper)) { - string dbPath = Path.Combine(Application.persistentDataPath, $"{dbName}.litedb"); mapper = new LiteDBMapper(dbPath); - _litedbs.Add(dbName, mapper); + _litedbs.Add(dbPath, mapper); } return mapper; } @@ -76,6 +75,73 @@ public void Download(string key, string localPath) storage.Download(key, localPath,true); } + public void SetData(T value) where T: ILiteData + { + var col = _db.GetCollection(GetTableName()); + var query = col.Query().Where(x => x.Id==value.Id); + if (query.Count() > 0) + { + col.Update(value); + } + else + { + col.Insert(value); + } + } + + public T GetData(int id, T defaultValue = default(T)) where T : ILiteData + { + var col = _db.GetCollection(GetTableName()); + var value = col.Query().Where(x =>x.Id==id); + if (value.Count() > 0) + { + return value.First(); + } + + return defaultValue; + } + + public void SetCustomerData(string key, T value) + { + var col = _db.GetCollection>(GetTableName()); + CustomerData customerData; + var query = col.Query().Where(x => x.Key.Equals(key)); + if (query.Count() > 0) + { + customerData = query.First(); + customerData.Data = value; + col.Update(customerData); + } + else + { + customerData = new CustomerData() + { + Key = key, + Data = value + }; + col.Insert(customerData); + } + } + + public T GetCustomerData(string key, T defaultValue = default(T)) + { + var col = _db.GetCollection>(GetTableName()); + var value = col.Query().Where(x => x.Key.Equals(key)); + if (value.Count() > 0) + { + return value.First().Data; + } + + return defaultValue; + } + private string GetTableName() + { + string tableName = Regex.Replace(typeof(T).Name, @"[^a-zA-Z0-9\u4e00-\u9fa5\s]", ""); + tableName = $"{tableName}"; + return tableName; + } + + public void Dispose() { if (_db != null)