Add git, restructure

This commit is contained in:
bucket
2026-03-22 18:57:54 +01:00
parent 222d9b940d
commit 3a3c18ebc0
42 changed files with 580 additions and 81 deletions
+10
View File
@@ -0,0 +1,10 @@
<Project Sdk="Godot.NET.Sdk/4.7.0-dev.2">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework Condition=" '$(GodotTargetPlatform)' == 'android' ">net9.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="LibGit2Sharp" Version="0.31.0" />
</ItemGroup>
</Project>
+19
View File
@@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BanListEditor", "BanListEditor.csproj", "{57639E35-2F75-4AD8-8D4C-0582F08E0E24}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
ExportDebug|Any CPU = ExportDebug|Any CPU
ExportRelease|Any CPU = ExportRelease|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{57639E35-2F75-4AD8-8D4C-0582F08E0E24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57639E35-2F75-4AD8-8D4C-0582F08E0E24}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57639E35-2F75-4AD8-8D4C-0582F08E0E24}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
{57639E35-2F75-4AD8-8D4C-0582F08E0E24}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
{57639E35-2F75-4AD8-8D4C-0582F08E0E24}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
{57639E35-2F75-4AD8-8D4C-0582F08E0E24}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
EndGlobalSection
EndGlobal
+189
View File
@@ -0,0 +1,189 @@
using Godot;
using LibGit2Sharp;
using LibGit2Sharp.Handlers;
using System;
using System.IO;
using System.Linq;
public partial class GitIntigration:Node{
[Export] Button commit_button;
[Export] Window options_window;
[Export] Node Main;
[Export] Label Push_error;
[Export] Control Push_Base;
[Export] Button pull_button;
public override void _Ready()
{
base._Ready();
commit_button.Pressed += Commit_changes;
pull_button.Pressed += pull;
Button edit = (Button)options_window.Get("clone_repo_button");
if (edit != null){
edit.Pressed += Clone;
}
Button reset_button = (Button)options_window.Get("reset_repo_button");
if (reset_button != null){
reset_button.Pressed += reset;
}
}
void delete_recursive(String path){
Godot.DirAccess current_access = Godot.DirAccess.Open(path);
current_access.IncludeHidden = true;
foreach (String Dir in current_access.GetDirectories()){
//GD.Print("found " + path.PathJoin(Dir));
delete_recursive(path.PathJoin(Dir));
}
foreach (String file in current_access.GetFiles()){
//GD.Print("found file " + file);
current_access.Remove(file);
}
DirAccess.RemoveAbsolute(path);
}
public void Clone(){
Label edit = (Label)options_window.Get("clone_log");
string path = ProjectSettings.GlobalizePath("user://repo/");
if (Godot.DirAccess.DirExistsAbsolute(path)){
GD.Print("ADAD");
delete_recursive(path);
DirAccess.RemoveAbsolute(path);
}
try {
Repository.Clone(get_repo(), path);
}
catch(Exception e){
GD.Print("Cloning failed, " + e.Message);
if (edit != null){
edit.Text = "Cloning failed, " + e.Message;
}
return;
}
if (edit != null){
edit.Text = "Success! Repo cloned at: " + path;
}
Main.CallDeferred("set_file",path+"blacklist.txt");
}
String get_repo(){
LineEdit edit = (LineEdit)options_window.Get("repo_edit");
if (edit != null){
return edit.Text;
}
else{
return null;
}
}
String get_email(){
LineEdit edit = (LineEdit)options_window.Get("email_edit");
if (edit != null){
return edit.Text;
}
else{
return null;
}
}
String get_name(){
LineEdit edit = (LineEdit)options_window.Get("name_edit");
if (edit != null){
return edit.Text;
}
else{
return null;
}
}
String get_key(){
LineEdit edit = (LineEdit)options_window.Get("key_edit");
if (edit != null){
return edit.Text;
}
else{
return null;
}
}
public void pull(){
string path = ProjectSettings.GlobalizePath("user://repo/");
Repository repo = new Repository(path);
// Credential information to fetch
LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
options.MergeOptions = new MergeOptions();
options.MergeOptions.CommitOnSuccess = true;
options.MergeOptions.FileConflictStrategy = CheckoutFileConflictStrategy.Ours;
options.FetchOptions = new FetchOptions();
options.FetchOptions.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = get_name(),
Password = get_key()
});
// User information to create a merge commit
var signature = new LibGit2Sharp.Signature(
new Identity(get_name(), get_email()), DateTimeOffset.Now);
// Pull
try{
Commands.Pull(repo, signature, options);
}
catch(Exception e){
Push_error.Text = e.Message;
Push_Base.Show();
return;
}
Main.CallDeferred("set_file",path+"blacklist.txt");
}
public void reset(){
GD.Print("Reset");
string path = ProjectSettings.GlobalizePath("user://repo/");
Repository repo = new Repository(path);
Branch originMain = repo.Branches["origin/main"];
repo.Reset(ResetMode.Hard, originMain.Tip);
Main.CallDeferred("set_file",path+"blacklist.txt");
}
public void Commit_changes(){
string path = ProjectSettings.GlobalizePath("user://repo");
GD.Print("Try commit");
Repository repo = new Repository(path);
repo.Index.Add("blacklist.txt");
repo.Index.Write();
Signature author = new Signature(get_name(), get_email(), DateTime.Now);
Signature committer = author;
try{
Commit commit = repo.Commit("Update Banlist", author, committer);
}
catch(Exception e){
Push_error.Text = e.Message;
Push_Base.Show();
return;
}
LibGit2Sharp.PushOptions options = new LibGit2Sharp.PushOptions();
options.CredentialsProvider = new CredentialsHandler(
(url, usernameFromUrl, types) =>
new UsernamePasswordCredentials()
{
Username = get_name(),
Password = get_key()
});
try{
repo.Network.Push(repo.Branches["main"], options);
}
catch(Exception e){
Push_error.Text = e.Message;
Push_Base.Show();
return;
}
//repo.Commit("Update banlist");
}
}
+1
View File
@@ -0,0 +1 @@
uid://dv74d87a31oyx
+22 -2
View File
@@ -26,11 +26,12 @@ func _ready() -> void:
more_btn.pressed.connect(options_window.show) more_btn.pressed.connect(options_window.show)
edit_window.changed.connect(update_ban_counter) # use as update edit_window.changed.connect(update_ban_counter) # use as update
var save_file = save_file_parser.read()
quit_confirmation.canceled.connect(get_tree().quit) quit_confirmation.canceled.connect(get_tree().quit)
quit_confirmation.confirmed.connect(save_and_exit) quit_confirmation.confirmed.connect(save_and_exit)
get_tree().auto_accept_quit = false get_tree().auto_accept_quit = false
get_tree().root.close_requested.connect(close_request) get_tree().root.close_requested.connect(close_request)
set_file(save_file_parser.read()) set_file(save_file.get("FILE",""))
file_opener.file_selected.connect(set_file) file_opener.file_selected.connect(set_file)
open_btn.pressed.connect(file_opener.show) open_btn.pressed.connect(file_opener.show)
new_btn.pressed.connect(new_punishment) new_btn.pressed.connect(new_punishment)
@@ -38,6 +39,22 @@ func _ready() -> void:
options_window.remove_dupes.connect(remove_dupes) options_window.remove_dupes.connect(remove_dupes)
options_window.save_v_one.connect(savevone) options_window.save_v_one.connect(savevone)
options_window.repo_edit.text = save_file.get("REPO","")
options_window.email_edit.text = save_file.get("EMAIL","")
options_window.name_edit.text = save_file.get("NAME","")
options_window.key_edit.text = save_file.get("KEY","")
options_window.use_old.button_pressed = save_file.get("USE_OLD",false)
options_window.repo_edit.text_changed.connect(unsave.unbind(1))
options_window.email_edit.text_changed.connect(unsave.unbind(1))
options_window.name_edit.text_changed.connect(unsave.unbind(1))
options_window.key_edit.text_changed.connect(unsave.unbind(1))
options_window.use_old.pressed.connect(unsave)
func unsave():
save_label.show()
unsaved = true
func savevone(): func savevone():
var Punishments:Array[Punishment] var Punishments:Array[Punishment]
for child in PunishContainer.get_children(): for child in PunishContainer.get_children():
@@ -124,7 +141,10 @@ func save():
Punishments.append(child.punishment) Punishments.append(child.punishment)
update_ban_counter() update_ban_counter()
save_file_parser.save(current_path) save_file_parser.save(current_path)
exporter.Export(Punishments,current_path) if options_window.use_old.button_pressed:
exporter.Exportv1(Punishments,current_path)
else:
exporter.Export(Punishments,current_path)
unsaved = false unsaved = false
func new_punishment() -> void: func new_punishment() -> void:
@@ -10,9 +10,13 @@ func parse(file:String) -> Array[Punishment]:
var raw:String = fileaccess.get_as_text() var raw:String = fileaccess.get_as_text()
var lines:PackedStringArray = raw.split("\n") var lines:PackedStringArray = raw.split("\n")
var punishments:Array[Punishment] var punishments:Array[Punishment]
var formatting:bool = false
for line in lines: for line in lines:
print("line ",line)
var splits:PackedStringArray = line.split(": ") var splits:PackedStringArray = line.split(": ")
if line.contains(":") and !line.contains(": "):
push_error("WARNING, INCORRECT FORMATTING")
formatting = true
splits = line.split(":")
match splits[0]: match splits[0]:
"L!ListBegin": "L!ListBegin":
print("start") print("start")
@@ -31,7 +35,8 @@ func parse(file:String) -> Array[Punishment]:
punishments[-1].punish_end = splits[1].to_int() punishments[-1].punish_end = splits[1].to_int()
"L!ListEnd": "L!ListEnd":
break break
if formatting:
OS.alert("This file contains incorret formatting, things might not load correctly!")
return punishments return punishments
func punish_text_to_enum(text) -> Punishment.punishment_types: func punish_text_to_enum(text) -> Punishment.punishment_types:
+27
View File
@@ -0,0 +1,27 @@
class_name SaveFileParser extends Node
@export var options_window: MoreOptionsWindow
const savloc = "user://save.dat"
func read() -> Dictionary:
var file = FileAccess.open(savloc,FileAccess.READ)
if !file:
print("no savefile found")
return {}
var Dict:Dictionary = file.get_var()
return Dict
func save(current_file:String) -> void:
var file = FileAccess.open(savloc,FileAccess.WRITE)
if !file:
push_error("cant write savefile")
return
var Dict:Dictionary[String,Variant] = {
"FILE":current_file,
"REPO":options_window.repo_edit.text,
"EMAIL":options_window.email_edit.text,
"NAME":options_window.name_edit.text,
"KEY":options_window.key_edit.text,
"USE_OLD":options_window.use_old.button_pressed,
}
file.store_var(Dict)
+37
View File
@@ -0,0 +1,37 @@
extends Node
@export var search_bar:LineEdit
@export var punish_container:Node
@export var name_check: CheckButton
@export var uid_check: CheckButton
@export var description_check: CheckButton
func _ready() -> void:
search_bar.text_changed.connect(update.unbind(1))
name_check.toggled.connect(update.unbind(1))
uid_check.toggled.connect(update.unbind(1))
description_check.toggled.connect(update.unbind(1))
func update():
var text = search_bar.text
print("ss")
if text:
for child in punish_container.get_children():
child.hide()
var strings:PackedStringArray = text.split(";")
for child in punish_container.get_children():
if child is PunishShowcase:
var valid:bool = true
for string in strings:
if string:
var in_name:bool = (string.to_lower() in child.name_label.text.to_lower()) if name_check.button_pressed else false
var in_uid:bool = (string.to_lower() in child.uid_label.text.to_lower()) if uid_check.button_pressed else false
var in_decsciption:bool = (string.to_lower() in child.punishment.punish_reason.to_lower()) if description_check.button_pressed else false
if !in_name and !in_uid and !in_decsciption:
valid = false
if valid:
child.show()
else:
for child in punish_container.get_children():
if child is PunishShowcase:
child.show()
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="none" stroke="#e0e0e0" stroke-width="2" d="m3 3 10 10M3 13 13 3"/></svg>

After

Width:  |  Height:  |  Size: 148 B

+18
View File
@@ -0,0 +1,18 @@
[remap]
importer="svg"
type="DPITexture"
uid="uid://decrh4ixlnkgd"
path="res://.godot/imported/Close.svg-5f1d7568fbad006f18f69572107b3723.dpitex"
[deps]
source_file="res://Textures/Close.svg"
dest_files=["res://.godot/imported/Close.svg-5f1d7568fbad006f18f69572107b3723.dpitex"]
[params]
base_scale=1.0
saturation=1.0
color_map={}
compress=true
View File

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 285 B

@@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c7r26dxgqkklc" uid="uid://c7r26dxgqkklc"
path="res://.godot/imported/Minus.png-fdca73571ee1f51129171a53d22c475c.ctex" path="res://.godot/imported/Minus.png-49777f5d1da0d7575a5bc8719899853e.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Minus.png" source_file="res://Textures/Minus.png"
dest_files=["res://.godot/imported/Minus.png-fdca73571ee1f51129171a53d22c475c.ctex"] dest_files=["res://.godot/imported/Minus.png-49777f5d1da0d7575a5bc8719899853e.ctex"]
[params] [params]
View File

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 409 B

+3 -3
View File
@@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dppihj7ptidog" uid="uid://dppihj7ptidog"
path="res://.godot/imported/Plus.png-7f0b6e62ef4c9053e1aaeef8ad93a0d8.ctex" path="res://.godot/imported/Plus.png-43004a6412ae0456b1d59e9614262edb.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Plus.png" source_file="res://Textures/Plus.png"
dest_files=["res://.godot/imported/Plus.png-7f0b6e62ef4c9053e1aaeef8ad93a0d8.ctex"] dest_files=["res://.godot/imported/Plus.png-43004a6412ae0456b1d59e9614262edb.ctex"]
[params] [params]
View File

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 202 B

