Initial commit
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
@@ -0,0 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
||||
@@ -0,0 +1,3 @@
|
||||
# Godot 4+ specific ignores
|
||||
.godot/
|
||||
/android/
|
||||
@@ -0,0 +1,6 @@
|
||||
class_name altshowcase extends Control
|
||||
|
||||
@export var name_label: Label
|
||||
@export var uid_label: Label
|
||||
@export var count_label: Label
|
||||
@export var search_alts_button: Button
|
||||
@@ -0,0 +1 @@
|
||||
uid://2f384phq5272
|
||||
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c7r26dxgqkklc"
|
||||
path="res://.godot/imported/Minus.png-fdca73571ee1f51129171a53d22c475c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Minus.png"
|
||||
dest_files=["res://.godot/imported/Minus.png-fdca73571ee1f51129171a53d22c475c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dppihj7ptidog"
|
||||
path="res://.godot/imported/Plus.png-7f0b6e62ef4c9053e1aaeef8ad93a0d8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Plus.png"
|
||||
dest_files=["res://.godot/imported/Plus.png-7f0b6e62ef4c9053e1aaeef8ad93a0d8.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -0,0 +1,10 @@
|
||||
class_name Punishment extends Resource
|
||||
|
||||
@export var username:String = ""
|
||||
@export var uid:String = ""
|
||||
@export var what_punishment:punishment_types
|
||||
@export var punish_reason:String = ""
|
||||
## in unix time, zero means forever
|
||||
@export var punish_end:int
|
||||
|
||||
enum punishment_types{BAN,MUTE}
|
||||
@@ -0,0 +1 @@
|
||||
uid://cafyno407e2uq
|
||||
@@ -0,0 +1,32 @@
|
||||
class_name BanListExporter extends Node
|
||||
|
||||
func Export(Punishments:Array[Punishment],file:String) -> void:
|
||||
var fileaccess:FileAccess = FileAccess.open(file,FileAccess.WRITE)
|
||||
if !fileaccess:
|
||||
push_error("!fileaccess is true")
|
||||
return
|
||||
var content:String = ""
|
||||
for punishment in Punishments:
|
||||
if !punishment.username:
|
||||
continue
|
||||
content += "NAME: " + punishment.username + "\n"
|
||||
content += "UID: " + punishment.uid + "\n"
|
||||
content += "PUNISHMENT: " + ("MUTE" if punishment.what_punishment ==
|
||||
punishment.punishment_types.MUTE else "BAN") + "\n"
|
||||
content += "REASON: " + punishment.punish_reason + "\n"
|
||||
content += "END_DATE: " + str(punishment.punish_end) + "\n"
|
||||
|
||||
fileaccess.store_string(content)
|
||||
|
||||
func Exportv1(Punishments:Array[Punishment],file:String) -> void:
|
||||
var fileaccess:FileAccess = FileAccess.open(file,FileAccess.WRITE)
|
||||
if !fileaccess:
|
||||
push_error("!fileaccess is true")
|
||||
return
|
||||
var content:String = ""
|
||||
for punishment in Punishments:
|
||||
if !punishment.username:
|
||||
continue
|
||||
content += "NAME: " + punishment.username + "\n"
|
||||
content += "UID: " + punishment.uid + "\n"
|
||||
fileaccess.store_string(content)
|
||||
@@ -0,0 +1 @@
|
||||
uid://caaljvxo8tja5
|
||||
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cinbmowbp2btd"
|
||||
path="res://.godot/imported/door.png-4ad4ab0c545155655bbef277d86eb152.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://door.png"
|
||||
dest_files=["res://.godot/imported/door.png-4ad4ab0c545155655bbef277d86eb152.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@@ -0,0 +1,74 @@
|
||||
[preset.0]
|
||||
|
||||
name="Windows Desktop"
|
||||
platform="Windows Desktop"
|
||||
runnable=true
|
||||
dedicated_server=false
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="../BanBanWindows/BanListEditor.exe"
|
||||
patches=PackedStringArray()
|
||||
patch_delta_encoding=false
|
||||
patch_delta_compression_level_zstd=19
|
||||
patch_delta_min_reduction=0.1
|
||||
patch_delta_include_filters="*"
|
||||
patch_delta_exclude_filters=""
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
seed=0
|
||||
encrypt_pck=false
|
||||
encrypt_directory=false
|
||||
script_export_mode=2
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
debug/export_console_wrapper=1
|
||||
binary_format/embed_pck=true
|
||||
texture_format/s3tc_bptc=true
|
||||
texture_format/etc2_astc=false
|
||||
shader_baker/enabled=false
|
||||
binary_format/architecture="x86_64"
|
||||
codesign/enable=false
|
||||
codesign/timestamp=true
|
||||
codesign/timestamp_server_url=""
|
||||
codesign/digest_algorithm=1
|
||||
codesign/description=""
|
||||
codesign/custom_options=PackedStringArray()
|
||||
application/modify_resources=true
|
||||
application/icon=""
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version=""
|
||||
application/product_version=""
|
||||
application/company_name=""
|
||||
application/product_name=""
|
||||
application/file_description=""
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
application/export_angle=0
|
||||
application/export_d3d12=0
|
||||
application/d3d12_agility_sdk_multiarch=true
|
||||
ssh_remote_deploy/enabled=false
|
||||
ssh_remote_deploy/host="user@host_ip"
|
||||
ssh_remote_deploy/port="22"
|
||||
ssh_remote_deploy/extra_args_ssh=""
|
||||
ssh_remote_deploy/extra_args_scp=""
|
||||
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
|
||||
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||
Start-ScheduledTask -TaskName godot_remote_debug
|
||||
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||
Remove-Item -Recurse -Force '{temp_dir}'"
|
||||
dotnet/include_scripts_content=false
|
||||
dotnet/include_debug_symbols=true
|
||||
dotnet/embed_build_outputs=false
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>
|
||||
|
After Width: | Height: | Size: 995 B |
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bf1hiirahdgrf"
|
||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.svg"
|
||||
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
@@ -0,0 +1,182 @@
|
||||
class_name mainNode extends Control
|
||||
@export var edit_window:EditWindow
|
||||
@export var punish_list_parser: PunishListParser
|
||||
@export var PunishContainer:Control
|
||||
@export var punish_scene:PackedScene
|
||||
@export var new_punish_btn:Button
|
||||
@export var file_opener:FileDialog
|
||||
@export var open_btn:Button
|
||||
@export var new_btn:Button
|
||||
@export var save_btn:Button
|
||||
@export var exporter:BanListExporter
|
||||
@export var file_label:Label
|
||||
@export var save_file_parser:SaveFileParser
|
||||
@export var quit_confirmation:ConfirmationDialog
|
||||
@export var ban_counter: Label
|
||||
@export var save_label: Label
|
||||
@export var plus: CPUParticles2D
|
||||
@export var minus: CPUParticles2D
|
||||
@export var more_btn: Button
|
||||
@export var options_window: MoreOptionsWindow
|
||||
|
||||
var current_path:String
|
||||
var unsaved:bool
|
||||
|
||||
func _ready() -> void:
|
||||
more_btn.pressed.connect(options_window.show)
|
||||
edit_window.changed.connect(update_ban_counter) # use as update
|
||||
|
||||
quit_confirmation.canceled.connect(get_tree().quit)
|
||||
quit_confirmation.confirmed.connect(save_and_exit)
|
||||
get_tree().auto_accept_quit = false
|
||||
get_tree().root.close_requested.connect(close_request)
|
||||
set_file(save_file_parser.read())
|
||||
file_opener.file_selected.connect(set_file)
|
||||
open_btn.pressed.connect(file_opener.show)
|
||||
new_btn.pressed.connect(new_punishment)
|
||||
save_btn.pressed.connect(save)
|
||||
options_window.remove_dupes.connect(remove_dupes)
|
||||
options_window.save_v_one.connect(savevone)
|
||||
|
||||
func savevone():
|
||||
var Punishments:Array[Punishment]
|
||||
for child in PunishContainer.get_children():
|
||||
if child is PunishShowcase:
|
||||
Punishments.append(child.punishment)
|
||||
exporter.Exportv1(Punishments,current_path.rstrip(".txt")+" v1.txt")
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if Input.is_action_just_pressed("save"):
|
||||
save()
|
||||
|
||||
var last_alts:int = 0
|
||||
func remove_dupes():
|
||||
unsaved = true
|
||||
remove_loop()
|
||||
update_ban_counter()
|
||||
|
||||
func remove_loop():
|
||||
var found:bool = remove_iteration()
|
||||
if found == true:
|
||||
remove_loop()
|
||||
|
||||
func remove_iteration() -> bool:
|
||||
var punishments:Array[PunishShowcase]
|
||||
for child in PunishContainer.get_children():
|
||||
if child is PunishShowcase:
|
||||
punishments.append(child)
|
||||
for punishment_keep in punishments:
|
||||
for punishment_two in punishments:
|
||||
# cancel if not same name
|
||||
if punishment_keep == punishment_two:
|
||||
continue
|
||||
if punishment_keep.punishment.username != punishment_two.punishment.username:
|
||||
continue
|
||||
# cancel if not same uid
|
||||
if punishment_keep.punishment.uid != punishment_two.punishment.uid:
|
||||
continue
|
||||
# if there a reason?
|
||||
if punishment_keep.punishment.punish_reason == "":
|
||||
punishment_keep.punishment.punish_reason = punishment_two.punishment.punish_reason
|
||||
# is there a time set?
|
||||
if punishment_keep.punishment.punish_end == 0:
|
||||
punishment_keep.punishment.punish_end = punishment_two.punishment.punish_end
|
||||
# if its a mute maybe it should be a ban
|
||||
if punishment_keep.punishment.what_punishment == Punishment.punishment_types.MUTE:
|
||||
punishment_keep.punishment.what_punishment = punishment_two.punishment.what_punishment
|
||||
|
||||
punishment_two.free()
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func update_ban_counter():
|
||||
var punishments:Array[Punishment]
|
||||
for child in PunishContainer.get_children():
|
||||
if child is PunishShowcase:
|
||||
punishments.append(child.punishment)
|
||||
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
|
||||
ban_counter.text = str(punishments.size()) + " Entires :::::: " + str(count) + \
|
||||
" Unique :::::: " + str(punishments.size()-count) + " Alts"
|
||||
var alts = punishments.size() - count
|
||||
if last_alts != alts:
|
||||
if alts > last_alts:
|
||||
plus.emitting = true
|
||||
else:
|
||||
minus.emitting = true
|
||||
last_alts = alts
|
||||
|
||||
func save():
|
||||
save_label.hide()
|
||||
var Punishments:Array[Punishment]
|
||||
for child in PunishContainer.get_children():
|
||||
if child is PunishShowcase:
|
||||
Punishments.append(child.punishment)
|
||||
update_ban_counter()
|
||||
save_file_parser.save(current_path)
|
||||
exporter.Export(Punishments,current_path)
|
||||
unsaved = false
|
||||
|
||||
func new_punishment() -> void:
|
||||
unsaved = true
|
||||
save_label.show()
|
||||
var child:PunishShowcase = punish_scene.instantiate()
|
||||
child.punishment = Punishment.new()
|
||||
PunishContainer.add_child(child)
|
||||
child.update()
|
||||
child.Edit.connect(edit_called)
|
||||
edit_called(child,true)
|
||||
update_ban_counter()
|
||||
|
||||
func add_punishments(file:String):
|
||||
save_label.show()
|
||||
var punishments = punish_list_parser.parse(file)
|
||||
for punish:Punishment in punishments:
|
||||
var child:PunishShowcase = punish_scene.instantiate()
|
||||
child.punishment = punish
|
||||
PunishContainer.add_child(child)
|
||||
child.update()
|
||||
child.Edit.connect(edit_called)
|
||||
update_ban_counter()
|
||||
|
||||
func clear_children():
|
||||
save_label.hide()
|
||||
for child in PunishContainer.get_children():
|
||||
child.queue_free()
|
||||
update_ban_counter()
|
||||
|
||||
func edit_called(on:PunishShowcase,set_time:bool = false):
|
||||
save_label.show()
|
||||
unsaved = true
|
||||
edit_window.opened_from = on
|
||||
edit_window.punishment = on.punishment if on else Punishment.new()
|
||||
edit_window.update(set_time)
|
||||
edit_window.show()
|
||||
edit_window.grab_focus()
|
||||
update_ban_counter()
|
||||
|
||||
func set_file(path:String):
|
||||
current_path = path
|
||||
file_label.text = path
|
||||
clear_children()
|
||||
add_punishments(path)
|
||||
|
||||
func close_request():
|
||||
if !unsaved:
|
||||
get_tree().quit()
|
||||
else:
|
||||
quit_confirmation.show()
|
||||
|
||||
func save_and_exit():
|
||||
save()
|
||||
get_tree().quit()
|
||||
@@ -0,0 +1 @@
|
||||
uid://c57yqopmolu8o
|
||||
@@ -0,0 +1,34 @@
|
||||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="BanListEditor"
|
||||
run/main_scene="uid://cxf3yenlgvupj"
|
||||
config/features=PackedStringArray("4.7", "GL Compatibility")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[dotnet]
|
||||
|
||||
project/assembly_name="BanListEditor"
|
||||
|
||||
[input]
|
||||
|
||||
save={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":true,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
renderer/rendering_method="gl_compatibility"
|
||||
renderer/rendering_method.mobile="gl_compatibility"
|
||||
textures/vram_compression/import_etc2_astc=true
|
||||
@@ -0,0 +1,44 @@
|
||||
class_name PunishListParser extends Node
|
||||
|
||||
func parse(file:String) -> Array[Punishment]:
|
||||
if !file:
|
||||
return []
|
||||
var fileaccess:FileAccess = FileAccess.open(file,FileAccess.READ)
|
||||
if fileaccess == null:
|
||||
printerr("no access to file: fileaccess == null")
|
||||
return []
|
||||
var raw:String = fileaccess.get_as_text()
|
||||
var lines:PackedStringArray = raw.split("\n")
|
||||
var punishments:Array[Punishment]
|
||||
for line in lines:
|
||||
print("line ",line)
|
||||
var splits:PackedStringArray = line.split(": ")
|
||||
match splits[0]:
|
||||
"L!ListBegin":
|
||||
print("start")
|
||||
"NAME":
|
||||
var new_punish:Punishment = Punishment.new()
|
||||
new_punish.username = splits[1]
|
||||
punishments.append(new_punish)
|
||||
"UID":
|
||||
punishments[-1].uid = splits[1]
|
||||
"PUNISHMENT":
|
||||
var punish:Punishment.punishment_types = punish_text_to_enum(splits[1])
|
||||
punishments[-1].what_punishment = punish
|
||||
"REASON":
|
||||
punishments[-1].punish_reason = splits[1]
|
||||
"END_DATE":
|
||||
punishments[-1].punish_end = splits[1].to_int()
|
||||
"L!ListEnd":
|
||||
break
|
||||
|
||||
return punishments
|
||||
|
||||
func punish_text_to_enum(text) -> Punishment.punishment_types:
|
||||
var punish:Punishment.punishment_types
|
||||
match text:
|
||||
"BAN":
|
||||
punish = Punishment.punishment_types.BAN
|
||||
"MUTE":
|
||||
punish = Punishment.punishment_types.MUTE
|
||||
return punish
|
||||
@@ -0,0 +1 @@
|
||||
uid://c5ihhdkosauvw
|
||||
@@ -0,0 +1,18 @@
|
||||
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)
|
||||
@@ -0,0 +1 @@
|
||||
uid://3gmapu83dglo
|
||||
@@ -0,0 +1,244 @@
|
||||
[gd_scene format=3 uid="uid://cxf3yenlgvupj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c57yqopmolu8o" path="res://main.gd" id="1_bjd11"]
|
||||
[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://dppihj7ptidog" path="res://Plus.png" id="4_3p2gp"]
|
||||
[ext_resource type="Texture2D" uid="uid://c7r26dxgqkklc" path="res://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://caaljvxo8tja5" path="res://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://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="Script" uid="uid://bt5wd8qjaevk0" path="res://search.gd" id="11_yxlcp"]
|
||||
[ext_resource type="Script" uid="uid://3gmapu83dglo" path="res://save_file_parser.gd" id="12_ebg2g"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_lgr22"]
|
||||
font_size = 26
|
||||
outline_size = 11
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
shadow_size = 11
|
||||
shadow_color = Color(0, 0, 0, 0.3254902)
|
||||
shadow_offset = Vector2(12.105, 8.315)
|
||||
stacked_outline_count = 3
|
||||
stacked_outline_0/size = 4
|
||||
stacked_outline_0/color = Color(1, 0, 0, 1)
|
||||
stacked_outline_1/size = 4
|
||||
stacked_outline_1/color = Color(0.8099345, 0.9946762, 7.70092e-07, 1)
|
||||
stacked_outline_2/size = 4
|
||||
stacked_outline_2/color = Color(0.32855865, 0.41260794, 1, 1)
|
||||
|
||||
[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
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_bjd11")
|
||||
edit_window = NodePath("EditWindow")
|
||||
punish_list_parser = NodePath("BanListParser")
|
||||
PunishContainer = NodePath("MarginContainer/VBoxContainer/ScrollContainer/Tree")
|
||||
punish_scene = ExtResource("2_qmy6f")
|
||||
new_punish_btn = NodePath("MarginContainer/VBoxContainer/HBoxContainer/Punish")
|
||||
file_opener = NodePath("OpenFile")
|
||||
open_btn = NodePath("MarginContainer/VBoxContainer/HBoxContainer2/OpenFileBtn")
|
||||
new_btn = NodePath("MarginContainer/VBoxContainer/HBoxContainer/Punish")
|
||||
save_btn = NodePath("MarginContainer/VBoxContainer/HBoxContainer2/SaveBtn")
|
||||
exporter = NodePath("BanListExporter")
|
||||
file_label = NodePath("MarginContainer/VBoxContainer/HBoxContainer2/CurrentFile")
|
||||
save_file_parser = NodePath("SaveFileParser")
|
||||
quit_confirmation = NodePath("ConfirmationDialog")
|
||||
ban_counter = NodePath("MarginContainer/VBoxContainer/HBoxContainer/BanCounter")
|
||||
save_label = NodePath("MarginContainer/VBoxContainer/HBoxContainer2/SaveLabel")
|
||||
plus = NodePath("MarginContainer/VBoxContainer/HBoxContainer/BanCounter/Plus")
|
||||
minus = NodePath("MarginContainer/VBoxContainer/HBoxContainer/BanCounter/Minus")
|
||||
more_btn = NodePath("MarginContainer/VBoxContainer/HBoxContainer/More")
|
||||
options_window = NodePath("OptionsWindow")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="." unique_id=1516457942]
|
||||
modulate = Color(0.74558026, 0.7455802, 0.7455802, 1)
|
||||
z_index = -1
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
offset_left = -119.0
|
||||
offset_top = -214.0
|
||||
offset_right = 405.0
|
||||
offset_bottom = 526.0
|
||||
texture = ExtResource("3_mwfav")
|
||||
expand_mode = 5
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="." unique_id=1789999219]
|
||||
z_index = -2
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.32993424, 0.25434008, 0.17645565, 1)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1863119132]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer" unique_id=1186401858]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HBoxContainer" type="FlowContainer" parent="MarginContainer/VBoxContainer" unique_id=550324332]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=388690639]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "TFVR punishlist maker 2000™"
|
||||
label_settings = SubResource("LabelSettings_lgr22")
|
||||
|
||||
[node name="BanCounter" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=589605427]
|
||||
layout_mode = 2
|
||||
text = "Unique Bans: "
|
||||
|
||||
[node name="Plus" type="CPUParticles2D" parent="MarginContainer/VBoxContainer/HBoxContainer/BanCounter" unique_id=93983186]
|
||||
position = Vector2(76, 8)
|
||||
emitting = false
|
||||
texture = ExtResource("4_3p2gp")
|
||||
lifetime = 3.9
|
||||
one_shot = true
|
||||
explosiveness = 1.0
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 7.85
|
||||
spread = 180.0
|
||||
initial_velocity_min = 0.8
|
||||
initial_velocity_max = 74.87
|
||||
|
||||
[node name="Minus" type="CPUParticles2D" parent="MarginContainer/VBoxContainer/HBoxContainer/BanCounter" unique_id=2092945034]
|
||||
position = Vector2(76, 8)
|
||||
emitting = false
|
||||
amount = 3
|
||||
texture = ExtResource("5_cvmbd")
|
||||
lifetime = 3.9
|
||||
one_shot = true
|
||||
explosiveness = 1.0
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 7.85
|
||||
spread = 180.0
|
||||
initial_velocity_min = 0.8
|
||||
initial_velocity_max = 74.87
|
||||
|
||||
[node name="Punish" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=100050923]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "new punishment"
|
||||
|
||||
[node name="Stats" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=1256562107]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "Stats"
|
||||
|
||||
[node name="More" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer" unique_id=804757173]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
text = "More"
|
||||
|
||||
[node name="SearchBar" type="LineEdit" parent="MarginContainer/VBoxContainer" unique_id=2022677611]
|
||||
layout_mode = 2
|
||||
placeholder_text = "Search..."
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=1970903622]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer" unique_id=1423908622]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Tree" type="VBoxContainer" parent="MarginContainer/VBoxContainer/ScrollContainer" unique_id=200799914]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HSeparator2" type="HSeparator" parent="MarginContainer/VBoxContainer" unique_id=1677426181]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer2" type="FlowContainer" parent="MarginContainer/VBoxContainer" unique_id=1760266968]
|
||||
layout_mode = 2
|
||||
alignment = 2
|
||||
last_wrap_alignment = 2
|
||||
|
||||
[node name="OpenFileBtn" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=1707347790]
|
||||
layout_mode = 2
|
||||
text = "Open file"
|
||||
|
||||
[node name="CurrentFile" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=1158273656]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "no file selected"
|
||||
clip_text = true
|
||||
text_overrun_behavior = 1
|
||||
|
||||
[node name="SaveLabel" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=1042352785]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
text = "*"
|
||||
|
||||
[node name="SaveBtn" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer2" unique_id=1041770707]
|
||||
layout_mode = 2
|
||||
text = "Save changes"
|
||||
|
||||
[node name="BanListParser" type="Node" parent="." unique_id=951623750]
|
||||
script = ExtResource("6_ft6cd")
|
||||
|
||||
[node name="BanListExporter" type="Node" parent="." unique_id=1531169139]
|
||||
script = ExtResource("7_bb450")
|
||||
|
||||
[node name="EditWindow" parent="." unique_id=211137631 instance=ExtResource("8_nfivy")]
|
||||
|
||||
[node name="OptionsWindow" parent="." unique_id=1485451151 instance=ExtResource("9_1nqs0")]
|
||||
initial_position = 4
|
||||
|
||||
[node name="Statistics" parent="." unique_id=1932979201 node_paths=PackedStringArray("root", "PunishContainer", "search_bar") instance=ExtResource("10_1iba3")]
|
||||
root = NodePath("..")
|
||||
PunishContainer = NodePath("../MarginContainer/VBoxContainer/ScrollContainer/Tree")
|
||||
search_bar = NodePath("../MarginContainer/VBoxContainer/SearchBar")
|
||||
|
||||
[node name="Search" type="Node" parent="." unique_id=170590161 node_paths=PackedStringArray("search_bar", "punish_container")]
|
||||
script = ExtResource("11_yxlcp")
|
||||
search_bar = NodePath("../MarginContainer/VBoxContainer/SearchBar")
|
||||
punish_container = NodePath("../MarginContainer/VBoxContainer/ScrollContainer/Tree")
|
||||
|
||||
[node name="OpenFile" type="FileDialog" parent="." unique_id=1378168421]
|
||||
oversampling_override = 1.0
|
||||
title = "Open a File"
|
||||
size = Vector2i(807, 360)
|
||||
file_mode = 0
|
||||
access = 2
|
||||
filters = PackedStringArray("*.txt", "*.dat")
|
||||
use_native_dialog = true
|
||||
|
||||
[node name="SaveFileParser" type="Node" parent="." unique_id=930223611]
|
||||
script = ExtResource("12_ebg2g")
|
||||
|
||||
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="." unique_id=416398003]
|
||||
oversampling_override = 1.0
|
||||
initial_position = 4
|
||||
size = Vector2i(305, 100)
|
||||
always_on_top = true
|
||||
force_native = true
|
||||
ok_button_text = "Save and quit"
|
||||
dialog_text = "You have unsaved changes!"
|
||||
cancel_button_text = "Quit without saving"
|
||||
|
||||
[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/More" to="OptionsWindow" method="grab_focus"]
|
||||
@@ -0,0 +1,26 @@
|
||||
class_name PunishShowcase extends Control
|
||||
@onready var name_label: Label = $Container/VBoxContainer/Name
|
||||
@onready var uid_label: Label = $Container/VBoxContainer/UID
|
||||
@onready var edit_button: Button = $Container/Edit
|
||||
@onready var punishment_type_display: TextureRect = $Container/PunishmentTypeDisplay
|
||||
@onready var container: FlowContainer = $Container
|
||||
@export var punishment:Punishment
|
||||
|
||||
signal Edit(showcase:PunishShowcase)
|
||||
|
||||
func _ready() -> void:
|
||||
edit_button.pressed.connect(edit)
|
||||
if !punishment:
|
||||
punishment = Punishment.new()
|
||||
|
||||
func update() -> void:
|
||||
name_label.text = punishment.username
|
||||
uid_label.text = punishment.uid
|
||||
punishment_type_display.texture = load("res://door.png") if \
|
||||
punishment.what_punishment == punishment.punishment_types.BAN else load("res://speaker.png")
|
||||
|
||||
func edit():
|
||||
Edit.emit(self)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
custom_minimum_size.y = container.size.y
|
||||
@@ -0,0 +1 @@
|
||||
uid://dxlkscqs0wpo6
|
||||
@@ -0,0 +1,71 @@
|
||||
[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://cafyno407e2uq" path="res://Punishment.gd" id="2_j4kex"]
|
||||
[ext_resource type="Texture2D" uid="uid://cinbmowbp2btd" path="res://door.png" id="3_lw8i6"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_j4kex"]
|
||||
script = ExtResource("2_j4kex")
|
||||
metadata/_custom_type_script = "uid://cafyno407e2uq"
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_lw8i6"]
|
||||
font_size = 20
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
shadow_size = 8
|
||||
shadow_color = Color(0, 0, 0, 0.54509807)
|
||||
shadow_offset = Vector2(1.31, 1.925)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_j4kex"]
|
||||
font_color = Color(0.68307734, 0.6830774, 0.68307734, 1)
|
||||
|
||||
[node name="PunishShowcase" type="Control" unique_id=1878310580]
|
||||
custom_minimum_size = Vector2(0, 59)
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_right = -717.0
|
||||
offset_bottom = -589.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_3wpqj")
|
||||
punishment = SubResource("Resource_j4kex")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="." unique_id=1592063175]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.2509804, 0.2509804, 0.2509804, 0.4862745)
|
||||
|
||||
[node name="Container" type="FlowContainer" parent="." unique_id=818336029]
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_right = 1.0
|
||||
offset_bottom = 55.0
|
||||
grow_horizontal = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Container" unique_id=2062889465]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Name" type="Label" parent="Container/VBoxContainer" unique_id=1768649764]
|
||||
layout_mode = 2
|
||||
text = "NAME"
|
||||
label_settings = SubResource("LabelSettings_lw8i6")
|
||||
|
||||
[node name="UID" type="Label" parent="Container/VBoxContainer" unique_id=323779410]
|
||||
layout_mode = 2
|
||||
text = "UID"
|
||||
label_settings = SubResource("LabelSettings_j4kex")
|
||||
|
||||
[node name="PunishmentTypeDisplay" type="TextureRect" parent="Container" unique_id=1037680772]
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_lw8i6")
|
||||
expand_mode = 2
|
||||
|
||||
[node name="Edit" type="Button" parent="Container" unique_id=31447788]
|
||||
layout_mode = 2
|
||||
text = "More / Edit"
|
||||
@@ -0,0 +1,66 @@
|
||||
[gd_scene format=3 uid="uid://burukk5374yyu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cgr5yq35l0u65" path="res://scenes/windwos/more_options_window.gd" id="1_5xt3b"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_5xt3b"]
|
||||
font_size = 30
|
||||
|
||||
[node name="OptionsWindow" type="Window" unique_id=1485451151 node_paths=PackedStringArray("dupe_clear_button", "save_v_1_button")]
|
||||
oversampling_override = 1.0
|
||||
position = Vector2i(0, 36)
|
||||
size = Vector2i(300, 200)
|
||||
visible = false
|
||||
force_native = true
|
||||
min_size = Vector2i(262, 199)
|
||||
script = ExtResource("1_5xt3b")
|
||||
dupe_clear_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/DupeClearButton")
|
||||
save_v_1_button = NodePath("MarginContainer/ScrollContainer/BoxContainer/SaveV1Button")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="." unique_id=1724009282]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
color = Color(0.32941177, 0.25490198, 0.1764706, 1)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=782458598]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer" unique_id=1444604018]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
horizontal_scroll_mode = 0
|
||||
|
||||
[node name="BoxContainer" type="BoxContainer" parent="MarginContainer/ScrollContainer" unique_id=1819150398]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
vertical = true
|
||||
|
||||
[node name="RichTextLabel" type="Label" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=66906023]
|
||||
layout_mode = 2
|
||||
text = "Utility"
|
||||
label_settings = SubResource("LabelSettings_5xt3b")
|
||||
|
||||
[node name="DupeClearButton" type="Button" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=25275652]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Removes duplicate entires(same uid and name)"
|
||||
text = "Clear Dupes"
|
||||
|
||||
[node name="SaveV1Button" type="Button" parent="MarginContainer/ScrollContainer/BoxContainer" unique_id=1718864258]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Save a version of the banlist in the legacy format"
|
||||
text = "save duplicate v1 file"
|
||||
@@ -0,0 +1,89 @@
|
||||
extends Window
|
||||
|
||||
@export var root:mainNode
|
||||
@export var PunishContainer:Control
|
||||
@export var search_bar:LineEdit
|
||||
@export var total: Label
|
||||
@export var alts: Label
|
||||
@export var unique: Label
|
||||
@export var best: Label
|
||||
@export var altshowcse: PackedScene
|
||||
@export var altshowcse_container: Control
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
visibility_changed.connect(update_stats)
|
||||
update_stats()
|
||||
close_requested.connect(hide)
|
||||
root.edit_window.changed.connect(update_stats)
|
||||
|
||||
func update_stats():
|
||||
for child in altshowcse_container.get_children():
|
||||
child.queue_free()
|
||||
var punishments:Array[Punishment]
|
||||
for child in PunishContainer.get_children():
|
||||
if child is PunishShowcase:
|
||||
punishments.append(child.punishment)
|
||||
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
|
||||
var entires_stats:Dictionary[Punishment,int]
|
||||
for punishment in punishments:
|
||||
if punishment.uid:
|
||||
for punishment2 in punishments:
|
||||
if punishment2 != punishment:
|
||||
if punishment2.uid == punishment.uid:
|
||||
if entires_stats.has(punishment):
|
||||
entires_stats[punishment] += 1
|
||||
else:
|
||||
entires_stats[punishment] = 1
|
||||
var most_evader:Punishment
|
||||
var most_alts:int = -1
|
||||
var used_uids:Array[String] = []
|
||||
sort_dict(entires_stats)
|
||||
for entry in entires_stats.keys():
|
||||
if entires_stats[entry] > most_alts:
|
||||
print("new best: ",entires_stats[entry] )
|
||||
most_evader = entry
|
||||
most_alts = entires_stats[entry]
|
||||
|
||||
|
||||
if entry is Punishment:
|
||||
if entry.uid not in used_uids:
|
||||
used_uids.append(entry.uid)
|
||||
var child:altshowcase = altshowcse.instantiate()
|
||||
altshowcse_container.add_child(child)
|
||||
child.count_label.text = "%s alts" % entires_stats[entry]
|
||||
child.name_label.text = entry.username
|
||||
child.uid_label.text = entry.uid
|
||||
child.search_alts_button.pressed.connect(root_search.bind(child.uid_label.text))
|
||||
total.text = "Total punishments %s" % str(punishments.size())
|
||||
unique.text = "Unique people: %s" % str(count)
|
||||
alts.text = "Alts total: %s" % str(punishments.size()-count)
|
||||
if most_evader:
|
||||
best.text = "Most alt accounts: %s (%s)" % [most_evader.username, most_evader.uid]
|
||||
|
||||
func root_search(what:String):
|
||||
search_bar.text = what
|
||||
search_bar.text_changed.emit(what)
|
||||
|
||||
func sort_dict(dict: Dictionary) -> void:
|
||||
var pairs = dict.keys().map(func (key): return [key, dict[key]])
|
||||
pairs.sort()
|
||||
pairs.reverse()
|
||||
dict.clear()
|
||||
for p in pairs:
|
||||
dict[p[0]] = p[1]
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
@@ -0,0 +1 @@
|
||||
uid://dwc8m0l6he4uo
|
||||
@@ -0,0 +1,62 @@
|
||||
[gd_scene format=3 uid="uid://bv4mvou68l2sk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://2f384phq5272" path="res://AltShowcase.gd" id="1_7tuyd"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_7tuyd"]
|
||||
font_size = 20
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_45q1g"]
|
||||
font_size = 15
|
||||
font_color = Color(0.74558026, 0.7455802, 0.7455802, 1)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_y1bem"]
|
||||
font_size = 27
|
||||
|
||||
[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)
|
||||
layout_mode = 3
|
||||
anchors_preset = 10
|
||||
anchor_right = 1.0
|
||||
grow_horizontal = 2
|
||||
size_flags_horizontal = 3
|
||||
script = ExtResource("1_7tuyd")
|
||||
name_label = NodePath("HBoxContainer/VBoxContainer/Name")
|
||||
uid_label = NodePath("HBoxContainer/VBoxContainer/Uid")
|
||||
count_label = NodePath("HBoxContainer/Count")
|
||||
search_alts_button = NodePath("HBoxContainer/SearchAltsButton")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="." unique_id=2074909687]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0, 0, 0, 0.13333334)
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=809192798]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer" unique_id=166743843]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Name" type="Label" parent="HBoxContainer/VBoxContainer" unique_id=1070838197]
|
||||
layout_mode = 2
|
||||
text = "name"
|
||||
label_settings = SubResource("LabelSettings_7tuyd")
|
||||
|
||||
[node name="Uid" type="Label" parent="HBoxContainer/VBoxContainer" unique_id=718203878]
|
||||
layout_mode = 2
|
||||
text = "UID"
|
||||
label_settings = SubResource("LabelSettings_45q1g")
|
||||
|
||||
[node name="Count" type="Label" parent="HBoxContainer" unique_id=899914138]
|
||||
layout_mode = 2
|
||||
text = "67 alts"
|
||||
label_settings = SubResource("LabelSettings_y1bem")
|
||||
|
||||
[node name="SearchAltsButton" type="Button" parent="HBoxContainer" unique_id=957758160]
|
||||
layout_mode = 2
|
||||
text = "Show"
|
||||
@@ -0,0 +1,86 @@
|
||||
class_name EditWindow extends Window
|
||||
@onready var days_edit: SpinBox = $margin/VBoxContainer/ScrollContainer/Container/Ends/DaysEdit
|
||||
@onready var years_edit: SpinBox = $margin/VBoxContainer/ScrollContainer/Container/Ends/YearsEdit
|
||||
@onready var reason_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/Reason/Reason Edit"
|
||||
@onready var uid_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/UID/UID Edit"
|
||||
@onready var name_edit: LineEdit = $"margin/VBoxContainer/ScrollContainer/Container/Name/Name Edit"
|
||||
@onready var donebutton: Button = $margin/VBoxContainer/Done
|
||||
@onready var delete_check: CheckBox = $margin/VBoxContainer/ScrollContainer/Container/DeleteCheck
|
||||
@onready var delete_button: Button = $margin/VBoxContainer/ScrollContainer/Container/DeleteButton
|
||||
@onready var type_button: OptionButton = $margin/VBoxContainer/ScrollContainer/Container/Type/TypeButton
|
||||
|
||||
@export var opened_from:PunishShowcase
|
||||
@export var punishment:Punishment
|
||||
|
||||
const id_to_name:Dictionary = {Punishment.punishment_types.BAN:"BAN",
|
||||
Punishment.punishment_types.MUTE:"MUTE"}
|
||||
|
||||
signal changed
|
||||
|
||||
func _ready() -> void:
|
||||
close_requested.connect(close)
|
||||
donebutton.pressed.connect(done)
|
||||
delete_button.pressed.connect(delete_this)
|
||||
for type in Punishment.punishment_types:
|
||||
type_button.add_item(type)
|
||||
|
||||
func delete_this():
|
||||
if opened_from:
|
||||
opened_from.queue_free()
|
||||
punishment = null
|
||||
hide()
|
||||
delete_check.button_pressed = false
|
||||
changed.emit()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
delete_button.disabled = !delete_check.button_pressed
|
||||
|
||||
func update(set_time:bool = false):
|
||||
if !punishment:
|
||||
printerr("!punishment is true")
|
||||
return
|
||||
name_edit.text = punishment.username
|
||||
uid_edit.text = punishment.uid
|
||||
reason_edit.text = punishment.punish_reason
|
||||
var from_time:int = punishment.punish_end
|
||||
var from_unix:Dictionary = Time.get_date_dict_from_unix_time(from_time)
|
||||
@warning_ignore("integer_division")
|
||||
var years:int = from_unix["year"]
|
||||
@warning_ignore("integer_division")
|
||||
var days:int = from_unix["day"]
|
||||
years_edit.value = years
|
||||
days_edit.value = days
|
||||
type_button.select(punishment.what_punishment)
|
||||
changed.emit()
|
||||
|
||||
func close():
|
||||
punishment = null
|
||||
opened_from = null
|
||||
delete_check.button_pressed = false
|
||||
hide()
|
||||
changed.emit()
|
||||
|
||||
func done():
|
||||
if opened_from:
|
||||
opened_from.punishment = get_punish()
|
||||
opened_from.update()
|
||||
hide()
|
||||
else:
|
||||
hide()
|
||||
delete_check.button_pressed = false
|
||||
changed.emit()
|
||||
|
||||
func get_punish() -> Punishment:
|
||||
var new_punishment:Punishment = Punishment.new()
|
||||
new_punishment.username = name_edit.text
|
||||
new_punishment.uid = uid_edit.text
|
||||
new_punishment.punish_reason = reason_edit.text
|
||||
var time:int = 0
|
||||
time += years_edit.value * 31536000
|
||||
time += days_edit.value *86400
|
||||
var unixtime:float = Time.get_unix_time_from_datetime_dict({"year":years_edit.value,
|
||||
"day":days_edit.value,})
|
||||
new_punishment.punish_end = unixtime
|
||||
new_punishment.what_punishment = type_button.selected
|
||||
changed.emit()
|
||||
return new_punishment
|
||||
@@ -0,0 +1 @@
|
||||
uid://n41mlonj47n3
|
||||
@@ -0,0 +1,143 @@
|
||||
[gd_scene format=3 uid="uid://dy18m2uq557to"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://n41mlonj47n3" path="res://scenes/windwos/edit_window.gd" id="1_827p1"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_827p1"]
|
||||
font_size = 14
|
||||
font_color = Color(0.7581918, 0.7581918, 0.7581917, 1)
|
||||
|
||||
[node name="EditWindow" type="Window" unique_id=1215629639]
|
||||
oversampling_override = 1.0
|
||||
initial_position = 4
|
||||
size = Vector2i(680, 395)
|
||||
visible = false
|
||||
force_native = true
|
||||
script = ExtResource("1_827p1")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="." unique_id=207830370]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0.32941177, 0.25490198, 0.1764706, 1)
|
||||
|
||||
[node name="margin" type="MarginContainer" parent="." unique_id=81777967]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="margin" unique_id=565613909]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Label" type="Label" parent="margin/VBoxContainer" unique_id=725988158]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Edit Punishment"
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="margin/VBoxContainer" unique_id=155976402]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="margin/VBoxContainer" unique_id=7819980]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="margin/VBoxContainer/ScrollContainer" unique_id=505332829]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="Name" type="HBoxContainer" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=2031494707]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Name Label" type="Label" parent="margin/VBoxContainer/ScrollContainer/Container/Name" unique_id=579407327]
|
||||
layout_mode = 2
|
||||
text = "Name:"
|
||||
|
||||
[node name="Name Edit" type="LineEdit" parent="margin/VBoxContainer/ScrollContainer/Container/Name" unique_id=716298584]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="UID" type="HBoxContainer" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=211366043]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="UID Label" type="Label" parent="margin/VBoxContainer/ScrollContainer/Container/UID" unique_id=1644730935]
|
||||
layout_mode = 2
|
||||
text = "UID:"
|
||||
|
||||
[node name="UID Edit" type="LineEdit" parent="margin/VBoxContainer/ScrollContainer/Container/UID" unique_id=946656979]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
draw_control_chars = true
|
||||
|
||||
[node name="Type" type="HBoxContainer" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=301450437]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Type" type="Label" parent="margin/VBoxContainer/ScrollContainer/Container/Type" unique_id=10941001]
|
||||
layout_mode = 2
|
||||
text = "Type:"
|
||||
|
||||
[node name="TypeButton" type="OptionButton" parent="margin/VBoxContainer/ScrollContainer/Container/Type" unique_id=2091379963]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Reason" type="HBoxContainer" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=420802158]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Reason Label" type="Label" parent="margin/VBoxContainer/ScrollContainer/Container/Reason" unique_id=675845905]
|
||||
layout_mode = 2
|
||||
text = "Reason:"
|
||||
|
||||
[node name="Reason Edit" type="LineEdit" parent="margin/VBoxContainer/ScrollContainer/Container/Reason" unique_id=194738986]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Ends" type="HBoxContainer" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=594016585]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Ends Label" type="Label" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=1648518427]
|
||||
layout_mode = 2
|
||||
text = "Ends on:"
|
||||
|
||||
[node name="DaysEdit" type="SpinBox" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=1346908939]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
max_value = 364.0
|
||||
prefix = "day "
|
||||
|
||||
[node name="YearsEdit" type="SpinBox" parent="margin/VBoxContainer/ScrollContainer/Container/Ends" unique_id=467960707]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
min_value = 1970.0
|
||||
max_value = 1000000.0
|
||||
value = 1970.0
|
||||
allow_greater = true
|
||||
prefix = "year"
|
||||
|
||||
[node name="Label2" type="Label" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=9299148]
|
||||
layout_mode = 2
|
||||
text = "keep all at 0 for an infinite ban."
|
||||
label_settings = SubResource("LabelSettings_827p1")
|
||||
|
||||
[node name="DeleteCheck" type="CheckBox" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=1640369628]
|
||||
layout_mode = 2
|
||||
text = "Do you want to delete this punishment?"
|
||||
|
||||
[node name="DeleteButton" type="Button" parent="margin/VBoxContainer/ScrollContainer/Container" unique_id=150626956]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
text = "Delete"
|
||||
alignment = 0
|
||||
|
||||
[node name="Done" type="Button" parent="margin/VBoxContainer" unique_id=1829409858]
|
||||
layout_mode = 2
|
||||
text = "Done"
|
||||
@@ -0,0 +1,18 @@
|
||||
class_name MoreOptionsWindow extends Window
|
||||
|
||||
@export var dupe_clear_button: Button
|
||||
@export var save_v_1_button: Button
|
||||
|
||||
signal remove_dupes
|
||||
signal save_v_one
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
save_v_1_button.pressed.connect(save_v_one.emit)
|
||||
dupe_clear_button.pressed.connect(remove_dupes.emit)
|
||||
close_requested.connect(close)
|
||||
|
||||
func close():
|
||||
hide()
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
@@ -0,0 +1 @@
|
||||
uid://cgr5yq35l0u65
|
||||
@@ -0,0 +1,91 @@
|
||||
[gd_scene format=3 uid="uid://gah2g6nabyf4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwc8m0l6he4uo" path="res://scenes/windwos/StatisticsWindow.gd" id="1_nsh46"]
|
||||
[ext_resource type="PackedScene" uid="uid://bv4mvou68l2sk" path="res://scenes/windwos/altshowcse.tscn" id="2_5eyo7"]
|
||||
|
||||
[node name="Statistics" type="Window" unique_id=1932979201 node_paths=PackedStringArray("total", "alts", "unique", "best", "altshowcse_container")]
|
||||
oversampling_override = 1.0
|
||||
initial_position = 4
|
||||
size = Vector2i(536, 390)
|
||||
visible = false
|
||||
force_native = true
|
||||
script = ExtResource("1_nsh46")
|
||||
total = NodePath("MarginContainer/TabContainer/Stats/VBoxContainer/Total")
|
||||
alts = NodePath("MarginContainer/TabContainer/Stats/VBoxContainer/alts")
|
||||
unique = NodePath("MarginContainer/TabContainer/Stats/VBoxContainer/Unique")
|
||||
best = NodePath("MarginContainer/TabContainer/Stats/VBoxContainer/best")
|
||||
altshowcse = ExtResource("2_5eyo7")
|
||||
altshowcse_container = NodePath("MarginContainer/TabContainer/Leaderboard/ScrollContainer/Container")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="." unique_id=121481691]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
color = Color(0.28358635, 0.30315065, 0.06554975, 1)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=21771767]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="TabContainer" type="TabContainer" parent="MarginContainer" unique_id=870918671]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
current_tab = 1
|
||||
|
||||
[node name="Stats" type="Control" parent="MarginContainer/TabContainer" unique_id=1161969781]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/TabContainer/Stats" unique_id=1730227224]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="Total" type="Label" parent="MarginContainer/TabContainer/Stats/VBoxContainer" unique_id=1786141427]
|
||||
layout_mode = 2
|
||||
text = "Total punishments:"
|
||||
|
||||
[node name="alts" type="Label" parent="MarginContainer/TabContainer/Stats/VBoxContainer" unique_id=874615516]
|
||||
layout_mode = 2
|
||||
text = "thereof alts:"
|
||||
|
||||
[node name="Unique" type="Label" parent="MarginContainer/TabContainer/Stats/VBoxContainer" unique_id=44141892]
|
||||
layout_mode = 2
|
||||
text = "unique entires:"
|
||||
|
||||
[node name="best" type="Label" parent="MarginContainer/TabContainer/Stats/VBoxContainer" unique_id=1010711371]
|
||||
layout_mode = 2
|
||||
text = "Best evader(most alts):"
|
||||
|
||||
[node name="Leaderboard" type="Control" parent="MarginContainer/TabContainer" unique_id=166474110]
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 1
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/TabContainer/Leaderboard" unique_id=1207491017]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="MarginContainer/TabContainer/Leaderboard/ScrollContainer" unique_id=1822273302]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
alignment = 2
|
||||
@@ -0,0 +1,20 @@
|
||||
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()
|
||||
@@ -0,0 +1 @@
|
||||
uid://bt5wd8qjaevk0
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 430 B |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cbq650vxvsxw1"
|
||||
path="res://.godot/imported/speaker.png-045bf6684b83b55b088824f14e175d16.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://speaker.png"
|
||||
dest_files=["res://.godot/imported/speaker.png-045bf6684b83b55b088824f14e175d16.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://o2sjogt3b0ht"
|
||||
path="res://.godot/imported/tf2logo.png-5b6963627dd432a7b538e7f5c69f00b3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://tf2logo.png"
|
||||
dest_files=["res://.godot/imported/tf2logo.png-5b6963627dd432a7b538e7f5c69f00b3.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
Reference in New Issue
Block a user