teststrecke-game/scripts/gamestate.gd

82 lines
1.6 KiB
GDScript

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): #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=[]
func getPlayerkeys() -> Array[int]:
var playerkeys: Array[int] = []
for player in players:
playerkeys.append(player.inputkey)
return playerkeys
func getPlayers() -> Array[Player]:
return players
class Player:
var inputkey:int
var color:Color
var colori
func _init(key:int, pcolori:int=-1):
inputkey=key
colori=pcolori
var sat = 1.0
var val = 0.7
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*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():
for player in players:
player.setRunning(true)
func addTimeElapsed(delta):
time_elapsed+=delta
func getTimeElapsed():
return time_elapsed
func resetTimeElapsed():
time_elapsed=0