Asciifarm/server/world.py

60 lines
1.5 KiB
Python

import room
import player
# The World class is like the model in the MVC pattern (though the rest is not that clear)
class World:
def __init__(self, data={}):
self.rooms = {}
self.players = {}
for roomname, roomdata in data.items():
self.makeRoom(roomname, roomdata)
#self.makeRoom("begin", {"width": 64, "height": 32})
def makePlayer(self, name, data=None):
if name in self.players:
#raise Exception("Can not make new player with the name of an existing player")
pl = self.players[name]
else:
pl = player.Player(name)
self.players[name] = pl
pl.joinRoom(self.rooms["begin"])
return pl
def makeRoom(self, name, data):
ro = room.Room(name, data)
self.rooms[name] = ro
return ro
def update(self):
for r in self.rooms.values():
r.update()
for player in self.players:
self.controlPlayer(player, None)
def getPlayer(self, playername):
return self.players[playername]
def getRoom(self, roomname):
return self.rooms.get(roomname)
def controlPlayer(self, playername, action):
self.players[playername].control(action)
#return self.players[playername].getController()
def removePlayer(self, name):
if name not in self.players:
return
pl = self.players[name]
pl.leaveRoom()