add player color setting to config

This commit is contained in:
interfisch 2025-03-24 20:20:47 +01:00
parent e71115be84
commit 37e0c0470d
6 changed files with 60 additions and 16 deletions

View file

@ -60,6 +60,7 @@ var resetcar_movingspeed=resetcar_stoppedspeed+10 #stop timer when above this sp
var resetcar_distance=128 #196 is roughly when car is in the middle of a two wide road
var resetcar_steerangle=120.0/360.0*2*PI
'''
# other car avoidance
var avoid_car_distance_far=100
var avoid_car_distance_close=50
@ -68,6 +69,7 @@ var avoid_car_steeringangle_close=50
var avoid_car_mininum_space=50 #how much space RayCast_FL/R must have for avoidance to start.
var avoidance_steeringangle:float=0 #actual set steering angle to avoid car
var avoidance_turndirection:int=0
'''
#Effects
const BURNOUT_KEEP_ON_AFTER_START=1
@ -282,7 +284,7 @@ func get_input(delta:float):
if autoreset and running:
acceleration = transform.x * braking #drive backwards
steer_direction_aim=resetcar_steerangle #keep steering to turn around if standing in the middle of a track
#steer_direction=steer_direction_aim #steer without smoothing
steer_direction=steer_direction_aim #steer without smoothing
else:
if steer_direction_aim<0.1:
resetcar_steerangle=max(-resetcar_steerangle,+resetcar_steerangle) #calculate steering direction for next autoreset

View file

@ -11,6 +11,7 @@ func _ready() -> void:
config.set_value("video", "fullscreen", false)
config.set_value("general", "remove_cars_timeout", 15)
config.set_value("general", "automatic_map_change_after", 5)
config.save(SETTINGS_FILE_PATH)
else:
@ -51,3 +52,18 @@ func save_keywhitelist_setting(whitelist):
config.set_value("keywhitelist",str(i),str(k))
i+=1
config.save(SETTINGS_FILE_PATH)
func get_playeroverridecolor_setting(i:int):
if config.get_section_keys("keycolors").has(str(i)):
return Color(config.get_value("keycolors",str(i)))
else:
return null
'''
func get_playeroverridecolors_setting():
var playeroverridecolors=[]
for key in config.get_section_keys("keycolors"):
if key.is_valid_int(): #is a playernumber
print("added "+str(key)+" to colors with value="+str(config.get_value("keycolors",key)))
playeroverridecolors.append(Color(config.get_value("keycolors",key))) #TODO parse string to color
return playeroverridecolors #returns empty list if enabled is false
'''

View file

@ -180,10 +180,11 @@ func updateCameraMovement(delta: float):
var viewsize = camera.get_viewport_rect().size
var carSpread=Vector2(maxPos.x-minPos.x,maxPos.y-minPos.y)
var calculatedViewCarMargin=carSpread*camera.zoom #when cars are screen width apart this number matches viewsize=camera.get_viewport_rect().size
#print("viewsize="+str(viewsize)+" carSpread="+str(carSpread)+" calculatedViewCarMargin="+str(calculatedViewCarMargin)+" zoom="+str(camera.zoom))
var viewCarMargin_zoomstart_pixels=viewCarMargin_zoomstart*viewsize/camera.zoom
var viewCarMargin_pixels=viewCarMargin*viewsize/camera.zoom
var viewCarMargin_zoombackup_pixels=viewCarMargin_zoombackup*viewsize/camera.zoom

View file

