Index: jive/share/jive/slim/SlimServer.lua =================================================================== --- jive/share/jive/slim/SlimServer.lua (revision 1915) +++ jive/share/jive/slim/SlimServer.lua (working copy) @@ -157,8 +157,6 @@ player = Player(self.jnt, self, player_info) - self.players[player_info.playerid] = player - else -- update existing players self.players[player_info.playerid]:update(self, player_info) @@ -180,11 +178,17 @@ -- package private method to delete a player function _deletePlayer(self, player) - player:free(self) - table:delete(self.players, player:getId()) + self.players[player:getId()] = nil + self.jnt:notify('playerDelete', player) end +function _addPlayer(self, player) + self.players[player:getId()] = player + self.jnt:notify('playerNew', player) +end + + --[[ =head2 jive.slim.SlimServer(jnt, ip, name) Index: jive/share/jive/slim/Player.lua =================================================================== --- jive/share/jive/slim/Player.lua (revision 1915) +++ jive/share/jive/slim/Player.lua (working copy) @@ -141,9 +141,10 @@ local function _setPlayerPower(self, power) log:debug("_setPlayerPower") + power = tonumber(power) if power != self.power then - self.power = tonumber(power) - self.jnt:notify('playerPower', self, tonumber(power)) + self.power = power + self.jnt:notify('playerPower', self, power) end end @@ -255,7 +256,7 @@ -- notify of new player log:info(obj, " new for ", obj.slimServer) - jnt:notify('playerNew', obj) + obj.slimServer:_addPlayer(obj) return obj end @@ -280,13 +281,13 @@ if self.slimServer ~= slimServer then -- delete from old server if self.slimServer then - self.slimServer:_deletePlayer(self) + self:free(self.slimServer) end -- add to new server self.slimServer = slimServer + self.slimServer:_addPlayer(self) log:info(self, " new for ", self.slimServer) - self.jnt:notify('playerNew', self) end self.model = playerInfo.model @@ -429,7 +430,7 @@ end log:info(self, " delete for ", self.slimServer) - self.jnt:notify('playerDelete', self) + self.slimServer:_deletePlayer(self) self:offStage() self.slimServer = nil