teststrecke-game/scripts/gamestate.gd

83 lines
1.6 KiB
GDScript3
Raw Normal View History

2024-11-03 18:16:30 +00:00
extends Node
#var playerkeys: Array[int] = []
var players: Array[Player] = []
2024-11-09 11:44:44 +00:00
var last_players: Array[Player] = []
2024-11-03 18:16:30 +00:00
var userinput_prefix="inputP"
var time_elapsed=0
2024-11-09 11:44:44 +00:00
func checkColoriFree(i):
var free=true
for p in players:
if p.colori==i: #already taken
free=false
return free
2024-11-03 18:16:30 +00:00
func addPlayer(key:int):
2024-11-09 11:07:59 +00:00
#return -1 if player already exists with this key. else return id of player added
2024-11-09 11:44:44 +00:00
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
2024-11-09 11:07:59 +00:00
else:
return -1
2024-11-03 18:16:30 +00:00
func removeAllPlayers():
2024-11-09 11:44:44 +00:00
last_players=players
2024-11-03 18:16:30 +00:00
players=[]
2024-11-04 18:55:13 +00:00
2024-11-03 18:16:30 +00:00
func getPlayerkeys() -> Array[int]:
var playerkeys: Array[int] = []
for player in players:
playerkeys.append(player.inputkey)
return playerkeys
2024-11-04 18:55:13 +00:00
func getPlayers() -> Array[Player]:
return players
2024-11-03 18:16:30 +00:00
class Player:
var inputkey:int
var color:Color
2024-11-09 11:44:44 +00:00
var colori
2024-11-03 18:16:30 +00:00
2024-11-09 11:44:44 +00:00
func _init(key:int, pcolori:int=-1):
2024-11-03 18:16:30 +00:00
inputkey=key
2024-11-09 11:44:44 +00:00
colori=pcolori
2024-11-04 20:56:07 +00:00
var sat = 1.0
var val = 0.7
2024-11-03 18:16:30 +00:00
2024-11-09 11:44:44 +00:00
if colori<0:
2024-11-03 18:16:30 +00:00
color=Color.from_hsv(randf_range(0.0,1.0), sat,val,1.0)
else:
2024-11-09 11:44:44 +00:00
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))
2024-11-03 18:16:30 +00:00
func startGame():
for player in players:
player.setRunning(true)
func addTimeElapsed(delta):
time_elapsed+=delta
func getTimeElapsed():
return time_elapsed
2024-11-09 10:54:56 +00:00
func resetTimeElapsed():
time_elapsed=0