@ -18,8 +18,8 @@ var rounds=3
var remove_cars_timeout=true
var automatic_map_change_in_start=5
var automatic_map_change_in=automatic_map_change_in_start #change map when this reaches 0
var automatic_map_change_after=5
var automatic_map_change_in=automatic_map_change_after #change map when this reaches 0
var colorwheelstep:float=0.3
@ -36,7 +36,9 @@ func getRemoveCarsTimeout():
func setRemoveCarsTimeout(s):
print("remove_cars_timeout set to "+str(s))
remove_cars_timeout=s
func setAutomaticMapChangeAfter(v):
automatic_map_change_after=max(v,0)
func getSelectedMap(): #return only short map name "00"
return map_scene_name
@ -75,25 +77,31 @@ func setColorwheelstepByPlayernum(playernum:int):
else:
colorwheelstep=0.3
func addPlayer(key:int):
func addPlayer(key:int,poverridecolor=null):
#return -1 if player already exists with this key. else return id of player added
if not getPlayerkeys().has(key): #key is not yet registered
var prefered_colori=0
var overridecolor=null
var setrank=((randf()-0.5)/10.0)+0.5
for p in last_players:
if p.inputkey==key: #key was used in last round
prefered_colori=p.colori
overridecolor=p.overrideColor
setrank=p.rank
print("Player found in last_players. rank="+str(setrank)+" colori="+str(prefered_colori))
print("Player found in last_players. rank="+str(setrank)+" colori="+str(prefered_colori)+" overridecolor="+str(overridecolor))
#check if color is free, else assign next free
while not checkColoriFree(prefered_colori):
prefered_colori+=1
var newplayer: Player = Player.new(key,prefered_colori)
if overridecolor!=null:
newplayer.setOverrideColor(overridecolor)
newplayer.rank=setrank
if poverridecolor!=null:
print("play key "+str(key)+" overridecolor="+str(poverridecolor))
newplayer.setOverrideColor(poverridecolor)
players.append(newplayer)
return prefered_colori
@ -118,6 +126,7 @@ func getPlayers() -> Array[Player]:
class Player:
var inputkey:int
var color:Color
var overrideColor:Color=Color(0,0,0,0)
var colori
var rank:float #0-1, nonlinear, higher when player wins often
@ -127,10 +136,17 @@ class Player:
var sat = 1.0
var val = 1.0 #1 is medium gray
if colori<0:
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
else:
color=Color.from_hsv(fmod(Gamestate.colorwheelstep*colori,1.0), sat,val,1.0)
if overrideColor.a>0: #use alpha channel=0 as "do not override color"
color=overrideColor
else: #use color from colorwheel
if colori<0:
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
else:
color=Color.from_hsv(fmod(Gamestate.colorwheelstep*colori,1.0), sat,val,1.0)
func setOverrideColor(pcolor:Color):
overrideColor=pcolor
color=overrideColor
func startGame():

View file

@ -18,7 +18,7 @@ func _ready() -> void:
else:
Gamestate.automatic_map_change_in-=1
if Gamestate.automatic_map_change_in<=0: #do automatic mapchange
Gamestate.automatic_map_change_in=3 #reset
Gamestate.automatic_map_change_in=Gamestate.automatic_map_change_after #reset
var next_map_pick=null
while next_map_pick==null:
next_map_pick=get_children().pick_random()
@ -47,4 +47,4 @@ func _on_btn_map(btn):
var mapname=btn_name.erase(0,len(button_prefix))
print("Selected Map="+str(mapname))
Gamestate.setSelectedMap(mapname)
Gamestate.automatic_map_change_in=Gamestate.automatic_map_change_in_start #rest number if button pressed manually
Gamestate.automatic_map_change_in=Gamestate.automatic_map_change_after #rest number if button pressed manually

View file

@ -3,6 +3,7 @@ extends Node
@onready var btn_fullscreen = $MenuDisplay/btn_fullscreen
@onready var btn_save_whitelist= $MenuDisplay/btn_save_whitelist
var keywhitelist
#var playeroverridecolors
var keyHolddownQueue = {}
@ -17,6 +18,7 @@ func _ready():
btn_fullscreen.button_pressed=ConfigFileHandler.get_video_setting("fullscreen")
Gamestate.setRemoveCarsTimeout(ConfigFileHandler.get_general_setting("remove_cars_timeout"))
Gamestate.setAutomaticMapChangeAfter(ConfigFileHandler.get_general_setting("automatic_map_change_after"))
keywhitelist=ConfigFileHandler.get_keywhitelist_setting() #empty list if disabled
btn_save_whitelist.disabled=keywhitelist.size()>0 #whitelist enabled, then disable save whitelist button
@ -24,12 +26,19 @@ func _ready():
print("Loaded Keywhitelist="+str(keywhitelist))
Gamestate.setColorwheelstepByPlayernum(keywhitelist.size())
#playeroverridecolors=ConfigFileHandler.get_playeroverridecolors_setting()
#print("playeroverridecolors="+str(playeroverridecolors))
#Preload players to set colors
if keywhitelist.size()>0: #add whitelisted players if whitelist enabled and remove them afterwards
var i=0
for k in keywhitelist:
Gamestate.addPlayer(k)
Gamestate.addPlayer(k,ConfigFileHandler.get_playeroverridecolor_setting(i))
i+=1
Gamestate.removeAllPlayers()
func assignKeys():