新社交系统对接

社交系统现包括好友与组队

社交TAB界面对接,实现BaseSocialGui。

社交TAB界面利用ForgeGui框架。由你方提供数据与逻辑,客户端进行渲染。

BaseSocialGui类是针对需求对于ForgeGui的抽象实现,以方便你方开发。

示例代码

你可以主动地提供、更新数据。

public class ExampleSocialGui extends BaseSocialGui {
    public ExampleSocialGui(Player viewer) {
        super(viewer);

        setup();
    }

    public void setup() {
        //提供好友数据,若无可不传
        getProperty().setFriends(list);

        //提供组队数据,若无可不传
        getProperty().setTeammates(list);

        //提供未处理请求,若无可不传
        getProperty().setRequests(list);

        //若需要立即更新,请主动进行,以确保客户体验。
        forceSynProperty();
    }

    @Override
    public void onRequest(RequestProperty requestProperty) {
        //在此进行逻辑层处理

        /**
         * 以下为例
         * */

        //情况一:客户端向服务器发出请求,请求与某好友组队
        if (requestProperty.getRequestType() == SocialRequestEnum.FRIEND_REQUEST_TEAM) {
            //在此,target为目标玩家UUID
            String requestTarget = requestProperty.cTarget.get();
            UUID targetUuid = UUID.fromString(requestTarget);

            //生成新的请求,发送给目标玩家
            RequestProperty applyRequest = new RequestProperty(requestProperty.cSource.get(), SocialRequestEnum.REQUEST_CLIENT_APPLY_FRIEND);
            //⚠️ 在此,我们将target规范为为该请求的UUID,以便回调。可见下方回调代码。
            applyRequest.cTarget.set(UUID.randomUUID().toString());
            applyRequest.cExtMsg.set(目标玩家名);

            //TODO 保存该请求,并发送给目标玩家
            
            /***/
            //你可以通过该方法将请求转换为Json进行保存。
            applyRequest.getProperty().getCompleteJson();
            /***/

            //反馈
            info("好友请求发出!");
        }

        //情况二:客户端向服务器发出请求,同意了某个请求
        else if (requestProperty.getRequestType() == SocialRequestEnum.REQUEST_ACCEPT) {
            //此Uuid为目标请求的回调ID
            String targetRequestUuid = requestProperty.cTarget.get();

            //TODO 处理请求
        }

    }

功能接口对接,实现ISocialProvider

附加对照

Last updated

Was this helpful?