breakpoint
This commit is contained in:
parent
f6bf8fffe3
commit
eabf0c6188
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://7fbt23ba5le3"
|
||||
path="res://.godot/imported/logo-intelli_non-color_wide.png-b54b4c513a7b4ebb69e3c76ee38c4717.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Artists/Art/Logos/logo-intelli_non-color_wide.png"
|
||||
dest_files=["res://.godot/imported/logo-intelli_non-color_wide.png-b54b4c513a7b4ebb69e3c76ee38c4717.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cm74m6rvgumxs"
|
||||
path="res://.godot/imported/logo-intelli_non-color_wide_light.png-37002afba38b6bc9b3daec4cb2ad2fc3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Artists/Art/Logos/logo-intelli_non-color_wide_light.png"
|
||||
dest_files=["res://.godot/imported/logo-intelli_non-color_wide_light.png-37002afba38b6bc9b3daec4cb2ad2fc3.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
|
@ -10,7 +10,7 @@ using BITKit.IO;
|
|||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace BITKit;
|
||||
namespace BITKit.UX;
|
||||
|
||||
public partial class PlaybackService : UXPanel
|
||||
{
|
||||
|
@ -29,13 +29,14 @@ public partial class PlaybackService : UXPanel
|
|||
public override void _Ready()
|
||||
{
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
OnExit();
|
||||
//OnExit();
|
||||
}
|
||||
public override void _ExitTree()
|
||||
{
|
||||
cancellationTokenSource.Cancel();
|
||||
}
|
||||
public override void OnEntry()
|
||||
private void NoEntry()
|
||||
//public override void OnEntry()
|
||||
{
|
||||
cancellationTokenSource.Token.ThrowIfCancellationRequested();
|
||||
|
||||
|
@ -61,7 +62,7 @@ public partial class PlaybackService : UXPanel
|
|||
Stopwatch stopwatch = new();
|
||||
stopwatch.Start();
|
||||
|
||||
OnExit();
|
||||
//OnExit();
|
||||
label.Text = $"正在加载:{playableInfo.Name},创建时间:{playableInfo.CreateTime}";
|
||||
label.Show();
|
||||
|
||||
|
@ -92,8 +93,8 @@ public partial class PlaybackService : UXPanel
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnExit()
|
||||
private void NoExit()
|
||||
//public override void OnExit()
|
||||
{
|
||||
foreach (var x in root.GetChildren())
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXContainer.cs" id="1_yrfyl"]
|
||||
|
||||
[node name="LineEditTemplate" type="PanelContainer" node_paths=PackedStringArray("label", "labels", "buttons", "lineEdit", "lineEdits", "optionButtons")]
|
||||
custom_minimum_size = Vector2(512, 0)
|
||||
script = ExtResource("1_yrfyl")
|
||||
label = NodePath("MarginContainer/Layout/0/Label")
|
||||
labels = [NodePath("MarginContainer/Layout/0/Label"), NodePath("MarginContainer/Layout/1/Label"), NodePath("MarginContainer/Layout/2/Label")]
|
||||
|
@ -23,8 +24,8 @@ layout_mode = 2
|
|||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/Layout/0"]
|
||||
custom_minimum_size = Vector2(200, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "格式 e.g.温湿度"
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="MarginContainer/Layout/0"]
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://dey6r76kttak6"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dey6r76kttak6"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://d1uver224k3px" path="res://addons/ui_design_tool/assets/icons/folder_open-white-18dp.svg" id="1_jbnj1"]
|
||||
[ext_resource type="Texture2D" uid="uid://dn7q7grbfr7kh" path="res://addons/ui_design_tool/assets/icons/refresh-white-18dp.svg" id="1_miiu5"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/UX/UXTabViewService.cs" id="3_7cg45"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uocfi"]
|
||||
bg_color = Color(0.156863, 0.152941, 0.172549, 1)
|
||||
|
@ -148,6 +149,14 @@ tab_0/title = "Tab1"
|
|||
tab_1/title = "Tab2"
|
||||
tab_2/title = "Tab3"
|
||||
|
||||
[node name="TabBar2" type="TabBar" parent="Scroll/HBoxContainer/VBoxContainer3"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"Light"
|
||||
tab_count = 3
|
||||
tab_0/title = "Tab1"
|
||||
tab_1/title = "Tab2"
|
||||
tab_2/title = "Tab3"
|
||||
|
||||
[node name="TabContainer" type="TabContainer" parent="Scroll/HBoxContainer/VBoxContainer3"]
|
||||
custom_minimum_size = Vector2(512, 256)
|
||||
layout_mode = 2
|
||||
|
@ -165,3 +174,55 @@ text = "Window 2"
|
|||
visible = false
|
||||
layout_mode = 2
|
||||
text = "Window 3"
|
||||
|
||||
[node name="UXTabService" type="HBoxContainer" parent="Scroll/HBoxContainer/VBoxContainer3" node_paths=PackedStringArray("tabs")]
|
||||
layout_mode = 2
|
||||
script = ExtResource("3_7cg45")
|
||||
tabs = [null, null, null, null]
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Button" type="Button" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"SideTab"
|
||||
text = "0"
|
||||
|
||||
[node name="Button2" type="Button" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"SideTab"
|
||||
text = "1"
|
||||
|
||||
[node name="Button3" type="Button" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"SideTab"
|
||||
text = "2"
|
||||
|
||||
[node name="Button4" type="Button" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"SideTab"
|
||||
text = "3"
|
||||
|
||||
[node name="TabContainer" type="TabContainer" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
tabs_visible = false
|
||||
|
||||
[node name="新的Label" type="Label" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/TabContainer"]
|
||||
layout_mode = 2
|
||||
text = "View 0"
|
||||
|
||||
[node name="Label2" type="Label" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "View 1"
|
||||
|
||||
[node name="Label3" type="Label" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "View 2"
|
||||
|
||||
[node name="Label4" type="Label" parent="Scroll/HBoxContainer/VBoxContainer3/UXTabService/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "View 3"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,15 @@
|
|||
[gd_scene format=3 uid="uid://c3uovj6tfjtai"]
|
||||
|
||||
[node name="TabContainer_Samples" type="TabContainer"]
|
||||
custom_minimum_size = Vector2(1920, 1080)
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label2" type="Label" parent="."]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label3" type="Label" parent="."]
|
||||
visible = false
|
||||
layout_mode = 2
|
|
@ -1,6 +1,8 @@
|
|||
using System.Threading;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Godot;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using HttpClient = System.Net.Http.HttpClient;
|
||||
|
||||
namespace BITKit;
|
||||
|
@ -24,7 +26,7 @@ public partial class BITAppForGodot : Node
|
|||
BIT4Log.OnException += x=>GD.PrintErr(x.ToString());
|
||||
|
||||
//启动BITApp
|
||||
BITApp.Start(ProjectSettings.GetSetting("application/config/name").AsString());
|
||||
BITApp.Start(ProjectSettings.GetSetting("application/config/name").AsString()).Forget();
|
||||
BIT4Log.Log<BITAppForGodot>("已创建BITApp");
|
||||
}
|
||||
|
||||
|
@ -36,9 +38,10 @@ public partial class BITAppForGodot : Node
|
|||
|
||||
//添加测试用HttpClient
|
||||
BITApp.ServiceCollection.AddSingleton<HttpClient>();
|
||||
BITApp.ServiceCollection.AddLogging();
|
||||
|
||||
//构造依赖服务提供接口
|
||||
BITApp.BuildService();
|
||||
//BITApp.BuildService();
|
||||
|
||||
//设置光标状态
|
||||
AllowCursor.AddListener(SetCursor);
|
||||
|
@ -49,10 +52,8 @@ public partial class BITAppForGodot : Node
|
|||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
#pragma warning disable CS4014
|
||||
//停止BITApp
|
||||
BITApp.Stop();
|
||||
#pragma warning restore CS4014
|
||||
BIT4Log.Log<BITAppForGodot>("已安全退出App");
|
||||
}
|
||||
private void Exit()
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
namespace BITKit.Display;
|
||||
public partial class DisplayService : Node
|
||||
{
|
||||
public void SetDisplay(string resolution)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
|
@ -2,7 +2,10 @@ using Godot;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using BITKit.Core.Entites;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace BITKit;
|
||||
/// <summary>
|
||||
/// 用于Godot的ECS.Entity实现
|
||||
|
@ -12,7 +15,7 @@ public partial class Entity : Node,IEntity
|
|||
/// <summary>
|
||||
/// 类型组件的缓存
|
||||
/// </summary>
|
||||
private readonly Dictionary<Type,IEntityComponent> TypeComponents=new ();
|
||||
private readonly Dictionary<Type,object> TypeComponents=new ();
|
||||
/// <summary>
|
||||
/// IEntityService的缓存
|
||||
/// </summary>
|
||||
|
@ -27,6 +30,11 @@ public partial class Entity : Node,IEntity
|
|||
/// </summary>
|
||||
public ulong Id { get; private set; }
|
||||
/// <summary>
|
||||
/// 服务提供者
|
||||
/// </summary>
|
||||
public IServiceProvider ServiceProvider { get; private set; }
|
||||
private IServiceCollection _serviceCollection;
|
||||
/// <summary>
|
||||
/// 加载所有EntityComponent的内部实现
|
||||
/// </summary>
|
||||
public override void _Ready()
|
||||
|
@ -34,9 +42,26 @@ public partial class Entity : Node,IEntity
|
|||
List<IEntityComponent> entityComponents = new();
|
||||
Id = GetInstanceId();
|
||||
_entitiesService = DI.Get<IEntitiesService>();
|
||||
|
||||
_serviceCollection = new ServiceCollection();
|
||||
_serviceCollection.AddLogging();
|
||||
|
||||
|
||||
foreach (var x in MathNode.GetAllNode(this))
|
||||
{
|
||||
GetInstanceId();
|
||||
|
||||
if (x is IEntityComponent entityComponent)
|
||||
{
|
||||
entityComponent.BuildService(_serviceCollection);
|
||||
}
|
||||
|
||||
foreach (var customType in x.GetType().GetCustomAttributes<CustomTypeAttribute>())
|
||||
{
|
||||
_serviceCollection.AddSingleton(customType.Type,x);
|
||||
}
|
||||
ServiceProvider = _serviceCollection.BuildServiceProvider();
|
||||
|
||||
if (x is not IEntityComponent component) continue;
|
||||
component.Entity = this;
|
||||
TypeComponents.TryAdd(component.BaseType,component);
|
||||
|
@ -44,7 +69,7 @@ public partial class Entity : Node,IEntity
|
|||
component.OnAwake();
|
||||
entityComponents.Add(component);
|
||||
}
|
||||
foreach (var component in TypeComponents.Values)
|
||||
foreach (var component in TypeComponents.Values.OfType<IEntityComponent>())
|
||||
{
|
||||
component.OnStart();
|
||||
}
|
||||
|
@ -52,7 +77,7 @@ public partial class Entity : Node,IEntity
|
|||
this._components = entityComponents.ToArray();
|
||||
SetMeta("Components",Variant.From(_components.Select(x=>x.GetType().Name).ToArray()));
|
||||
}
|
||||
public bool TryGetComponent<T>(out T component) where T : IEntityComponent
|
||||
public bool TryGetComponent<T>(out T component)
|
||||
{
|
||||
if (TypeComponents.TryGetValue(typeof(T), out var iComponent) && iComponent is T _component)
|
||||
{
|
||||
|
@ -71,8 +96,10 @@ public partial class Entity : Node,IEntity
|
|||
}
|
||||
}
|
||||
|
||||
public bool RegisterComponent<T>(T component) where T : IEntityComponent
|
||||
public bool RegisterComponent<T>(T component)
|
||||
{
|
||||
return TypeComponents.TryAdd(typeof(T), component);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using BITKit.Core.Entites;
|
||||
using Godot;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace BITKit;
|
||||
/// <summary>
|
||||
|
@ -10,6 +11,7 @@ public partial class EntityComponent : Node,IEntityComponent
|
|||
{
|
||||
public virtual Type BaseType => GetType();
|
||||
public IEntity Entity { get; set; }
|
||||
public virtual void BuildService(IServiceCollection serviceCollection){}
|
||||
public virtual void OnStart(){}
|
||||
public virtual void OnAwake(){}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ public partial class GodotEntitiesService : Node,IEntitiesService
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public IEntity[] Query<T>() where T : IEntityComponent
|
||||
public IEntity[] Query<T>()
|
||||
{
|
||||
return _entities.Values.Where(x => x.TryGetComponent<T>(out _)).ToArray();
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public partial class GodotEntitiesService : Node,IEntitiesService
|
|||
.Select(x => new ValueTuple<T>(x))
|
||||
.ToArray();
|
||||
}
|
||||
public (T, T1)[] QueryComponents<T, T1>() where T : IEntityComponent where T1 : IEntityComponent
|
||||
public (T, T1)[] QueryComponents<T, T1>()
|
||||
{
|
||||
var entities = _entities.Values.Where(x => x.TryGetComponent<T>(out _) && x.TryGetComponent<T1>(out _));
|
||||
var result = new List<(T, T1)>();
|
||||
|
@ -89,7 +89,7 @@ public partial class GodotEntitiesService : Node,IEntitiesService
|
|||
return result.ToArray();
|
||||
}
|
||||
|
||||
public (T, T1, T2)[] QueryComponents<T, T1, T2>() where T : IEntityComponent where T1 : IEntityComponent where T2 : IEntityComponent
|
||||
public (T, T1, T2)[] QueryComponents<T, T1, T2>()
|
||||
{
|
||||
return _entities.Values
|
||||
.Where(x => x.TryGetComponent<T>(out _) && x.TryGetComponent<T1>(out _) && x.TryGetComponent<T2>(out _))
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
using System;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace BITKit;
|
||||
|
||||
public interface IDatabaseContext<T> where T : class
|
||||
{
|
||||
void Add(T entity);
|
||||
UniTask AddAsync(T entity);
|
||||
void Remove(T entity);
|
||||
T[] GetArray();
|
||||
bool TrySearch(Func<T, bool> searchFactory, out T result);
|
||||
bool TrySearchArray(Func<T, bool> searchFactory, out T[] result);
|
||||
}
|
||||
|
||||
public abstract class EntityFrameworkContext<T>:DbContext ,IDatabaseContext<T> where T : class
|
||||
{
|
||||
protected DbSet<T> context { get; private set; }
|
||||
|
||||
public void Add(T entity)
|
||||
{
|
||||
context.Add(entity);
|
||||
SaveChanges();
|
||||
}
|
||||
|
||||
public async UniTask AddAsync(T entity)
|
||||
{
|
||||
await context.AddAsync(entity);
|
||||
await SaveChangesAsync();
|
||||
}
|
||||
|
||||
public void Remove(T entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public T[] GetArray()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool TrySearch(Func<T, bool> searchFactory, out T result)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool TrySearchArray(Func<T, bool> searchFactory, out T[] result)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging.Console;
|
||||
|
||||
namespace BITKit;
|
||||
|
||||
public class MySQLContext<T>:DbContext where T:class
|
||||
{
|
||||
protected readonly string _connectSql;
|
||||
protected DbSet<T> context { get; private set; }
|
||||
public MySQLContext(string connectSql) : base()
|
||||
{
|
||||
_connectSql = connectSql;
|
||||
}
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
optionsBuilder.UseMySQL("_connectSql");
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace BITKit;
|
||||
|
||||
|
||||
|
||||
public class SqlLiteContext<T> : DbContext,IDatabaseContext<T> where T : class
|
||||
{
|
||||
public DbSet<T> context { get; private set; }
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
var sql = SQLiteContextHelper.GetConnectionString<T>();
|
||||
optionsBuilder.UseSqlite(sql);
|
||||
}
|
||||
public virtual void Add(T entity)
|
||||
{
|
||||
context.Add(entity);
|
||||
SaveChanges();
|
||||
}
|
||||
|
||||
public UniTask AddAsync(T entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public virtual void Remove(T entity)
|
||||
{
|
||||
context.Remove(entity);
|
||||
SaveChanges();
|
||||
}
|
||||
public virtual T[] GetArray()
|
||||
{
|
||||
return context.ToArray();
|
||||
}
|
||||
public virtual bool TrySearch(Func<T,bool> searchFactory,out T result)
|
||||
{
|
||||
result = context.FirstOrDefault(searchFactory);
|
||||
return result != null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 搜索数组
|
||||
/// </summary>
|
||||
/// <param name="searchFactory"></param>
|
||||
/// <param name="result"></param>
|
||||
/// <returns></returns>
|
||||
public virtual bool TrySearchArray(Func<T, bool> searchFactory, out T[] result)
|
||||
{
|
||||
result = context.Where(searchFactory).ToArray();
|
||||
return result.Length > 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static class SQLiteContextHelper
|
||||
{
|
||||
private const string _database = "Database";
|
||||
|
||||
public static string GetConnectionString(string key)
|
||||
{
|
||||
GetConnectionSqlAndPath(key,out var connectionSql,out var path);
|
||||
BIT4Log.Log($"已创建数据库链接:{path}");
|
||||
return connectionSql;
|
||||
}
|
||||
|
||||
public static string GetConnectionString<T>()
|
||||
{
|
||||
GetConnectionSqlAndPath(typeof(T).Name,out var connectionSql,out var path);
|
||||
BIT4Log.Log<T>($"已创建数据库链接:{path}");
|
||||
return connectionSql;
|
||||
}
|
||||
|
||||
public static void GetConnectionSqlAndPath(string name,out string connectionSql,out string path)
|
||||
{
|
||||
PathHelper.GetFolderPath(_database);
|
||||
path = PathHelper.GetPath(_database, $"{name}.db");
|
||||
connectionSql = $"Data Source={path}";
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
using Godot;
|
||||
using System;
|
||||
|
||||
namespace BITKit;
|
||||
namespace BITKit.UX;
|
||||
|
||||
public partial class UXPanel : Control, IUXPanel
|
||||
{
|
||||
|
@ -10,29 +10,33 @@ public partial class UXPanel : Control, IUXPanel
|
|||
[Export] private bool allowInput;
|
||||
[Export] private bool isStartPanel;
|
||||
public bool IsAnimate => isAnimate;
|
||||
public bool IsValid { get; set; }
|
||||
public string Index => _index;
|
||||
public bool AllowCursor => allowCursor;
|
||||
|
||||
public bool AllowInput => allowInput;
|
||||
|
||||
private string _index;
|
||||
public virtual void OnEntry(){}
|
||||
public virtual void Entry()
|
||||
{
|
||||
Show();
|
||||
OnEntry();
|
||||
//OnEntry();
|
||||
}
|
||||
|
||||
public virtual void Exit()
|
||||
{
|
||||
Hide();
|
||||
OnExit();
|
||||
//OnExit();
|
||||
}
|
||||
|
||||
public virtual void OnExit(){}
|
||||
public event Action OnEntry;
|
||||
public event Action OnExit;
|
||||
|
||||
|
||||
//public virtual void OnExit(){}
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
IsValid = true;
|
||||
_index = GetType().FullName == typeof(UXPanel).FullName ? Name : GetType().FullName;
|
||||
UXService.Register(this);
|
||||
|
||||
|
@ -49,9 +53,6 @@ public partial class UXPanel : Control, IUXPanel
|
|||
public override void _ExitTree()
|
||||
{
|
||||
UXService.UnRegister(this);
|
||||
IsValid = false;
|
||||
}
|
||||
// protected override void Dispose(bool disposing)
|
||||
// {
|
||||
// UXService.UnRegister(this);
|
||||
// }
|
||||
}
|
||||
|
|
|
@ -4,43 +4,9 @@ using System.Linq;
|
|||
using System.Xml;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace BITKit;
|
||||
/// <summary>
|
||||
/// 基本UX面板接口,定义了基本的UX面板功能
|
||||
/// </summary>
|
||||
/// <para>⭐同步打开与关闭</para>
|
||||
/// <para>⭐异步打开与关闭</para>
|
||||
/// <para>⭐当前可见状态</para>
|
||||
/// <para>⭐基本UI导航回调</para>
|
||||
public interface IUXPanel
|
||||
{
|
||||
/// <summary>
|
||||
/// 该面板是否具有动画
|
||||
/// </summary>
|
||||
bool IsAnimate { get; }
|
||||
/// <summary>
|
||||
/// 该面板的索引(入口,Key)
|
||||
/// </summary>
|
||||
string Index { get; }
|
||||
/// <summary>
|
||||
/// 该面板是否启用指针
|
||||
/// </summary>
|
||||
bool AllowCursor { get; }
|
||||
/// <summary>
|
||||
/// 该面板是否启用玩家输入
|
||||
/// </summary>
|
||||
bool AllowInput { get; }
|
||||
void Entry();
|
||||
void Exit();
|
||||
}
|
||||
namespace BITKit.UX;
|
||||
|
||||
/// <summary>
|
||||
/// 基本UX服务(GUI管理器),主要通过加载叠加面板实现
|
||||
/// </summary>
|
||||
/// <para>使用方式:</para>
|
||||
///
|
||||
///
|
||||
public partial class UXService : Control
|
||||
public partial class UXService : Control, IUXService
|
||||
{
|
||||
private static UXService Singleton;
|
||||
|
||||
|
@ -53,19 +19,13 @@ public partial class UXService : Control
|
|||
Singleton = this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册面板,加入注册队列
|
||||
/// </summary>
|
||||
/// <param name="panel">UX面板</param>
|
||||
|
||||
public static void Register(IUXPanel panel)
|
||||
{
|
||||
RegistryQueue.Enqueue(panel);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注销面板
|
||||
/// </summary>
|
||||
/// <param name="panel">UX面板</param>
|
||||
|
||||
public static void UnRegister(IUXPanel panel)
|
||||
{
|
||||
UnRegistryQueue.Enqueue(panel);
|
||||
|
@ -131,11 +91,7 @@ public partial class UXService : Control
|
|||
|
||||
private static InitializationState InitializationState;
|
||||
|
||||
private void _Entry(IUXPanel panel)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
if (TransitionPanles.Count is not 0) return;
|
||||
|
@ -169,4 +125,10 @@ public partial class UXService : Control
|
|||
EnabledPanels.Push(next);
|
||||
History.Push(next);
|
||||
}
|
||||
void IUXService.Register(IUXPanel panel)=>Register(panel);
|
||||
void IUXService.UnRegister(IUXPanel panel)=>UnRegister(panel);
|
||||
void IUXService.Entry<T>() => Open<T>();
|
||||
void IUXService.Return() => Return();
|
||||
void IUXService.Entry(IUXPanel panel) => Open(panel);
|
||||
void IUXService.Entry(string panelName) => Open(panelName);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
using Godot;
|
||||
using System;
|
||||
using BITKit.UX;
|
||||
|
||||
namespace BITKit;
|
||||
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
using Godot;
|
||||
using System;
|
||||
using Godot.Collections;
|
||||
|
||||
namespace BITKit.UX
|
||||
{
|
||||
[Tool]
|
||||
public partial class UXTabViewService : Control
|
||||
{
|
||||
[ExportCategory(Constant.Header.Settings)]
|
||||
[Export(PropertyHint.Range, "0,100,1")]
|
||||
private int currentIndex
|
||||
{
|
||||
get=>_currentIndex;
|
||||
set => SetIndex(value);
|
||||
}
|
||||
[Export] private int initialIndex;
|
||||
[ExportCategory(Constant.Header.Components)]
|
||||
[Export] private Array<Button> tabs;
|
||||
[Export] private TabContainer tabContainer;
|
||||
private ButtonGroup _buttonGroup;
|
||||
|
||||
private int _currentIndex;
|
||||
|
||||
public override void _Ready()
|
||||
{
|
||||
if (_isReady is false) return;
|
||||
_buttonGroup = new ButtonGroup();
|
||||
|
||||
for (var i = 0; i < tabs.Count; i++)
|
||||
{
|
||||
var tab = tabs[i];
|
||||
var _i = i;
|
||||
tab.Pressed += () => { SetIndex(_i); };
|
||||
}
|
||||
|
||||
var index = (Engine.IsEditorHint(), currentIndex, initialIndex) switch
|
||||
{
|
||||
(true,_,_)=>currentIndex,
|
||||
(false,_,>-1)=>initialIndex,
|
||||
(_,_,-1)=>-1,
|
||||
_ => -1
|
||||
};
|
||||
SetIndex(index);
|
||||
}
|
||||
|
||||
private void SetIndex(int value)
|
||||
{
|
||||
if (_isReady is false) return;
|
||||
if (value < 0) return;
|
||||
|
||||
EnsureConfiguration();
|
||||
|
||||
value = Mathf.Clamp(value, 0, tabContainer.GetChildCount() -1 );
|
||||
|
||||
_currentIndex = value;
|
||||
tabContainer.CurrentTab = value;
|
||||
|
||||
foreach (var tab in tabs)
|
||||
{
|
||||
tab.ButtonPressed = false;
|
||||
}
|
||||
if (tabs.TryGetElementAt(value, out var button))
|
||||
{
|
||||
button.ButtonPressed = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureConfiguration()
|
||||
{
|
||||
if (_isReady is false) return;
|
||||
tabContainer.TabsVisible = false;
|
||||
|
||||
foreach (var tab in tabs)
|
||||
{
|
||||
tab.ButtonGroup = _buttonGroup;
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isReady => IsNodeReady() && tabContainer is not null & tabs is not null;
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@ using Godot.Collections;
|
|||
|
||||
namespace BITKit;
|
||||
[Tool]
|
||||
[Obsolete("see UXTabContainerService")]
|
||||
public partial class UXWindowService : Control
|
||||
{
|
||||
[Export] private Array<Button> tabs;
|
||||
|
@ -34,7 +35,6 @@ public partial class UXWindowService : Control
|
|||
//if(window.Visible is true && window != x)
|
||||
x.Hide();
|
||||
}
|
||||
|
||||
var index = windows.IndexOf(window as Control);
|
||||
if (index is not -1)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#if Deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using BITKit;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
@ -11,11 +13,18 @@ public partial class IDIS_RegisterDB : FormDBProvider
|
|||
{
|
||||
public override void Submit(string data)
|
||||
{
|
||||
|
||||
|
||||
var jObject = JsonConvert.DeserializeObject<JObject>(data);
|
||||
var handle = jObject["handle"]!.ToObject<string>();
|
||||
var values = jObject["values"]!.ToObject<List<IDIS_Data>>();
|
||||
var references = jObject["references"]!.ToObject<List<string>>();
|
||||
var createUser = jObject["createUser"]!.ToObject<string>();
|
||||
|
||||
if(Regex.IsMatch(handle,IDIS_Code.AddressRegex) is false)
|
||||
{
|
||||
throw new InvalidOperationException("标识格式不正确");
|
||||
}
|
||||
|
||||
IDIS_Service.Singleton.Register(handle, createUser);
|
||||
foreach (var x in values)
|
||||
|
@ -29,3 +38,4 @@ public partial class IDIS_RegisterDB : FormDBProvider
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,3 +1,4 @@
|
|||
#if Deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -104,3 +105,4 @@ public partial class IDIS_RegisterWeaver : FormWeaverResource
|
|||
container.lineEdit.TextChanged += x => _references[myIndex] = x;
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,3 +1,4 @@
|
|||
#if Deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
|
@ -17,3 +18,4 @@ public partial class IDIS_AutoRegResource : Resource
|
|||
[Export] public string RefHandleSeed;
|
||||
|
||||
}
|
||||
#endif
|
|
@ -1,3 +1,4 @@
|
|||
#if deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -83,3 +84,4 @@ public partial class IDIS_AutoRegister : Node
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,26 @@
|
|||
using System;
|
||||
using BITKit;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Godot;
|
||||
using IDIS.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace BITFactory;
|
||||
/// <summary>
|
||||
/// 标识码注册与查询服务
|
||||
/// </summary>
|
||||
public partial class IDIS_GodotBasedService:EntityComponent
|
||||
{
|
||||
public override void BuildService(IServiceCollection serviceCollection)
|
||||
{
|
||||
serviceCollection.AddTransient<IDIS_Service, IDIS_Service_SQLite>();
|
||||
}
|
||||
|
||||
public override async void OnStart()
|
||||
{
|
||||
base.OnStart();
|
||||
var service = Entity.ServiceProvider.GetRequiredService<IDIS_Service>();
|
||||
await service.IsExistAsync("123");
|
||||
}
|
||||
}
|
|
@ -1,3 +1,5 @@
|
|||
#if Deprecated
|
||||
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
|
@ -156,8 +158,7 @@ public partial class IDIS_SearchService : Node
|
|||
DisplayServer.ClipboardSet(currentHandle);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,310 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Net.Mime;
|
||||
using System.Reflection.Metadata;
|
||||
using BITKit;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Godot;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Constant = BITKit.Constant;
|
||||
|
||||
namespace BITFactory;
|
||||
// ReSharper disable once IdentifierTypo
|
||||
[Serializable]
|
||||
public abstract class IDIS_Base
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime CreateTime { get; set; }=DateTime.Now;
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
public DateTime UpdateTime { get; set; }=DateTime.Now;
|
||||
}
|
||||
// ReSharper disable once IdentifierTypo
|
||||
/// <summary>
|
||||
/// 标识的值
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class IDIS_Value:IDIS_Base
|
||||
{
|
||||
/// <summary>
|
||||
/// 标识码
|
||||
/// </summary>
|
||||
[Key]
|
||||
public string Handle { get; set; }
|
||||
/// <summary>
|
||||
/// 创建用户,例如:模板名称,用户名称
|
||||
/// </summary>
|
||||
public string CreateUser { get; set; }
|
||||
}
|
||||
// ReSharper disable once IdentifierTypo
|
||||
public class IDIS_Query : IDIS_Value
|
||||
{
|
||||
|
||||
// ReSharper disable once IdentifierTypo
|
||||
/// <summary>
|
||||
/// 关联的数据
|
||||
/// </summary>
|
||||
public IDIS_Data[] Datas { get; internal set; }
|
||||
// ReSharper disable once IdentifierTypo
|
||||
/// <summary>
|
||||
/// 关联的标识引用
|
||||
/// </summary>
|
||||
public IDIS_Reference[] References { get; internal set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 标识的格式
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
// ReSharper disable once IdentifierTypo
|
||||
public class IDIS_Data:IDIS_Base
|
||||
{
|
||||
/// <summary>
|
||||
/// 不需要处理这个
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int Index { get; set; }
|
||||
/// <summary>
|
||||
/// 标识码
|
||||
/// </summary>
|
||||
public string Handle { get; set; }
|
||||
/// <summary>
|
||||
/// 记录的名称,通常为中文
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
/// <summary>
|
||||
/// 值类型,例如string,url,site
|
||||
/// </summary>
|
||||
public string Format { get; set; }
|
||||
/// <summary>
|
||||
/// 值
|
||||
/// </summary>
|
||||
public string Value { get; set; }
|
||||
/// <summary>
|
||||
/// 类型,用于解析时对数据条目进行分类
|
||||
/// </summary>
|
||||
public string Category { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 标识的引用或关联
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
// ReSharper disable once IdentifierTypo
|
||||
public class IDIS_Reference:IDIS_Base
|
||||
{
|
||||
/// <summary>
|
||||
/// 不需要处理这个
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int Index{ get; set; }
|
||||
/// <summary>
|
||||
/// 标识码
|
||||
/// </summary>
|
||||
public string Handle { get; set; }
|
||||
/// <summary>
|
||||
/// 相关联的标识
|
||||
/// </summary>
|
||||
public string RelatedHandle { get; set; }
|
||||
}
|
||||
// ReSharper disable once IdentifierTypo
|
||||
public class IDIS_DBContext:DbContext
|
||||
{
|
||||
/// <summary>
|
||||
/// 标识表
|
||||
/// </summary>
|
||||
private DbSet<IDIS_Value> Values { get; set; }
|
||||
/// <summary>
|
||||
/// 标识数据表
|
||||
/// </summary>
|
||||
private DbSet<IDIS_Data> Datas{ get; set; }
|
||||
/// <summary>
|
||||
/// 标识引用表
|
||||
/// </summary>
|
||||
private DbSet<IDIS_Reference> References{ get; set; }
|
||||
/// <summary>
|
||||
/// 确保创建数据库
|
||||
/// </summary>
|
||||
/// <param name="optionsBuilder"></param>
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
// ReSharper disable once StringLiteralTypo
|
||||
//var sql = SQLiteContextHelper.GetConnectionString("IDIS");
|
||||
SQLiteContextHelper.GetConnectionSqlAndPath("IDIS",out var sql,out var path);
|
||||
optionsBuilder.UseSqlite(sql);
|
||||
optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.TrackAll);
|
||||
BIT4Log.Log<IDIS_DBContext>($"已创建标识数据库:{path}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询多个标识
|
||||
/// </summary>
|
||||
/// <param name="key">模糊标识码</param>
|
||||
/// <param name="queries">查询列表</param>
|
||||
/// <returns>是否查询到了内容</returns>
|
||||
public bool Query(string key, out IDIS_Query[] queries)
|
||||
{
|
||||
ChangeTracker.DetectChanges();
|
||||
ChangeTracker.Clear();
|
||||
|
||||
var _data = Datas.ToList();
|
||||
var _values = Values.ToList();
|
||||
var handleKey = key.Split('?').First();
|
||||
|
||||
var _queries=_values.Where(x => x.Handle.Contains(handleKey) || (string.IsNullOrEmpty(x.CreateUser) is false && x.CreateUser.Contains(handleKey))).ToArray();
|
||||
var searchEnties =new List<KeyValuePair<string, string>>();
|
||||
if (_queries.Any() is false)
|
||||
{
|
||||
queries = Array.Empty<IDIS_Query>();
|
||||
return false;
|
||||
}
|
||||
if (key.Contains('?'))
|
||||
{
|
||||
var expression = key.Split("?", 2).Last();
|
||||
foreach (var cmd in expression.Split("&").Where(x=>x.Contains('=')).Where(x=>x.Split('=').Length is 2)) {
|
||||
var split = cmd.Split('=',2);
|
||||
var name = split[0];
|
||||
var value = split[1];
|
||||
searchEnties.Add(new KeyValuePair<string, string>(name,value));
|
||||
var validData = _data.Where(x => x.Name == name && x.Value == value);
|
||||
if (_queries.Any())
|
||||
{
|
||||
validData = validData.Where(x=>_queries.Any(y=>y.Handle==x.Handle));
|
||||
}
|
||||
_queries=_values
|
||||
.Select(x=>validData.Any(y=>x.Handle == y.Handle)?x:null)
|
||||
.Where(x=>x!=null)
|
||||
.ToArray();
|
||||
}
|
||||
}
|
||||
queries = _queries.Select(x => new IDIS_Query()
|
||||
{
|
||||
Handle = x.Handle,
|
||||
CreateTime = x.CreateTime,
|
||||
UpdateTime = x.UpdateTime,
|
||||
CreateUser = x.CreateUser,
|
||||
Datas = Datas.Where(data => data.Handle == x.Handle).ToArray(),
|
||||
References = References.Where(reference => reference.Handle == x.Handle).ToArray()
|
||||
}).ToArray();
|
||||
if (searchEnties.Any())
|
||||
{
|
||||
var newQueries = new List<IDIS_Query>();
|
||||
foreach (var query in queries)
|
||||
{
|
||||
query.Datas = query.Datas.Where(x=>searchEnties.Any(y=>y.Key==x.Name&&y.Value==x.Value)).ToArray();
|
||||
newQueries.Add(query);
|
||||
}
|
||||
queries=newQueries.ToArray();
|
||||
}
|
||||
return queries.Any();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询单个标识
|
||||
/// </summary>
|
||||
/// <param name="key">模糊标识</param>
|
||||
/// <param name="query">标识查询结果</param>
|
||||
/// <returns>是否查询到了标识</returns>
|
||||
public bool Query(string key, out IDIS_Query query)
|
||||
{
|
||||
Query(key, out IDIS_Query[] queries);
|
||||
query = queries.FirstOrDefault();
|
||||
return queries.Any();
|
||||
}
|
||||
public bool Register(string handle,string createUser = Constant.System.Internal)
|
||||
{
|
||||
var handleExists = Values.Any(x => x.Handle == handle);
|
||||
if (handleExists)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var value = new IDIS_Value()
|
||||
{
|
||||
Handle = handle,
|
||||
CreateUser = createUser,
|
||||
};
|
||||
Values.Add(value);
|
||||
SaveChangesAsync();
|
||||
return true;
|
||||
}
|
||||
public void Register(string handle,string name,string format, string value,string category)
|
||||
{
|
||||
var handleExists = Values.Any(x => x.Handle == handle);
|
||||
if (!handleExists)
|
||||
{
|
||||
Register(handle);
|
||||
}
|
||||
var data = new IDIS_Data()
|
||||
{
|
||||
Name = name,
|
||||
Handle = handle,
|
||||
Format = format,
|
||||
Value = value,
|
||||
Category = category,
|
||||
};
|
||||
Datas.Add(data);
|
||||
SaveChangesAsync();
|
||||
}
|
||||
|
||||
public void RegisterReference(string handle, string refenceHandle)
|
||||
{
|
||||
References.Add(new IDIS_Reference()
|
||||
{
|
||||
Handle = handle,
|
||||
RelatedHandle = refenceHandle,
|
||||
});
|
||||
SaveChangesAsync();
|
||||
}
|
||||
|
||||
public bool Update(string handle, string name, string value)
|
||||
{
|
||||
var result = Datas.FirstOrDefault(x => x.Handle == handle && x.Name == name);
|
||||
if (result is null) return false;
|
||||
|
||||
var handleValue = Values.FirstOrDefault(x=>x.Handle==handle);
|
||||
if (handleValue != null) handleValue.UpdateTime = DateTime.Now;
|
||||
|
||||
result.UpdateTime=DateTime.Now;
|
||||
result.Value = value;
|
||||
SaveChangesAsync();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// ReSharper disable once IdentifierTypo
|
||||
/// <summary>
|
||||
/// 标识码注册与查询服务
|
||||
/// </summary>
|
||||
public partial class IDIS_Service:Node
|
||||
{
|
||||
public static IDIS_Service Singleton { get; private set; }
|
||||
private static IDIS_DBContext Context;
|
||||
public override void _Ready()
|
||||
{
|
||||
Context = new IDIS_DBContext();
|
||||
BIT4Log.Log<IDIS_Service>("已创建标识数据库");
|
||||
UniTask.Run(()=>Context.Database.EnsureCreatedAsync());
|
||||
}
|
||||
|
||||
public override void _EnterTree()
|
||||
{
|
||||
Singleton = this;
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
{
|
||||
Context.Dispose();
|
||||
Context = null;
|
||||
}
|
||||
|
||||
public bool Query(string word,out IDIS_Query[] queries) => Context.Query(word, out queries);
|
||||
public bool Register(string handle,string createUser=Constant.System.Internal) => Context.Register(handle,createUser);
|
||||
public void Register(string handle,string name, string format, string value,string category) => Context.Register(handle,name, format, value,category);
|
||||
public void RegisterReference(string handle,string refenceHandle) => Context.RegisterReference(handle,refenceHandle);
|
||||
public static string GenerateHandle() => $"88.123.99/{Mathf.Abs(Guid.NewGuid().GetHashCode())}";
|
||||
public bool Query(string key, out IDIS_Query query) => Context.Query(key, out query);
|
||||
public bool Update(string handle, string name, string value) => Context.Update(handle, name, value);
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
#if Deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
|
@ -124,3 +125,4 @@ public partial class IDIS_THService : Node
|
|||
autoUpdateLabel.SetTextAsync($"温湿度已自动更新:{DateTime.Now}");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#if Deprecated
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
|
@ -164,3 +165,4 @@ public partial class IDIS_TemplateService : Node
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,3 +1,4 @@
|
|||
#if Deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -81,3 +82,4 @@ public partial class IDIS_UpdateService : Node
|
|||
hintsLabel.Text=$"更新成功,已更新{values.Count}个值"+DateTime.Now;
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,3 +1,4 @@
|
|||
#if Deprecated
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
|
@ -19,3 +20,4 @@ public partial class 生成温湿度 : Node
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,133 @@
|
|||
[gd_scene load_steps=31 format=3 uid="uid://0r070e44ohdv"]
|
||||
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_SearchService.cs" id="1_6wrj8"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/Resource/StringResource.cs" id="2_7vxuh"]
|
||||
[ext_resource type="PackedScene" uid="uid://dghty7km181mc" path="res://Mods/工业数据采集与分析应用分享/Templates/关联标识.tscn" id="3_stj0i"]
|
||||
[ext_resource type="PackedScene" uid="uid://42locm7i2wvy" path="res://Mods/工业数据采集与分析应用分享/Templates/标识引用模板.tscn" id="4_rgreg"]
|
||||
[ext_resource type="PackedScene" uid="uid://cccx8fmmfttth" path="res://Mods/工业数据采集与分析应用分享/Templates/标识数据模板.tscn" id="5_osv75"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_THService.cs" id="6_7cq43"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/温湿度Reader.cs" id="7_tx46b"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/TemplateBuilder/TemplateBuilder.cs" id="8_pjjth"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_TemplateResource.cs" id="9_cr8hr"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/Builder/Form/FormBuilder.cs" id="10_l8xqp"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_TemplateWeaver.cs" id="11_iwse4"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_RegisterWeaver.cs" id="12_nhyfw"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Builder/IDIS_RegisterDB.cs" id="13_7qoua"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_AutoRegister.cs" id="14_ehrl5"]
|
||||
[ext_resource type="Resource" uid="uid://cgk1wmiqqedmi" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度传感器/温湿度传感器.tres" id="15_nfip6"]
|
||||
[ext_resource type="Resource" uid="uid://b38onsp3c3jem" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度/温度.tres" id="16_r5dig"]
|
||||
[ext_resource type="Resource" uid="uid://d3xam2no2uaas" path="res://Mods/工业数据采集与分析应用分享/Resource/自动标识模板/温湿度/湿度.tres" id="17_h4yly"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Temp/生成温湿度.cs" id="18_b1euy"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/Quest/QuestService.cs" id="19_xn641"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/ECS/Core/Entity.cs" id="20_pawcj"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/Quest/QuestComponent.cs" id="21_2b2ho"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/Quest/TemplateCondition.cs" id="22_vdbrc"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0tkg4"]
|
||||
script = ExtResource("2_7vxuh")
|
||||
value = "Panel"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_gckd0"]
|
||||
script = ExtResource("9_cr8hr")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0cbl3"]
|
||||
script = ExtResource("9_cr8hr")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0ksfr"]
|
||||
script = ExtResource("11_iwse4")
|
||||
templateResource = SubResource("Resource_0cbl3")
|
||||
addFieldsButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
|
||||
templateBuilderPath = NodePath("..")
|
||||
templateNameEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/templateName-edit")
|
||||
saveTemplateNameButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/save_name-button")
|
||||
deleteTemplateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板生成器/HBoxContainer/标识模板-body/VBoxContainer/TemelateName/MarginContainer/HBoxContainer/deleteTemplate-button")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_mdhxq"]
|
||||
script = ExtResource("9_cr8hr")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0enmn"]
|
||||
script = ExtResource("12_nhyfw")
|
||||
handleEditPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/LineEdit")
|
||||
generateButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/PanelContainer2/MarginContainer/HBoxContainer/Button")
|
||||
addReferenceButtonPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/add-button")
|
||||
referenceEditBuilderPath = NodePath("../../Layout/UX Window Service/Horizontal Layout/内容/MarginContainer/标识模板注册器/HBoxContainer/VBoxContainer2/VBoxContainer/ScrollContainer/VBoxContainer/Reference-Layout")
|
||||
templateBuilderPath = NodePath("..")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0ef5a"]
|
||||
script = ExtResource("13_7qoua")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_c648p"]
|
||||
script = ExtResource("9_cr8hr")
|
||||
|
||||
[node name="标识注册与解析_弃用" type="Node"]
|
||||
|
||||
[node name="_deprecated" type="Node" parent="."]
|
||||
process_mode = 4
|
||||
|
||||
[node name="标识搜索服务" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("1_6wrj8")
|
||||
searchButtonVariation = SubResource("Resource_0tkg4")
|
||||
valueTemplate = ExtResource("3_stj0i")
|
||||
referenceTemplate = ExtResource("4_rgreg")
|
||||
categoryTemplate = ExtResource("5_osv75")
|
||||
searchCandidateContainer = null
|
||||
searchEditPadding = null
|
||||
handleLabel = null
|
||||
createTimeLabel = null
|
||||
updateTimeLabel = null
|
||||
valueContainer = null
|
||||
referenceContainer = null
|
||||
|
||||
[node name="温湿度标识更新服务" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("6_7cq43")
|
||||
currentUpdateMode = 3
|
||||
|
||||
[node name="温湿度传感器Reader" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("7_tx46b")
|
||||
interval = 1000
|
||||
ip = null
|
||||
port = null
|
||||
humidity = null
|
||||
temperature = null
|
||||
|
||||
[node name="标识模板生成器" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("8_pjjth")
|
||||
template = SubResource("Resource_gckd0")
|
||||
|
||||
[node name="FormBuilder" type="Node" parent="_deprecated/标识模板生成器"]
|
||||
script = ExtResource("10_l8xqp")
|
||||
formWeaver = SubResource("Resource_0ksfr")
|
||||
|
||||
[node name="标识模板注册器" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("8_pjjth")
|
||||
template = SubResource("Resource_mdhxq")
|
||||
|
||||
[node name="FormBuilder" type="Node" parent="_deprecated/标识模板注册器"]
|
||||
script = ExtResource("10_l8xqp")
|
||||
formWeaver = SubResource("Resource_0enmn")
|
||||
formDBProvider = SubResource("Resource_0ef5a")
|
||||
|
||||
[node name="自动注册标识" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("14_ehrl5")
|
||||
regResources = Array[Object]([ExtResource("15_nfip6"), ExtResource("16_r5dig"), ExtResource("17_h4yly")])
|
||||
|
||||
[node name="温湿度数据生成" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("18_b1euy")
|
||||
handle = null
|
||||
count = 256
|
||||
|
||||
[node name="模拟生产任务服务" type="Node" parent="_deprecated"]
|
||||
script = ExtResource("19_xn641")
|
||||
|
||||
[node name="注册订单信息" type="Node" parent="_deprecated/模拟生产任务服务"]
|
||||
script = ExtResource("20_pawcj")
|
||||
|
||||
[node name="Quest" type="Node" parent="_deprecated/模拟生产任务服务/注册订单信息"]
|
||||
script = ExtResource("21_2b2ho")
|
||||
QuestName = "注册订单信息"
|
||||
QuestCompleted = null
|
||||
|
||||
[node name="Condition" type="Node" parent="_deprecated/模拟生产任务服务/注册订单信息"]
|
||||
script = ExtResource("22_vdbrc")
|
||||
templateResource = SubResource("Resource_c648p")
|
||||
templateName = "订单信息"
|
|
@ -2,7 +2,7 @@ using System.Diagnostics;
|
|||
using System.Security;
|
||||
using Godot;
|
||||
using BITKit;
|
||||
|
||||
using BITKit.UX;
|
||||
namespace BITFactory;
|
||||
public partial class CourseElement : Node
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://bu5w3n4me3xj2"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://bu5w3n4me3xj2"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://6dpw3hl2gu10" path="res://Mods/工业数据采集与分析应用分享/Arts/Illustrations/Illustration_ABB_Rotbotic_Arm_Rendering_DWADWFF.jpg" id="1_uwo3j"]
|
||||
[ext_resource type="PackedScene" uid="uid://dwdlewpjrt8pf" path="res://Mods/教育平台/Templates/选择课程.tscn" id="2_rvvu8"]
|
||||
|
@ -6,6 +6,8 @@
|
|||
[ext_resource type="Theme" uid="uid://dokwscirps6nt" path="res://Artists/Themes/Factory_Theme.tres" id="3_t8g27"]
|
||||
[ext_resource type="Texture2D" uid="uid://be1o87ilc237s" path="res://Artists/Art/Logos/logo-intelli.png" id="3_wkkwb"]
|
||||
[ext_resource type="PackedScene" uid="uid://cngf2h2a5ne4a" path="res://Mods/工业数据采集与分析应用分享/标识注册与解析.tscn" id="6_1g0h3"]
|
||||
[ext_resource type="Script" path="res://BITKit/Scripts/ECS/Core/Entity.cs" id="7_sk587"]
|
||||
[ext_resource type="Script" path="res://Mods/工业数据采集与分析应用分享/Scripts/IDIS_GodotBasedService.cs" id="8_egj5m"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0jsjw"]
|
||||
bg_color = Color(0, 0, 0, 0.501961)
|
||||
|
@ -27,22 +29,23 @@ texture = ExtResource("1_uwo3j")
|
|||
expand_mode = 1
|
||||
stretch_mode = 6
|
||||
|
||||
[node name="UXPanel" type="VBoxContainer" parent="."]
|
||||
[node name="UX TabView Service" type="VBoxContainer" parent="."]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("2_vgo47")
|
||||
isAnimate = null
|
||||
allowCursor = true
|
||||
allowInput = true
|
||||
isStartPanel = true
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="UXPanel"]
|
||||
[node name="ColorRect" type="ColorRect" parent="UX TabView Service"]
|
||||
custom_minimum_size = Vector2(0, 100)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TabBar" type="TabBar" parent="UXPanel/ColorRect"]
|
||||
[node name="TabBar" type="TabBar" parent="UX TabView Service/ColorRect"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
|
@ -59,7 +62,7 @@ tab_0/title = "教程与实训"
|
|||
tab_1/title = "知识点"
|
||||
tab_2/title = "设置"
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="UXPanel/ColorRect"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="UX TabView Service/ColorRect"]
|
||||
layout_mode = 0
|
||||
offset_left = 189.0
|
||||
offset_right = 737.0
|
||||
|
@ -68,7 +71,7 @@ theme_override_constants/separation = 0
|
|||
alignment = 1
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="Label" type="Label" parent="UXPanel/ColorRect/VBoxContainer"]
|
||||
[node name="Label" type="Label" parent="UX TabView Service/ColorRect/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 1
|
||||
theme_type_variation = &"HeaderMedium"
|
||||
|
@ -76,14 +79,14 @@ theme_override_colors/font_color = Color(0, 0, 0, 1)
|
|||
text = "虚拟仿真实训课程体系"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Label2" type="Label" parent="UXPanel/ColorRect/VBoxContainer"]
|
||||
[node name="Label2" type="Label" parent="UX TabView Service/ColorRect/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("3_t8g27")
|
||||
theme_type_variation = &"HeaderSmall"
|
||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||
text = "Virtual Simulation Training Course System"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="UXPanel/ColorRect"]
|
||||
[node name="MarginContainer" type="MarginContainer" parent="UX TabView Service/ColorRect"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 9
|
||||
anchor_bottom = 1.0
|
||||
|
@ -94,13 +97,13 @@ theme_override_constants/margin_top = 8
|
|||
theme_override_constants/margin_right = 8
|
||||
theme_override_constants/margin_bottom = 8
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="UXPanel/ColorRect/MarginContainer"]
|
||||
[node name="TextureRect" type="TextureRect" parent="UX TabView Service/ColorRect/MarginContainer"]
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_wkkwb")
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="ReferenceRect" type="MarginContainer" parent="UXPanel"]
|
||||
[node name="ReferenceRect" type="MarginContainer" parent="UX TabView Service"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_left = 32
|
||||
|
@ -108,47 +111,51 @@ theme_override_constants/margin_top = 32
|
|||
theme_override_constants/margin_right = 32
|
||||
theme_override_constants/margin_bottom = 32
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="UXPanel/ReferenceRect"]
|
||||
[node name="TabContainer" type="TabContainer" parent="UX TabView Service/ReferenceRect"]
|
||||
layout_mode = 2
|
||||
tabs_visible = false
|
||||
|
||||
[node name="教程" type="HBoxContainer" parent="UX TabView Service/ReferenceRect/TabContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 32
|
||||
|
||||
[node name="Layout" type="VBoxContainer" parent="UXPanel/ReferenceRect/HBoxContainer"]
|
||||
[node name="Layout" type="VBoxContainer" parent="UX TabView Service/ReferenceRect/TabContainer/教程"]
|
||||
custom_minimum_size = Vector2(384, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout/HBoxContainer"]
|
||||
[node name="Label" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderLarge"
|
||||
text = "CAICT定制版"
|
||||
|
||||
[node name="Label2" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout/HBoxContainer"]
|
||||
[node name="Label2" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderSmall"
|
||||
text = "仅包括1个课程"
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="HSeparator" type="HSeparator" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 32
|
||||
|
||||
[node name="Label3" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="Label3" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderLarge"
|
||||
text = "教程与实训"
|
||||
|
||||
[node name="Label4" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="Label4" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderSmall"
|
||||
theme_override_colors/font_color = Color(0, 0.698039, 0.886275, 1)
|
||||
text = "导入链接(试用版未启用)"
|
||||
|
||||
[node name="HSeparator2" type="HSeparator" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="HSeparator2" type="HSeparator" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 32
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
bbcode_enabled = true
|
||||
text = "最后更新时间:
|
||||
|
@ -161,77 +168,77 @@ Powered By
|
|||
重庆市渝北区宝圣湖街道食品城大道18号重庆广告产业园15幢1单元2-3"
|
||||
fit_content = true
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="UXPanel/ReferenceRect/HBoxContainer/Layout"]
|
||||
[node name="GridContainer" type="GridContainer" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout"]
|
||||
layout_mode = 2
|
||||
columns = 2
|
||||
|
||||
[node name="Label" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout/GridContainer"]
|
||||
[node name="Label" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout/GridContainer"]
|
||||
layout_mode = 2
|
||||
text = "联系人:"
|
||||
|
||||
[node name="Label2" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout/GridContainer"]
|
||||
[node name="Label2" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "王浩 15928031321"
|
||||
|
||||
[node name="Label3" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout/GridContainer"]
|
||||
[node name="Label3" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout/GridContainer"]
|
||||
layout_mode = 2
|
||||
text = "邮箱:"
|
||||
|
||||
[node name="Label4" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/Layout/GridContainer"]
|
||||
[node name="Label4" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/Layout/GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "wanghao@cn-intelli.com"
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="UXPanel/ReferenceRect/HBoxContainer"]
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="UX TabView Service/ReferenceRect/TabContainer/教程"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer"]
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_constants/separation = 16
|
||||
|
||||
[node name="Label2" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
[node name="Label2" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderLarge"
|
||||
text = "工业互联网标识解析与注册"
|
||||
|
||||
[node name="NinePatchRect4" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer" instance=ExtResource("2_rvvu8")]
|
||||
[node name="NinePatchRect4" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer" instance=ExtResource("2_rvvu8")]
|
||||
layout_mode = 2
|
||||
CourseScene = ExtResource("6_1g0h3")
|
||||
CourseName = "标注解析与注册"
|
||||
|
||||
[node name="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer" index="0"]
|
||||
[node name="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer" index="0"]
|
||||
text = "标识注册解析模拟系统"
|
||||
|
||||
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer" index="1"]
|
||||
[node name="Label2" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer" index="1"]
|
||||
text = "#371647"
|
||||
|
||||
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer2" index="1"]
|
||||
[node name="Label2" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer2" index="1"]
|
||||
text = "5"
|
||||
|
||||
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer3" index="1"]
|
||||
[node name="Label2" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer3" index="1"]
|
||||
text = "1"
|
||||
|
||||
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer4" index="1"]
|
||||
[node name="Label2" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer4" index="1"]
|
||||
text = "1"
|
||||
|
||||
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer6" index="1"]
|
||||
[node name="Label2" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer6" index="1"]
|
||||
text = "40"
|
||||
|
||||
[node name="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer7" index="0"]
|
||||
[node name="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/VBoxContainer/HBoxContainer/VBoxContainer7" index="0"]
|
||||
text = "协作类型"
|
||||
|
||||
[node name="Label2" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer2" index="2"]
|
||||
[node name="Label2" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4/MarginContainer/HBoxContainer/MarginContainer/VBoxContainer2" index="2"]
|
||||
text = "2023年7月3日"
|
||||
|
||||
[node name="Label" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
[node name="Label" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderLarge"
|
||||
text = "更多实训"
|
||||
|
||||
[node name="Label3" type="Label" parent="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer"]
|
||||
[node name="Label3" type="Label" parent="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 128)
|
||||
layout_mode = 2
|
||||
theme_type_variation = &"HeaderSmall"
|
||||
|
@ -241,4 +248,35 @@ text = "该版本为定制版,只有定制课程"
|
|||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[editable path="UXPanel/ReferenceRect/HBoxContainer/ScrollContainer/VBoxContainer/NinePatchRect4"]
|
||||
[node name="知识点" type="Container" parent="UX TabView Service/ReferenceRect/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="设置" type="Container" parent="UX TabView Service/ReferenceRect/TabContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="UX TabView Service/ReferenceRect/TabContainer/设置"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="OptionButton" type="OptionButton" parent="UX TabView Service/ReferenceRect/TabContainer/设置/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
item_count = 4
|
||||
popup/item_0/text = "640x480"
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "1024x768"
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "1920x1080"
|
||||
popup/item_2/id = 2
|
||||
popup/item_3/text = "2560x1440"
|
||||
popup/item_3/id = 3
|
||||
|
||||
[node name="Services Entity" type="Node" parent="."]
|
||||
script = ExtResource("7_sk587")
|
||||
|
||||
[node name="IDIS Service" type="Node" parent="Services Entity"]
|
||||
script = ExtResource("8_egj5m")
|
||||
|
||||
[connection signal="tab_changed" from="UX TabView Service/ColorRect/TabBar" to="UX TabView Service/ReferenceRect/TabContainer" method="set_current_tab"]
|
||||
|
||||
[editable path="UX TabView Service/ReferenceRect/TabContainer/教程/ScrollContainer/VBoxContainer/NinePatchRect4"]
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dlrxsr1edfa3c"
|
||||
path="res://.godot/imported/image_idis_query_humidity.png-fede8cedbc30ba31caa9efb94acb6ec7.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://ReadMe/工业互联网标识解析与注册/Images/image_idis_query_humidity.png"
|
||||
dest_files=["res://.godot/imported/image_idis_query_humidity.png-fede8cedbc30ba31caa9efb94acb6ec7.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bf4rn7p8hk5xr"
|
||||
path="res://.godot/imported/image_idis_query_humidity_lite.png-c3ba2cb95fe1d3b77d89b96be001cc8e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://ReadMe/工业互联网标识解析与注册/Images/image_idis_query_humidity_lite.png"
|
||||
dest_files=["res://.godot/imported/image_idis_query_humidity_lite.png-c3ba2cb95fe1d3b77d89b96be001cc8e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b74px340ylask"
|
||||
path="res://.godot/imported/img_1.png-537dd0d8f8018a07b73a5695a9dbea56.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://ReadMe/工业互联网标识解析与注册/img_1.png"
|
||||
dest_files=["res://.godot/imported/img_1.png-537dd0d8f8018a07b73a5695a9dbea56.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://by70atmik6il7"
|
||||
path="res://.godot/imported/img_2.png-af6370302e861610555245627bc079d1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://ReadMe/工业互联网标识解析与注册/img_2.png"
|
||||
dest_files=["res://.godot/imported/img_2.png-af6370302e861610555245627bc079d1.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
|
@ -1,18 +1,20 @@
|
|||
<Project Sdk="Godot.NET.Sdk/4.1.0">
|
||||
<Project Sdk="Godot.NET.Sdk/4.1.1">
|
||||
<PropertyGroup>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BITKit\BITKit.csproj" />
|
||||
<ProjectReference Include="..\IDIS_Models\IDIS_Models.csproj" />
|
||||
<ProjectReference Include="..\IDIS_Runtime\IDIS_Runtime.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FuzzySharp" Version="2.0.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.9" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="7.0.9" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0-preview.4.23259.5" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0-preview.4.23259.5" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
<PackageReference Include="MySql.EntityFrameworkCore" Version="7.0.2" />
|
||||
<PackageReference Include="SharpModbus" Version="2.0.0" />
|
||||
<PackageReference Include="UniTask" Version="2.3.3" />
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<Project Sdk="Godot.NET.Sdk/4.1.0">
|
||||
<PropertyGroup>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BITKit\BITKit.csproj" />
|
||||
<ProjectReference Include="..\IDIS_Models\IDIS_Models.csproj" />
|
||||
<ProjectReference Include="..\IDIS_Runtime\IDIS_Runtime.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FuzzySharp" Version="2.0.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.9" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="7.0.9" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
<PackageReference Include="MySql.EntityFrameworkCore" Version="7.0.2" />
|
||||
<PackageReference Include="SharpModbus" Version="2.0.0" />
|
||||
<PackageReference Include="UniTask" Version="2.3.3" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="README.md" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\img.png" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\img_1.png" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\img_2.png" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\标识解析.md" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\_Deprecated\Clip_20230629_005537.png" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\_Deprecated\Clip_20230629_005537.png.import" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\_Deprecated\标识解析.md" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\标识解析步骤.md" />
|
||||
<Content Include="ReadMe\工业互联网标识解析与注册\标识解析演讲稿.md" />
|
||||
</ItemGroup>
|
||||
</Project>
|
16
iFactory.sln
16
iFactory.sln
|
@ -4,6 +4,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iFactory", "iFactory.csproj
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BITKit", "..\BITKit\BITKit.csproj", "{81C8377E-1A22-488B-A1F5-1CA61C70C0F1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IDIS_Models", "..\IDIS_Models\IDIS_Models.csproj", "{D4F10677-28E6-415D-A45D-198291445096}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IDIS_Runtime", "..\IDIS_Runtime\IDIS_Runtime.csproj", "{EC1AFE7F-59FB-4628-90E3-C39368188020}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -23,5 +27,17 @@ Global
|
|||
{81C8377E-1A22-488B-A1F5-1CA61C70C0F1}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{81C8377E-1A22-488B-A1F5-1CA61C70C0F1}.ExportRelease|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{81C8377E-1A22-488B-A1F5-1CA61C70C0F1}.ExportRelease|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D4F10677-28E6-415D-A45D-198291445096}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D4F10677-28E6-415D-A45D-198291445096}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D4F10677-28E6-415D-A45D-198291445096}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D4F10677-28E6-415D-A45D-198291445096}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D4F10677-28E6-415D-A45D-198291445096}.ExportRelease|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D4F10677-28E6-415D-A45D-198291445096}.ExportRelease|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EC1AFE7F-59FB-4628-90E3-C39368188020}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EC1AFE7F-59FB-4628-90E3-C39368188020}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EC1AFE7F-59FB-4628-90E3-C39368188020}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EC1AFE7F-59FB-4628-90E3-C39368188020}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EC1AFE7F-59FB-4628-90E3-C39368188020}.ExportRelease|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EC1AFE7F-59FB-4628-90E3-C39368188020}.ExportRelease|Any CPU.Build.0 = Debug|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
Loading…
Reference in New Issue