tried but failed to save memory by room deactivation
This commit is contained in:
parent
f38f00e496
commit
d880939711
|
@ -71,6 +71,7 @@ class Game:
|
|||
|
||||
if (self.counter % self.saveInterval) == 0:
|
||||
self.world.save()
|
||||
self.world.checkRoomActivity(599)
|
||||
|
||||
self.counter += 1
|
||||
|
||||
|
|
|
@ -53,9 +53,6 @@ class Player:
|
|||
|
||||
if self.entity:
|
||||
self.leaveRoom()
|
||||
|
||||
|
||||
self.world.activateRoom(roomname)
|
||||
|
||||
pos = place or room.getEntrance()
|
||||
self.entity = entity.Entity(
|
||||
|
|
|
@ -12,8 +12,6 @@ class World:
|
|||
|
||||
self.players = {}
|
||||
|
||||
self.activeRooms = {}
|
||||
|
||||
self.worldLoader = worldLoader
|
||||
self.roomLoader = roomLoader
|
||||
self.playerLoader = playerLoader
|
||||
|
@ -23,6 +21,8 @@ class World:
|
|||
data = self.worldLoader.load()
|
||||
if data:
|
||||
self.stepStamp = data["steps"]
|
||||
|
||||
self.lastRoomActivity = {}
|
||||
|
||||
|
||||
def createPlayer(self, name, data=None):
|
||||
|
@ -42,10 +42,10 @@ class World:
|
|||
|
||||
def update(self):
|
||||
|
||||
for r in list(self.activeRooms.values()):
|
||||
r.update(self.stepStamp)
|
||||
|
||||
self.stepStamp += 1
|
||||
|
||||
for r in list(self.rooms.values()):
|
||||
r.update(self.stepStamp)
|
||||
|
||||
def getPlayer(self, name):
|
||||
return self.players.get(name)
|
||||
|
@ -58,12 +58,9 @@ class World:
|
|||
room = self.roomLoader.load(name)
|
||||
if room:
|
||||
self.rooms[name] = room
|
||||
self.lastRoomActivity[name] = self.stepStamp
|
||||
return self.rooms.get(name, None)
|
||||
|
||||
def activateRoom(self, name):
|
||||
self.activeRooms[name] = self.getRoom(name)
|
||||
self.activeRooms[name].update(self.stepStamp)
|
||||
|
||||
def deactivateRoom(self, name):
|
||||
|
||||
# only deactivate a room when it's empty
|
||||
|
@ -72,7 +69,8 @@ class World:
|
|||
return
|
||||
|
||||
self.saveRoom(name)
|
||||
self.activeRooms.pop(name, None)
|
||||
#self.rooms.pop(name, None)
|
||||
#print("deactivating room {}".format(name))
|
||||
|
||||
def activatePlayer(self, name):
|
||||
if name in self.players:
|
||||
|
@ -87,9 +85,6 @@ class World:
|
|||
if pl:
|
||||
pl.leaveRoom()
|
||||
|
||||
def getActiveRooms(self):
|
||||
return list(self.activeRooms.keys())
|
||||
|
||||
def getActivePlayers(self):
|
||||
return list(self.players.keys())
|
||||
|
||||
|
@ -118,13 +113,20 @@ class World:
|
|||
self.worldLoader.save(self)
|
||||
|
||||
def save(self):
|
||||
for room in self.getActiveRooms():
|
||||
for room in self.rooms:
|
||||
self.saveRoom(room)
|
||||
for player in self.getActivePlayers():
|
||||
for player in list(self.players.keys()):
|
||||
self.savePlayer(player)
|
||||
self.saveWorld()
|
||||
|
||||
def getDefaultRoom(self):
|
||||
return self.getRoom(self.roomLoader.defaultRoomName())
|
||||
|
||||
|
||||
def checkRoomActivity(self, prunetime=1000):
|
||||
for player in self.players.values():
|
||||
self.lastRoomActivity[player.getRoom()] = self.stepStamp
|
||||
for room in list(self.rooms.keys()):
|
||||
if self.stepStamp - self.lastRoomActivity[room]> prunetime:
|
||||
self.deactivateRoom(room)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue