Exemplo n.º 1
0
class UnitPermissions(IUnitPermissions):

    def __init__(self, roles = 0, flags = UNIT_FLAGS.DEFAULT, isCurrentPlayer = False, isPlayerReady = False, hasLockedState = False):
        super(UnitPermissions, self).__init__()
        self._roles = roles
        self._flags = UnitFlags(flags)
        self._isCurrentPlayer = isCurrentPlayer
        self._isPlayerReady = isPlayerReady
        self._hasLockedState = hasLockedState

    def canCreateSquad(self):
        return not self._hasLockedState

    def canSendInvite(self):
        return self._roles & UNIT_ROLE.INVITE_KICK_PLAYERS > 0

    def canKick(self):
        return self._roles & UNIT_ROLE.INVITE_KICK_PLAYERS > 0

    def canChangeUnitState(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canChangeRosters(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canSetVehicle(self):
        return self._isCurrentPlayer

    def canSetReady(self):
        return self._isCurrentPlayer

    def canChangeClosedSlots(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canAssignToSlot(self, dbID):
        return self._roles & UNIT_ROLE.ADD_REMOVE_MEMBERS > 0 or dbID == account_helpers.getAccountDatabaseID()

    def canReassignToSlot(self):
        return self._roles & UNIT_ROLE.ADD_REMOVE_MEMBERS > 0

    def canChangeComment(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0 and not self._flags.isInIdle()

    def canInvokeAutoSearch(self):
        return self._roles & UNIT_ROLE.START_STOP_BATTLE > 0 and not self._flags.isInArena()

    def canStartBattleQueue(self):
        return self._roles & UNIT_ROLE.START_STOP_BATTLE > 0

    def canStopBattleQueue(self):
        return self._roles & UNIT_ROLE.START_STOP_BATTLE > 0 and not self._flags.isInArena()

    def canChangeVehicle(self):
        return self._isCurrentPlayer and not self._isPlayerReady

    def canChangeLeadership(self):
        return self._roles & UNIT_ROLE.CHANGE_LEADERSHIP > 0

    def canStealLeadership(self):
        return self.canChangeLeadership()

    def canChangeConsumables(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canLead(self):
        return self._roles & UNIT_ROLE.CAN_LEAD > 0

    @classmethod
    def isCommander(cls, roles):
        return roles & UNIT_ROLE.CREATOR == UNIT_ROLE.CREATOR
Exemplo n.º 2
0
class UnitPermissions(interfaces.IUnitPermissions):

    def __init__(self, roles = 0, flags = UNIT_FLAGS.DEFAULT, isCurrentPlayer = False, isPlayerReady = False, hasLockedState = False):
        super(UnitPermissions, self).__init__()
        self._roles = roles
        self._flags = UnitFlags(flags)
        self._isCurrentPlayer = isCurrentPlayer
        self._isPlayerReady = isPlayerReady
        self._hasLockedState = hasLockedState

    def __repr__(self):
        return '{0:>s}(roles = {1:n}, state = {2!r:s}, isCurrentPlayer = {3!r:s})'.format(self.__class__.__name__, self._roles, self._flags, self._isCurrentPlayer)

    def canCreateSquad(self):
        return not self._hasLockedState

    def canSendInvite(self):
        return self._roles & UNIT_ROLE.INVITE_KICK_PLAYERS > 0

    def canKick(self):
        return self._roles & UNIT_ROLE.INVITE_KICK_PLAYERS > 0

    def canChangeUnitState(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canChangeRosters(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canSetVehicle(self):
        return self._isCurrentPlayer

    def canSetReady(self):
        return self._isCurrentPlayer

    def canChangeClosedSlots(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canAssignToSlot(self, dbID):
        return self._roles & UNIT_ROLE.ADD_REMOVE_MEMBERS > 0 or dbID == account_helpers.getAccountDatabaseID()

    def canReassignToSlot(self):
        return self._roles & UNIT_ROLE.ADD_REMOVE_MEMBERS > 0

    def canChangeComment(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0 and not self._flags.isInIdle()

    def canInvokeAutoSearch(self):
        return self._roles & UNIT_ROLE.START_STOP_BATTLE > 0 and not self._flags.isInArena()

    def canStartBattleQueue(self):
        return self._roles & UNIT_ROLE.START_STOP_BATTLE > 0

    def canStopBattleQueue(self):
        return self._roles & UNIT_ROLE.START_STOP_BATTLE > 0 and not self._flags.isInArena()

    def canChangeVehicle(self):
        return self._isCurrentPlayer and not self._isPlayerReady

    def canChangeLeadership(self):
        return self._roles & UNIT_ROLE.CHANGE_LEADERSHIP > 0

    def canStealLeadership(self):
        return self.canChangeLeadership()

    def canChangeConsumables(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    def canLead(self):
        return self._roles & UNIT_ROLE.CAN_LEAD > 0

    def canChangeRated(self):
        return self._roles & UNIT_ROLE.CHANGE_ROSTER > 0

    @classmethod
    def isCreator(cls, roles):
        return roles & UNIT_ROLE.CREATOR == UNIT_ROLE.CREATOR