breakpoint

This commit is contained in:
CortexCore
2023-09-15 23:02:46 +08:00
parent f6bf8fffe3
commit eabf0c6188
43 changed files with 1701 additions and 1582 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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");
}
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,3 +1,4 @@
#if Deprecated
using Godot;
using System;
@@ -19,3 +20,4 @@ public partial class 生成温湿度 : Node
}
}
}
#endif

View File

@@ -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 = "订单信息"

View File

@@ -2,7 +2,7 @@ using System.Diagnostics;
using System.Security;
using Godot;
using BITKit;
using BITKit.UX;
namespace BITFactory;
public partial class CourseElement : Node
{

View File

@@ -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"]