建造相关文件位于example文件夹下的build.py文件

image.png

该文件为一直建造舰船,一般用于生煎期间,下面是相关函数

class BuildManager:
    # TODO: 获取建造舰船名称; 正确处理异常情况; 使用内部记忆代替查询
    def __init__(self, timer: Timer) -> None:
        self.timer = timer
        # -1代表空位. None代表未开通
        self.slot_eta = {
            "ship": [None] * 4,
            "equipment": [None] * 4,
        }
        self.update_slot_eta("ship")
        self.update_slot_eta("equipment")

    def update_slot_eta(self, type="ship"):
        """更新建造队列的剩余时间"""
        

    def get_timedelta(self, type="ship"):
        """获取建造队列的最小剩余时间
        Args:
            type (str): "ship"/"equipment"
        Returns:
            datetime.timedelta: 剩余时间
        """
        
    def get_min_eta(self, type="ship"):
        """获取建造队列的最小结束时间
        Args:
            type (str): "ship"/"equipment"
        Returns:
            datetime.datetime: 结束时间
        """
        return min(self.slot_eta[type])

    def has_empty_slot(self, type="ship") -> bool:
        """检查是否有空位
        Args:
            type (str): "ship"/"equipment"
        Returns:
            bool: 是否有空位
        """
        # 检查是否包含 -1 或当前时间是否大于任何非 None 的时间
        return -1 in self.slot_eta[type] or any(datetime.datetime.now() > eta for eta in self.slot_eta[type] if eta is not None)

    def get_build(self, type="ship", allow_fast_build=False) -> bool:
        """获取已经建造好的舰船或装备
        Args:
            type (str): "ship"/"equipment"
            allow_fast_build: 是否允许快速建造
        Returns:
            bool: 是否获取成功
        """
        

    def build(self, type="ship", resources=None, allow_fast_build=False):
        """建造操作
        Args:
            type (str): "ship"/"equipment"
            resources: 一个列表, 表示油弹钢铝四项资源. Defaults to None.
            allow_fast_build (bool, optional): 如果队列已满, 是否立刻结束一个以开始建造. Defaults to False.
        """

        def choose_build_resources():
            """移动资源
            Args:
                resource_id (int): 资源编号
                dst (int): 目标值
            """
           
            def value_to_digits(value):
                # 拆分为3位数
                return [value // 100, value // 10 % 10, value % 10]

            def detect_build_resources(resource_id) -> list:
                """检查四项资源余量
                Args:
                    resource_id (int): 具体哪一项资源 [0,3]
                Returns:
                    list: 拆分为3位数的资源
                """