type
Post
status
Published
date
Jul 8, 2023
slug
screeps_creeps_scheduler
summary
Screeps[GCL1,RCL3]时对于工种调度 使用适配器模式+状态模式 的自研方案
tags
设计模式
游戏
效率
category
技术分享
icon
password
截止到2023-7-8本人在GCL1,RCL3的阶段,代码还在建设ing,思考有限

背景

在Screeps中,对于每个工种,都需要其有自己的行为模式
同时如果当工种自己的事情做完了,可以去帮着其他的工种做事
同时由于调用工种都从Creeps调用,耦合度高,编码不方便,需要整合为一个单独的工种类

需求

  1. 对于工种的调用需要使用Creeps类的方法进行调用,需要将其封装为一个工种类
  1. 同时需要支持工种间的相互切换

设计

首先将状态模式的变化顺序进行明确
notion image
之后判断变化条件,通过transform方法进行状态变更
 
由于Creeps为Screeps官方提供的接口,无法变化,所以需要通过适配器模式,进行适配
然后将工种继承这个适配器,调用工种即可
notion image
 

结果

现在只需要通过继承CreepsAdapter类,实现work方法即可进行新工种的行为使用
之后通过在transform方法里传递进需要变化的CreepsAdapter即可
sparkScreeps-工种工厂方案V1