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_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
|
||||
|
|
|
@ -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
|
||||
'''
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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():
|
||||
|
|
Loading…
Add table
Reference in a new issue