#22: Now block add player if player name is empty
All checks were successful
Build / build (push) Successful in 1m21s
All checks were successful
Build / build (push) Successful in 1m21s
#23: Add a log for when points are given to players #25: Fixed some graphical stuff #26: Changed so the same character can be on a song multiple times #27: Turning off statistics after win
This commit is contained in:
@@ -1,17 +1,17 @@
|
|||||||
extends ScrollContainer
|
extends ScrollContainer
|
||||||
|
|
||||||
var SCROLL = 0
|
var SCROLL: float = 0
|
||||||
var delay = 0.02 #seconds
|
var delay: float = 0.02 #seconds
|
||||||
var wait = 0
|
var wait: float = 0
|
||||||
|
|
||||||
var SPEED: int = 1
|
var SPEED: int = 1
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready() -> void:
|
||||||
wait = delay
|
wait = delay
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta: float) -> void:
|
||||||
wait -= delta
|
wait -= delta
|
||||||
if wait < 0:
|
if wait < 0:
|
||||||
wait = delay
|
wait = delay
|
||||||
@@ -28,9 +28,9 @@ func _process(delta):
|
|||||||
else:
|
else:
|
||||||
scroll_to_bottom()
|
scroll_to_bottom()
|
||||||
|
|
||||||
func scroll_back_up():
|
func scroll_back_up() -> void:
|
||||||
SCROLL = -1
|
SCROLL = -1
|
||||||
|
|
||||||
func scroll_to_bottom():
|
func scroll_to_bottom() -> void:
|
||||||
scroll_vertical = 0 #Reset to top first.
|
scroll_vertical = 0 #Reset to top first.
|
||||||
SCROLL = 1
|
SCROLL = 1
|
||||||
|
|||||||
33
Log.tscn
Normal file
33
Log.tscn
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://bijh5h5yrivm3"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cw41y87l64qo7" path="res://log.gd" id="1_q72ua"]
|
||||||
|
|
||||||
|
[node name="Control" type="Control"]
|
||||||
|
custom_minimum_size = Vector2(700, 700)
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_q72ua")
|
||||||
|
|
||||||
|
[node name="LogPanel" type="Panel" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visibility_layer = 513
|
||||||
|
custom_minimum_size = Vector2(700, 700)
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 40.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
|
||||||
|
[node name="LogScrollContainer" type="ScrollContainer" parent="LogPanel"]
|
||||||
|
custom_minimum_size = Vector2(700, 700)
|
||||||
|
layout_mode = 0
|
||||||
|
offset_right = 40.0
|
||||||
|
offset_bottom = 40.0
|
||||||
|
|
||||||
|
[node name="LogVBoxContainer" type="VBoxContainer" parent="LogPanel/LogScrollContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
custom_minimum_size = Vector2(700, 700)
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 1
|
||||||
@@ -130,6 +130,9 @@ var auto_repeat_song_button: CheckButton = $RepeatSongCheckButton
|
|||||||
@onready
|
@onready
|
||||||
var music_player_container: PanelContainer = $MusicPlayer
|
var music_player_container: PanelContainer = $MusicPlayer
|
||||||
|
|
||||||
|
@onready
|
||||||
|
var log: Control = %Log
|
||||||
|
|
||||||
@onready
|
@onready
|
||||||
var debug_label: Label = $DebugLabel
|
var debug_label: Label = $DebugLabel
|
||||||
|
|
||||||
@@ -205,10 +208,13 @@ func _input(event: InputEvent) -> void:
|
|||||||
if event.alt_pressed && event.keycode == KEY_ENTER:
|
if event.alt_pressed && event.keycode == KEY_ENTER:
|
||||||
print("Alt + Enter pressed")
|
print("Alt + Enter pressed")
|
||||||
Settings.fullscreen = !Settings.fullscreen
|
Settings.fullscreen = !Settings.fullscreen
|
||||||
|
settings_window.fullscreen_button.button_pressed = Settings.fullscreen
|
||||||
if Settings.fullscreen == true:
|
if Settings.fullscreen == true:
|
||||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
|
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
|
||||||
if Settings.fullscreen == false:
|
if Settings.fullscreen == false:
|
||||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
|
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
|
||||||
|
if event.alt_pressed && event.keycode == KEY_L:
|
||||||
|
log.visible = !log.visible
|
||||||
|
|
||||||
func server_updated() -> void:
|
func server_updated() -> void:
|
||||||
print("server_updated")
|
print("server_updated")
|
||||||
@@ -412,16 +418,17 @@ func add_players() -> void:
|
|||||||
|
|
||||||
func add_player() -> void:
|
func add_player() -> void:
|
||||||
print("add_player")
|
print("add_player")
|
||||||
var new_player_object: PlayerObject = PlayerObject.new(new_player_name_field.text, Settings.player_array.size())
|
if new_player_name_field.text != "":
|
||||||
new_player_name_field.text = ""
|
var new_player_object: PlayerObject = PlayerObject.new(new_player_name_field.text, Settings.player_array.size())
|
||||||
Settings.player_array.append(new_player_object)
|
new_player_name_field.text = ""
|
||||||
new_player_object.connect("first_point_triggerd", music_player_container._on_point_triggered.bind("first"))
|
Settings.player_array.append(new_player_object)
|
||||||
new_player_object.connect("match_point_triggerd", music_player_container._on_point_triggered.bind("match"))
|
new_player_object.connect("first_point_triggerd", music_player_container._on_point_triggered.bind("first"))
|
||||||
new_player_object.connect("winner_triggerd", _on_player_won.bind(new_player_object.id))
|
new_player_object.connect("match_point_triggerd", music_player_container._on_point_triggered.bind("match"))
|
||||||
new_player_object.connect("point_given_sound", _on_make_point_given_sound)
|
new_player_object.connect("winner_triggerd", _on_player_won.bind(new_player_object.id))
|
||||||
new_player_object.connect("player_point_given", _on_point_given.bind(new_player_object.id))
|
new_player_object.connect("point_given_sound", _on_make_point_given_sound)
|
||||||
new_player_object.connect("player_point_taken", _on_point_taken.bind(new_player_object.id))
|
new_player_object.connect("player_point_given", _on_point_given.bind(new_player_object.id))
|
||||||
load_players()
|
new_player_object.connect("player_point_taken", _on_point_taken.bind(new_player_object.id))
|
||||||
|
load_players()
|
||||||
|
|
||||||
func load_players() -> void:
|
func load_players() -> void:
|
||||||
print("load_players")
|
print("load_players")
|
||||||
@@ -441,6 +448,7 @@ func load_players() -> void:
|
|||||||
|
|
||||||
func _on_point_given(player_given_point: int) -> void:
|
func _on_point_given(player_given_point: int) -> void:
|
||||||
print("_on_point_given")
|
print("_on_point_given")
|
||||||
|
log.add_log_row(Settings.player_array[player_given_point].player_name + " got a point")
|
||||||
if Playlist.currently_playing_song >= 0:
|
if Playlist.currently_playing_song >= 0:
|
||||||
Playlist.add_point(player_given_point)
|
Playlist.add_point(player_given_point)
|
||||||
update_song_list()
|
update_song_list()
|
||||||
@@ -450,6 +458,7 @@ func _on_make_point_given_sound() -> void:
|
|||||||
|
|
||||||
func _on_point_taken(player_taken_point: int) -> void:
|
func _on_point_taken(player_taken_point: int) -> void:
|
||||||
print("_on_point_taken")
|
print("_on_point_taken")
|
||||||
|
log.add_log_row(Settings.player_array[player_taken_point].player_name + " lost a point")
|
||||||
music_player_container.play_sound_effect(preload("res://sounds/itemequip.wav"))
|
music_player_container.play_sound_effect(preload("res://sounds/itemequip.wav"))
|
||||||
if Playlist.currently_playing_song >= 0:
|
if Playlist.currently_playing_song >= 0:
|
||||||
Playlist.remove_point(player_taken_point)
|
Playlist.remove_point(player_taken_point)
|
||||||
@@ -464,6 +473,7 @@ func _on_player_won(winning_player_id: int) -> void:
|
|||||||
winner_picture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
winner_picture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||||
winner_picture.texture = Settings.player_array[winning_player_id].character
|
winner_picture.texture = Settings.player_array[winning_player_id].character
|
||||||
music_player_container.play_sound(preload("res://sounds/winning.mp3"))
|
music_player_container.play_sound(preload("res://sounds/winning.mp3"))
|
||||||
|
Settings.add_to_stats = false
|
||||||
|
|
||||||
func _on_player_removed(player_to_remove: int) -> void:
|
func _on_player_removed(player_to_remove: int) -> void:
|
||||||
print("_on_player_removed ", player_to_remove)
|
print("_on_player_removed ", player_to_remove)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=28 format=3 uid="uid://xwq863o6uvsu"]
|
[gd_scene load_steps=29 format=3 uid="uid://xwq863o6uvsu"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://b8f4g15cas2j2" path="res://MainWindow.gd" id="1_eu0t5"]
|
[ext_resource type="Script" uid="uid://b8f4g15cas2j2" path="res://MainWindow.gd" id="1_eu0t5"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b16on0oscg1bv" path="res://CharacterSelect.tscn" id="2_76kf4"]
|
[ext_resource type="PackedScene" uid="uid://b16on0oscg1bv" path="res://CharacterSelect.tscn" id="2_76kf4"]
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://dpdem7pdxweb5" path="res://SyncWindow.tscn" id="10_yxw0b"]
|
[ext_resource type="PackedScene" uid="uid://dpdem7pdxweb5" path="res://SyncWindow.tscn" id="10_yxw0b"]
|
||||||
[ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="11_1qef0"]
|
[ext_resource type="Texture2D" uid="uid://r4as0nmtoa7p" path="res://noCharacter.png" id="11_1qef0"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dldpeo5y3l5hq" path="res://SettingsWindow.tscn" id="11_k62u5"]
|
[ext_resource type="PackedScene" uid="uid://dldpeo5y3l5hq" path="res://SettingsWindow.tscn" id="11_k62u5"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bijh5h5yrivm3" path="res://Log.tscn" id="14_26rwn"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_ychxr"]
|
[sub_resource type="LabelSettings" id="LabelSettings_ychxr"]
|
||||||
font_size = 25
|
font_size = 25
|
||||||
@@ -548,4 +549,13 @@ horizontal_alignment = 1
|
|||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
autowrap_mode = 2
|
autowrap_mode = 2
|
||||||
|
|
||||||
|
[node name="Log" parent="." instance=ExtResource("14_26rwn")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
offset_left = 562.0
|
||||||
|
offset_top = 132.0
|
||||||
|
offset_right = 1262.0
|
||||||
|
offset_bottom = 832.0
|
||||||
|
|
||||||
[connection signal="dir_selected" from="FileDialog" to="." method="_on_file_dialog_dir_selected"]
|
[connection signal="dir_selected" from="FileDialog" to="." method="_on_file_dialog_dir_selected"]
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ scrollable = false
|
|||||||
|
|
||||||
[node name="MusicTimeLabel" type="Label" parent="MusicPlayerContainer"]
|
[node name="MusicTimeLabel" type="Label" parent="MusicPlayerContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "1:00 / 3:00"
|
text = "0:00 / 0:00"
|
||||||
|
|
||||||
[node name="VolumeSlider" parent="MusicPlayerContainer" instance=ExtResource("5_iifuj")]
|
[node name="VolumeSlider" parent="MusicPlayerContainer" instance=ExtResource("5_iifuj")]
|
||||||
custom_minimum_size = Vector2(100, 0)
|
custom_minimum_size = Vector2(100, 0)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_821k2")
|
|||||||
custom_minimum_size = Vector2(130, 40)
|
custom_minimum_size = Vector2(130, 40)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 1
|
size_flags_vertical = 1
|
||||||
text = "Sansansans: 100"
|
text = ": 0"
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
|
|
||||||
[node name="Panel3" type="Panel" parent="HBoxContainer"]
|
[node name="Panel3" type="Panel" parent="HBoxContainer"]
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ var close_button: Button = $CloseButton
|
|||||||
var search_bar: TextEdit = $Searchbar
|
var search_bar: TextEdit = $Searchbar
|
||||||
|
|
||||||
var games: Array = []
|
var games: Array = []
|
||||||
|
var regex: RegEx
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -24,6 +25,7 @@ func _ready() -> void:
|
|||||||
search_bar.grab_focus()
|
search_bar.grab_focus()
|
||||||
search_bar.text_changed.connect(search)
|
search_bar.text_changed.connect(search)
|
||||||
visibility_changed.connect(focus)
|
visibility_changed.connect(focus)
|
||||||
|
regex = RegEx.new()
|
||||||
|
|
||||||
func focus() -> void:
|
func focus() -> void:
|
||||||
if self.visible == true:
|
if self.visible == true:
|
||||||
@@ -37,21 +39,25 @@ func close() -> void:
|
|||||||
func search() -> void:
|
func search() -> void:
|
||||||
print(search_bar.text)
|
print(search_bar.text)
|
||||||
Settings.delete_children(search_list)
|
Settings.delete_children(search_list)
|
||||||
|
var search_text: String = search_bar.text.to_lower()
|
||||||
for game: String in games:
|
for game: String in games:
|
||||||
if is_match_exact(search_bar.text, game):
|
if is_match_exact(search_text, game):
|
||||||
|
add_game(game)
|
||||||
|
var clean_search_text: String = clean_search_term(search_text)
|
||||||
|
for game: String in games:
|
||||||
|
if is_match_contains(clean_search_text, clean_game(game)):
|
||||||
add_game(game)
|
add_game(game)
|
||||||
for game: String in games:
|
for game: String in games:
|
||||||
if is_match_contains(clean_term(search_bar.text), clean_term(game)):
|
if is_match_regex(clean_search_text, clean_game(game)):
|
||||||
add_game(game)
|
|
||||||
for game: String in games:
|
|
||||||
if is_match_regex(clean_term(search_bar.text), clean_term(game)):
|
|
||||||
add_game(game)
|
add_game(game)
|
||||||
|
|
||||||
func clean_term(term: String) -> String:
|
func clean_search_term(term: String) -> String:
|
||||||
|
return term.replace(" ", "").replace("é", "e").replace("+", "plus").replace("&", "and").replace("'n", "and")
|
||||||
|
|
||||||
|
func clean_game(term: String) -> String:
|
||||||
return term.replace(" ", "").replace("é", "e").replace("+", "plus").replace("&", "and").replace("'n", "and").to_lower()
|
return term.replace(" ", "").replace("é", "e").replace("+", "plus").replace("&", "and").replace("'n", "and").to_lower()
|
||||||
|
|
||||||
func is_match_exact(search_term: String, game_name: String) -> bool:
|
func is_match_exact(search_term: String, game_name: String) -> bool:
|
||||||
search_term = search_term.to_lower()
|
|
||||||
game_name = game_name.to_lower()
|
game_name = game_name.to_lower()
|
||||||
|
|
||||||
if search_term == "":
|
if search_term == "":
|
||||||
@@ -78,7 +84,7 @@ func is_match_regex(search_term: String, game_name: String) -> bool:
|
|||||||
return false
|
return false
|
||||||
|
|
||||||
func add_game(game: String) -> void:
|
func add_game(game: String) -> void:
|
||||||
var label := Label.new()
|
var label: Label = Label.new()
|
||||||
label.text = game
|
label.text = game
|
||||||
print("game: " + game)
|
print("game: " + game)
|
||||||
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||||
@@ -93,22 +99,21 @@ func check_if_game_exists(game: String) -> bool:
|
|||||||
return game_exists
|
return game_exists
|
||||||
|
|
||||||
func compile_regex(search_term: String) -> RegEx:
|
func compile_regex(search_term: String) -> RegEx:
|
||||||
var regex = RegEx.new()
|
|
||||||
var regText: String = ".*"
|
var regText: String = ".*"
|
||||||
for letter in search_term:
|
for letter: String in search_term:
|
||||||
regText += letter + ".*"
|
regText += letter + ".*"
|
||||||
regex.compile(regText)
|
regex.compile(regText)
|
||||||
return regex
|
return regex
|
||||||
|
|
||||||
func get_list_of_games() -> void:
|
func get_list_of_games() -> void:
|
||||||
print("get_list_of_games")
|
print("get_list_of_games")
|
||||||
var handle_games: Callable = func handle_games(array) -> void:
|
var handle_games: Callable = func handle_games(array: Array) -> void:
|
||||||
if typeof(array) == TYPE_ARRAY:
|
if typeof(array) == TYPE_ARRAY:
|
||||||
games = []
|
games = []
|
||||||
Settings.delete_children(search_list)
|
Settings.delete_children(search_list)
|
||||||
games.append_array(array)
|
games.append_array(array)
|
||||||
for game in games:
|
for game: String in games:
|
||||||
var label := Label.new()
|
var label: Label = Label.new()
|
||||||
label.text = game
|
label.text = game
|
||||||
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||||
search_list.add_child(label)
|
search_list.add_child(label)
|
||||||
@@ -128,3 +133,46 @@ func clear() -> void:
|
|||||||
search()
|
search()
|
||||||
search_bar.grab_focus()
|
search_bar.grab_focus()
|
||||||
|
|
||||||
|
func old_search() -> void:
|
||||||
|
print(search_bar.text)
|
||||||
|
Settings.delete_children(search_list)
|
||||||
|
for game: String in games:
|
||||||
|
if old_is_match_exact(search_bar.text, game):
|
||||||
|
add_game(game)
|
||||||
|
for game: String in games:
|
||||||
|
if is_match_contains(clean_term(search_bar.text), clean_term(game)):
|
||||||
|
add_game(game)
|
||||||
|
for game: String in games:
|
||||||
|
if old_is_match_regex(clean_term(search_bar.text), clean_term(game)):
|
||||||
|
add_game(game)
|
||||||
|
|
||||||
|
func clean_term(term: String) -> String:
|
||||||
|
return term.replace(" ", "").replace("é", "e").replace("+", "plus").replace("&", "and").replace("'n", "and").to_lower()
|
||||||
|
|
||||||
|
|
||||||
|
func old_is_match_exact(search_term: String, game_name: String) -> bool:
|
||||||
|
search_term = search_term.to_lower()
|
||||||
|
game_name = game_name.to_lower()
|
||||||
|
|
||||||
|
if search_term == "":
|
||||||
|
return true
|
||||||
|
elif game_name.contains(search_term):
|
||||||
|
return true
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
|
||||||
|
func old_is_match_regex(search_term: String, game_name: String) -> bool:
|
||||||
|
if search_term == "":
|
||||||
|
return true
|
||||||
|
elif compile_regex(search_term).search(game_name):
|
||||||
|
return true
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
|
||||||
|
func old_compile_regex(search_term: String) -> RegEx:
|
||||||
|
var regex = RegEx.new()
|
||||||
|
var regText: String = ".*"
|
||||||
|
for letter in search_term:
|
||||||
|
regText += letter + ".*"
|
||||||
|
regex.compile(regText)
|
||||||
|
return regex
|
||||||
|
|||||||
@@ -23,9 +23,15 @@ var edit_players: bool = false
|
|||||||
var currently_syncing: bool = false
|
var currently_syncing: bool = false
|
||||||
var character_select_open: bool = false
|
var character_select_open: bool = false
|
||||||
|
|
||||||
var version: String = "1.6.1"
|
var version: String = "1.7.0"
|
||||||
|
|
||||||
var whats_new: String = "Changelog:
|
var whats_new: String = "Changelog:
|
||||||
|
1.7.0:
|
||||||
|
#22: Now block add player if player name is empty
|
||||||
|
#23: Add a log for when points are given to players
|
||||||
|
#25: Fixed some graphical stuff
|
||||||
|
#26: Changed so the same character can be on a song multiple times
|
||||||
|
#27: Turning off statistics after win
|
||||||
1.6.1:
|
1.6.1:
|
||||||
#17: Removed Debug text in release
|
#17: Removed Debug text in release
|
||||||
#18: Fixed bug with new character select screen
|
#18: Fixed bug with new character select screen
|
||||||
|
|||||||
@@ -42,8 +42,7 @@ func get_song_info() -> String:
|
|||||||
|
|
||||||
func add_point(id: int) -> void:
|
func add_point(id: int) -> void:
|
||||||
print("add_point")
|
print("add_point")
|
||||||
if !players_given_point.has(id):
|
players_given_point.append(id)
|
||||||
players_given_point.append(id)
|
|
||||||
players_given_point.sort()
|
players_given_point.sort()
|
||||||
|
|
||||||
func remove_point(id: int) -> void:
|
func remove_point(id: int) -> void:
|
||||||
|
|||||||
29
log.gd
Normal file
29
log.gd
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
@onready
|
||||||
|
var log_panel: Panel = %LogPanel
|
||||||
|
|
||||||
|
@onready
|
||||||
|
var log_box: VBoxContainer = %LogVBoxContainer
|
||||||
|
|
||||||
|
var log_rows: Array
|
||||||
|
|
||||||
|
func add_log_row(text: String) -> void:
|
||||||
|
var log_row: String = get_time() + text
|
||||||
|
log_rows.append(log_row)
|
||||||
|
update_log()
|
||||||
|
|
||||||
|
func update_log() -> void:
|
||||||
|
print("update_log")
|
||||||
|
Settings.delete_children(log_box)
|
||||||
|
for row: String in log_rows:
|
||||||
|
var log_label: Label = Label.new()
|
||||||
|
log_label.set_texture_filter(TextureFilter.TEXTURE_FILTER_NEAREST)
|
||||||
|
log_label.add_theme_font_size_override("font_size", 20)
|
||||||
|
log_label.text = row
|
||||||
|
log_label.autowrap_mode = TextServer.AUTOWRAP_WORD
|
||||||
|
log_box.add_child(log_label)
|
||||||
|
|
||||||
|
func get_time() -> String:
|
||||||
|
var dateTime: Dictionary = Time.get_datetime_dict_from_system()
|
||||||
|
return "" + str(dateTime.hour) + ":" + str(dateTime.minute) + ":" + str(dateTime.second) + " "
|
||||||
1
log.gd.uid
Normal file
1
log.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cw41y87l64qo7
|
||||||
Reference in New Issue
Block a user