diff --git a/DungeonShooting_Godot/editor/src/CodeHintData.cs b/DungeonShooting_Godot/editor/src/CodeHintData.cs
new file mode 100644
index 0000000..d7d866b
--- /dev/null
+++ b/DungeonShooting_Godot/editor/src/CodeHintData.cs
@@ -0,0 +1,8 @@
+namespace DScript.GodotEditor
+{
+ public class CodeHintData
+ {
+ public string Text;
+ public CodeHintType Type;
+ }
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/editor/src/CodeHintItem.cs b/DungeonShooting_Godot/editor/src/CodeHintItem.cs
index 0aa4dde..4c6bd3c 100644
--- a/DungeonShooting_Godot/editor/src/CodeHintItem.cs
+++ b/DungeonShooting_Godot/editor/src/CodeHintItem.cs
@@ -11,6 +11,7 @@
/// 活动时背景颜色
///
private static Color ActiveColor = new Color(0.20784314F,0.30980393F,0.52156866F);
+
///
/// 非活动时背景颜色
///
diff --git a/DungeonShooting_Godot/editor/src/CodeHintPanel.cs b/DungeonShooting_Godot/editor/src/CodeHintPanel.cs
index f8d7f0f..5613a41 100644
--- a/DungeonShooting_Godot/editor/src/CodeHintPanel.cs
+++ b/DungeonShooting_Godot/editor/src/CodeHintPanel.cs
@@ -9,6 +9,12 @@
///
public class CodeHintPanel : Popup
{
+ private class CodeHintItemData
+ {
+ public CodeHintItem CodeHintItem;
+ public bool VisibleFlag;
+ }
+
//补全选项
[Export] private PackedScene CodeHintItem;
@@ -32,8 +38,10 @@
//提示项父容器
private VBoxContainer _itemContainer;
+ //包含提示数据
+ private List _hintDataList = new List();
//当前已启用项的列表
- private List _activeItemList = new List();
+ private List _activeItemList = new List();
//长按计时器
private float _clickTimer = 0;
@@ -56,8 +64,9 @@
for (int i = 0; i < CodeTextEdit.KeyCodes.Length; i++)
{
- var item = CreateItem();
- item.CodeText = CodeTextEdit.KeyCodes[i];
+ _hintDataList.Add(new CodeHintData() { Text = CodeTextEdit.KeyCodes[i] });
+ // var item = CreateItem();
+ // item.CodeHintItem.CodeText = CodeTextEdit.KeyCodes[i];
}
}
@@ -155,7 +164,8 @@
var result = Regex.Match(beforeStr, "[\\w]+$");
if (result.Success)
{
- var text = _activeItemList[index].CodeText;
+ var item = _activeItemList[index];
+ var text = item.CodeHintItem.CodeText;
lineStr = beforeStr.Substring(0,
result.Index) + text + lineStr.Substring(column);
_textEdit.SetLine(line, lineStr);
@@ -164,7 +174,8 @@
}
else
{
- _textEdit.InsertTextAtCursor(_activeItemList[index].CodeText);
+ var item = _activeItemList[index];
+ _textEdit.InsertTextAtCursor(item.CodeHintItem.CodeText);
}
}
@@ -206,7 +217,8 @@
//禁用之前的
if (_activeIndex >= 0 && _activeIndex < _activeItemList.Count)
{
- _activeItemList[_activeIndex].SetActive(false);
+ var item = _activeItemList[_activeIndex];
+ item.CodeHintItem.SetActive(false);
}
_activeIndex = index;
@@ -215,13 +227,13 @@
if (index >= 0 && index < _activeItemList.Count)
{
var item = _activeItemList[index];
- item.SetActive(true);
+ item.CodeHintItem.SetActive(true);
//矫正滑动组件y轴值, 使其选中项不会跑到视野外
var vertical = _scrollContainer.ScrollVertical;
var scrollSize = _scrollContainer.GetVScrollbar().RectSize;
- var itemPos = item.RectPosition;
- var itemSize = item.RectSize;
+ var itemPos = item.CodeHintItem.RectPosition;
+ var itemSize = item.CodeHintItem.RectSize;
itemPos.y -= vertical;
if (itemPos.y < 0)
{
@@ -237,11 +249,13 @@
///
/// 创建提示项
///
- private CodeHintItem CreateItem()
+ private CodeHintItemData CreateItem()
{
- var item = CodeHintItem.Instance();
- _itemContainer.AddChild(item);
- item.Index = _activeItemList.Count;
+ var codeHintItem = CodeHintItem.Instance();
+ _itemContainer.AddChild(codeHintItem);
+ codeHintItem.Index = _activeItemList.Count;
+ var item = new CodeHintItemData();
+ item.CodeHintItem = codeHintItem;
_activeItemList.Add(item);
return item;
}