100 lines
2.5 KiB
GDScript
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)
|