add player color setting to config
This commit is contained in:
parent
e71115be84
commit
37e0c0470d
6 changed files with 60 additions and 16 deletions
|
@ -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_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
|
var resetcar_steerangle=120.0/360.0*2*PI
|
||||||
|
|
||||||
|
'''
|
||||||
# other car avoidance
|
# other car avoidance
|
||||||
var avoid_car_distance_far=100
|
var avoid_car_distance_far=100
|
||||||
var avoid_car_distance_close=50
|
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 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_steeringangle:float=0 #actual set steering angle to avoid car
|
||||||
var avoidance_turndirection:int=0
|
var avoidance_turndirection:int=0
|
||||||
|
'''
|
||||||
|
|
||||||
#Effects
|
#Effects
|
||||||
const BURNOUT_KEEP_ON_AFTER_START=1
|
const BURNOUT_KEEP_ON_AFTER_START=1
|
||||||
|
@ -282,7 +284,7 @@ func get_input(delta:float):
|
||||||
if autoreset and running:
|
if autoreset and running:
|
||||||
acceleration = transform.x * braking #drive backwards
|
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_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:
|
else:
|
||||||
if steer_direction_aim<0.1:
|
if steer_direction_aim<0.1:
|
||||||
resetcar_steerangle=max(-resetcar_steerangle,+resetcar_steerangle) #calculate steering direction for next autoreset
|
resetcar_steerangle=max(-resetcar_steerangle,+resetcar_steerangle) #calculate steering direction for next autoreset
|
||||||
|
|
|
@ -11,6 +11,7 @@ func _ready() -> void:
|
||||||
config.set_value("video", "fullscreen", false)
|
config.set_value("video", "fullscreen", false)
|
||||||
|
|
||||||
config.set_value("general", "remove_cars_timeout", 15)
|
config.set_value("general", "remove_cars_timeout", 15)
|
||||||
|
config.set_value("general", "automatic_map_change_after", 5)
|
||||||
|
|
||||||
config.save(SETTINGS_FILE_PATH)
|
config.save(SETTINGS_FILE_PATH)
|
||||||
else:
|
else:
|
||||||
|
@ -51,3 +52,18 @@ func save_keywhitelist_setting(whitelist):
|
||||||
config.set_value("keywhitelist",str(i),str(k))
|
config.set_value("keywhitelist",str(i),str(k))
|
||||||
i+=1
|
i+=1
|
||||||
config.save(SETTINGS_FILE_PATH)
|
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
|
||||||
|
'''
|
||||||
|
|
|
@ -180,10 +180,11 @@ func updateCameraMovement(delta: float):
|
||||||
|
|
||||||
|
|
||||||
var viewsize = camera.get_viewport_rect().size
|
var viewsize = camera.get_viewport_rect().size
|
||||||
|
|
||||||
var carSpread=Vector2(maxPos.x-minPos.x,maxPos.y-minPos.y)
|
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
|
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_zoomstart_pixels=viewCarMargin_zoomstart*viewsize/camera.zoom
|
||||||
var viewCarMargin_pixels=viewCarMargin*viewsize/camera.zoom
|
var viewCarMargin_pixels=viewCarMargin*viewsize/camera.zoom
|
||||||
var viewCarMargin_zoombackup_pixels=viewCarMargin_zoombackup*viewsize/camera.zoom
|
var viewCarMargin_zoombackup_pixels=viewCarMargin_zoombackup*viewsize/camera.zoom
|
||||||
|
|
|
@ -18,8 +18,8 @@ var rounds=3
|
||||||
|
|
||||||
var remove_cars_timeout=true
|
var remove_cars_timeout=true
|
||||||
|
|
||||||
var automatic_map_change_in_start=5
|
var automatic_map_change_after=5
|
||||||
var automatic_map_change_in=automatic_map_change_in_start #change map when this reaches 0
|
var automatic_map_change_in=automatic_map_change_after #change map when this reaches 0
|
||||||
|
|
||||||
var colorwheelstep:float=0.3
|
var colorwheelstep:float=0.3
|
||||||
|
|
||||||
|
@ -36,7 +36,9 @@ func getRemoveCarsTimeout():
|
||||||
func setRemoveCarsTimeout(s):
|
func setRemoveCarsTimeout(s):
|
||||||
print("remove_cars_timeout set to "+str(s))
|
print("remove_cars_timeout set to "+str(s))
|
||||||
remove_cars_timeout=s
|
remove_cars_timeout=s
|
||||||
|
|
||||||
|
func setAutomaticMapChangeAfter(v):
|
||||||
|
automatic_map_change_after=max(v,0)
|
||||||
|
|
||||||
func getSelectedMap(): #return only short map name "00"
|
func getSelectedMap(): #return only short map name "00"
|
||||||
return map_scene_name
|
return map_scene_name
|
||||||
|
@ -75,25 +77,31 @@ func setColorwheelstepByPlayernum(playernum:int):
|
||||||
else:
|
else:
|
||||||
colorwheelstep=0.3
|
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
|
#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
|
if not getPlayerkeys().has(key): #key is not yet registered
|
||||||
var prefered_colori=0
|
var prefered_colori=0
|
||||||
|
var overridecolor=null
|
||||||
var setrank=((randf()-0.5)/10.0)+0.5
|
var setrank=((randf()-0.5)/10.0)+0.5
|
||||||
for p in last_players:
|
for p in last_players:
|
||||||
if p.inputkey==key: #key was used in last round
|
if p.inputkey==key: #key was used in last round
|
||||||
prefered_colori=p.colori
|
prefered_colori=p.colori
|
||||||
|
overridecolor=p.overrideColor
|
||||||
setrank=p.rank
|
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
|
#check if color is free, else assign next free
|
||||||
while not checkColoriFree(prefered_colori):
|
while not checkColoriFree(prefered_colori):
|
||||||
prefered_colori+=1
|
prefered_colori+=1
|
||||||
|
|
||||||
var newplayer: Player = Player.new(key,prefered_colori)
|
var newplayer: Player = Player.new(key,prefered_colori)
|
||||||
|
if overridecolor!=null:
|
||||||
|
newplayer.setOverrideColor(overridecolor)
|
||||||
newplayer.rank=setrank
|
newplayer.rank=setrank
|
||||||
|
if poverridecolor!=null:
|
||||||
|
print("play key "+str(key)+" overridecolor="+str(poverridecolor))
|
||||||
|
newplayer.setOverrideColor(poverridecolor)
|
||||||
players.append(newplayer)
|
players.append(newplayer)
|
||||||
|
|
||||||
return prefered_colori
|
return prefered_colori
|
||||||
|
@ -118,6 +126,7 @@ func getPlayers() -> Array[Player]:
|
||||||
class Player:
|
class Player:
|
||||||
var inputkey:int
|
var inputkey:int
|
||||||
var color:Color
|
var color:Color
|
||||||
|
var overrideColor:Color=Color(0,0,0,0)
|
||||||
var colori
|
var colori
|
||||||
var rank:float #0-1, nonlinear, higher when player wins often
|
var rank:float #0-1, nonlinear, higher when player wins often
|
||||||
|
|
||||||
|
@ -127,10 +136,17 @@ class Player:
|
||||||
var sat = 1.0
|
var sat = 1.0
|
||||||
var val = 1.0 #1 is medium gray
|
var val = 1.0 #1 is medium gray
|
||||||
|
|
||||||
if colori<0:
|
if overrideColor.a>0: #use alpha channel=0 as "do not override color"
|
||||||
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
|
color=overrideColor
|
||||||
else:
|
else: #use color from colorwheel
|
||||||
color=Color.from_hsv(fmod(Gamestate.colorwheelstep*colori,1.0), sat,val,1.0)
|
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():
|
func startGame():
|
||||||
|
|
|
@ -18,7 +18,7 @@ func _ready() -> void:
|
||||||
else:
|
else:
|
||||||
Gamestate.automatic_map_change_in-=1
|
Gamestate.automatic_map_change_in-=1
|
||||||
if Gamestate.automatic_map_change_in<=0: #do automatic mapchange
|
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
|
var next_map_pick=null
|
||||||
while next_map_pick==null:
|
while next_map_pick==null:
|
||||||
next_map_pick=get_children().pick_random()
|
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))
|
var mapname=btn_name.erase(0,len(button_prefix))
|
||||||
print("Selected Map="+str(mapname))
|
print("Selected Map="+str(mapname))
|
||||||
Gamestate.setSelectedMap(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
|
||||||
|
|
|
@ -3,6 +3,7 @@ extends Node
|
||||||
@onready var btn_fullscreen = $MenuDisplay/btn_fullscreen
|
@onready var btn_fullscreen = $MenuDisplay/btn_fullscreen
|
||||||
@onready var btn_save_whitelist= $MenuDisplay/btn_save_whitelist
|
@onready var btn_save_whitelist= $MenuDisplay/btn_save_whitelist
|
||||||
var keywhitelist
|
var keywhitelist
|
||||||
|
#var playeroverridecolors
|
||||||
|
|
||||||
var keyHolddownQueue = {}
|
var keyHolddownQueue = {}
|
||||||
|
|
||||||
|
@ -17,6 +18,7 @@ func _ready():
|
||||||
|
|
||||||
btn_fullscreen.button_pressed=ConfigFileHandler.get_video_setting("fullscreen")
|
btn_fullscreen.button_pressed=ConfigFileHandler.get_video_setting("fullscreen")
|
||||||
Gamestate.setRemoveCarsTimeout(ConfigFileHandler.get_general_setting("remove_cars_timeout"))
|
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
|
keywhitelist=ConfigFileHandler.get_keywhitelist_setting() #empty list if disabled
|
||||||
btn_save_whitelist.disabled=keywhitelist.size()>0 #whitelist enabled, then disable save whitelist button
|
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))
|
print("Loaded Keywhitelist="+str(keywhitelist))
|
||||||
Gamestate.setColorwheelstepByPlayernum(keywhitelist.size())
|
Gamestate.setColorwheelstepByPlayernum(keywhitelist.size())
|
||||||
|
|
||||||
|
|
||||||
|
#playeroverridecolors=ConfigFileHandler.get_playeroverridecolors_setting()
|
||||||
|
#print("playeroverridecolors="+str(playeroverridecolors))
|
||||||
|
|
||||||
#Preload players to set colors
|
#Preload players to set colors
|
||||||
if keywhitelist.size()>0: #add whitelisted players if whitelist enabled and remove them afterwards
|
if keywhitelist.size()>0: #add whitelisted players if whitelist enabled and remove them afterwards
|
||||||
|
var i=0
|
||||||
for k in keywhitelist:
|
for k in keywhitelist:
|
||||||
Gamestate.addPlayer(k)
|
Gamestate.addPlayer(k,ConfigFileHandler.get_playeroverridecolor_setting(i))
|
||||||
|
i+=1
|
||||||
|
|
||||||
Gamestate.removeAllPlayers()
|
Gamestate.removeAllPlayers()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func assignKeys():
|
func assignKeys():
|
||||||
|
|
Loading…
Add table
Reference in a new issue