-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[对接文档] - 新增广播文档构建器,简化生成广播对接文档 #290
Labels
功能增强
功能增强
Comments
使用示例,在业务框架中配置 public class MyLogicServer extends AbstractBrokerClientStartup {
@Override
public BarSkeleton createBarSkeleton() {
// 业务框架构建器
BarSkeletonBuilder builder = ...
// 错误码、广播、推送对接文档生成
extractedDco(builder);
return builder.build();
}
private void extractedDco(BarSkeletonBuilder builder) {
// 错误码
Arrays.stream(GameCode.values()).forEach(builder::addMsgExceptionInfo);
// UserCmd
builder.addBroadcastDoc(BroadcastDoc.newBuilder(UserCmd.of(UserCmd.enterSquare))
.setDataClass(SquarePlayer.class)
.setDescription("新玩家加入房间,给房间内的其他玩家广播")
).addBroadcastDoc(BroadcastDoc.newBuilder(UserCmd.of(UserCmd.move))
.setDataClass(SquarePlayerMove.class)
.setDescription("其他玩家的移动")
).addBroadcastDoc(BroadcastDoc.newBuilder(UserCmd.of(UserCmd.offline))
.setDataClass(LongValue.class)
.setDescription("有玩家下线了。userId")
);
// room
builder.addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.roomUpdateBroadcast))
.setDataClass(FightRoomNotice.class)
.setDescription("房间更新通知")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.playerEnterRoomBroadcast))
.setDataClass(FightPlayer.class)
.setDescription("有新玩家加入房间")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.enterRoom))
.setDataClass(FightEnterRoom.class)
.setDescription("玩家自己进入房间")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.dissolveRoomBroadcast))
.setDescription("解散房间")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.quitRoom))
.setDataClass(LongValue.class)
.setDescription("有玩家退出房间了。userId")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.ready))
.setDataClass(PlayerReady.class)
.setDescription("有玩家准备或取消准备了")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.nextRoundBroadcast))
.setDataClass(IntValue.class)
.setDescription("对局开始,通知玩家开始选择。round 当前对局数")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.operationBroadcast))
.setDataClass(LongValue.class)
.setDescription("通知其他玩家,有玩家做了选择。userId")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.littleSettleBroadcast))
.setDataClassList(FightRoundPlayerScore.class)
.setDescription("广播玩家对局分数")
).addBroadcastDoc(BroadcastDoc.newBuilder(RoomCmd.of(RoomCmd.gameOverBroadcast))
.setDescription("游戏结束")
);
}
} 错误码 示例中关于错误码可阅读 断言 + 异常机制 = 清晰简洁的代码 (yuque.com) @Getter
@FieldDefaults(level = AccessLevel.PRIVATE)
public enum GameCode implements MsgExceptionInfo {
inRoom(1, "玩家在房间里"),
roomNotExist(3, "房间不存在"),
illegalOperation(4, "非法操作"),
roomMinSpaceSizeEnough(6, "开始游戏需要的最小人数不足"),
playerNotReady(7, "请等待其他玩家准备"),
roomSpaceSizeNotEnough(8, "房间空间不足,人数已满"),
;
/** 消息码 */
final int code;
/** 消息模板 */
final String msg;
GameCode(int code, String msg) {
this.code = code;
this.msg = msg;
}
} |
下面是生成后的对接文档预览
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
新增功能的使用场景
在生成广播对接文档时,支持添加对应的描述、包装类型支持。
The text was updated successfully, but these errors were encountered: