make sure that player name in save matches requested player name
This commit is contained in:
parent
108ae2f424
commit
f52614874f
|
@ -61,7 +61,11 @@ class Game:
|
|||
if t == "join":
|
||||
if not self.world.hasPlayer(name):
|
||||
self.world.createPlayer(name)
|
||||
self.world.playerJoin(name)
|
||||
try:
|
||||
self.world.playerJoin(name)
|
||||
except world.InvalidPlayerError as err:
|
||||
self.server.playerError(name, err.errType, err.description)
|
||||
print("Invalid player: " + str(err))
|
||||
elif t == "leave":
|
||||
self.world.removePlayer(name)
|
||||
elif t == "input":
|
||||
|
|
|
@ -122,6 +122,9 @@ class GameServer:
|
|||
def error(self, connection, errtype, description=""):
|
||||
self.sendMessage(connection, messages.ErrorMessage(errtype, description))
|
||||
|
||||
def playerError(self, player, errtype, description=""):
|
||||
self.error(self.players[player], errtype, description)
|
||||
|
||||
def close(self, connection):
|
||||
if connection in self.connections:
|
||||
name = self.connections[connection]
|
||||
|
|
|
@ -25,8 +25,8 @@ class PlayerLoader:
|
|||
saved = json.load(f)
|
||||
except OSError:
|
||||
saved = None
|
||||
|
||||
return player.Player.fromJSON(saved, world)
|
||||
p = player.Player.fromJSON(saved, world)
|
||||
return p
|
||||
|
||||
def exists(self, name):
|
||||
savePath = os.path.join(self.savePath, name + saveExt)
|
||||
|
|
|
@ -76,6 +76,8 @@ class World:
|
|||
if name in self.players:
|
||||
return self.players[name]
|
||||
player = self.playerLoader.load(name, self)
|
||||
if player.name != name:
|
||||
raise InvalidPlayerError("Names do not match. Expected {}, found {}".format(name, player.name))
|
||||
self.players[name] = player
|
||||
return player
|
||||
|
||||
|
@ -130,3 +132,13 @@ class World:
|
|||
self.deactivateRoom(room)
|
||||
|
||||
|
||||
|
||||
class InvalidPlayerError(Exception):
|
||||
errType = "invalidplayer"
|
||||
description = "This player can not be loaded correctly"
|
||||
|
||||
def __init__(self, description="", errType=None):
|
||||
self.description = description
|
||||
if errType is not None:
|
||||
self.errType = errType
|
||||
|
||||
|
|
Loading…
Reference in New Issue