+3 -3
View File
@@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cinbmowbp2btd" uid="uid://cinbmowbp2btd"
path="res://.godot/imported/door.png-4ad4ab0c545155655bbef277d86eb152.ctex" path="res://.godot/imported/door.png-daa3ac81719220de09c55f3c384cdd74.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://door.png" source_file="res://Textures/door.png"
dest_files=["res://.godot/imported/door.png-4ad4ab0c545155655bbef277d86eb152.ctex"] dest_files=["res://.godot/imported/door.png-daa3ac81719220de09c55f3c384cdd74.ctex"]
[params] [params]
View File

Before

Width:  |  Height:  |  Size: 995 B

After

Width:  |  Height:  |  Size: 995 B

+3 -3
View File
@@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bf1hiirahdgrf" uid="uid://bf1hiirahdgrf"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" path="res://.godot/imported/icon.svg-f434aa81383d8e7efdc588f214c40953.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://icon.svg" source_file="res://Textures/icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] dest_files=["res://.godot/imported/icon.svg-f434aa81383d8e7efdc588f214c40953.ctex"]
[params] [params]

Before

Width:  |  Height:  |  Size: 430 B

After

Width:  |  Height:  |  Size: 430 B

@@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cbq650vxvsxw1" uid="uid://cbq650vxvsxw1"
path="res://.godot/imported/speaker.png-045bf6684b83b55b088824f14e175d16.ctex" path="res://.godot/imported/speaker.png-cc1161b42434472c8389ab1218658ff7.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://speaker.png" source_file="res://Textures/speaker.png"
dest_files=["res://.godot/imported/speaker.png-045bf6684b83b55b088824f14e175d16.ctex"] dest_files=["res://.godot/imported/speaker.png-cc1161b42434472c8389ab1218658ff7.ctex"]
[params] [params]

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

