def _pick_color(self, id):
        """
        Return a color multiplier representing a unique color for an object if some colors are available.
        Return -1,-1,-1 if no color available

        SideEffect: COLOR_PTR will no longer point to the available color
        SideEffect: COLORS_OCCUPIED[COLOR_PTR] will not be avilable
        """
        if len(BaseEngine.COLORS_OCCUPIED) == BaseEngine.MAX_COLOR:
            return (-1, -1, -1)
        assert (len(BaseEngine.COLORS_FREE) > 0)
        my_color = BaseEngine.COLORS_FREE.pop()
        BaseEngine.COLORS_OCCUPIED.add(my_color)
        # print("After picking:", len(BaseEngine.COLORS_OCCUPIED), len(BaseEngine.COLORS_FREE))
        self.id_c[id] = my_color
        self.c_id[my_color] = id
        return my_color

        Return a color multiplier representing a unique color for an object if some colors are available.
        Return -1,-1,-1 if no color available

        SideEffect: COLOR_PTR will no longer point to the available color
        SideEffect: COLORS_OCCUPIED[COLOR_PTR] will not be avilable
        
metadrive/engine/base_engine.py