keep playercolors for next round
This commit is contained in:
parent
786189057e
commit
c1992fcfc1
2 changed files with 32 additions and 14 deletions
|
@ -134,9 +134,11 @@ func _process(delta: float) -> void:
|
|||
|
||||
if game_ended:
|
||||
var anyplayerkeypressed=false
|
||||
var id=0
|
||||
for p in Gamestate.getPlayers():
|
||||
if Input.is_action_pressed(Gamestate.userinput_prefix+str(p.id)):
|
||||
if Input.is_action_pressed(Gamestate.userinput_prefix+str(id)):
|
||||
anyplayerkeypressed=true
|
||||
id+=1
|
||||
if anyplayerkeypressed and timer_close.time_left<time_close_keypressed:
|
||||
timer_close.wait_time=time_close_keypressed #set time back
|
||||
timer_close.stop() #prepare for restarting at this time
|
||||
|
|
|
@ -3,24 +3,40 @@ extends Node
|
|||
|
||||
#var playerkeys: Array[int] = []
|
||||
var players: Array[Player] = []
|
||||
var last_players: Array[Player] = []
|
||||
|
||||
var userinput_prefix="inputP"
|
||||
|
||||
var time_elapsed=0
|
||||
|
||||
func checkColoriFree(i):
|
||||
var free=true
|
||||
for p in players:
|
||||
if p.colori==i: #already taken
|
||||
free=false
|
||||
return free
|
||||
|
||||
|
||||
func addPlayer(key:int):
|
||||
#return -1 if player already exists with this key. else return id of player added
|
||||
if not getPlayerkeys().has(key):
|
||||
#playerkeys.append(key)
|
||||
var addID=len(players)
|
||||
players.append(Player.new(key,addID))
|
||||
#print("Added Key"+str(key))
|
||||
#print("List:"+str(getPlayerkeys()))
|
||||
return addID
|
||||
if not getPlayerkeys().has(key): #key is not yet registered
|
||||
var prefered_colori=0
|
||||
for p in last_players:
|
||||
if p.inputkey==key: #key was used in last round
|
||||
prefered_colori=p.colori
|
||||
|
||||
#check if color is free, else assign next free
|
||||
while not checkColoriFree(prefered_colori):
|
||||
prefered_colori+=1
|
||||
|
||||
players.append(Player.new(key,prefered_colori))
|
||||
|
||||
return prefered_colori
|
||||
else:
|
||||
return -1
|
||||
|
||||
func removeAllPlayers():
|
||||
last_players=players
|
||||
players=[]
|
||||
|
||||
|
||||
|
@ -37,19 +53,19 @@ func getPlayers() -> Array[Player]:
|
|||
class Player:
|
||||
var inputkey:int
|
||||
var color:Color
|
||||
var id:int
|
||||
var colori
|
||||
|
||||
func _init(key:int, i:int=-1):
|
||||
func _init(key:int, pcolori:int=-1):
|
||||
inputkey=key
|
||||
id=i
|
||||
colori=pcolori
|
||||
var sat = 1.0
|
||||
var val = 0.7
|
||||
|
||||
if i<0:
|
||||
if colori<0:
|
||||
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
|
||||
else:
|
||||
color=Color.from_hsv(fmod(0.3*i,1.0), sat,val,1.0)
|
||||
print("i is "+str(i)+" h="+str(fmod(0.3*i,1.0))+" assigned color "+str(color))
|
||||
color=Color.from_hsv(fmod(0.3*colori,1.0), sat,val,1.0)
|
||||
print("i is "+str(colori)+" h="+str(fmod(0.3*colori,1.0))+" assigned color "+str(color))
|
||||
|
||||
|
||||
func startGame():
|
||||
|
|
Loading…
Reference in a new issue