mirror of
https://codeberg.org/Ikatono/TierMaker.git
synced 2025-10-28 20:45:35 -05:00
tested version with most of the final functionality. Still a few known issues, like dragging to a row that extends to multiple lines
This commit is contained in:
25
CardCreateImageBox.cs
Normal file
25
CardCreateImageBox.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class CardCreateImageBox : TextureRect
|
||||
{
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
public override void _GuiInput(InputEvent @event)
|
||||
{
|
||||
if (@event is InputEventMouseButton iemb)
|
||||
{
|
||||
if (iemb.Pressed && iemb.ButtonIndex == MouseButton.Left)
|
||||
{
|
||||
GetNode<FileDialog>("%CardImagePicker").Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
102
CardCreateMarginContainer.cs
Normal file
102
CardCreateMarginContainer.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class CardCreateMarginContainer : MarginContainer
|
||||
{
|
||||
public readonly string Title = "Card";
|
||||
public string CardTitle
|
||||
{
|
||||
get => GetNode<LineEdit>("%TitleEdit").Text;
|
||||
set => GetNode<LineEdit>("%TitleEdit").Text = value;
|
||||
}
|
||||
public void SetStretchMode(StretchMode stretchMode)
|
||||
{
|
||||
switch (stretchMode)
|
||||
{
|
||||
case StretchMode.Unspecified:
|
||||
case StretchMode.Fit:
|
||||
default:
|
||||
GetNode<BaseButton>("%StretchModeFitButton").ButtonPressed = true;
|
||||
break;
|
||||
case StretchMode.Stretch:
|
||||
GetNode<BaseButton>("%StretchModeStretchButton").ButtonPressed = true;
|
||||
break;
|
||||
case StretchMode.Crop:
|
||||
GetNode<BaseButton>("%StretchModeCropButton").ButtonPressed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
public StretchMode GetStretchMode()
|
||||
{
|
||||
if (GetNode<BaseButton>("%StretchModeFitButton").ButtonPressed)
|
||||
return StretchMode.Fit;
|
||||
else if (GetNode<BaseButton>("%StretchModeStretchButton").ButtonPressed)
|
||||
return StretchMode.Stretch;
|
||||
else if (GetNode<BaseButton>("%StretchModeCropButton").ButtonPressed)
|
||||
return StretchMode.Crop;
|
||||
return StretchMode.Unspecified;
|
||||
}
|
||||
private void StetchModeChanged(BaseButton button)
|
||||
{
|
||||
var ci = GetNode<CardCreateImageBox>("%CardCreateImageBox");
|
||||
switch (GetStretchMode())
|
||||
{
|
||||
case StretchMode.Stretch:
|
||||
ci.ExpandMode = TextureRect.ExpandModeEnum.IgnoreSize;
|
||||
ci.StretchMode = TextureRect.StretchModeEnum.Scale;
|
||||
break;
|
||||
case StretchMode.Crop:
|
||||
ci.ExpandMode = TextureRect.ExpandModeEnum.IgnoreSize;
|
||||
ci.StretchMode = TextureRect.StretchModeEnum.KeepAspectCovered;
|
||||
break;
|
||||
case StretchMode.Unspecified:
|
||||
case StretchMode.Fit:
|
||||
default:
|
||||
ci.ExpandMode = TextureRect.ExpandModeEnum.IgnoreSize;
|
||||
ci.StretchMode = TextureRect.StretchModeEnum.KeepAspectCentered;
|
||||
break;
|
||||
}
|
||||
}
|
||||
public Image Image
|
||||
{
|
||||
get => GetNode<TextureRect>("%CardCreateImageBox").Texture?.GetImage();
|
||||
set => GetNode<TextureRect>("%CardCreateImageBox").Texture
|
||||
= ImageTexture.CreateFromImage(value);
|
||||
}
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
(GetParent() as TabContainer)?.SetTabTitle(GetIndex(), Title);
|
||||
GetNode<BaseButton>("%StretchModeFitButton").ButtonGroup.Pressed
|
||||
+= StetchModeChanged;
|
||||
GetNode<LineEdit>("%TitleEdit").TextSubmitted +=
|
||||
(s) => GetNode<BaseButton>("%CreateMenuOkButton")
|
||||
.EmitSignal(Button.SignalName.Pressed);
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
public void ClearMenu()
|
||||
{
|
||||
GetNode<TextureRect>("%CardCreateImageBox").Texture = new Texture2D();
|
||||
CardTitle = "";
|
||||
SetStretchMode(StretchMode.Unspecified);
|
||||
}
|
||||
public void SendCardToGame()
|
||||
{
|
||||
var c = card.MakeCard(GetTree());
|
||||
if (Image is Image im)
|
||||
c.SetImage(ImageTexture.CreateFromImage(im));
|
||||
c.SetStretchMode(GetStretchMode());
|
||||
c.CardName = CardTitle;
|
||||
this.GetParentOfType<game>().AddUnassignedCard(c);
|
||||
}
|
||||
public void FileSelected(string path)
|
||||
{
|
||||
Image image = new();
|
||||
image.Load(path);
|
||||
Image = image;
|
||||
}
|
||||
}
|
||||
@@ -18,13 +18,7 @@ public partial class CardEditImageBox : TextureRect
|
||||
{
|
||||
if (iemb.Pressed && iemb.ButtonIndex == MouseButton.Left)
|
||||
{
|
||||
// bool inControl = _HasPoint(iemb.Position);
|
||||
// GD.Print(inControl);
|
||||
// if (iemb.Position.X >= 0 && iemb.Position.X <= Size.X
|
||||
// && iemb.Position.Y >= 0 && iemb.Position.Y <= Size.Y)
|
||||
// if (inControl)
|
||||
GetNode<FileDialog>("%CardImagePicker").Show();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@ public partial class CommandHandler : Node
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
//force initialization of Deferer in main thread
|
||||
_ = Deferer;
|
||||
Settings = GetNode<Settings>("/root/Settings");
|
||||
Game = GetNode<game>("/root/Game");
|
||||
GetNode<TwitchChatWatcher>("/root/TwitchChatWatcher").IncomingCommand
|
||||
@@ -51,6 +53,7 @@ public partial class CommandHandler : Node
|
||||
|
||||
private void IncomingCommand(Command command)
|
||||
{
|
||||
GD.Print(command.GetArgs().Remaining());
|
||||
if (!Settings.IsUserAuthorized(command.User, command.IsStreamer,
|
||||
command.IsModerator))
|
||||
return;
|
||||
@@ -167,7 +170,6 @@ public partial class CommandHandler : Node
|
||||
var rowId = args.Pop();
|
||||
var colorStr = args.Pop();
|
||||
var color = Color.FromString(colorStr, new Color(0, 0, 0, 0));
|
||||
GD.Print($"Recoloring row to {color}");
|
||||
if (color.IsEqualApprox(new Color(0, 0, 0, 0)))
|
||||
throw new Exception($"invalid color {colorStr}");
|
||||
Game.RecolorRow(rowId, color);
|
||||
@@ -195,7 +197,6 @@ public partial class CommandHandler : Node
|
||||
_ => throw new Exception($"Unrecognized {nameof(StretchMode)}"),
|
||||
};
|
||||
}
|
||||
GD.Print($"Stretch mode: {mode}");
|
||||
var uri = new Uri(url);
|
||||
GD.Print("Starting image download");
|
||||
var resp = await Client.GetAsync(uri);
|
||||
|
||||
19
DeleteCardButton.cs
Normal file
19
DeleteCardButton.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class DeleteCardButton : Button
|
||||
{
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
private void EnableToggled(bool newState)
|
||||
{
|
||||
Disabled = !newState;
|
||||
}
|
||||
}
|
||||
@@ -57,12 +57,14 @@ public static class ExtensionHelper
|
||||
}
|
||||
public static string GetUnusedRowId(this SceneTree tree)
|
||||
{
|
||||
var ids = tree.GetNodesInGroup("RowGroup").OfType<row>().Select(r => r.RowId).ToArray();
|
||||
var ids = tree.GetNodesInGroup("RowGroup").OfType<row>().Select(r => r.RowId)
|
||||
.ToList();
|
||||
int i = 1;
|
||||
while (true)
|
||||
{
|
||||
if (!ids.Contains(i.ToString()))
|
||||
return i.ToString();
|
||||
var s = i.ToString();
|
||||
if (!ids.Contains(s))
|
||||
return s;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public partial class RowCardContainer : HFlowContainer
|
||||
}
|
||||
public override bool _CanDropData(Vector2 atPosition, Variant data)
|
||||
{
|
||||
return data.As<card>() is not null;
|
||||
return data.Obj is card;
|
||||
}
|
||||
public override void _DropData(Vector2 atPosition, Variant data)
|
||||
{
|
||||
|
||||
32
RowCreateMarginContainer.cs
Normal file
32
RowCreateMarginContainer.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class RowCreateMarginContainer : MarginContainer
|
||||
{
|
||||
[Export]
|
||||
public Color DefaultColor = new(0, 0, 0, 1);
|
||||
public readonly string Title = "Row";
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
(GetParent() as TabContainer).SetTabTitle(GetIndex(), Title);
|
||||
ClearMenu();
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
public void SendRowToGame()
|
||||
{
|
||||
var r = row.MakeRow(GetTree());
|
||||
r.RowColor = GetNode<ColorPickerButton>("%RowCreateColorPickerButton").Color;
|
||||
r.RowText = GetNode<TextEdit>("%RowTextEdit").Text;
|
||||
this.GetParentOfType<game>().CallDeferred("AddRow", r, -1);
|
||||
}
|
||||
public void ClearMenu()
|
||||
{
|
||||
GetNode<ColorPickerButton>("%RowCreateColorPickerButton").Color = DefaultColor;
|
||||
GetNode<TextEdit>("%RowTextEdit").Text = "";
|
||||
}
|
||||
}
|
||||
20
RowDeleteButton.cs
Normal file
20
RowDeleteButton.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using Godot;
|
||||
using System;
|
||||
|
||||
public partial class RowDeleteButton : Button
|
||||
{
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
private void ToggleEnable(bool newState)
|
||||
{
|
||||
Disabled = !newState;
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ public partial class Settings : Node
|
||||
[Export]
|
||||
public bool AllowModerators { get; set; }
|
||||
[Export]
|
||||
public string Command { get; set; }
|
||||
public string Trigger { get; set; }
|
||||
public List<string> UserWhitelist { get; } = new();
|
||||
public List<string> UserBlacklist { get; } = new();
|
||||
public Vector2 CardSize { get; private set; }
|
||||
|
||||
@@ -178,13 +178,13 @@ public partial class TwitchChatWatcher : Node
|
||||
_ = Task.Run(() => SendPong(tcm), Token);
|
||||
else if (tcm is Privmsg p)
|
||||
{
|
||||
var com = Settings.Command;
|
||||
if (string.IsNullOrWhiteSpace(com))
|
||||
var trig = Settings.Trigger;
|
||||
if (string.IsNullOrWhiteSpace(trig))
|
||||
break;
|
||||
if (!p.ChatMessage.StartsWith(com))
|
||||
if (!p.ChatMessage.StartsWith(trig))
|
||||
continue;
|
||||
var chat = p.ChatMessage;
|
||||
chat = chat[com.Length..].TrimStart();
|
||||
chat = chat[trig.Length..].TrimStart();
|
||||
//TODO make better
|
||||
CallDeferred("emit_signal", SignalName.IncomingCommand,
|
||||
new Command(p.DisplayName,
|
||||
|
||||
1
card.cs
1
card.cs
@@ -124,7 +124,6 @@ public partial class card : Panel
|
||||
}
|
||||
public override Variant _GetDragData(Vector2 atPosition)
|
||||
{
|
||||
GD.Print($"starting to drag {CardId}");
|
||||
var prev = card_preview.MakePreview(this);
|
||||
var prev_root = new Control();
|
||||
prev_root.AddChild(prev);
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dxvues6b3g2tn"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://dxvues6b3g2tn"]
|
||||
|
||||
[ext_resource type="Script" path="res://card_edit_popup.cs" id="1_xxurr"]
|
||||
[ext_resource type="Script" path="res://CardEditImageBox.cs" id="2_flth7"]
|
||||
[ext_resource type="Script" path="res://DeleteCardButton.cs" id="3_0btkn"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhlqt64wrhx83" path="res://card_image_picker.tscn" id="3_4k21m"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nx8uj"]
|
||||
@@ -88,12 +89,22 @@ layout_mode = 2
|
||||
button_group = SubResource("ButtonGroup_t74v5")
|
||||
text = "Crop"
|
||||
|
||||
[node name="DeleteCardButton" type="Button" parent="CardEditContainer"]
|
||||
[node name="DeleteCardHsplit" type="HSplitContainer" parent="CardEditContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
dragger_visibility = 1
|
||||
|
||||
[node name="DeleteCardEnable" type="CheckBox" parent="CardEditContainer/DeleteCardHsplit"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="DeleteCardButton" type="Button" parent="CardEditContainer/DeleteCardHsplit"]
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
disabled = true
|
||||
text = "DELETE"
|
||||
script = ExtResource("3_0btkn")
|
||||
|
||||
[node name="CardImagePicker" parent="." instance=ExtResource("3_4k21m")]
|
||||
unique_name_in_owner = true
|
||||
@@ -101,5 +112,6 @@ unique_name_in_owner = true
|
||||
[connection signal="canceled" from="." to="." method="CancelClicked"]
|
||||
[connection signal="confirmed" from="." to="." method="OkClicked"]
|
||||
[connection signal="visibility_changed" from="." to="." method="OnVisibilityChange"]
|
||||
[connection signal="pressed" from="CardEditContainer/DeleteCardButton" to="." method="DeleteCard"]
|
||||
[connection signal="toggled" from="CardEditContainer/DeleteCardHsplit/DeleteCardEnable" to="CardEditContainer/DeleteCardHsplit/DeleteCardButton" method="EnableToggled"]
|
||||
[connection signal="pressed" from="CardEditContainer/DeleteCardHsplit/DeleteCardButton" to="." method="DeleteCard"]
|
||||
[connection signal="file_selected" from="CardImagePicker" to="." method="FileSelected"]
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bhlqt64wrhx83"]
|
||||
|
||||
[ext_resource type="Script" path="res://CardImagePicker.cs" id="1_j0c8l"]
|
||||
[gd_scene format=3 uid="uid://bhlqt64wrhx83"]
|
||||
|
||||
[node name="CardImagePicker" type="FileDialog"]
|
||||
title = "Choose Picture"
|
||||
@@ -12,4 +10,3 @@ file_mode = 0
|
||||
access = 2
|
||||
filters = PackedStringArray("*.png, *.jpg, *.jpeg, *.webp, *.svg; Supported Images")
|
||||
use_native_dialog = true
|
||||
script = ExtResource("1_j0c8l")
|
||||
|
||||
@@ -55,7 +55,6 @@ public partial class card_preview : PanelContainer
|
||||
{
|
||||
PropogateCardId();
|
||||
PropogateCardName();
|
||||
GD.Print(Size);
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
||||
79
create_menu_popup.cs
Normal file
79
create_menu_popup.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
public partial class create_menu_popup : PanelContainer
|
||||
{
|
||||
[Signal]
|
||||
public delegate void ClearMenuEventHandler();
|
||||
private CardCreateMarginContainer _CardContainer;
|
||||
public CardCreateMarginContainer CardContainer
|
||||
{ get
|
||||
{
|
||||
_CardContainer ??= GetNode<CardCreateMarginContainer>("%CardCreateMarginContainer");
|
||||
return _CardContainer;
|
||||
}
|
||||
}
|
||||
private RowCreateMarginContainer _RowContainer;
|
||||
public RowCreateMarginContainer RowContainer
|
||||
{ get
|
||||
{
|
||||
_RowContainer ??= GetNode<RowCreateMarginContainer>("%RowCreateMarginContainer");
|
||||
return _RowContainer;
|
||||
}
|
||||
}
|
||||
// Called when the node enters the scene tree for the first time.
|
||||
public override void _Ready()
|
||||
{
|
||||
}
|
||||
|
||||
// Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
public override void _Process(double delta)
|
||||
{
|
||||
}
|
||||
|
||||
public void ShowPopup()
|
||||
{
|
||||
this.GetParentOfType<game>().MenuOpenDisableInteraction();
|
||||
Show();
|
||||
}
|
||||
public void ClosePopup()
|
||||
{
|
||||
Hide();
|
||||
EmitSignal(SignalName.ClearMenu);
|
||||
this.GetParentOfType<game>().MenuClosedEnableInteraction();
|
||||
}
|
||||
public void OkPressed()
|
||||
{
|
||||
var current = GetNode<TabContainer>("%CreateTabContainer").CurrentTab;
|
||||
if (current == 0)
|
||||
{
|
||||
CardContainer.SendCardToGame();
|
||||
ClosePopup();
|
||||
}
|
||||
else if (current == 1)
|
||||
{
|
||||
RowContainer.SendRowToGame();
|
||||
ClosePopup();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("No create container visible");
|
||||
}
|
||||
}
|
||||
public void CancelPressed()
|
||||
{
|
||||
ClosePopup();
|
||||
}
|
||||
private void OnVisibilityChange(bool visibility)
|
||||
{
|
||||
// EmitSignal(SignalName.Clear);
|
||||
var tabs = GetNode<TabContainer>("%CreateTabContainer");
|
||||
if (tabs.SelectNextAvailable())
|
||||
tabs.SelectPreviousAvailable();
|
||||
if (tabs.SelectPreviousAvailable())
|
||||
tabs.SelectNextAvailable();
|
||||
}
|
||||
}
|
||||
155
create_menu_popup.tscn
Normal file
155
create_menu_popup.tscn
Normal file
@@ -0,0 +1,155 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://kyaqu004qlcq"]
|
||||
|
||||
[ext_resource type="Script" path="res://create_menu_popup.cs" id="1_b3hbh"]
|
||||
[ext_resource type="StyleBox" uid="uid://cota68polt1iy" path="res://SettingsOverlayStyleBox.tres" id="1_tgffv"]
|
||||
[ext_resource type="Script" path="res://CardCreateMarginContainer.cs" id="2_ak8l2"]
|
||||
[ext_resource type="Script" path="res://CardCreateImageBox.cs" id="4_jjllr"]
|
||||
[ext_resource type="Script" path="res://RowCreateMarginContainer.cs" id="4_ro4l1"]
|
||||
[ext_resource type="PackedScene" uid="uid://bhlqt64wrhx83" path="res://card_image_picker.tscn" id="5_mnbvn"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p58nf"]
|
||||
|
||||
[sub_resource type="ButtonGroup" id="ButtonGroup_54l0c"]
|
||||
|
||||
[node name="CreateMenuPopup" type="PanelContainer"]
|
||||
clip_contents = true
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = ExtResource("1_tgffv")
|
||||
script = ExtResource("1_b3hbh")
|
||||
|
||||
[node name="CreateMarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 8
|
||||
theme_override_constants/margin_top = 8
|
||||
theme_override_constants/margin_right = 8
|
||||
theme_override_constants/margin_bottom = 8
|
||||
|
||||
[node name="TabSplitContainer" type="VSplitContainer" parent="CreateMarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="CreateTabContainer" type="TabContainer" parent="CreateMarginContainer/TabSplitContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="CardCreateMarginContainer" type="MarginContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 6
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 6
|
||||
script = ExtResource("2_ak8l2")
|
||||
|
||||
[node name="CardEditContainer" type="VBoxContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TitleContainer" type="HBoxContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TitleLabel" type="Label" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/TitleContainer"]
|
||||
layout_mode = 2
|
||||
text = "Text"
|
||||
|
||||
[node name="TitleEdit" type="LineEdit" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/TitleContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="CardDetailsContainer" type="HSplitContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer"]
|
||||
layout_mode = 2
|
||||
split_offset = 6
|
||||
dragger_visibility = 1
|
||||
|
||||
[node name="CardImageSelectContainer" type="PanelContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer"]
|
||||
clip_contents = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
mouse_filter = 1
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_p58nf")
|
||||
|
||||
[node name="CardCreateImageBox" type="TextureRect" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/CardImageSelectContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(200, 200)
|
||||
layout_mode = 2
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
script = ExtResource("4_jjllr")
|
||||
|
||||
[node name="CardImagePicker" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/CardImageSelectContainer/CardCreateImageBox" instance=ExtResource("5_mnbvn")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="ImageStretchButtonsContainer" type="VBoxContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="StretchModeLabel" type="Label" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/ImageStretchButtonsContainer"]
|
||||
layout_mode = 2
|
||||
text = " Stretch Mode"
|
||||
|
||||
[node name="StretchModeFitButton" type="CheckBox" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/ImageStretchButtonsContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
button_pressed = true
|
||||
button_group = SubResource("ButtonGroup_54l0c")
|
||||
text = "Fit"
|
||||
|
||||
[node name="StretchModeStretchButton" type="CheckBox" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/ImageStretchButtonsContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
button_group = SubResource("ButtonGroup_54l0c")
|
||||
text = "Stretch"
|
||||
|
||||
[node name="StretchModeCropButton" type="CheckBox" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/ImageStretchButtonsContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
button_group = SubResource("ButtonGroup_54l0c")
|
||||
text = "Crop"
|
||||
|
||||
[node name="RowCreateMarginContainer" type="MarginContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer"]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
script = ExtResource("4_ro4l1")
|
||||
|
||||
[node name="RowEditVbox" type="HSplitContainer" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/RowCreateMarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="RowCreateColorPickerButton" type="ColorPickerButton" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/RowCreateMarginContainer/RowEditVbox"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(200, 200)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
edit_alpha = false
|
||||
|
||||
[node name="RowTextEdit" type="TextEdit" parent="CreateMarginContainer/TabSplitContainer/CreateTabContainer/RowCreateMarginContainer/RowEditVbox"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(200, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="CreateMenuButtonContainer" type="HBoxContainer" parent="CreateMarginContainer/TabSplitContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="CreateMenuCancelButton" type="Button" parent="CreateMarginContainer/TabSplitContainer/CreateMenuButtonContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "Cancel"
|
||||
|
||||
[node name="CreateMenuOkButton" type="Button" parent="CreateMarginContainer/TabSplitContainer/CreateMenuButtonContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "OK"
|
||||
|
||||
[connection signal="file_selected" from="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer/CardEditContainer/CardDetailsContainer/CardImageSelectContainer/CardCreateImageBox/CardImagePicker" to="CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer" method="FileSelected"]
|
||||
[connection signal="pressed" from="CreateMarginContainer/TabSplitContainer/CreateMenuButtonContainer/CreateMenuCancelButton" to="." method="CancelPressed"]
|
||||
[connection signal="pressed" from="CreateMarginContainer/TabSplitContainer/CreateMenuButtonContainer/CreateMenuOkButton" to="." method="OkPressed"]
|
||||
47
game.cs
47
game.cs
@@ -3,6 +3,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@@ -16,6 +17,14 @@ public partial class game : Control
|
||||
return _SettingsPopup;
|
||||
}
|
||||
}
|
||||
private create_menu_popup _CreateMenuPopup;
|
||||
private create_menu_popup CreateMenuPopup
|
||||
{ get
|
||||
{
|
||||
_CreateMenuPopup ??= GetNode<create_menu_popup>("%CreateMenuPopup");
|
||||
return _CreateMenuPopup;
|
||||
}
|
||||
}
|
||||
[Export]
|
||||
private Vector2 _CardSize = new(200, 200);
|
||||
public Vector2 CardSize
|
||||
@@ -77,10 +86,24 @@ public partial class game : Control
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateMenuPopup.ClosePopup();
|
||||
SettingsPopup.ShowPopup();
|
||||
}
|
||||
GetViewport().SetInputAsHandled();
|
||||
}
|
||||
else if (@event.IsActionPressed("CreationMenu"))
|
||||
{
|
||||
if (CreateMenuPopup.Visible)
|
||||
{
|
||||
CreateMenuPopup.ClosePopup();
|
||||
}
|
||||
else
|
||||
{
|
||||
SettingsPopup.ClosePopup();
|
||||
CreateMenuPopup.ShowPopup();
|
||||
}
|
||||
GetViewport().SetInputAsHandled();
|
||||
}
|
||||
}
|
||||
public void Clear()
|
||||
{
|
||||
@@ -109,6 +132,7 @@ public partial class game : Control
|
||||
var node = GetNode<VBoxContainer>("%RowContainer");
|
||||
node.AddChild(row);
|
||||
node.MoveChild(row, index);
|
||||
PropogateCardSize();
|
||||
}
|
||||
public void RemoveRow(string id)
|
||||
{
|
||||
@@ -175,17 +199,25 @@ public partial class game : Control
|
||||
}
|
||||
public void ImportGame(string filename)
|
||||
{
|
||||
GD.Print($"Importing from {filename}");
|
||||
Serializer.LoadFromSerial(this,
|
||||
File.ReadAllText(filename)
|
||||
using var reader = new StreamReader(
|
||||
new DeflateStream(
|
||||
new FileStream(filename, FileMode.Open),
|
||||
CompressionMode.Decompress
|
||||
)
|
||||
);
|
||||
var s = reader.ReadToEnd();
|
||||
Serializer.LoadFromSerial(this, s);
|
||||
}
|
||||
public void ExportGame(string filename, ExportSettings es)
|
||||
{
|
||||
GD.Print($"Exporting to {filename}");
|
||||
File.WriteAllText(filename,
|
||||
Serializer.CreateGameJson(this, es)
|
||||
using var writer = new StreamWriter(
|
||||
new DeflateStream(
|
||||
new FileStream(filename, FileMode.OpenOrCreate),
|
||||
CompressionLevel.Optimal
|
||||
)
|
||||
);
|
||||
var json = Serializer.CreateGameJson(this, es);
|
||||
writer.Write(json);
|
||||
}
|
||||
#region Commands
|
||||
public void MoveCard(string cardId, string targetRowId, int? toIndex = null)
|
||||
@@ -244,8 +276,7 @@ public partial class game : Control
|
||||
}
|
||||
public void CreateRow(Color? color = null, string title = null)
|
||||
{
|
||||
var scn = GD.Load<PackedScene>("res://row.tscn");
|
||||
var r = scn.Instantiate() as row;
|
||||
var r = row.MakeRow(GetTree());
|
||||
if (!string.IsNullOrWhiteSpace(title))
|
||||
r.RowText = title;
|
||||
if (color is Color color1)
|
||||
|
||||
10
game.tscn
10
game.tscn
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://ck0t4k3guvmfm"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://ck0t4k3guvmfm"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b7pebyti48f7b" path="res://row.tscn" id="1_numg7"]
|
||||
[ext_resource type="Script" path="res://game.cs" id="1_vl33u"]
|
||||
@@ -8,6 +8,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://jm7tss267q8y" path="res://settings_popup.tscn" id="6_e1cou"]
|
||||
[ext_resource type="PackedScene" uid="uid://dxvues6b3g2tn" path="res://card_edit_popup.tscn" id="6_eqvov"]
|
||||
[ext_resource type="PackedScene" uid="uid://dwtxrx5xtewur" path="res://row_edit_popup.tscn" id="7_nyiqt"]
|
||||
[ext_resource type="PackedScene" uid="uid://kyaqu004qlcq" path="res://create_menu_popup.tscn" id="8_f2hb2"]
|
||||
|
||||
[node name="Game" type="Control"]
|
||||
layout_mode = 3
|
||||
@@ -104,9 +105,16 @@ visible = false
|
||||
layout_mode = 0
|
||||
theme_override_styles/panel = ExtResource("6_8am6d")
|
||||
|
||||
[node name="CreateMenuPopup" parent="." instance=ExtResource("8_f2hb2")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
|
||||
[node name="CardEditPopup" parent="." instance=ExtResource("6_eqvov")]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
[connection signal="ExportSelected" from="SettingsPopup" to="." method="ExportGame"]
|
||||
[connection signal="ImportSelected" from="SettingsPopup" to="." method="ImportGame"]
|
||||
[connection signal="ClearMenu" from="CreateMenuPopup" to="CreateMenuPopup/CreateMarginContainer/TabSplitContainer/CreateTabContainer/CardCreateMarginContainer" method="ClearMenu"]
|
||||
[connection signal="ClearMenu" from="CreateMenuPopup" to="CreateMenuPopup/CreateMarginContainer/TabSplitContainer/CreateTabContainer/RowCreateMarginContainer" method="ClearMenu"]
|
||||
|
||||
@@ -50,3 +50,9 @@ LocationMenu={
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(193, 8),"global_position":Vector2(197, 49),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
CreationMenu={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194333,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":4,"position":Vector2(159, 18),"global_position":Vector2(163, 59),"factor":1.0,"button_index":3,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
3
row.cs
3
row.cs
@@ -100,7 +100,6 @@ public partial class row : Control
|
||||
}
|
||||
public void DropCardOn(Vector2 atPosition, Variant data)
|
||||
{
|
||||
GD.Print($"Dropping at {atPosition}");
|
||||
card c = data.As<card>()
|
||||
?? throw new Exception("invalid drag data");
|
||||
var g = this.GetParentOfType<game>()
|
||||
@@ -131,7 +130,7 @@ public partial class row : Control
|
||||
}
|
||||
public override bool _CanDropData(Vector2 atPosition, Variant data)
|
||||
{
|
||||
return data.As<row>() is not null;
|
||||
return data.Obj is row;
|
||||
}
|
||||
public override void _DropData(Vector2 atPosition, Variant data)
|
||||
{
|
||||
|
||||
@@ -39,10 +39,15 @@ public partial class row_edit_popup : PanelContainer
|
||||
}
|
||||
public void Reset()
|
||||
{
|
||||
Hide();
|
||||
GetNode<ColorPickerButton>("%ColorPickerButton").Color = DefaultColor;
|
||||
GetNode<TextEdit>("%RowTextEdit").Text = "";
|
||||
EditingRow = null;
|
||||
Hide();
|
||||
this.GetParentOfType<game>().MenuClosedEnableInteraction();
|
||||
}
|
||||
public void DeleteRow()
|
||||
{
|
||||
EditingRow.QueueFree();
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://dwtxrx5xtewur"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dwtxrx5xtewur"]
|
||||
|
||||
[ext_resource type="Script" path="res://row_edit_popup.cs" id="1_1wf8q"]
|
||||
[ext_resource type="Script" path="res://RowDeleteButton.cs" id="2_wjpay"]
|
||||
|
||||
[node name="RowEditPopup" type="PanelContainer"]
|
||||
script = ExtResource("1_1wf8q")
|
||||
@@ -10,14 +11,19 @@ layout_mode = 2
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="VSplitContainer" type="VSplitContainer" parent="RowEditMarginContainer"]
|
||||
[node name="RowEditOuterVbox" type="VSplitContainer" parent="RowEditMarginContainer"]
|
||||
layout_mode = 2
|
||||
dragger_visibility = 1
|
||||
|
||||
[node name="RowEditVbox" type="HSplitContainer" parent="RowEditMarginContainer/VSplitContainer"]
|
||||
[node name="RowEditInnerVbox" type="VSplitContainer" parent="RowEditMarginContainer/RowEditOuterVbox"]
|
||||
layout_mode = 2
|
||||
dragger_visibility = 1
|
||||
|
||||
[node name="ColorPickerButton" type="ColorPickerButton" parent="RowEditMarginContainer/VSplitContainer/RowEditVbox"]
|
||||
[node name="RowEditVbox" type="HSplitContainer" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox"]
|
||||
layout_mode = 2
|
||||
dragger_visibility = 1
|
||||
|
||||
[node name="ColorPickerButton" type="ColorPickerButton" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowEditVbox"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(200, 200)
|
||||
layout_mode = 2
|
||||
@@ -25,28 +31,45 @@ size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
edit_alpha = false
|
||||
|
||||
[node name="RowTextEdit" type="TextEdit" parent="RowEditMarginContainer/VSplitContainer/RowEditVbox"]
|
||||
[node name="RowTextEdit" type="TextEdit" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowEditVbox"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(200, 0)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="RowEditButtonContainer" type="HBoxContainer" parent="RowEditMarginContainer/VSplitContainer"]
|
||||
[node name="RowDeleteHbox" type="HSplitContainer" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
dragger_visibility = 1
|
||||
|
||||
[node name="RowDeleteEnableButton" type="CheckBox" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowDeleteHbox"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="RowDeleteButton" type="Button" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowDeleteHbox"]
|
||||
custom_minimum_size = Vector2(135, 0)
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "DELETE"
|
||||
script = ExtResource("2_wjpay")
|
||||
|
||||
[node name="RowEditButtonContainer" type="HBoxContainer" parent="RowEditMarginContainer/RowEditOuterVbox"]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
|
||||
[node name="RowEditCancelButton" type="Button" parent="RowEditMarginContainer/VSplitContainer/RowEditButtonContainer"]
|
||||
[node name="RowEditCancelButton" type="Button" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditButtonContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "Cancel"
|
||||
|
||||
[node name="RowEditOkButton" type="Button" parent="RowEditMarginContainer/VSplitContainer/RowEditButtonContainer"]
|
||||
[node name="RowEditOkButton" type="Button" parent="RowEditMarginContainer/RowEditOuterVbox/RowEditButtonContainer"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(100, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "OK"
|
||||
|
||||
[connection signal="pressed" from="RowEditMarginContainer/VSplitContainer/RowEditButtonContainer/RowEditCancelButton" to="." method="CancelClicked"]
|
||||
[connection signal="pressed" from="RowEditMarginContainer/VSplitContainer/RowEditButtonContainer/RowEditOkButton" to="." method="OkClicked"]
|
||||
[connection signal="toggled" from="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowDeleteHbox/RowDeleteEnableButton" to="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowDeleteHbox/RowDeleteButton" method="ToggleEnable"]
|
||||
[connection signal="pressed" from="RowEditMarginContainer/RowEditOuterVbox/RowEditInnerVbox/RowDeleteHbox/RowDeleteButton" to="." method="DeleteRow"]
|
||||
[connection signal="pressed" from="RowEditMarginContainer/RowEditOuterVbox/RowEditButtonContainer/RowEditCancelButton" to="." method="CancelClicked"]
|
||||
[connection signal="pressed" from="RowEditMarginContainer/RowEditOuterVbox/RowEditButtonContainer/RowEditOkButton" to="." method="OkClicked"]
|
||||
|
||||
@@ -63,6 +63,13 @@ public partial class settings_popup : PanelContainer
|
||||
}
|
||||
public void _on_ok_button_pressed()
|
||||
{
|
||||
var settings = GetNode<Settings>("/root/Settings");
|
||||
settings.AllowModerators = GetNode<CheckBox>("%CheckBoxModerator").ButtonPressed;
|
||||
settings.Trigger = GetNode<LineEdit>("%CommandEdit").Text;
|
||||
settings.SetUserLists(GetNode<TextEdit>("%WhiteListEdit").Text.Split('\n',
|
||||
StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries),
|
||||
GetNode<TextEdit>("%BlackListEdit").Text.Split('\n',
|
||||
StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries));
|
||||
GetNode<ConfigStretchContainer>("%ConfigStretchContainer").Apply();
|
||||
ClosePopup();
|
||||
}
|
||||
@@ -102,16 +109,11 @@ public partial class settings_popup : PanelContainer
|
||||
}
|
||||
private void SuccessfulConnection()
|
||||
{
|
||||
GD.Print(nameof(SuccessfulConnection));
|
||||
var tcw = GetNode<TwitchChatWatcher>("/root/TwitchChatWatcher");
|
||||
if (tcw.State != System.Net.WebSockets.WebSocketState.Open)
|
||||
throw new Exception("Websocket closed");
|
||||
var settings = GetNode<Settings>("/root/Settings");
|
||||
settings.AllowModerators = GetNode<CheckBox>("%CheckBoxModerator").ButtonPressed;
|
||||
settings.Command = GetNode<LineEdit>("%CommandEdit").Text;
|
||||
settings.SetUserLists(GetNode<TextEdit>("%WhiteListEdit").Text.Split('\n',
|
||||
StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries),
|
||||
GetNode<TextEdit>("%BlackListEdit").Text.Split('\n',
|
||||
StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries));
|
||||
GetNode<BaseButton>("%JoinChannelButton").Disabled = false;
|
||||
UnlockPopup();
|
||||
}
|
||||
private void SocketConnected()
|
||||
|
||||
@@ -112,6 +112,7 @@ unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(125, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
disabled = true
|
||||
text = "Join Channel"
|
||||
|
||||
[node name="ConnectButton" type="Button" parent="SettingsDivider/SettingsPopupContainer/ChatMarginContainer/ChatContainer/ConnectButtonMarginContainer/HBoxContainer"]
|
||||
@@ -217,6 +218,7 @@ unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
button_pressed = true
|
||||
text = "Scale Images"
|
||||
|
||||
[node name="ButtonContainer" type="HBoxContainer" parent="SettingsDivider"]
|
||||
|
||||
Reference in New Issue
Block a user