@@ -3,15 +3,15 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://o2sjogt3b0ht" uid="uid://o2sjogt3b0ht"
path="res://.godot/imported/tf2logo.png-5b6963627dd432a7b538e7f5c69f00b3.ctex" path="res://.godot/imported/tf2logo.png-6d02051285f1875bf9b92f282b14ea28.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://tf2logo.png" source_file="res://Textures/tf2logo.png"
dest_files=["res://.godot/imported/tf2logo.png-5b6963627dd432a7b538e7f5c69f00b3.ctex"] dest_files=["res://.godot/imported/tf2logo.png-6d02051285f1875bf9b92f282b14ea28.ctex"]
[params] [params]
+2 -2
View File
@@ -12,8 +12,8 @@ config_version=5
config/name="BanListEditor" config/name="BanListEditor"
run/main_scene="uid://cxf3yenlgvupj" run/main_scene="uid://cxf3yenlgvupj"
config/features=PackedStringArray("4.7", "GL Compatibility") config/features=PackedStringArray("4.7", "C#", "GL Compatibility")
config/icon="res://icon.svg" config/icon="res://Textures/icon.svg"
[dotnet] [dotnet]
-18
View File
@@ -1,18 +0,0 @@
class_name SaveFileParser extends Node
const savloc = "user://save.dat"
func read() -> String:
var file = FileAccess.open(savloc,FileAccess.READ)
if !file:
print("no savefile found")
return ""
return file.get_as_text()
func save(current_file:String) -> void:
var file = FileAccess.open(savloc,FileAccess.WRITE)
if !file:
push_error("cant write savefile")
return
file.store_string(current_file)
+118 -10
View File
@@ -1,17 +1,19 @@
[gd_scene format=3 uid="uid://cxf3yenlgvupj"] [gd_scene format=3 uid="uid://cxf3yenlgvupj"]
[ext_resource type="Script" uid="uid://c57yqopmolu8o" path="res://main.gd" id="1_bjd11"] [ext_resource type="Script" uid="uid://c57yqopmolu8o" path="res://Scripts/Gdscript/main.gd" id="1_bjd11"]
[ext_resource type="PackedScene" uid="uid://bxpr2nb1hydpi" path="res://scenes/punish_showcase.tscn" id="2_qmy6f"] [ext_resource type="PackedScene" uid="uid://bxpr2nb1hydpi" path="res://scenes/punish_showcase.tscn" id="2_qmy6f"]
[ext_resource type="Texture2D" uid="uid://o2sjogt3b0ht" path="res://tf2logo.png" id="3_mwfav"] [ext_resource type="Texture2D" uid="uid://o2sjogt3b0ht" path="res://Textures/tf2logo.png" id="3_mwfav"]
[ext_resource type="Texture2D" uid="uid://dppihj7ptidog" path="res://Plus.png" id="4_3p2gp"] [ext_resource type="Texture2D" uid="uid://dppihj7ptidog" path="res://Textures/Plus.png" id="4_3p2gp"]
[ext_resource type="Texture2D" uid="uid://c7r26dxgqkklc" path="res://Minus.png" id="5_cvmbd"] [ext_resource type="Texture2D" uid="uid://c7r26dxgqkklc" path="res://Textures/Minus.png" id="5_cvmbd"]
[ext_resource type="Script" uid="uid://c5ihhdkosauvw" path="res://punish_list_parser.gd" id="6_ft6cd"] [ext_resource type="Script" uid="uid://c5ihhdkosauvw" path="res://Scripts/Gdscript/punish_list_parser.gd" id="6_ft6cd"]
[ext_resource type="Script" uid="uid://caaljvxo8tja5" path="res://ban_list_exporter.gd" id="7_bb450"] [ext_resource type="Texture2D" uid="uid://decrh4ixlnkgd" path="res://Textures/Close.svg" id="6_mwfav"]
[ext_resource type="Script" uid="uid://caaljvxo8tja5" path="res://Scripts/Gdscript/ban_list_exporter.gd" id="7_bb450"]
[ext_resource type="PackedScene" uid="uid://dy18m2uq557to" path="res://scenes/windwos/edit_window.tscn" id="8_nfivy"] [ext_resource type="PackedScene" uid="uid://dy18m2uq557to" path="res://scenes/windwos/edit_window.tscn" id="8_nfivy"]
[ext_resource type="PackedScene" uid="uid://burukk5374yyu" path="res://scenes/windwos/MoreOptionsWindow.tscn" id="9_1nqs0"] [ext_resource type="PackedScene" uid="uid://burukk5374yyu" path="res://scenes/windwos/MoreOptionsWindow.tscn" id="9_1nqs0"]
[ext_resource type="PackedScene" uid="uid://gah2g6nabyf4" path="res://scenes/windwos/statistics.tscn" id="10_1iba3"] [ext_resource type="PackedScene" uid="uid://gah2g6nabyf4" path="res://scenes/windwos/statistics.tscn" id="10_1iba3"]
[ext_resource type="Script" uid="uid://bt5wd8qjaevk0" path="res://search.gd" id="11_yxlcp"] [ext_resource type="Script" uid="uid://bt5wd8qjaevk0" path="res://Scripts/Gdscript/search.gd" id="11_yxlcp"]
[ext_resource type="Script" uid="uid://3gmapu83dglo" path="res://save_file_parser.gd" id="12_ebg2g"] [ext_resource type="Script" uid="uid://3gmapu83dglo" path="res://Scripts/Gdscript/save_file_parser.gd" id="12_ebg2g"]
[ext_resource type="Script" uid="uid://dv74d87a31oyx" path="res://Scripts/Csharp/GitIntigration.cs" id="13_qmy6f"]
[sub_resource type="LabelSettings" id="LabelSettings_lgr22"] [sub_resource type="LabelSettings" id="LabelSettings_lgr22"]
font_size = 26 font_size = 26
@@ -28,6 +30,18 @@ stacked_outline_1/color = Color(0.8099345, 0.9946762, 7.70092e-07, 1)
stacked_outline_2/size = 4 stacked_outline_2/size = 4
stacked_outline_2/color = Color(0.32855865, 0.41260794, 1, 1) stacked_outline_2/color = Color(0.32855865, 0.41260794, 1, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mwfav"]
content_margin_left = 0.0
content_margin_top = 0.0
content_margin_right = 0.0
content_margin_bottom = 0.0
bg_color = Color(0.5446172, 0.24615589, 0.017454231, 0.6)
corner_radius_top_left = 3
corner_radius_top_right = 3
corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
corner_detail = 5
[node name="Control" type="Control" unique_id=2276929 node_paths=PackedStringArray("edit_window", "punish_list_parser", "PunishContainer", "new_punish_btn", "file_opener", "open_btn", "new_btn", "save_btn", "exporter", "file_label", "save_file_parser", "quit_confirmation", "ban_counter", "save_label", "plus", "minus", "more_btn", "options_window")] [node name="Control" type="Control" unique_id=2276929 node_paths=PackedStringArray("edit_window", "punish_list_parser", "PunishContainer", "new_punish_btn", "file_opener", "open_btn", "new_btn", "save_btn", "exporter", "file_label", "save_file_parser", "quit_confirmation", "ban_counter", "save_label", "plus", "minus", "more_btn", "options_window")]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
@@ -157,6 +171,28 @@ text = "More"
layout_mode = 2 layout_mode = 2
placeholder_text = "Search..." placeholder_text = "Search..."
[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer" unique_id=355358061]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3" unique_id=400647282]
layout_mode = 2
text = "Filter by:"
[node name="NameCheck" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer3" unique_id=422637912]
layout_mode = 2
button_pressed = true
text = "Name"
[node name="UIDCheck" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer3" unique_id=1437120434]
layout_mode = 2
button_pressed = true
text = "UID"
[node name="DescriptionCheck" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer3" unique_id=1216809809]
layout_mode = 2
button_pressed = true
text = "Description"
[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=1970903622] [node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=1970903622]
layout_mode = 2 layout_mode = 2
@@ -198,6 +234,64 @@ text = "*"
layout_mode = 2 layout_mode = 2
text = "Save changes" text = "Save changes"
[node name="Commit" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=533267664]
layout_mode = 2
tooltip_text = "Send your changes to github, make sure you have saved your changes before doing this!"
text = "Commit changes"
[node name="Pull" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=127094888]
layout_mode = 2
tooltip_text = "Use this when updating your local copy to the one on github. If you have local changes this wont override them"
text = "Pull changes"
[node name="Base" type="Control" parent="MarginContainer" unique_id=1265704529]
visible = false
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
[node name="Control" type="Control" parent="MarginContainer/Base" unique_id=419756343]
anchors_preset = 0
offset_left = -250.0
offset_top = -163.0
offset_bottom = -35.0
[node name="ColorRect" type="Panel" parent="MarginContainer/Base/Control" unique_id=1808786583]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("StyleBoxFlat_mwfav")
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/Base/Control" unique_id=1967441013]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/Base/Control/VBoxContainer" unique_id=984310582]
layout_mode = 2
[node name="Warning" type="Label" parent="MarginContainer/Base/Control/VBoxContainer/HBoxContainer" unique_id=514469174]
layout_mode = 2
size_flags_horizontal = 3
text = "Error:"
[node name="Button" type="Button" parent="MarginContainer/Base/Control/VBoxContainer/HBoxContainer" unique_id=1955287259]
layout_mode = 2
icon = ExtResource("6_mwfav")
flat = true
[node name="Label" type="Label" parent="MarginContainer/Base/Control/VBoxContainer" unique_id=289973316]
custom_minimum_size = Vector2(100, 100)
layout_mode = 2
size_flags_vertical = 3
autowrap_mode = 2
[node name="BanListParser" type="Node" parent="." unique_id=951623750] [node name="BanListParser" type="Node" parent="." unique_id=951623750]
script = ExtResource("6_ft6cd") script = ExtResource("6_ft6cd")
@@ -214,10 +308,13 @@ root = NodePath("..")
PunishContainer = NodePath("../MarginContainer/VBoxContainer/ScrollContainer/Tree") PunishContainer = NodePath("../MarginContainer/VBoxContainer/ScrollContainer/Tree")
search_bar = NodePath("../MarginContainer/VBoxContainer/SearchBar") search_bar = NodePath("../MarginContainer/VBoxContainer/SearchBar")
[node name="Search" type="Node" parent="." unique_id=170590161 node_paths=PackedStringArray("search_bar", "punish_container")] [node name="Search" type="Node" parent="." unique_id=170590161 node_paths=PackedStringArray("search_bar", "punish_container", "name_check", "uid_check", "description_check")]
script = ExtResource("11_yxlcp") script = ExtResource("11_yxlcp")
search_bar = NodePath("../MarginContainer/VBoxContainer/SearchBar") search_bar = NodePath("../MarginContainer/VBoxContainer/SearchBar")
punish_container = NodePath("../MarginContainer/VBoxContainer/ScrollContainer/Tree") punish_container = NodePath("../MarginContainer/VBoxContainer/ScrollContainer/Tree")
name_check = NodePath("../MarginContainer/VBoxContainer/HBoxContainer3/NameCheck")
uid_check = NodePath("../MarginContainer/VBoxContainer/HBoxContainer3/UIDCheck")
description_check = NodePath("../MarginContainer/VBoxContainer/HBoxContainer3/DescriptionCheck")
[node name="OpenFile" type="FileDialog" parent="." unique_id=1378168421] [node name="OpenFile" type="FileDialog" parent="." unique_id=1378168421]
oversampling_override = 1.0 oversampling_override = 1.0
@@ -228,8 +325,9 @@ access = 2
filters = PackedStringArray("*.txt", "*.dat") filters = PackedStringArray("*.txt", "*.dat")
use_native_dialog = true use_native_dialog = true
[node name="SaveFileParser" type="Node" parent="." unique_id=930223611] [node name="SaveFileParser" type="Node" parent="." unique_id=930223611 node_paths=PackedStringArray("options_window")]
script = ExtResource("12_ebg2g") script = ExtResource("12_ebg2g")
options_window = NodePath("../OptionsWindow")
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="." unique_id=416398003] [node name="ConfirmationDialog" type="ConfirmationDialog" parent="." unique_id=416398003]
oversampling_override = 1.0 oversampling_override = 1.0
@@ -241,6 +339,16 @@ ok_button_text = "Save and quit"
dialog_text = "You have unsaved changes!" dialog_text = "You have unsaved changes!"
cancel_button_text = "Quit without saving" cancel_button_text = "Quit without saving"
[node name="Git" type="Node" parent="." unique_id=737987824 node_paths=PackedStringArray("commit_button", "options_window", "Main", "Push_error", "Push_Base", "pull_button")]
script = ExtResource("13_qmy6f")
commit_button = NodePath("../MarginContainer/VBoxContainer/HBoxContainer2/Commit")
options_window = NodePath("../OptionsWindow")
Main = NodePath("..")
Push_error = NodePath("../MarginContainer/Base/Control/VBoxContainer/Label")
Push_Base = NodePath("../MarginContainer/Base")
pull_button = NodePath("../MarginContainer/VBoxContainer/HBoxContainer2/Pull")
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/Stats" to="Statistics" method="grab_focus"] [connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/Stats" to="Statistics" method="grab_focus"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/Stats" to="Statistics" method="show"] [connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/Stats" to="Statistics" method="show"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/More" to="OptionsWindow" method="grab_focus"] [connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/More" to="OptionsWindow" method="grab_focus"]
[connection signal="pressed" from="MarginContainer/Base/Control/VBoxContainer/HBoxContainer/Button" to="MarginContainer/Base" method="hide"]
+2 -2
View File
@@ -16,8 +16,8 @@ func _ready() -> void:
func update() -> void: func update() -> void:
name_label.text = punishment.username name_label.text = punishment.username
uid_label.text = punishment.uid uid_label.text = punishment.uid
punishment_type_display.texture = load("res://door.png") if \ punishment_type_display.texture = load("res://Textures/door.png") if \
punishment.what_punishment == punishment.punishment_types.BAN else load("res://speaker.png") punishment.what_punishment == punishment.punishment_types.BAN else load("res://Textures/speaker.png")
func edit(): func edit():
Edit.emit(self) Edit.emit(self)
+2 -2
View File
@@ -1,8 +1,8 @@
[gd_scene format=3 uid="uid://bxpr2nb1hydpi"] [gd_scene format=3 uid="uid://bxpr2nb1hydpi"]
[ext_resource type="Script" uid="uid://dxlkscqs0wpo6" path="res://scenes/punish_showcase.gd" id="1_3wpqj"] [ext_resource type="Script" uid="uid://dxlkscqs0wpo6" path="res://scenes/punish_showcase.gd" id="1_3wpqj"]
[ext_resource type="Script" uid="uid://cafyno407e2uq" path="res://Punishment.gd" id="2_j4kex"] [ext_resource type="Script" uid="uid://cafyno407e2uq" path="res://Scripts/Gdscript/Punishment.gd" id="2_j4kex"]
[ext_resource type="Texture2D" uid="uid://cinbmowbp2btd" path="res://door.png" id="3_lw8i6"] [ext_resource type="Texture2D" uid="uid://cinbmowbp2btd" path="res://Textures/door.png" id="3_lw8i6"]
[sub_resource type="Resource" id="Resource_j4kex"] [sub_resource type="Resource" id="Resource_j4kex"]
script = ExtResource("2_j4kex") script = ExtResource("2_j4kex")
+92 -2
View File
@@ -5,16 +5,27 @@
[sub_resource type="LabelSettings" id="LabelSettings_5xt3b"] [sub_resource type="LabelSettings" id="LabelSettings_5xt3b"]
font_size = 30 font_size = 30
[node name="OptionsWindow" type="Window" unique_id=1485451151 node_paths=PackedStringArray("dupe_clear_button", "save_v_1_button")] [sub_resource type="LabelSettings" id="LabelSettings_gec7h"]
outline_color = Color(1, 0.7764706, 0.7764706, 1)
[node name="OptionsWindow" type="Window" unique_id=1485451151 node_paths=PackedStringArray("use_old", "dupe_clear_button", "save_v_1_button", "repo_edit", "email_edit", "name_edit", "key_edit", "clone_repo_button", "clone_log", "reset_repo_button")]
oversampling_override = 1.0 oversampling_override = 1.0
position = Vector2i(0, 36) position = Vector2i(0, 36)
size = Vector2i(300, 200) size = Vector2i(557, 397)
visible = false visible = false
force_native = true force_native = true
min_size = Vector2i(262, 199) min_size = Vector2i(262, 199)
script = ExtResource("1_5xt3b") script = ExtResource("1_5xt3b")
use_old = NodePath("MarginContainer/ScrollContainer/BoxContainer/UseOld")
dupe_clear_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/DupeClearButton") dupe_clear_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/DupeClearButton")
save_v_1_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/SaveV1Button") save_v_1_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/SaveV1Button")
repo_edit = NodePath("MarginContainer/ScrollContainer/BoxContainer/Repo/RepoEdit")
email_edit = NodePath("MarginContainer/ScrollContainer/BoxContainer/Git Email/EmailEdit")
name_edit = NodePath("MarginContainer/ScrollContainer/BoxContainer/Git Username/NameEdit")
key_edit = NodePath("MarginContainer/ScrollContainer/BoxContainer/Git key/KeyEdit")
clone_repo_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/CloneRepo")
clone_log = NodePath("MarginContainer/ScrollContainer/BoxContainer/CloneLog")
reset_repo_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/Reset Repo")
[node name="ColorRect" type="ColorRect" parent="." unique_id=1724009282] [node name="ColorRect" type="ColorRect" parent="." unique_id=1724009282]
anchors_preset = 15 anchors_preset = 15
@@ -50,6 +61,16 @@ layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
vertical = true vertical = true
[node name="RichTextLabel3" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=418846341]
layout_mode = 2
text = "General"
label_settings = SubResource("LabelSettings_5xt3b")
[node name="UseOld" type="CheckBox" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1245550112]
layout_mode = 2
text = "Save file with OLD ban file structure(NEEDED before TFVR 4.0)"
autowrap_mode = 2
[node name="RichTextLabel" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=66906023] [node name="RichTextLabel" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=66906023]
layout_mode = 2 layout_mode = 2
text = "Utility" text = "Utility"
@@ -64,3 +85,72 @@ text = "Clear Dupes"
layout_mode = 2 layout_mode = 2
tooltip_text = "Save a version of the banlist in the legacy format" tooltip_text = "Save a version of the banlist in the legacy format"
text = "save duplicate v1 file" text = "save duplicate v1 file"
[node name="RichTextLabel2" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=824466576]
layout_mode = 2
text = "Git"
label_settings = SubResource("LabelSettings_5xt3b")
[node name="Repo" type="HBoxContainer" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1177156648]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer/Repo" unique_id=1452601630]
layout_mode = 2
text = "GIT Repo:"
[node name="RepoEdit" type="LineEdit" parent="MarginContainer/ScrollContainer/BoxContainer/Repo" unique_id=74818467]
layout_mode = 2
size_flags_horizontal = 3
[node name="Git Email" type="HBoxContainer" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1897029584]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer/Git Email" unique_id=1643679626]
layout_mode = 2
text = "GIT Email:"
[node name="EmailEdit" type="LineEdit" parent="MarginContainer/ScrollContainer/BoxContainer/Git Email" unique_id=1342026395]
layout_mode = 2
size_flags_horizontal = 3
[node name="Git Username" type="HBoxContainer" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1185383015]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer/Git Username" unique_id=790257001]
layout_mode = 2
text = "GIT Name:"
[node name="NameEdit" type="LineEdit" parent="MarginContainer/ScrollContainer/BoxContainer/Git Username" unique_id=791124761]
layout_mode = 2
size_flags_horizontal = 3
[node name="Git key" type="HBoxContainer" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=670946792]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer/Git key" unique_id=1561518298]
layout_mode = 2
text = "GIT Key:"
[node name="KeyEdit" type="LineEdit" parent="MarginContainer/ScrollContainer/BoxContainer/Git key" unique_id=1089959886]
layout_mode = 2
size_flags_horizontal = 3
secret = true
[node name="CloneRepo" type="Button" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1623040123]
layout_mode = 2
text = "Clone Repo"
[node name="CloneLog" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=876009711]
layout_mode = 2
label_settings = SubResource("LabelSettings_gec7h")
autowrap_mode = 2
[node name="Reset Repo" type="Button" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1348491757]
layout_mode = 2
text = "Reset Repo"
[node name="ResetInfo" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1109421918]
layout_mode = 2
text = "Reset the repo if you have a weird issue that you cannot fix by other means, this will reset all your local changes"
label_settings = SubResource("LabelSettings_gec7h")
autowrap_mode = 2
+3 -3
View File
@@ -1,6 +1,6 @@
[gd_scene format=3 uid="uid://bv4mvou68l2sk"] [gd_scene format=3 uid="uid://bv4mvou68l2sk"]
[ext_resource type="Script" uid="uid://2f384phq5272" path="res://AltShowcase.gd" id="1_7tuyd"] [ext_resource type="Script" uid="uid://2f384phq5272" path="res://Scripts/Gdscript/AltShowcase.gd" id="1_7tuyd"]
[sub_resource type="LabelSettings" id="LabelSettings_7tuyd"] [sub_resource type="LabelSettings" id="LabelSettings_7tuyd"]
font_size = 20 font_size = 20
@@ -10,7 +10,7 @@ font_size = 15
font_color = Color(0.74558026, 0.7455802, 0.7455802, 1) font_color = Color(0.74558026, 0.7455802, 0.7455802, 1)
[sub_resource type="LabelSettings" id="LabelSettings_y1bem"] [sub_resource type="LabelSettings" id="LabelSettings_y1bem"]
font_size = 27 font_size = 18
[node name="Altshowcase" type="Control" unique_id=96967418 node_paths=PackedStringArray("name_label", "uid_label", "count_label", "search_alts_button")] [node name="Altshowcase" type="Control" unique_id=96967418 node_paths=PackedStringArray("name_label", "uid_label", "count_label", "search_alts_button")]
custom_minimum_size = Vector2(0, 58.235) custom_minimum_size = Vector2(0, 58.235)
@@ -54,7 +54,7 @@ label_settings = SubResource("LabelSettings_45q1g")
[node name="Count" type="Label" parent="HBoxContainer" unique_id=899914138] [node name="Count" type="Label" parent="HBoxContainer" unique_id=899914138]
layout_mode = 2 layout_mode = 2
text = "67 alts" text = "69420 alts"
label_settings = SubResource("LabelSettings_y1bem") label_settings = SubResource("LabelSettings_y1bem")
[node name="SearchAltsButton" type="Button" parent="HBoxContainer" unique_id=957758160] [node name="SearchAltsButton" type="Button" parent="HBoxContainer" unique_id=957758160]
+2
View File
@@ -111,7 +111,9 @@ text = "Ends on:"
[node name="DaysEdit" type="SpinBox" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=1346908939] [node name="DaysEdit" type="SpinBox" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=1346908939]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
min_value = 1.0
max_value = 364.0 max_value = 364.0
value = 1.0
prefix = "day " prefix = "day "
[node name="YearsEdit" type="SpinBox" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=467960707] [node name="YearsEdit" type="SpinBox" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=467960707]
+10
View File
@@ -1,7 +1,17 @@
class_name MoreOptionsWindow extends Window class_name MoreOptionsWindow extends Window
@export var use_old: CheckBox
@export var dupe_clear_button: Button @export var dupe_clear_button: Button
@export var save_v_1_button: Button @export var save_v_1_button: Button
@export var repo_edit: LineEdit
@export var email_edit: LineEdit
@export var name_edit: LineEdit
@export var key_edit: LineEdit
@export var clone_repo_button: Button
@export var clone_log: Label
@export var reset_repo_button:Button
signal remove_dupes signal remove_dupes
signal save_v_one signal save_v_one
-20
View File
@@ -1,20 +0,0 @@
extends Node
@export var search_bar:LineEdit
@export var punish_container:Node
func _ready() -> void:
search_bar.text_changed.connect(update)
func update(text:String):
if text:
for child in punish_container.get_children():
if child is PunishShowcase:
if (text.to_lower() in child.name_label.text.to_lower()) or (text.to_lower() in child.uid_label.text.to_lower()):
child.show()
else:
child.hide()
else:
for child in punish_container.get_children():
if child is PunishShowcase:
child.show()