add playerlist sprite animation

This commit is contained in:
interfisch 2025-04-13 15:44:00 +02:00
parent bc2aa0ba2c
commit c3d9e08ae9
4 changed files with 68 additions and 11 deletions

View file

@ -51,12 +51,40 @@ Example:
7="WHITE"
'''
## Fullscreen
## Video
**fullscreen**
Represents last state of in menu button "Fullscreen"
**playerlist_sprite**
Show sprites in menu playerlist. true or false.
**playerlist_key**
Show input key in menu playerlist. true or false.
**animate_sprite_on_press**
Animate sprite on key press in menu playerlist.
Only effective when playerlist_sprite is set to true.
true or false.
**animate_outline_on_press**
Animate input key on key press in menu playerlist.
Only effective when playerlist_key is set to true.
true or false.
## General
**rounds**
Last selected rounds.
### Remove cars timeout
**remove_cars_timeout**

View file

@ -470,10 +470,10 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -483.861
offset_top = -287.132
offset_right = -148.861
offset_bottom = -173.132
offset_left = -576.0
offset_top = -289.0
offset_right = -241.0
offset_bottom = -175.0
grow_horizontal = 2
grow_vertical = 2
theme = SubResource("Theme_lsv84")

View file

@ -9,9 +9,13 @@ func _ready() -> void:
config.set_value("keywhitelist", "enabled", false)
config.set_value("video", "fullscreen", false)
config.set_value("video", "playerlist_sprite", true)
config.set_value("video", "playerlist_key", true)
config.set_value("video", "animate_sprite_on_press", false)
config.set_value("video", "animate_outline_on_press", true)
config.set_value("general", "remove_cars_timeout", 15)
config.set_value("general", "automatic_map_change_after", 2)
config.set_value("general", "automatic_map_change_after", 0)
config.set_value("general", "fast_mode_chance", 0.0)
config.set_value("general", "rounds", 3)

View file

@ -2,11 +2,23 @@ extends Node2D
const ADD_STEP_OUTLINESIZE=30
const MAX_OUTLINESIZE=60
var animate_outline_on_press=true
const ADD_STEP_SPRITE_SCALE=0.2
const MAX_SPRITE_SCALE=1.5
var animate_sprite_on_press=true
@onready var playerlist_particles_2d: CPUParticles2D = $MarginContainer/PlayerlistParticles2D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
if ConfigFileHandler.get_video_setting("playerlist_sprite")==false:
$MarginContainer/VBoxContainer_Spritelist.visible=false
if ConfigFileHandler.get_video_setting("playerlist_key")==false:
$MarginContainer/VBoxContainer_Playerlist.visible=false
animate_outline_on_press=ConfigFileHandler.get_video_setting("animate_outline_on_press")
animate_sprite_on_press=ConfigFileHandler.get_video_setting("animate_sprite_on_press")
# Called every frame. 'delta' is the elapsed time since the previous frame.
@ -31,11 +43,19 @@ func update_playerlist(players:Array[Gamestate.Player],flashplayer_keycode=-1,ef
PlayerSprite.visible=true
if (p.inputkey==flashplayer_keycode): #this player should show an animation
if effect=="blink":
var outlinesize=min(max(0,label.get_theme_constant("outline_size")+ADD_STEP_OUTLINESIZE),MAX_OUTLINESIZE) #enlarge outline a bit
label.add_theme_constant_override("outline_size",outlinesize)
if animate_outline_on_press:
var outlinesize=min(max(0,label.get_theme_constant("outline_size")+ADD_STEP_OUTLINESIZE),MAX_OUTLINESIZE) #enlarge outline a bit
label.add_theme_constant_override("outline_size",outlinesize)
if animate_sprite_on_press:
var spritescale=min(max(1.0,PlayerSprite.scale.x+ADD_STEP_SPRITE_SCALE),MAX_SPRITE_SCALE) #enlarge outline a bit
PlayerSprite.scale=Vector2(spritescale,spritescale)
if effect=="explode":
var outlinesize=MAX_OUTLINESIZE
label.add_theme_constant_override("outline_size",outlinesize) #make outline max size
if animate_outline_on_press:
var outlinesize=MAX_OUTLINESIZE
label.add_theme_constant_override("outline_size",outlinesize) #make outline max size
if animate_sprite_on_press:
var spritescale=min(max(1.0,PlayerSprite.scale.x+ADD_STEP_SPRITE_SCALE),MAX_SPRITE_SCALE) #enlarge outline a bit
PlayerSprite.scale=Vector2(spritescale,spritescale)
var font_size=label.get_theme_font_size("font_size")
var new_playerlist_particles_2d=playerlist_particles_2d.duplicate()
@ -56,9 +76,14 @@ func update_playerlist(players:Array[Gamestate.Player],flashplayer_keycode=-1,ef
func _process(delta: float) -> void:
var Playerlabels=$MarginContainer/VBoxContainer_Playerlist.get_children()
var i=0
for label in Playerlabels:
var PlayerSprite=$MarginContainer/VBoxContainer_Spritelist.get_child(i) #get corresponding car sprite
var outlinesize=max(0,label.get_theme_constant("outline_size")-2*delta)
label.add_theme_constant_override("outline_size",outlinesize)
var spritescale=min(max(1.0,PlayerSprite.scale.x-1*delta),MAX_SPRITE_SCALE) #enlarge outline a bit
PlayerSprite.scale=Vector2(spritescale,spritescale)
i+=1
if Gamestate.automatic_map_change_in>0: