def _applyTankmanSkill(cls, vehicle, affectedTankmens, skillsByRoles,
                           selectedSkills):
        """
        Creates tankmens with particular roles and set of skills and applies it on the Vehicle
        :param vehicle: target Vehicle
        :param affectedTankmens: The set of tankmens roles that have to be recreated
        :param skillsByRoles: dict, the set of skills available for particular tankmen role
        :param selectedSkills: currently selected set of skills
        :return: bool, True if some of tankmens has been recreated
        """
        nationID, vehicleTypeID = vehicle.descriptor.type.id
        success = False
        for roleIdx, role in affectedTankmens:
            skills = skillsByRoles[role]
            veh_crew = vehicle.crew
            for idx, (vehCrewRoleIdx, _) in enumerate(veh_crew):
                if vehCrewRoleIdx == roleIdx:
                    veh_crew[idx] = (roleIdx,
                                     cmp_helpers.createTankman(
                                         nationID, vehicleTypeID, role,
                                         tankmen.MAX_SKILL_LEVEL,
                                         skills.intersection(selectedSkills)))
                    success = True
                    break
            else:
                LOG_WARNING(
                    'Tankmen with role index {} has not been found'.format(
                        roleIdx))

        return success
def applyTankmanSkillOnVehicle(vehicle, skillsByRolesIdx):
    nationID, vehicleTypeID = vehicle.descriptor.type.id
    crew = vehicle.crew
    for idx, (roleIdx, tman) in enumerate(crew):
        skills = skillsByRolesIdx[roleIdx]
        if skills:
            prevRoleLevel = tankmen.MAX_SKILL_LEVEL
            role = tman.role
            crew[idx] = (roleIdx, cmp_helpers.createTankman(nationID, vehicleTypeID, role, prevRoleLevel, skills, vehicle, roleIdx))
    def _applyTankmanSkill(cls, vehicle, affectedTankmens, skillsByRoles, selectedSkills):
        nationID, vehicleTypeID = vehicle.descriptor.type.id
        success = False
        for roleIdx, role in affectedTankmens:
            skills = skillsByRoles[role]
            veh_crew = vehicle.crew
            for idx, (vehCrewRoleIdx, vehCrewRole) in enumerate(veh_crew):
                if vehCrewRoleIdx == roleIdx:
                    prevRoleLevel = vehCrewRole.roleLevel if vehCrewRole is not None else tankmen.MAX_SKILL_LEVEL
                    veh_crew[idx] = (roleIdx, cmp_helpers.createTankman(nationID, vehicleTypeID, role, prevRoleLevel, skills.intersection(selectedSkills)))
                    success = True
                    break
            else:
                LOG_WARNING('Tankmen with role index {} has not been found'.format(roleIdx))

        return success