work for loadout overrides, fixed file deleteion

This commit is contained in:
bucket
2026-04-18 02:13:28 +02:00
parent a691fa28ff
commit 056f24340b
41 changed files with 822 additions and 107 deletions
+9 -3
View File
@@ -30,14 +30,20 @@ public partial class GitIntegration:Node{
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));
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);
GD.Print("found file " + file);
GD.Print("deleting status: ",current_access.Remove(file));
GD.Print(ProjectSettings.GlobalizePath(path+"/"+file));
if (current_access.FileExists(file)){
GD.Print("Deleting failed, moving to trash");
OS.MoveToTrash(ProjectSettings.GlobalizePath(path+"/"+file));
}
}
DirAccess.RemoveAbsolute(path);
GD.Print("deleted ",path);
}
public void Clone(){
@@ -108,14 +108,8 @@ func update_ban_counter():
var count:int = 0
var keys:Array[String]
for punishment in punishments:
if punishment.uid != "":
if !keys.has(punishment.uid):
keys.append(punishment.uid)
count += 1
else:
if !keys.has(punishment.username):
keys.append(punishment.username)
count += 1
if punishment.punish_reason != "BAN_EVADING":
count += 1
ban_counter.text = str(punishments.size()) + " Entires :::::: " + str(count) + \
" Unique :::::: " + str(punishments.size()-count) + " Alts"
var alts = punishments.size() - count
@@ -194,4 +188,6 @@ func close_request():
func save_and_exit():
save()
git.Commit_changes()
git.delete_recursive("user://repo/")
await get_tree().process_frame
get_tree().quit()
@@ -0,0 +1,61 @@
class_name OverrideParser extends Node
func parse_overrides(source:String,users:Array[UserInfo],user_groups:Array[GroupInfo]) -> Array[OverrideItemGroup]:
var splits:PackedStringArray = source.split("\n")
print("parsing with ",splits)
var current_info:LoadoutOverrideInfo
var infos:Array[LoadoutOverrideInfo]
for line in splits:
if line.begins_with("CLASS: "):
var new_item:LoadoutOverrideInfo = LoadoutOverrideInfo.new()
new_item.class_path = line.replace("CLASS: ","")
current_info = new_item
continue
if line.begins_with("SLOT: "):
var slot:String = line.replace("SLOT: ","")
current_info.slot = slot
continue
if line.begins_with("ITEM: "):
var item:String = line.replace("ITEM: ","")
current_info.item_path = item
continue
if line.begins_with("PLAYERS: "):
var players_raw:String = line.replace("PLAYERS: ","")
var players:PackedStringArray = players_raw.split(",")
for player in players:
if player.begins_with("@"):
var user_group_name:String = player.replace("@","")
var found:bool = false
for group in user_groups:
if group.name == user_group_name:
current_info.groups.append(group)
found = true
break
if !found:
push_error("didnt find group ",user_group_name)
else:
var user_name:String = player
var found:bool = false
for user in users:
if user.name == user_name:
current_info.users.append(user)
found = true
break
if !found:
push_warning("didnt find user ",user_name)
if line.begins_with("TAG: "):
current_info.tag = line.replace("TAG: ","")
infos.append(current_info)
current_info = null
var groups:Array[OverrideItemGroup] = []
for info in infos:
var exists:bool = false
for group in groups:
if group.name == info.tag:
exists = true
group.children.append(info)
if !exists:
var new_group:OverrideItemGroup = OverrideItemGroup.new()
new_group.name = info.tag
groups.append(new_group)
return groups
@@ -0,0 +1 @@
uid://cg2feh2v1snlb
@@ -0,0 +1 @@
class_name OverrideItem extends Resource
@@ -0,0 +1 @@
uid://bv2hrpr05vaee
@@ -0,0 +1,7 @@
class_name LoadoutOverrideInfo extends OverrideItem
@export var class_path:String
@export var slot:String
@export var item_path:String
@export var users:Array[UserInfo]
@export var groups:Array[GroupInfo]
@export var tag:String
@@ -0,0 +1 @@
uid://be2ral0lbxxir
@@ -0,0 +1,14 @@
class_name OverrideItemGroup extends OverrideItem
@export var name:String
@export var children:Array[LoadoutOverrideInfo]
func as_string() -> String:
var string:String = ""
string += name + "\n"
for child:LoadoutOverrideInfo in children:
string += "class: " + child.class_path + "\n"
string += "slot: " + child.slot + "\n"
string += "item: " + child.item_path + "\n"
string += "users: " + str(child.users) + "\n"
string += "groups: " + str(child.groups) + "\n"
return string
@@ -0,0 +1 @@
uid://rd4edsuoi8dg
@@ -0,0 +1,3 @@
class_name GroupInfo extends Resource
@export var name:String
@export var users:Array[UserInfo]
@@ -0,0 +1 @@
uid://nt82db21lo01
@@ -0,0 +1,45 @@
class_name UserParser extends Node
func parse_people(source:String) -> Array[UserInfo]:
var splits_users:PackedStringArray = source.split("#region USERS")[1].split("#endregion")[0].split("\n")
#print("parsing: ",splits_users," on a source of, ", source)
var current_user:UserInfo = null
var users:Array[UserInfo]
for line in splits_users:
if line.begins_with("NAME: "):
var user:UserInfo = UserInfo.new()
user.name = line.replace("NAME: ","")
current_user = user
continue
if line.begins_with("UID: "):
if current_user:
current_user.uid = line.replace("UID: ","")
users.append(current_user)
else:
push_error("Error parsing people, no user object")
current_user = null
continue
return users
func parse_groups(source:String,users:Array[UserInfo]) -> Array[GroupInfo]:
var splits_groups:PackedStringArray = source.split("#region GROUPS")[1].split("#endregion")[0].split("\n")
var groups:Array[GroupInfo]
var current_group:GroupInfo
for line in splits_groups:
if line.begins_with("GROUP: "):
var group:GroupInfo = GroupInfo.new()
group.name = line.replace("GROUP: ","")
current_group = group
if line.begins_with("MEMBERS: "):
var people:PackedStringArray = line.replace("MEMBERS: ","").split(",")
for person in people:
current_group.users.append(find_user(person,users))
groups.append(current_group)
current_group = null
return groups
func find_user(user_name:String,users:Array[UserInfo]) -> UserInfo:
for user in users:
if user.name == user_name:
return user
push_error("User is not found")
return null
@@ -0,0 +1 @@
uid://chmb3e61opk14
@@ -0,0 +1,3 @@
class_name UserInfo extends Resource
@export var name:String
@export var uid:String
@@ -0,0 +1 @@
uid://co3i0beqyihi8