time-is-odd/Server/autoloads/PlayerManager.gd

100 lines
2.5 KiB
GDScript

extends Node
var knownPlayers = {
"hans":{"name":"hans", "password":"password1", "faction":"faction1", "race":"race1"}
}
var playerToId={
"hans":123
}
var idToPlayer={
123:"hans"
}
var pathToPlayers = 'user://users/'
var clients_factions = {} #used to recognize if networkrequest are allowed to do an action {networkid:factionname}
var factions = {
playerFaction = {
diplomacy={
enemies =['enemyFaction'],
allies=['allyFaction']
}
},
allyFaction = {
diplomacy={
enemies =[],
allies=['playerFaction','enemyFaction']
}
},
enemyFaction = {
diplomacy={
enemies =['playerFaction',],
allies=['allyFaction']
}
}
}
var diplomacyStates = {'neutral': 1, 'own' : 2, 'enemies':3, "allies":4}
#client helper data
var subMenuOpen = false
func checkdiplo(factionA, factionB):
var response = 'neutral'
if factionA == factionB:
response = 'own'
else:
if factions.has(factionA):
var factionData = factions[factionA]
if factionData.has('diplomacy'):
var diplo = factionData['diplomacy']
for key in diplo:
if diplo[key].has(factionB):
response = key
return response
return response
func confirmFaction(id, factionname):
if factionname==clients_factions[id]:
print(id, " is ", factionname)
return true
print(id, " is NOT ", factionname)
return false
func _ready():
print("starting playermanager")
DataManager.loadInDict(knownPlayers, pathToPlayers)
print(knownPlayers)
var factiondata = {}
#
#DataManager.loadInDict(
#register_player("functiontest","yes","barbarian")
print("started")
remote func _registerUser(playerName, password, factionName, race):
var clientId = get_tree().get_rpc_sender_id()
if Network.verifiedIDs.has(clientId):
if !knownPlayers.has(playerName):
knownPlayers[playerName] = {"name":playerName, "password":password, "faction":factionName, "race": race}
playerToId[playerName] = clientId
idToPlayer[clientId] = playerName
rpc_id(clientId, "_registerReturn", true)
print("registration successful")
else:
rpc_id(clientId, "_registerReturn", false)
else:
rpc_id(clientId, "_registerReturn", false)
remote func _logInUser(playerName, password):
var clientId = get_tree().get_rpc_sender_id()
if Network.verifiedIDs.has(clientId):
if knownPlayers.has(playerName):
if knownPlayers[playerName].password == password:
playerToId[playerName] = clientId
idToPlayer[clientId] = playerName
rpc_id(clientId, "_logInReturn", true)
print("log in succesful")
else:
rpc_id(clientId, "_logInReturn", false)
else:
rpc_id(clientId, "_logInReturn", false)