LCUAPI的项目有很多,但是绝大部分Python实现都过重及死板,我想要设计一个足够轻量化、使用灵活的LCUAPI连接器。
项目名称来自于皎月女神的武器“月刃”。
将与LOL后端服务的通信分为 "连接" 及 "分发事件" 两部分,完全解耦。
纯Python项目,由三部分组成:
MoonBlade:LCUAPI的连接器,支持函数调用/上下文管理器两种方式控制连接器。
Router:事件路由,项目的核心。
- 支持以装饰器/类方法/实例方法注册路由;
- 支持以异步的函数/类方法(通过Node类)作为路由函数;
- 支持运行时动态注册/注销路由;
- 支持URI路径的精准匹配及前缀匹配;
- 支持创建、更新、删除事件;
- 支持伪造服务器事件。
Node:路由类的基类,使类初始化时遍历类属性来触发使用装饰器实现的类方法路由注册。
在实现对类方法进行注册时,由于装饰器在类定义阶段就执行了,而此时类还没有实例化,注册的类方法在调用时会缺失 "self" 参数。通过在实例访问属性时触发延迟绑定来解决。