class MoveManager:
    def __init__(self, World):
        self.Player = World.Character
        self.World = World
        self.PositionConnectionModel = PositionConnectionModel(World.CharacterManager.moveCharacter)
        World.ServerConnection.setupConnectionModel(self.PositionConnectionModel)
        self.actions = []
        self.lastAction = []
    
    def appendAction(self,pos):
        if len(self.lastAction) == 0 or (len(self.lastAction) > 0 and self.lastAction != pos):
            self.actions.append(pos)
            self.lastAction = pos
        
    def flushActions(self):
        actions = self.actions
        self.actions = []
        return actions
    
    def sendMoves(self,task):
        if self.World.stopSendingMovement:
            return None
        
        if not self.World.bypassServer:
            if len(self.actions) > 0:
                for pos in self.flushActions():
                    self.PositionConnectionModel.sendPos(str(pos[0])+","+str(pos[1])+","+str(pos[2])+","+str(pos[3]))
        else:
            self.flushActions()
        return task.again
    
    def sendUpdatePosition(self):
        pos = self.Player.actor.getPos()
        self.PositionConnectionModel.sendPos(str(pos[0])+","+str(pos[1])+","+str(pos[2])+","+str(self.Player.actor.getH()))
 def __init__(self, World):
     self.Player = World.Character
     self.World = World
     self.PositionConnectionModel = PositionConnectionModel(World.CharacterManager.moveCharacter)
     World.ServerConnection.setupConnectionModel(self.PositionConnectionModel)
     self.actions = []
     self.lastAction = []