初次提交,修改了头像不能展示
This commit is contained in:
1
SudMGPWrapper/.gitignore
vendored
Normal file
1
SudMGPWrapper/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/build
|
||||
39
SudMGPWrapper/build.gradle
Normal file
39
SudMGPWrapper/build.gradle
Normal file
@@ -0,0 +1,39 @@
|
||||
plugins {
|
||||
id 'com.android.library'
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 32
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 32
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles "consumer-rules.pro"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
consumerProguardFiles 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
// 引入 SudMGPSDK
|
||||
// api project(':SudMGPSDK')
|
||||
api 'tech.sud.mgp:SudMGP:1.3.6.1181'
|
||||
// gson
|
||||
api 'com.google.code.gson:gson:2.8.6'
|
||||
// 依赖okhttp
|
||||
api 'com.squareup.okhttp3:okhttp:4.9.2'
|
||||
|
||||
|
||||
|
||||
}
|
||||
2
SudMGPWrapper/consumer-rules.pro
Normal file
2
SudMGPWrapper/consumer-rules.pro
Normal file
@@ -0,0 +1,2 @@
|
||||
# SudMGPWrapper keep
|
||||
-keep class tech.sud.mgp.SudMGPWrapper.** {*;}
|
||||
21
SudMGPWrapper/proguard-rules.pro
vendored
Normal file
21
SudMGPWrapper/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
5
SudMGPWrapper/src/main/AndroidManifest.xml
Normal file
5
SudMGPWrapper/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="tech.sud.mgp.SudMGPWrapper">
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.decorator;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
|
||||
import tech.sud.mgp.SudMGPWrapper.state.SudMGPMGState;
|
||||
|
||||
/**
|
||||
* 游戏回调数据缓存
|
||||
*/
|
||||
public class SudFSMMGCache {
|
||||
|
||||
private String captainUserId; // 记录当前队长的用户id
|
||||
private SudMGPMGState.MGCommonGameState mgCommonGameStateModel; // 全局游戏状态
|
||||
private boolean isHitBomb = false; // 是否数字炸弹
|
||||
private final HashSet<String> playerInSet = new HashSet<>(); // 记录已经加入了游戏的玩家
|
||||
private final HashSet<String> playerReadySet = new HashSet<>(); // 记录已经准备好的游戏玩家
|
||||
private final HashMap<String, SudMGPMGState.MGCommonPlayerPlaying> playerPlayingMap = new HashMap<>(); // 记录玩家的游戏状态
|
||||
|
||||
// 队长状态 处理
|
||||
public void onPlayerMGCommonPlayerCaptain(String userId, SudMGPMGState.MGCommonPlayerCaptain model) {
|
||||
if (model != null) {
|
||||
if (model.isCaptain) {
|
||||
captainUserId = userId;
|
||||
} else {
|
||||
if (Objects.equals(captainUserId, userId)) {
|
||||
captainUserId = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 游戏状态 处理
|
||||
public void onGameMGCommonGameState(SudMGPMGState.MGCommonGameState model) {
|
||||
mgCommonGameStateModel = model;
|
||||
}
|
||||
|
||||
// 玩家加入状态处理
|
||||
public void onPlayerMGCommonPlayerIn(String userId, SudMGPMGState.MGCommonPlayerIn model) {
|
||||
if (model != null) {
|
||||
if (model.isIn) {
|
||||
playerInSet.add(userId);
|
||||
} else {
|
||||
playerInSet.remove(userId);
|
||||
playerReadySet.remove(userId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 玩家准备状态
|
||||
public void onPlayerMGCommonPlayerReady(String userId, SudMGPMGState.MGCommonPlayerReady model) {
|
||||
if (model != null) {
|
||||
if (model.isReady) {
|
||||
playerReadySet.add(userId);
|
||||
} else {
|
||||
playerReadySet.remove(userId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 玩家游戏状态
|
||||
public void onPlayerMGCommonPlayerPlaying(String userId, SudMGPMGState.MGCommonPlayerPlaying model) {
|
||||
if (model != null) {
|
||||
playerPlayingMap.put(userId, model);
|
||||
}
|
||||
}
|
||||
|
||||
// 关键词状态
|
||||
public void onGameMGCommonKeyWordToHit(SudMGPMGState.MGCommonKeyWordToHit model) {
|
||||
if (model != null) {
|
||||
isHitBomb = model.wordType.equals("number");
|
||||
}
|
||||
}
|
||||
|
||||
// 返回该玩家是否正在游戏中
|
||||
public boolean playerIsPlaying(String userId) {
|
||||
SudMGPMGState.MGCommonPlayerPlaying mgCommonPlayerPlaying = playerPlayingMap.get(userId);
|
||||
if (mgCommonPlayerPlaying != null) {
|
||||
return mgCommonPlayerPlaying.isPlaying;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 返回该玩家是否已准备
|
||||
public boolean playerIsReady(String userId) {
|
||||
return playerReadySet.contains(userId);
|
||||
}
|
||||
|
||||
// 返回该玩家是否已加入了游戏
|
||||
public boolean playerIsIn(String userId) {
|
||||
return playerInSet.contains(userId);
|
||||
}
|
||||
|
||||
// 获取当前游戏中的人数
|
||||
public int getPlayerInNumber() {
|
||||
return playerInSet.size();
|
||||
}
|
||||
|
||||
// 是否数字炸弹
|
||||
public boolean isHitBomb() {
|
||||
return isHitBomb;
|
||||
}
|
||||
|
||||
// 销毁游戏
|
||||
public void destroyMG() {
|
||||
captainUserId = null;
|
||||
mgCommonGameStateModel = null;
|
||||
isHitBomb = false;
|
||||
playerInSet.clear();
|
||||
playerReadySet.clear();
|
||||
playerPlayingMap.clear();
|
||||
}
|
||||
|
||||
/** 获取队长userId */
|
||||
public String getCaptainUserId() {
|
||||
return captainUserId;
|
||||
}
|
||||
|
||||
/** 获取当前已加入游戏的玩家集合 */
|
||||
public HashSet<String> getPlayerInSet() {
|
||||
return new HashSet<>(playerInSet);
|
||||
}
|
||||
|
||||
/** 获取当前已准备的玩家集合 */
|
||||
public HashSet<String> getPlayerReadySet() {
|
||||
return new HashSet<>(playerReadySet);
|
||||
}
|
||||
|
||||
/** 获取玩家游戏状态集合 */
|
||||
public HashMap<String, SudMGPMGState.MGCommonPlayerPlaying> getPlayerPlayingMap() {
|
||||
return new HashMap<>(playerPlayingMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回当前游戏的状态,数值参数{@link SudMGPMGState.MGCommonGameState}
|
||||
*/
|
||||
public int getGameState() {
|
||||
if (mgCommonGameStateModel != null) {
|
||||
return mgCommonGameStateModel.gameState;
|
||||
}
|
||||
return SudMGPMGState.MGCommonGameState.UNKNOW;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,843 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.decorator;
|
||||
|
||||
import tech.sud.mgp.SudMGPWrapper.state.SudMGPMGState;
|
||||
import tech.sud.mgp.SudMGPWrapper.utils.ISudFSMStateHandleUtils;
|
||||
import tech.sud.mgp.SudMGPWrapper.utils.SudJsonUtils;
|
||||
import tech.sud.mgp.core.ISudFSMMG;
|
||||
import tech.sud.mgp.core.ISudFSMStateHandle;
|
||||
|
||||
/**
|
||||
* ISudFSMMG 游戏调APP回调装饰类
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG.html
|
||||
*/
|
||||
public class SudFSMMGDecorator implements ISudFSMMG {
|
||||
|
||||
// 回调
|
||||
private SudFSMMGListener sudFSMMGListener;
|
||||
|
||||
// 数据状态封装
|
||||
private final SudFSMMGCache sudFSMMGCache = new SudFSMMGCache();
|
||||
|
||||
/**
|
||||
* 设置回调
|
||||
*
|
||||
* @param listener 监听器
|
||||
*/
|
||||
public void setSudFSMMGListener(SudFSMMGListener listener) {
|
||||
sudFSMMGListener = listener;
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏日志
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
@Override
|
||||
public void onGameLog(String dataJson) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onGameLog(dataJson);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏加载进度
|
||||
*
|
||||
* @param stage 阶段:start=1,loading=2,end=3
|
||||
* @param retCode 错误码:0成功
|
||||
* @param progress 进度:[0, 100]
|
||||
*/
|
||||
@Override
|
||||
public void onGameLoadingProgress(int stage, int retCode, int progress) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onGameLoadingProgress(stage, retCode, progress);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏开始
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
@Override
|
||||
public void onGameStarted() {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onGameStarted();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏销毁
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
@Override
|
||||
public void onGameDestroyed() {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onGameDestroyed();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Code过期,需要实现
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param dataJson {"code":"value"}
|
||||
*/
|
||||
@Override
|
||||
public void onExpireCode(ISudFSMStateHandle handle, String dataJson) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onExpireCode(handle, dataJson);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取游戏View信息,需要实现
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param handle 操作
|
||||
* @param dataJson {}
|
||||
*/
|
||||
@Override
|
||||
public void onGetGameViewInfo(ISudFSMStateHandle handle, String dataJson) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onGetGameViewInfo(handle, dataJson);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取游戏Config,需要实现
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param handle 操作
|
||||
* @param dataJson {}
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
@Override
|
||||
public void onGetGameCfg(ISudFSMStateHandle handle, String dataJson) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null) {
|
||||
listener.onGetGameCfg(handle, dataJson);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏状态变化
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param handle 操作
|
||||
* @param state 状态命令
|
||||
* @param dataJson 状态值
|
||||
*/
|
||||
@Override
|
||||
public void onGameStateChange(ISudFSMStateHandle handle, String state, String dataJson) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null && listener.onGameStateChange(handle, state, dataJson)) {
|
||||
return;
|
||||
}
|
||||
switch (state) {
|
||||
case SudMGPMGState.MG_COMMON_PUBLIC_MESSAGE: // 1. 公屏消息
|
||||
SudMGPMGState.MGCommonPublicMessage mgCommonPublicMessage = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPublicMessage.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonPublicMessage(handle, mgCommonPublicMessage);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_KEY_WORD_TO_HIT: // 2. 关键词状态
|
||||
SudMGPMGState.MGCommonKeyWordToHit mgCommonKeyWordToHit = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonKeyWordToHit.class);
|
||||
sudFSMMGCache.onGameMGCommonKeyWordToHit(mgCommonKeyWordToHit);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonKeyWordToHit(handle, mgCommonKeyWordToHit);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_SETTLE: // 3. 游戏结算状态
|
||||
SudMGPMGState.MGCommonGameSettle mgCommonGameSettle = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSettle.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameSettle(handle, mgCommonGameSettle);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_JOIN_BTN: // 4. 加入游戏按钮点击状态
|
||||
SudMGPMGState.MGCommonSelfClickJoinBtn mgCommonSelfClickJoinBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickJoinBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickJoinBtn(handle, mgCommonSelfClickJoinBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_CANCEL_JOIN_BTN: // 5. 取消加入(退出)游戏按钮点击状态
|
||||
SudMGPMGState.MGCommonSelfClickCancelJoinBtn selfClickCancelJoinBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickCancelJoinBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickCancelJoinBtn(handle, selfClickCancelJoinBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_READY_BTN: // 6. 准备按钮点击状态
|
||||
SudMGPMGState.MGCommonSelfClickReadyBtn mgCommonSelfClickReadyBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickReadyBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickReadyBtn(handle, mgCommonSelfClickReadyBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_CANCEL_READY_BTN: // 7. 取消准备按钮点击状态
|
||||
SudMGPMGState.MGCommonSelfClickCancelReadyBtn mgCommonSelfClickCancelReadyBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickCancelReadyBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickCancelReadyBtn(handle, mgCommonSelfClickCancelReadyBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_START_BTN: // 8. 开始游戏按钮点击状态
|
||||
SudMGPMGState.MGCommonSelfClickStartBtn mgCommonSelfClickStartBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickStartBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickStartBtn(handle, mgCommonSelfClickStartBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_SHARE_BTN: // 9. 分享按钮点击状态
|
||||
SudMGPMGState.MGCommonSelfClickShareBtn mgCommonSelfClickShareBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickShareBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickShareBtn(handle, mgCommonSelfClickShareBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_STATE: // 10. 游戏状态
|
||||
SudMGPMGState.MGCommonGameState mgCommonGameState = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameState.class);
|
||||
sudFSMMGCache.onGameMGCommonGameState(mgCommonGameState);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameState(handle, mgCommonGameState);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_CLOSE_BTN: // 11. 结算界面关闭按钮点击状态(2021-12-27新增)
|
||||
SudMGPMGState.MGCommonSelfClickGameSettleCloseBtn mgCommonSelfClickGameSettleCloseBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickGameSettleCloseBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickGameSettleCloseBtn(handle, mgCommonSelfClickGameSettleCloseBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_SETTLE_AGAIN_BTN: // 12. 结算界面再来一局按钮点击状态(2021-12-27新增)
|
||||
SudMGPMGState.MGCommonSelfClickGameSettleAgainBtn mgCommonSelfClickGameSettleAgainBtn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickGameSettleAgainBtn.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfClickGameSettleAgainBtn(handle, mgCommonSelfClickGameSettleAgainBtn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_SOUND_LIST: // 13. 游戏上报游戏中的声音列表(2021-12-30新增,现在只支持碰碰我最强)
|
||||
SudMGPMGState.MGCommonGameSoundList mgCommonGameSoundList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSoundList.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameSoundList(handle, mgCommonGameSoundList);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_SOUND: // 14. 游通知app层播放声音(2021-12-30新增,现在只支持碰碰我最强)
|
||||
SudMGPMGState.MGCommonGameSound mgCommonGameSound = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSound.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameSound(handle, mgCommonGameSound);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_BG_MUSIC_STATE: // 15. 游戏通知app层播放背景音乐状态(2022-01-07新增,现在只支持碰碰我最强)
|
||||
SudMGPMGState.MGCommonGameBgMusicState mgCommonGameBgMusicState = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameBgMusicState.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameBgMusicState(handle, mgCommonGameBgMusicState);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_SOUND_STATE: // 16. 游戏通知app层播放音效的状态(2022-01-07新增,现在只支持碰碰我最强)
|
||||
SudMGPMGState.MGCommonGameSoundState mgCommonGameSoundState = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSoundState.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameSoundState(handle, mgCommonGameSoundState);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_ASR: // 17. ASR状态(开启和关闭语音识别状态,v1.1.45.xx 版本新增)
|
||||
SudMGPMGState.MGCommonGameASR mgCommonGameASR = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameASR.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameASR(handle, mgCommonGameASR);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_MICROPHONE: // 18. 麦克风状态(2022-02-08新增)
|
||||
SudMGPMGState.MGCommonSelfMicrophone mgCommonSelfMicrophone = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfMicrophone.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfMicrophone(handle, mgCommonSelfMicrophone);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_HEADPHONE: // 19. 耳机(听筒,扬声器)状态(2022-02-08新增)
|
||||
SudMGPMGState.MGCommonSelfHeadphone mgCommonSelfHeadphone = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfHeadphone.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonSelfHeadphone(handle, mgCommonSelfHeadphone);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_APP_COMMON_SELF_X_RESP: // 20. App通用状态操作结果错误码(2022-05-10新增)
|
||||
SudMGPMGState.MGCommonAPPCommonSelfXResp mgCommonAPPCommonSelfXResp = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonAPPCommonSelfXResp.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonAPPCommonSelfXResp(handle, mgCommonAPPCommonSelfXResp);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_ADD_AI_PLAYERS: // 21. 游戏通知app层添加陪玩机器人是否成功(2022-05-17新增)
|
||||
SudMGPMGState.MGCommonGameAddAIPlayers mgCommonGameAddAIPlayers = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameAddAIPlayers.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameAddAIPlayers(handle, mgCommonGameAddAIPlayers);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_NETWORK_STATE: // 22. 游戏通知app层添当前网络连接状态(2022-06-21新增)
|
||||
SudMGPMGState.MGCommonGameNetworkState mgCommonGameNetworkState = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameNetworkState.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameNetworkState(handle, mgCommonGameNetworkState);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_GET_SCORE: // 23. 游戏通知app获取积分
|
||||
SudMGPMGState.MGCommonGameGetScore mgCommonGameScore = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameGetScore.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameGetScore(handle, mgCommonGameScore);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_SET_SCORE: // 24. 游戏通知app带入积分
|
||||
SudMGPMGState.MGCommonGameSetScore mgCommonGameSetScore = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameSetScore.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameSetScore(handle, mgCommonGameSetScore);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_CREATE_ORDER: // 25. 创建订单
|
||||
SudMGPMGState.MGCommonGameCreateOrder mgCommonGameCreateOrder = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameCreateOrder.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameCreateOrder(handle, mgCommonGameCreateOrder);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_ROLE_ID: // 26. 游戏通知app玩家角色(仅对狼人杀有效)
|
||||
SudMGPMGState.MGCommonPlayerRoleId mgCommonPlayerRoleId = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerRoleId.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonPlayerRoleId(handle, mgCommonPlayerRoleId);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_DISCO_ACTION: // 1. 元宇宙砂砂舞指令回调
|
||||
SudMGPMGState.MGCommonGameDiscoAction mgCommonGameDiscoAction = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameDiscoAction.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameDiscoAction(handle, mgCommonGameDiscoAction);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_DISCO_ACTION_END: // 2. 元宇宙砂砂舞指令动作结束通知
|
||||
SudMGPMGState.MGCommonGameDiscoActionEnd mgCommonGameDiscoActionEnd = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameDiscoActionEnd.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCommonGameDiscoActionEnd(handle, mgCommonGameDiscoActionEnd);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_CONFIG: // 1. 礼物配置文件(火箭)
|
||||
SudMGPMGState.MGCustomRocketConfig mgCustomRocketConfig = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketConfig.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketConfig(handle, mgCustomRocketConfig);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_MODEL_LIST: // 2. 拥有模型列表(火箭)
|
||||
SudMGPMGState.MGCustomRocketModelList mgCustomRocketModelList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketModelList.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketModelList(handle, mgCustomRocketModelList);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_COMPONENT_LIST: // 3. 拥有组件列表(火箭)
|
||||
SudMGPMGState.MGCustomRocketComponentList mgCustomRocketComponentList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketComponentList.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketComponentList(handle, mgCustomRocketComponentList);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_USER_INFO: // 4. 获取用户信息(火箭)
|
||||
SudMGPMGState.MGCustomRocketUserInfo mgCustomRocketUserInfo = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketUserInfo.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketUserInfo(handle, mgCustomRocketUserInfo);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_ORDER_RECORD_LIST: // 5. 订单记录列表(火箭)
|
||||
SudMGPMGState.MGCustomRocketOrderRecordList mgCustomRocketOrderRecordList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketOrderRecordList.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketOrderRecordList(handle, mgCustomRocketOrderRecordList);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_ROOM_RECORD_LIST: // 6. 展馆内列表(火箭)
|
||||
SudMGPMGState.MGCustomRocketRoomRecordList mgCustomRocketRoomRecordList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketRoomRecordList.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketRoomRecordList(handle, mgCustomRocketRoomRecordList);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_USER_RECORD_LIST: // 7. 展馆内玩家送出记录(火箭)
|
||||
SudMGPMGState.MGCustomRocketUserRecordList mgCustomRocketUserRecordList = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketUserRecordList.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketUserRecordList(handle, mgCustomRocketUserRecordList);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_SET_DEFAULT_MODEL: // 8. 设置默认模型(火箭)
|
||||
SudMGPMGState.MGCustomRocketSetDefaultModel mgCustomRocketSetDefaultSeat = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketSetDefaultModel.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketSetDefaultModel(handle, mgCustomRocketSetDefaultSeat);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_DYNAMIC_FIRE_PRICE: // 9. 动态计算一键发送价格(火箭)
|
||||
SudMGPMGState.MGCustomRocketDynamicFirePrice mgCustomRocketDynamicFirePrice = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketDynamicFirePrice.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketDynamicFirePrice(handle, mgCustomRocketDynamicFirePrice);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_FIRE_MODEL: // 10. 一键发送(火箭)
|
||||
SudMGPMGState.MGCustomRocketFireModel mGCustomRocketFireModel = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketFireModel.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketFireModel(handle, mGCustomRocketFireModel);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_CREATE_MODEL: // 11. 新组装模型(火箭)
|
||||
SudMGPMGState.MGCustomRocketCreateModel mgCustomRocketCreateModel = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketCreateModel.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketCreateModel(handle, mgCustomRocketCreateModel);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_REPLACE_COMPONENT: // 12. 模型更换组件(火箭)
|
||||
SudMGPMGState.MGCustomRocketReplaceComponent mgCustomRocketReplaceComponent = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketReplaceComponent.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketReplaceComponent(handle, mgCustomRocketReplaceComponent);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_BUY_COMPONENT: // 13. 购买组件(火箭)
|
||||
SudMGPMGState.MGCustomRocketBuyComponent mgCustomRocketBuyComponent = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketBuyComponent.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketBuyComponent(handle, mgCustomRocketBuyComponent);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_PLAY_EFFECT_START: // 14. 播放效果开始(火箭)
|
||||
SudMGPMGState.MGCustomRocketPlayEffectStart mgCustomRocketPlayEffectStart = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketPlayEffectStart.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketPlayEffectStart(handle, mgCustomRocketPlayEffectStart);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_PLAY_EFFECT_FINISH: // 15. 播放效果完成(火箭)
|
||||
SudMGPMGState.MGCustomRocketPlayEffectFinish mgCustomRocketPlayEffectFinish = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketPlayEffectFinish.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketPlayEffectFinish(handle, mgCustomRocketPlayEffectFinish);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_VERIFY_SIGN: // 16. 验证签名合规(火箭)
|
||||
SudMGPMGState.MGCustomRocketVerifySign mgCustomRocketVerifySign = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketVerifySign.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketVerifySign(handle, mgCustomRocketVerifySign);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_UPLOAD_MODEL_ICON: // 17. 上传icon(火箭)
|
||||
SudMGPMGState.MGCustomRocketUploadModelIcon mgCustomRocketUploadModelIcon = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketUploadModelIcon.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketUploadModelIcon(handle, mgCustomRocketUploadModelIcon);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_PREPARE_FINISH: // 18. 前期准备完成(火箭)
|
||||
SudMGPMGState.MGCustomRocketPrepareFinish mgCustomRocketPrepareFinish = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketPrepareFinish.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketPrepareFinish(handle, mgCustomRocketPrepareFinish);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_SHOW_GAME_SCENE: // 19. 火箭主界面已显示(火箭)
|
||||
SudMGPMGState.MGCustomRocketShowGameScene mgCustomRocketShowGameScene = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketShowGameScene.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketShowGameScene(handle, mgCustomRocketShowGameScene);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_HIDE_GAME_SCENE: // 20. 火箭主界面已隐藏(火箭)
|
||||
SudMGPMGState.MGCustomRocketHideGameScene mgCustomRocketHideGameScene = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketHideGameScene.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketHideGameScene(handle, mgCustomRocketHideGameScene);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_CLICK_LOCK_COMPONENT: // 21. 点击锁住组件(火箭)
|
||||
SudMGPMGState.MGCustomRocketClickLockComponent mgCustomRocketClickLockComponent = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketClickLockComponent.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketClickLockComponent(handle, mgCustomRocketClickLockComponent);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_FLY_CLICK: // 22. 火箭效果飞行点击(火箭)
|
||||
SudMGPMGState.MGCustomRocketFlyClick mgCustomRocketFlyClick = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketFlyClick.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketFlyClick(handle, mgCustomRocketFlyClick);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_FLY_END: // 23. 火箭效果飞行结束(火箭)
|
||||
SudMGPMGState.MGCustomRocketFlyEnd mgCustomRocketFlyEnd = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketFlyEnd.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketFlyEnd(handle, mgCustomRocketFlyEnd);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_CUSTOM_ROCKET_SET_CLICK_RECT: // 24. 设置点击区域(火箭)
|
||||
SudMGPMGState.MGCustomRocketSetClickRect mgCustomRocketSetClickRect = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCustomRocketSetClickRect.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGCustomRocketSetClickRect(handle, mgCustomRocketSetClickRect);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_RANKING: // 1. 查询排行榜数据(棒球)
|
||||
SudMGPMGState.MGBaseballRanking mgBaseballRanking = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballRanking.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballRanking(handle, mgBaseballRanking);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_MY_RANKING: // 2. 查询我的排名(棒球)
|
||||
SudMGPMGState.MGBaseballMyRanking mgBaseballMyRanking = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballMyRanking.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballMyRanking(handle, mgBaseballMyRanking);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_RANGE_INFO: // 3. 查询当前距离我的前后玩家数据(棒球)
|
||||
SudMGPMGState.MGBaseballRangeInfo mgBaseballRangeInfo = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballRangeInfo.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballRangeInfo(handle, mgBaseballRangeInfo);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_SET_CLICK_RECT: // 4. 设置app提供给游戏可点击区域(棒球)
|
||||
SudMGPMGState.MGBaseballSetClickRect mgBaseballSetClickRect = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballSetClickRect.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballSetClickRect(handle, mgBaseballSetClickRect);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_PREPARE_FINISH: // 5. 前期准备完成(棒球)
|
||||
SudMGPMGState.MGBaseballPrepareFinish mgBaseballPrepareFinish = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballPrepareFinish.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballPrepareFinish(handle, mgBaseballPrepareFinish);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_SHOW_GAME_SCENE: // 6. 主界面已显示(棒球)
|
||||
SudMGPMGState.MGBaseballShowGameScene mgBaseballShowGameScene = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballShowGameScene.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballShowGameScene(handle, mgBaseballShowGameScene);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_HIDE_GAME_SCENE: // 7. 主界面已隐藏(棒球)
|
||||
SudMGPMGState.MGBaseballHideGameScene mgBaseballHideGameScene = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballHideGameScene.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballHideGameScene(handle, mgBaseballHideGameScene);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_BASEBALL_TEXT_CONFIG: // 8. 获取文本配置数据(棒球)
|
||||
SudMGPMGState.MGBaseballTextConfig mgBaseballTextConfig = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGBaseballTextConfig.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onGameMGBaseballTextConfig(handle, mgBaseballTextConfig);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏玩家状态变化
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param handle 操作
|
||||
* @param userId 用户id
|
||||
* @param state 状态命令
|
||||
* @param dataJson 状态值
|
||||
*/
|
||||
@Override
|
||||
public void onPlayerStateChange(ISudFSMStateHandle handle, String userId, String state, String dataJson) {
|
||||
SudFSMMGListener listener = sudFSMMGListener;
|
||||
if (listener != null && listener.onPlayerStateChange(handle, userId, state, dataJson)) {
|
||||
return;
|
||||
}
|
||||
switch (state) {
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_IN: // 1.加入状态(已修改)
|
||||
SudMGPMGState.MGCommonPlayerIn mgCommonPlayerIn = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerIn.class);
|
||||
sudFSMMGCache.onPlayerMGCommonPlayerIn(userId, mgCommonPlayerIn);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonPlayerIn(handle, userId, mgCommonPlayerIn);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_READY: // 2.准备状态(已修改)
|
||||
SudMGPMGState.MGCommonPlayerReady mgCommonPlayerReady = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerReady.class);
|
||||
sudFSMMGCache.onPlayerMGCommonPlayerReady(userId, mgCommonPlayerReady);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonPlayerReady(handle, userId, mgCommonPlayerReady);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_CAPTAIN: // 3.队长状态(已修改)
|
||||
SudMGPMGState.MGCommonPlayerCaptain mgCommonPlayerCaptain = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerCaptain.class);
|
||||
sudFSMMGCache.onPlayerMGCommonPlayerCaptain(userId, mgCommonPlayerCaptain);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonPlayerCaptain(handle, userId, mgCommonPlayerCaptain);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_PLAYING: // 4.游戏状态(已修改)
|
||||
SudMGPMGState.MGCommonPlayerPlaying mgCommonPlayerPlaying = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerPlaying.class);
|
||||
sudFSMMGCache.onPlayerMGCommonPlayerPlaying(userId, mgCommonPlayerPlaying);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonPlayerPlaying(handle, userId, mgCommonPlayerPlaying);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_ONLINE: // 5.玩家在线状态
|
||||
SudMGPMGState.MGCommonPlayerOnline mgCommonPlayerOnline = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerOnline.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonPlayerOnline(handle, userId, mgCommonPlayerOnline);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_PLAYER_CHANGE_SEAT: // 6.玩家换游戏位状态
|
||||
SudMGPMGState.MGCommonPlayerChangeSeat mgCommonPlayerChangeSeat = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonPlayerChangeSeat.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonPlayerChangeSeat(handle, userId, mgCommonPlayerChangeSeat);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_CLICK_GAME_PLAYER_ICON: // 7. 游戏通知app点击玩家头像
|
||||
SudMGPMGState.MGCommonSelfClickGamePlayerIcon mgCommonSelfClickGamePlayerIcon = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfClickGamePlayerIcon.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonSelfClickGamePlayerIcon(handle, userId, mgCommonSelfClickGamePlayerIcon);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_DIE_STATUS: // 8. 游戏通知app玩家死亡状态(2022-04-24新增)
|
||||
SudMGPMGState.MGCommonSelfDieStatus mgCommonSelfDieStatus = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfDieStatus.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonSelfDieStatus(handle, userId, mgCommonSelfDieStatus);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_TURN_STATUS: // 9. 游戏通知app轮到玩家出手状态(2022-04-24新增)
|
||||
SudMGPMGState.MGCommonSelfTurnStatus mgCommonSelfTurnStatus = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfTurnStatus.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonSelfTurnStatus(handle, userId, mgCommonSelfTurnStatus);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_SELECT_STATUS: // 10. 游戏通知app玩家选择状态(2022-04-24新增)
|
||||
SudMGPMGState.MGCommonSelfSelectStatus mgCommonSelfSelectStatus = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfSelectStatus.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonSelfSelectStatus(handle, userId, mgCommonSelfSelectStatus);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_GAME_COUNTDOWN_TIME: // 11. 游戏通知app层当前游戏剩余时间(2022-05-23新增,目前UMO生效)
|
||||
SudMGPMGState.MGCommonGameCountdownTime mgCommonGameCountdownTime = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonGameCountdownTime.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonGameCountdownTime(handle, userId, mgCommonGameCountdownTime);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_COMMON_SELF_OB_STATUS: // 12. 游戏通知app层当前玩家死亡后变成ob视角(2022-08-23新增,目前狼人杀生效)
|
||||
SudMGPMGState.MGCommonSelfObStatus mgCommonSelfObStatus = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGCommonSelfObStatus.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGCommonSelfObStatus(handle, userId, mgCommonSelfObStatus);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_DG_SELECTING: // 1. 选词中状态(已修改)
|
||||
SudMGPMGState.MGDGSelecting mgdgSelecting = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGDGSelecting.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGDGSelecting(handle, userId, mgdgSelecting);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_DG_PAINTING: // 2. 作画中状态(已修改)
|
||||
SudMGPMGState.MGDGPainting mgdgPainting = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGDGPainting.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGDGPainting(handle, userId, mgdgPainting);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_DG_ERRORANSWER: // 3. 显示错误答案状态(已修改)
|
||||
SudMGPMGState.MGDGErroranswer mgdgErroranswer = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGDGErroranswer.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGDGErroranswer(handle, userId, mgdgErroranswer);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_DG_TOTALSCORE: // 4. 显示总积分状态(已修改)
|
||||
SudMGPMGState.MGDGTotalscore mgdgTotalscore = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGDGTotalscore.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGDGTotalscore(handle, userId, mgdgTotalscore);
|
||||
}
|
||||
break;
|
||||
case SudMGPMGState.MG_DG_SCORE: // 5. 本次获得积分状态(已修改)
|
||||
SudMGPMGState.MGDGScore mgdgScore = SudJsonUtils.fromJson(dataJson, SudMGPMGState.MGDGScore.class);
|
||||
if (listener == null) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
} else {
|
||||
listener.onPlayerMGDGScore(handle, userId, mgdgScore);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** 获取队长userId */
|
||||
public String getCaptainUserId() {
|
||||
return sudFSMMGCache.getCaptainUserId();
|
||||
}
|
||||
|
||||
// 返回该玩家是否正在游戏中
|
||||
public boolean playerIsPlaying(String userId) {
|
||||
return sudFSMMGCache.playerIsPlaying(userId);
|
||||
}
|
||||
|
||||
// 返回该玩家是否已准备
|
||||
public boolean playerIsReady(String userId) {
|
||||
return sudFSMMGCache.playerIsReady(userId);
|
||||
}
|
||||
|
||||
// 返回该玩家是否已加入了游戏
|
||||
public boolean playerIsIn(String userId) {
|
||||
return sudFSMMGCache.playerIsIn(userId);
|
||||
}
|
||||
|
||||
// 获取当前游戏中的人数
|
||||
public int getPlayerInNumber() {
|
||||
return sudFSMMGCache.getPlayerInNumber();
|
||||
}
|
||||
|
||||
// 是否数字炸弹
|
||||
public boolean isHitBomb() {
|
||||
return sudFSMMGCache.isHitBomb();
|
||||
}
|
||||
|
||||
// 销毁游戏
|
||||
public void destroyMG() {
|
||||
sudFSMMGCache.destroyMG();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回当前游戏的状态,数值参数{@link SudMGPMGState.MGCommonGameState}
|
||||
*/
|
||||
public int getGameState() {
|
||||
return sudFSMMGCache.getGameState();
|
||||
}
|
||||
|
||||
/** 获取缓存的状态 */
|
||||
public SudFSMMGCache getSudFSMMGCache() {
|
||||
return sudFSMMGCache;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,740 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.decorator;
|
||||
|
||||
import tech.sud.mgp.SudMGPWrapper.state.SudMGPMGState;
|
||||
import tech.sud.mgp.SudMGPWrapper.utils.ISudFSMStateHandleUtils;
|
||||
import tech.sud.mgp.core.ISudFSMStateHandle;
|
||||
|
||||
/**
|
||||
* {@link SudFSMMGDecorator} 回调定义
|
||||
*/
|
||||
public interface SudFSMMGListener {
|
||||
|
||||
/**
|
||||
* 游戏日志
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
default void onGameLog(String str) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏加载进度
|
||||
*
|
||||
* @param stage 阶段:start=1,loading=2,end=3
|
||||
* @param retCode 错误码:0成功
|
||||
* @param progress 进度:[0, 100]
|
||||
*/
|
||||
default void onGameLoadingProgress(int stage, int retCode, int progress) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏开始,需要实现
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
void onGameStarted();
|
||||
|
||||
/**
|
||||
* 游戏销毁,需要实现
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
void onGameDestroyed();
|
||||
|
||||
/**
|
||||
* Code过期,需要实现
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param dataJson {"code":"value"}
|
||||
*/
|
||||
void onExpireCode(ISudFSMStateHandle handle, String dataJson);
|
||||
|
||||
/**
|
||||
* 获取游戏View信息,需要实现
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param handle
|
||||
* @param dataJson {}
|
||||
*/
|
||||
void onGetGameViewInfo(ISudFSMStateHandle handle, String dataJson);
|
||||
|
||||
/**
|
||||
* 获取游戏Config,需要实现
|
||||
* APP接入方需要调用handle.success或handle.fail
|
||||
*
|
||||
* @param handle
|
||||
* @param dataJson {}
|
||||
* 最低版本:v1.1.30.xx
|
||||
*/
|
||||
void onGetGameCfg(ISudFSMStateHandle handle, String dataJson);
|
||||
|
||||
// region 游戏回调APP 通用状态
|
||||
// 参考文档:https://github.com/SudTechnology/sud-mgp-doc/blob/main/Client/MG%20FSM/%E9%80%9A%E7%94%A8%E7%8A%B6%E6%80%81-%E7%8E%A9%E5%AE%B6.md
|
||||
|
||||
/**
|
||||
* 1.游戏公屏消息
|
||||
* mg_common_public_message
|
||||
*/
|
||||
default void onGameMGCommonPublicMessage(ISudFSMStateHandle handle, SudMGPMGState.MGCommonPublicMessage model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 关键词状态
|
||||
* mg_common_key_word_to_hit
|
||||
*/
|
||||
default void onGameMGCommonKeyWordToHit(ISudFSMStateHandle handle, SudMGPMGState.MGCommonKeyWordToHit model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 游戏结算状态
|
||||
* mg_common_game_settle
|
||||
*/
|
||||
default void onGameMGCommonGameSettle(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSettle model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. 加入游戏按钮点击状态
|
||||
* mg_common_self_click_join_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickJoinBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickJoinBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. 取消加入(退出)游戏按钮点击状态
|
||||
* mg_common_self_click_cancel_join_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickCancelJoinBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickCancelJoinBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 6. 准备按钮点击状态
|
||||
* mg_common_self_click_ready_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickReadyBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickReadyBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 7. 取消准备按钮点击状态
|
||||
* mg_common_self_click_cancel_ready_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickCancelReadyBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickCancelReadyBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 8. 开始游戏按钮点击状态
|
||||
* mg_common_self_click_start_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickStartBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickStartBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 9. 分享按钮点击状态
|
||||
* mg_common_self_click_share_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickShareBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickShareBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 10. 游戏状态
|
||||
* mg_common_game_state
|
||||
*/
|
||||
default void onGameMGCommonGameState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameState model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 11. 结算界面关闭按钮点击状态(2021-12-27新增)
|
||||
* mg_common_self_click_game_settle_close_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickGameSettleCloseBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickGameSettleCloseBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 12. 结算界面再来一局按钮点击状态(2021-12-27新增)
|
||||
* mg_common_self_click_game_settle_again_btn
|
||||
*/
|
||||
default void onGameMGCommonSelfClickGameSettleAgainBtn(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfClickGameSettleAgainBtn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 13. 游戏上报游戏中的声音列表(2021-12-30新增,现在只支持碰碰我最强)
|
||||
* mg_common_game_sound_list
|
||||
*/
|
||||
default void onGameMGCommonGameSoundList(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSoundList model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 14. 游通知app层播放声音(2021-12-30新增,现在只支持碰碰我最强)
|
||||
* mg_common_game_sound
|
||||
*/
|
||||
default void onGameMGCommonGameSound(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSound model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 15. 游戏通知app层播放背景音乐状态(2022-01-07新增,现在只支持碰碰我最强)
|
||||
* mg_common_game_bg_music_state
|
||||
*/
|
||||
default void onGameMGCommonGameBgMusicState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameBgMusicState model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 16. 游戏通知app层播放音效的状态(2022-01-07新增,现在只支持碰碰我最强)
|
||||
* mg_common_game_sound_state
|
||||
*/
|
||||
default void onGameMGCommonGameSoundState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSoundState model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 17. ASR状态(开启和关闭语音识别状态,v1.1.45.xx 版本新增)
|
||||
* mg_common_game_asr
|
||||
*/
|
||||
default void onGameMGCommonGameASR(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameASR model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 18. 麦克风状态(2022-02-08新增)
|
||||
* mg_common_self_microphone
|
||||
*/
|
||||
default void onGameMGCommonSelfMicrophone(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfMicrophone model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 19. 耳机(听筒,扬声器)状态(2022-02-08新增)
|
||||
* mg_common_self_headphone
|
||||
*/
|
||||
default void onGameMGCommonSelfHeadphone(ISudFSMStateHandle handle, SudMGPMGState.MGCommonSelfHeadphone model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 20. App通用状态操作结果错误码(2022-05-10新增)
|
||||
* mg_common_app_common_self_x_resp
|
||||
*/
|
||||
default void onGameMGCommonAPPCommonSelfXResp(ISudFSMStateHandle handle, SudMGPMGState.MGCommonAPPCommonSelfXResp model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 21. 游戏通知app层添加陪玩机器人是否成功(2022-05-17新增)
|
||||
* mg_common_game_add_ai_players
|
||||
*/
|
||||
default void onGameMGCommonGameAddAIPlayers(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameAddAIPlayers model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 22. 游戏通知app层添当前网络连接状态(2022-06-21新增)
|
||||
* mg_common_game_network_state
|
||||
*/
|
||||
default void onGameMGCommonGameNetworkState(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameNetworkState model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 23. 游戏通知app获取积分
|
||||
* mg_common_game_score
|
||||
*/
|
||||
default void onGameMGCommonGameGetScore(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameGetScore model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 24. 游戏通知app带入积分
|
||||
* mg_common_game_set_score
|
||||
*/
|
||||
default void onGameMGCommonGameSetScore(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameSetScore model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 25. 创建订单
|
||||
* mg_common_game_create_order
|
||||
*/
|
||||
default void onGameMGCommonGameCreateOrder(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameCreateOrder model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 26. 游戏通知app玩家角色(仅对狼人杀有效)
|
||||
* mg_common_player_role_id
|
||||
*/
|
||||
default void onGameMGCommonPlayerRoleId(ISudFSMStateHandle handle, SudMGPMGState.MGCommonPlayerRoleId model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
// endregion 游戏回调APP 通用状态
|
||||
|
||||
// region 游戏回调APP 玩家状态
|
||||
|
||||
/**
|
||||
* 1.加入状态(已修改)
|
||||
* mg_common_player_in
|
||||
*/
|
||||
default void onPlayerMGCommonPlayerIn(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonPlayerIn model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2.准备状态(已修改)
|
||||
* mg_common_player_ready
|
||||
*/
|
||||
default void onPlayerMGCommonPlayerReady(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonPlayerReady model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3.队长状态(已修改)
|
||||
* mg_common_player_captain
|
||||
*/
|
||||
default void onPlayerMGCommonPlayerCaptain(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonPlayerCaptain model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 4.游戏状态(已修改)
|
||||
* mg_common_player_playing
|
||||
*/
|
||||
default void onPlayerMGCommonPlayerPlaying(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonPlayerPlaying model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 5.玩家在线状态
|
||||
* mg_common_player_online
|
||||
*/
|
||||
default void onPlayerMGCommonPlayerOnline(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonPlayerOnline model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 6.玩家换游戏位状态
|
||||
* mg_common_player_change_seat
|
||||
*/
|
||||
default void onPlayerMGCommonPlayerChangeSeat(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonPlayerChangeSeat model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 7. 游戏通知app点击玩家头像
|
||||
* mg_common_self_click_game_player_icon
|
||||
*/
|
||||
default void onPlayerMGCommonSelfClickGamePlayerIcon(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonSelfClickGamePlayerIcon model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 8. 游戏通知app玩家死亡状态(2022-04-24新增)
|
||||
* mg_common_self_die_status
|
||||
*/
|
||||
default void onPlayerMGCommonSelfDieStatus(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonSelfDieStatus model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 9. 游戏通知app轮到玩家出手状态(2022-04-24新增)
|
||||
* mg_common_self_turn_status
|
||||
*/
|
||||
default void onPlayerMGCommonSelfTurnStatus(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonSelfTurnStatus model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 10. 游戏通知app玩家选择状态(2022-04-24新增)
|
||||
* mg_common_self_select_status
|
||||
*/
|
||||
default void onPlayerMGCommonSelfSelectStatus(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonSelfSelectStatus model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 11. 游戏通知app层当前游戏剩余时间(2022-05-23新增,目前UMO生效)
|
||||
* mg_common_game_countdown_time
|
||||
*/
|
||||
default void onPlayerMGCommonGameCountdownTime(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonGameCountdownTime model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 12. 游戏通知app层当前玩家死亡后变成ob视角(2022-08-23新增,目前狼人杀生效)
|
||||
* mg_common_self_ob_status
|
||||
*/
|
||||
default void onPlayerMGCommonSelfObStatus(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGCommonSelfObStatus model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
// endregion 游戏回调APP 玩家状态
|
||||
|
||||
// region 游戏回调APP 玩家状态 你画我猜
|
||||
// 参考文档:https://github.com/SudTechnology/sud-mgp-doc/blob/main/Client/MG%20FSM/%E4%BD%A0%E7%94%BB%E6%88%91%E7%8C%9C.md
|
||||
|
||||
/**
|
||||
* 1. 选词中状态(已修改)
|
||||
* mg_dg_selecting
|
||||
*/
|
||||
default void onPlayerMGDGSelecting(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGDGSelecting model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 作画中状态(已修改)
|
||||
* mg_dg_painting
|
||||
*/
|
||||
default void onPlayerMGDGPainting(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGDGPainting model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 显示错误答案状态(已修改)
|
||||
* mg_dg_erroranswer
|
||||
*/
|
||||
default void onPlayerMGDGErroranswer(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGDGErroranswer model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. 显示总积分状态(已修改)
|
||||
* mg_dg_totalscore
|
||||
*/
|
||||
default void onPlayerMGDGTotalscore(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGDGTotalscore model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. 本次获得积分状态(已修改)
|
||||
* mg_dg_score
|
||||
*/
|
||||
default void onPlayerMGDGScore(ISudFSMStateHandle handle, String userId, SudMGPMGState.MGDGScore model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
// endregion 游戏回调APP 玩家状态 你画我猜
|
||||
|
||||
// region 游戏回调APP 通用状态 元宇宙砂砂舞
|
||||
|
||||
/**
|
||||
* 1. 元宇宙砂砂舞指令回调
|
||||
* mg_common_game_disco_action
|
||||
*/
|
||||
default void onGameMGCommonGameDiscoAction(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameDiscoAction model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 元宇宙砂砂舞指令动作结束通知
|
||||
* mg_common_game_disco_action_end
|
||||
*/
|
||||
default void onGameMGCommonGameDiscoActionEnd(ISudFSMStateHandle handle, SudMGPMGState.MGCommonGameDiscoActionEnd model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
// endregion 游戏回调APP 通用状态 元宇宙砂砂舞
|
||||
|
||||
// region 游戏回调APP 通用状态 定制火箭
|
||||
|
||||
/**
|
||||
* 1. 礼物配置文件(火箭)
|
||||
* mg_custom_rocket_config
|
||||
*/
|
||||
default void onGameMGCustomRocketConfig(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketConfig model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 拥有模型列表(火箭)
|
||||
* mg_custom_rocket_model_list
|
||||
*/
|
||||
default void onGameMGCustomRocketModelList(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketModelList model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 拥有组件列表(火箭)
|
||||
* mg_custom_rocket_component_list
|
||||
*/
|
||||
default void onGameMGCustomRocketComponentList(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketComponentList model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. 获取用户信息(火箭)
|
||||
* mg_custom_rocket_user_info
|
||||
*/
|
||||
default void onGameMGCustomRocketUserInfo(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketUserInfo model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. 订单记录列表(火箭)
|
||||
* mg_custom_rocket_order_record_list
|
||||
*/
|
||||
default void onGameMGCustomRocketOrderRecordList(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketOrderRecordList model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 6. 展馆内列表(火箭)
|
||||
* mg_custom_rocket_room_record_list
|
||||
*/
|
||||
default void onGameMGCustomRocketRoomRecordList(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketRoomRecordList model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 7. 展馆内玩家送出记录(火箭)
|
||||
* mg_custom_rocket_user_record_list
|
||||
*/
|
||||
default void onGameMGCustomRocketUserRecordList(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketUserRecordList model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 8. 设置默认模型(火箭)
|
||||
* mg_custom_rocket_set_default_model
|
||||
*/
|
||||
default void onGameMGCustomRocketSetDefaultModel(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketSetDefaultModel model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 9. 动态计算一键发送价格(火箭)
|
||||
* mg_custom_rocket_dynamic_fire_price
|
||||
*/
|
||||
default void onGameMGCustomRocketDynamicFirePrice(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketDynamicFirePrice model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 10. 一键发送(火箭)
|
||||
* mg_custom_rocket_fire_model
|
||||
*/
|
||||
default void onGameMGCustomRocketFireModel(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketFireModel model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 11. 新组装模型(火箭)
|
||||
* mg_custom_rocket_create_model
|
||||
*/
|
||||
default void onGameMGCustomRocketCreateModel(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketCreateModel model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 12. 模型更换组件(火箭)
|
||||
* mg_custom_rocket_replace_component
|
||||
*/
|
||||
default void onGameMGCustomRocketReplaceComponent(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketReplaceComponent model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 13. 购买组件(火箭)
|
||||
* mg_custom_rocket_buy_component
|
||||
*/
|
||||
default void onGameMGCustomRocketBuyComponent(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketBuyComponent model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 14. 播放效果开始(火箭)
|
||||
* mg_custom_rocket_play_effect_start
|
||||
*/
|
||||
default void onGameMGCustomRocketPlayEffectStart(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketPlayEffectStart model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 15. 播放效果完成(火箭)
|
||||
* mg_custom_rocket_play_effect_finish
|
||||
*/
|
||||
default void onGameMGCustomRocketPlayEffectFinish(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketPlayEffectFinish model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 16. 验证签名合规(火箭)
|
||||
* mg_custom_rocket_verify_sign
|
||||
*/
|
||||
default void onGameMGCustomRocketVerifySign(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketVerifySign model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 17. 上传icon(火箭)
|
||||
* mg_custom_rocket_upload_model_icon
|
||||
*/
|
||||
default void onGameMGCustomRocketUploadModelIcon(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketUploadModelIcon model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 18. 前期准备完成(火箭)
|
||||
* mg_custom_rocket_prepare_finish
|
||||
*/
|
||||
default void onGameMGCustomRocketPrepareFinish(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketPrepareFinish model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 19. 火箭主界面已显示(火箭)
|
||||
* mg_custom_rocket_show_game_scene
|
||||
*/
|
||||
default void onGameMGCustomRocketShowGameScene(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketShowGameScene model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 20. 火箭主界面已隐藏(火箭)
|
||||
* mg_custom_rocket_hide_game_scene
|
||||
*/
|
||||
default void onGameMGCustomRocketHideGameScene(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketHideGameScene model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 21. 点击锁住组件(火箭)
|
||||
* mg_custom_rocket_click_lock_component
|
||||
*/
|
||||
default void onGameMGCustomRocketClickLockComponent(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketClickLockComponent model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 22. 火箭效果飞行点击(火箭)
|
||||
* mg_custom_rocket_fly_click
|
||||
*/
|
||||
default void onGameMGCustomRocketFlyClick(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketFlyClick model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 23. 火箭效果飞行结束(火箭)
|
||||
* mg_custom_rocket_fly_end
|
||||
*/
|
||||
default void onGameMGCustomRocketFlyEnd(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketFlyEnd model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 24. 设置点击区域(火箭)
|
||||
* mg_custom_rocket_set_click_rect
|
||||
*/
|
||||
default void onGameMGCustomRocketSetClickRect(ISudFSMStateHandle handle, SudMGPMGState.MGCustomRocketSetClickRect model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
// endregion 游戏回调APP 通用状态 定制火箭
|
||||
|
||||
// region 游戏回调APP 通用状态 棒球
|
||||
|
||||
/**
|
||||
* 1. 查询排行榜数据(棒球)
|
||||
* mg_baseball_ranking
|
||||
*/
|
||||
default void onGameMGBaseballRanking(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballRanking model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 查询我的排名(棒球)
|
||||
* mg_baseball_my_ranking
|
||||
*/
|
||||
default void onGameMGBaseballMyRanking(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballMyRanking model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 查询当前距离我的前后玩家数据(棒球)
|
||||
* mg_baseball_range_info
|
||||
*/
|
||||
default void onGameMGBaseballRangeInfo(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballRangeInfo model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. 设置app提供给游戏可点击区域(棒球)
|
||||
* mg_baseball_set_click_rect
|
||||
*/
|
||||
default void onGameMGBaseballSetClickRect(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballSetClickRect model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. 前期准备完成(棒球)
|
||||
* mg_baseball_prepare_finish
|
||||
*/
|
||||
default void onGameMGBaseballPrepareFinish(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballPrepareFinish model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 6. 主界面已显示(棒球)
|
||||
* mg_baseball_show_game_scene
|
||||
*/
|
||||
default void onGameMGBaseballShowGameScene(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballShowGameScene model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 7. 主界面已隐藏(棒球)
|
||||
* mg_baseball_hide_game_scene
|
||||
*/
|
||||
default void onGameMGBaseballHideGameScene(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballHideGameScene model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 8. 获取文本配置数据(棒球)
|
||||
* mg_baseball_text_config
|
||||
*/
|
||||
default void onGameMGBaseballTextConfig(ISudFSMStateHandle handle, SudMGPMGState.MGBaseballTextConfig model) {
|
||||
ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
}
|
||||
// endregion 游戏回调APP 通用状态 棒球
|
||||
|
||||
/**
|
||||
* 游戏状态变化
|
||||
* 透传游戏向App发送的游戏通用状态消息
|
||||
* **********使用此方法可先看下此方法的使用逻辑*************
|
||||
*
|
||||
* @param handle 回调操作
|
||||
* @param state 状态命令
|
||||
* @param dataJson 状态值
|
||||
* @return 返回true,表示由此方法接管该状态处理,此时需注意调用:ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
*/
|
||||
default boolean onGameStateChange(ISudFSMStateHandle handle, String state, String dataJson) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 游戏玩家状态变化
|
||||
* 透传游戏向App发送的玩家状态变化
|
||||
* **********使用此方法可先看下此方法的使用逻辑*************
|
||||
*
|
||||
* @param handle 回调操作
|
||||
* @param userId 用户Id
|
||||
* @param state 状态命令
|
||||
* @param dataJson 状态值
|
||||
* @return 返回true,表示由此方法接管该状态处理,此时需注意调用:ISudFSMStateHandleUtils.handleSuccess(handle);
|
||||
*/
|
||||
default boolean onPlayerStateChange(ISudFSMStateHandle handle, String userId, String state, String dataJson) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,446 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.decorator;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.List;
|
||||
|
||||
import tech.sud.mgp.SudMGPWrapper.state.SudMGPAPPState;
|
||||
import tech.sud.mgp.SudMGPWrapper.utils.SudJsonUtils;
|
||||
import tech.sud.mgp.core.ISudFSTAPP;
|
||||
import tech.sud.mgp.core.ISudListenerNotifyStateChange;
|
||||
|
||||
/**
|
||||
* ISudFSTAPP的装饰类,接近于业务
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/API/ISudFSTAPP.html
|
||||
* 注意:
|
||||
* 1,向游戏侧发送状态之后,不能立即调用destroyMG()方法,也不能立即finish Activity。例如:{@link SudFSTAPPDecorator#notifyAPPCommonSelfEnd()}
|
||||
*/
|
||||
public class SudFSTAPPDecorator {
|
||||
|
||||
/**
|
||||
* APP调用游戏的接口
|
||||
*/
|
||||
private ISudFSTAPP iSudFSTAPP;
|
||||
|
||||
/**
|
||||
* 设置app调用sdk的对象
|
||||
*
|
||||
* @param iSudFSTAPP
|
||||
*/
|
||||
public void setISudFSTAPP(ISudFSTAPP iSudFSTAPP) {
|
||||
this.iSudFSTAPP = iSudFSTAPP;
|
||||
}
|
||||
|
||||
// region 状态通知,ISudFSTAPP.notifyStateChange
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 1. 加入状态
|
||||
*
|
||||
* @param isIn true 加入游戏,false 退出游戏
|
||||
* @param seatIndex 加入的游戏位(座位号) 默认传seatIndex = -1 随机加入,seatIndex 从0开始,不可大于座位数
|
||||
* @param isSeatRandom 默认为ture, 带有游戏位(座位号)的时候,如果游戏位(座位号)已经被占用,是否随机分配一个空位坐下 isSeatRandom=true 随机分配空位坐下,isSeatRandom=false 不随机分配
|
||||
* @param teamId 不支持分队的游戏:数值填1;支持分队的游戏:数值填1或2(两支队伍);
|
||||
*/
|
||||
public void notifyAPPCommonSelfIn(boolean isIn, int seatIndex, boolean isSeatRandom, int teamId) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfIn state = new SudMGPAPPState.APPCommonSelfIn();
|
||||
state.isIn = isIn;
|
||||
state.seatIndex = seatIndex;
|
||||
state.isSeatRandom = isSeatRandom;
|
||||
state.teamId = teamId;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_IN, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 2. 准备状态
|
||||
* 用户(本人)准备/取消准备
|
||||
*
|
||||
* @param isReady true 准备,false 取消准备
|
||||
*/
|
||||
public void notifyAPPCommonSelfReady(boolean isReady) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfReady state = new SudMGPAPPState.APPCommonSelfReady();
|
||||
state.isReady = isReady;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_READY, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 3. 游戏状态 模型
|
||||
* 用户游戏状态,如果用户在游戏中,建议:
|
||||
* a.空出屏幕中心区:
|
||||
* 关闭全屏礼物特效;
|
||||
* b.部分强操作类小游戏(spaceMax为true),尽量收缩原生UI,给游戏留出尽量大的操作空间:
|
||||
* 收缩公屏;
|
||||
* 收缩麦位;
|
||||
* 如果不在游戏中,则恢复。
|
||||
*
|
||||
* @param isPlaying true 开始游戏,false 结束游戏
|
||||
* @param reportGameInfoExtras string类型,Https服务回调report_game_info参数,最大长度1024字节,超过则截断(2022-01-21)
|
||||
*/
|
||||
public void notifyAPPCommonSelfPlaying(boolean isPlaying, String reportGameInfoExtras, String reportGameInfoKey) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfPlaying state = new SudMGPAPPState.APPCommonSelfPlaying();
|
||||
state.isPlaying = isPlaying;
|
||||
state.reportGameInfoExtras = reportGameInfoExtras;
|
||||
state.reportGameInfoKey = reportGameInfoKey;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_PLAYING, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 4. 队长状态
|
||||
* 用户是否为队长,队长在游戏中会有开始游戏的权利。
|
||||
* 发送此状态后,会把队长身份转移到另一名用户身上。
|
||||
* 注意:必须是队长发送才有效果。可通过{@link SudFSMMGDecorator#getCaptainUserId()}拿到当前队长id
|
||||
*
|
||||
* @param curCaptainUID 必填,指定队长uid
|
||||
*/
|
||||
public void notifyAPPCommonSelfCaptain(String curCaptainUID) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfCaptain state = new SudMGPAPPState.APPCommonSelfCaptain();
|
||||
state.curCaptainUID = curCaptainUID;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_CAPTAIN, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 5. 踢人
|
||||
* 用户(本人,队长)踢其他玩家;
|
||||
* 队长才能踢人;
|
||||
*
|
||||
* @param kickedUID 被踢用户uid
|
||||
*/
|
||||
public void notifyAPPCommonSelfKick(String kickedUID) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfKick state = new SudMGPAPPState.APPCommonSelfKick();
|
||||
state.kickedUID = kickedUID;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_KICK, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 6. 结束游戏
|
||||
* 用户(本人,队长)结束(本局)游戏
|
||||
* 注意:必须是队长发送才有效果。可通过{@link SudFSMMGDecorator#getCaptainUserId()}拿到当前队长id
|
||||
*/
|
||||
public void notifyAPPCommonSelfEnd() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfEnd state = new SudMGPAPPState.APPCommonSelfEnd();
|
||||
// 使用iSudFSTAPP.notifyStateChange方法向游戏侧发送状态时,因为大部分状态都需要通过网络向后端发送状态指令
|
||||
// 所以如果发送状态后,马上就销毁游戏或者Activity,那么状态指令大概率会不生效
|
||||
// *** 如果要确保指令能到达后端,那么发送指令后不要立即destroyMG()或finish Activity,可在发送后delay一定时间(如300 or 500 ms)再销毁
|
||||
// *** 如果不在乎指令是否能成功到达,可忽略delay
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_END, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 9. 麦克风状态
|
||||
* 用户(本人)麦克风状态,建议:
|
||||
* 进入房间后初始通知一次;
|
||||
* 每次变更(开麦/闭麦/禁麦/解麦)通知一次;
|
||||
*
|
||||
* @param isOn true 开麦,false 闭麦
|
||||
* @param isDisabled true 被禁麦,false 未被禁麦
|
||||
*/
|
||||
public void notifyAPPCommonSelfMicrophone(boolean isOn, boolean isDisabled) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfMicrophone state = new SudMGPAPPState.APPCommonSelfMicrophone();
|
||||
state.isOn = isOn;
|
||||
state.isDisabled = isDisabled;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_MICROPHONE, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 10. 文字命中状态
|
||||
* 用户(本人)聊天信息命中关键词状态,建议:
|
||||
* 精确匹配;
|
||||
* 首次聊天内容命中关键词之后,后续聊天内容不翻转成未命中;
|
||||
* 直至小游戏侧关键词更新,再将状态翻转为未命中;
|
||||
*
|
||||
* @param isHit true 命中,false 未命中
|
||||
* @param keyWord 单个关键词, 兼容老版本
|
||||
* @param text 返回转写文本
|
||||
* @param wordType text:文本包含匹配; number:数字等于匹配
|
||||
* @param keyWordList 命中关键词,可以包含多个关键词
|
||||
* @param numberList 在number模式下才有,返回转写的多个数字
|
||||
*/
|
||||
public void notifyAPPCommonSelfTextHitState(boolean isHit, String keyWord, String text,
|
||||
String wordType, List<String> keyWordList, List<Integer> numberList) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonSelfTextHitState state = new SudMGPAPPState.APPCommonSelfTextHitState();
|
||||
state.isHit = isHit;
|
||||
state.keyWord = keyWord;
|
||||
state.text = text;
|
||||
state.wordType = wordType;
|
||||
state.keyWordList = keyWordList;
|
||||
state.numberList = numberList;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_SELF_TEXT_HIT, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 11. 打开或关闭背景音乐(2021-12-27新增)
|
||||
*
|
||||
* @param isOpen true 打开背景音乐,false 关闭背景音乐
|
||||
*/
|
||||
public void notifyAPPCommonOpenBgMusic(boolean isOpen) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonOpenBgMusic state = new SudMGPAPPState.APPCommonOpenBgMusic();
|
||||
state.isOpen = isOpen;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_OPEN_BG_MUSIC, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 12. 打开或关闭音效(2021-12-27新增)
|
||||
*
|
||||
* @param isOpen true 打开音效,false 关闭音效
|
||||
*/
|
||||
public void notifyAPPCommonOpenSound(boolean isOpen) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonOpenSound state = new SudMGPAPPState.APPCommonOpenSound();
|
||||
state.isOpen = isOpen;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_OPEN_SOUND, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 13. 打开或关闭游戏中的振动效果(2021-12-27新增)
|
||||
*
|
||||
* @param isOpen 打开振动效果,false 关闭振动效果
|
||||
*/
|
||||
public void notifyAPPCommonOpenVibrate(boolean isOpen) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonOpenVibrate state = new SudMGPAPPState.APPCommonOpenVibrate();
|
||||
state.isOpen = isOpen;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_OPEN_VIBRATE, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 14. 设置游戏的音量大小(2021-12-31新增)
|
||||
*
|
||||
* @param volume 音量大小 0 到 100
|
||||
*/
|
||||
public void notifyAPPCommonGameSoundVolume(int volume) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonGameSoundVolume state = new SudMGPAPPState.APPCommonGameSoundVolume();
|
||||
state.volume = volume;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_GAME_SOUND_VOLUME, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 15. 设置游戏玩法选项(2022-05-10新增)
|
||||
*
|
||||
* @param ludo ludo游戏
|
||||
*/
|
||||
public void notifyAPPCommonGameSettingSelectInfo(SudMGPAPPState.Ludo ludo) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonGameSettingSelectInfo state = new SudMGPAPPState.APPCommonGameSettingSelectInfo();
|
||||
state.ludo = ludo;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_GAME_SETTING_SELECT_INFO, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 16. 设置游戏中的AI玩家(2022-05-11新增)
|
||||
* 队长设置才有效
|
||||
*
|
||||
* @param aiPlayers AI玩家
|
||||
* @param isReady 机器人加入后是否自动准备 1:自动准备,0:不自动准备 默认为1
|
||||
*/
|
||||
public void notifyAPPCommonGameAddAIPlayers(List<SudMGPAPPState.AIPlayers> aiPlayers, int isReady) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonGameAddAIPlayers state = new SudMGPAPPState.APPCommonGameAddAIPlayers();
|
||||
state.aiPlayers = aiPlayers;
|
||||
state.isReady = isReady;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_GAME_ADD_AI_PLAYERS, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 17. app在收到游戏断开连接通知后,通知游戏重试连接(2022-06-21新增,暂时支持ludo)
|
||||
*/
|
||||
public void notifyAPPCommonGameReconnect() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonGameReconnect state = new SudMGPAPPState.APPCommonGameReconnect();
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_GAME_RECONNECT, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 18. app返回玩家当前积分
|
||||
*/
|
||||
public void notifyAPPCommonGameScore(long score) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.APPCommonGameScore state = new SudMGPAPPState.APPCommonGameScore();
|
||||
state.score = score;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_GAME_SCORE, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
// endregion 状态通知,ISudFSTAPP.notifyStateChange
|
||||
|
||||
// region 生命周期
|
||||
public void startMG() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.startMG();
|
||||
}
|
||||
}
|
||||
|
||||
public void pauseMG() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.pauseMG();
|
||||
}
|
||||
}
|
||||
|
||||
public void playMG() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.playMG();
|
||||
}
|
||||
}
|
||||
|
||||
public void stopMG() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.stopMG();
|
||||
}
|
||||
}
|
||||
|
||||
public void destroyMG() {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.destroyMG();
|
||||
}
|
||||
}
|
||||
|
||||
// endregion 生命周期
|
||||
|
||||
/**
|
||||
* 更新code
|
||||
*
|
||||
* @param code
|
||||
* @param listener
|
||||
*/
|
||||
public void updateCode(String code, ISudListenerNotifyStateChange listener) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.updateCode(code, listener);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 音频流数据
|
||||
*/
|
||||
public void pushAudio(ByteBuffer buffer, int bufferLength) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.pushAudio(buffer, bufferLength);
|
||||
}
|
||||
}
|
||||
|
||||
// region 元宇宙砂砂舞
|
||||
|
||||
/**
|
||||
* 发送
|
||||
* 1. 元宇宙砂砂舞相关设置
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/APPFST/CommonStateForDisco.html
|
||||
*
|
||||
* @param actionId 必传的参数,用于指定类型的序号,不同序号用于区分游戏内的不同功能,不传则会判断为无效指令,具体序号代表的功能见下表
|
||||
* @param cooldown 持续时间,单位秒,部分功能有持续时间就需要传对应的数值,不传或传错则会按各自功能的默认值处理(见下表)
|
||||
* @param isTop 是否置顶,针对部分功能可排队置顶(false:不置顶;true:置顶;默认为false)
|
||||
* @param field1 额外参数1,针对部分功能有具体的意义
|
||||
* @param field2 额外参数2,针对部分功能有具体的意义
|
||||
*/
|
||||
public void notifyAppCommonGameDiscoAction(int actionId, Integer cooldown, Boolean isTop, String field1, String field2) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
SudMGPAPPState.AppCommonGameDiscoAction state = new SudMGPAPPState.AppCommonGameDiscoAction();
|
||||
state.actionId = actionId;
|
||||
state.cooldown = cooldown;
|
||||
state.isTop = isTop;
|
||||
state.field1 = field1;
|
||||
state.field2 = field2;
|
||||
iSudFSTAPP.notifyStateChange(SudMGPAPPState.APP_COMMON_GAME_DISCO_ACTION, SudJsonUtils.toJson(state), null);
|
||||
}
|
||||
}
|
||||
// endregion 元宇宙砂砂舞
|
||||
|
||||
/**
|
||||
* APP状态通知给小游戏
|
||||
*
|
||||
* @param state 状态标识
|
||||
* @param dataJson 数据
|
||||
* @param listener 回调监听
|
||||
*/
|
||||
public void notifyStateChange(String state, String dataJson, ISudListenerNotifyStateChange listener) {
|
||||
ISudFSTAPP iSudFSTAPP = this.iSudFSTAPP;
|
||||
if (iSudFSTAPP != null) {
|
||||
iSudFSTAPP.notifyStateChange(state, dataJson, listener);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* APP状态通知给小游戏
|
||||
*
|
||||
* @param state 状态标识
|
||||
* @param dataJson 数据
|
||||
*/
|
||||
public void notifyStateChange(String state, String dataJson) {
|
||||
notifyStateChange(state, dataJson, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* APP状态通知给小游戏
|
||||
*
|
||||
* @param state 状态标识
|
||||
* @param obj 数据
|
||||
*/
|
||||
public void notifyStateChange(String state, Object obj) {
|
||||
notifyStateChange(state, SudJsonUtils.toJson(obj), null);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 游戏配置模型
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG/onGetGameCfg.html
|
||||
*/
|
||||
public class GameConfigModel implements Serializable {
|
||||
|
||||
public int gameMode = 1; // 游戏模式(每个游戏默认模式是1,不填是1)
|
||||
public int gameCPU = 0; // 游戏CPU(值为0和1;0:CPU正常功耗,1:CPU低功耗;默认是0,CPU正常功耗)
|
||||
public int gameSoundControl = 0; // 游戏中声音的播放是否被app层接管(值为0和1;0:游戏播放声音,1:app层播放声音,游戏中不播放任何声音;默认是0)
|
||||
public int gameSoundVolume = 100; // 游戏中音量的大小(值为0到100;默认是100)
|
||||
public GameUi ui = new GameUi(); // 对游戏ui界面的配置,可定制ui界面的显示与不显示
|
||||
|
||||
// 游戏配置中,ui部分
|
||||
public static class GameUi implements Serializable {
|
||||
public GameSettle gameSettle = new GameSettle(); // 结算界面
|
||||
public GamePing ping = new GamePing(); // 界面中的ping值
|
||||
public GameVersion version = new GameVersion(); // 界面中的版本信息值
|
||||
public GameLevel level = new GameLevel(); // 大厅中的段位信息
|
||||
public GameLobbySettingBtn lobby_setting_btn = new GameLobbySettingBtn(); // 大厅的设置按钮
|
||||
public GameLobbyHelpBtn lobby_help_btn = new GameLobbyHelpBtn(); // 大厅的帮助按钮
|
||||
public GameLobbyPlayers lobby_players = new GameLobbyPlayers(); // 大厅玩家展示位
|
||||
public GameLobbyPlayerCaptainIcon lobby_player_captain_icon = new GameLobbyPlayerCaptainIcon(); // 大厅玩家展示位上队长标识
|
||||
public GameLobbyPlayerKickoutIcon lobby_player_kickout_icon = new GameLobbyPlayerKickoutIcon(); // 大厅玩家展示位上踢人标识
|
||||
public GameLobbyRule lobby_rule = new GameLobbyRule(); // 大厅的玩法规则描述文字
|
||||
public GameLobbyGameSetting lobby_game_setting = new GameLobbyGameSetting(); // 玩法设置
|
||||
public GameJoinBtn join_btn = new GameJoinBtn(); // 加入按钮
|
||||
public GameCancelJoinBtn cancel_join_btn = new GameCancelJoinBtn(); // 取消加入按钮
|
||||
public GameReadyBtn ready_btn = new GameReadyBtn(); // 准备按钮
|
||||
public GameCancelReadyBtn cancel_ready_btn = new GameCancelReadyBtn(); // 取消准备按钮
|
||||
public GameStartBtn start_btn = new GameStartBtn(); // 开始按钮
|
||||
public GameShareBtn share_btn = new GameShareBtn(); // 分享
|
||||
public GameSttingBtn game_setting_btn = new GameSttingBtn(); // 游戏场景中的设置按钮
|
||||
public GameHelpBtn game_help_btn = new GameHelpBtn(); // 游戏场景中的帮助按钮
|
||||
public GameSettleCloseBtn game_settle_close_btn = new GameSettleCloseBtn(); // 游戏结算界面中的关闭按钮
|
||||
public GameSettleAgainBtn game_settle_again_btn = new GameSettleAgainBtn(); // 游戏结算界面中的再来一局按钮
|
||||
public GameBg game_bg = new GameBg();// 是否隐藏背景图,包括大厅和战斗
|
||||
public BlockChangeSeat block_change_seat = new BlockChangeSeat(); // 自定义阻止换座位
|
||||
public GameSettingSelectPnl game_setting_select_pnl = new GameSettingSelectPnl(); // 大厅中的玩法选择设置面板
|
||||
public GameManagedImage game_managed_image = new GameManagedImage(); // 游戏中的托管图标
|
||||
public GameTableImage game_table_image = new GameTableImage(); // 游戏中牌桌背景图 (注:只对某些带牌桌类游戏有作用)
|
||||
public GameCountdownTime game_countdown_time = new GameCountdownTime(); // 游戏中游戏倒计时显示 (注:现在只针对umo生效)
|
||||
public GameSelectedTips game_selected_tips = new GameSelectedTips(); // 游戏中所选择的玩法提示文字 (注:现在只针对ludo生效)
|
||||
public NFTAvatar nft_avatar = new NFTAvatar(); // 控制NFT头像的开关
|
||||
public GameOpening game_opening = new GameOpening(); // 控制开场动画的开关
|
||||
public GameMvp game_mvp = new GameMvp(); // 游戏结算前的mvp动画
|
||||
public UmoIcon umo_icon = new UmoIcon(); // 游戏中动画和头像右上角的UMO图标
|
||||
public Logo logo = new Logo(); // 大厅中的logo
|
||||
public GamePlayers game_players = new GamePlayers(); // 游戏中的游戏位
|
||||
}
|
||||
|
||||
// 结算界面
|
||||
public static class GameSettle implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏结算界面(false: 显示; true: 隐藏,默认为 false)
|
||||
}
|
||||
|
||||
// 界面中的ping值
|
||||
public static class GamePing implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏ping值(false: 显示;true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 界面中的版本信息值
|
||||
public static class GameVersion implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏版本信息(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅中的段位信息
|
||||
public static class GameLevel implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏段位信息(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅的设置按钮
|
||||
public static class GameLobbySettingBtn implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏大厅的设置按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅的帮助按钮
|
||||
public static class GameLobbyHelpBtn implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏大厅的帮助按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅玩家展示位
|
||||
public static class GameLobbyPlayers implements Serializable {
|
||||
public boolean custom = false; // 大厅玩家展示位头像点击加入(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = false; // 是否隐藏大厅玩家展示位(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅玩家展示位上队长标识
|
||||
public static class GameLobbyPlayerCaptainIcon implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏大厅玩家展示位上队长标识(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅玩家展示位上踢人标识
|
||||
public static class GameLobbyPlayerKickoutIcon implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏大厅玩家展示位上踢人标识(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 大厅的玩法规则描述文字
|
||||
public static class GameLobbyRule implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏大厅的玩法规则描述文字(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 玩法设置
|
||||
public static class GameLobbyGameSetting implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏玩法设置(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 加入按钮
|
||||
public static class GameJoinBtn implements Serializable {
|
||||
public boolean custom = false; // 加入按钮(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = false; // 是否隐藏加入按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 取消加入按钮
|
||||
public static class GameCancelJoinBtn implements Serializable {
|
||||
public boolean custom = false; // 取消加入按钮(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = false; // 是否隐藏取消加入按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 准备按钮
|
||||
public static class GameReadyBtn implements Serializable {
|
||||
public boolean custom = false; // 准备按钮(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = false; // 是否隐藏准备按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 取消准备按钮
|
||||
public static class GameCancelReadyBtn implements Serializable {
|
||||
public boolean custom = false; // 取消准备按钮(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = false; // 是否隐藏取消准备按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 开始游戏按钮
|
||||
public static class GameStartBtn implements Serializable {
|
||||
public boolean custom = false; // 开始游戏按钮(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = false; // 是否隐藏开始游戏按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 分享按钮
|
||||
public static class GameShareBtn implements Serializable {
|
||||
public boolean custom = false; // 分享按钮(false: 游戏处理逻辑; true: 游戏只通知按钮点击事件,不处理;默认为false)
|
||||
public boolean hide = true; // 是否隐藏分享按钮(false: 显示; true: 隐藏,默认为true)
|
||||
}
|
||||
|
||||
// 游戏场景中的设置按钮
|
||||
public static class GameSttingBtn implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏游戏场景中的设置按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 游戏场景中的帮助按钮
|
||||
public static class GameHelpBtn implements Serializable {
|
||||
public boolean hide = false; // 是否隐藏游戏场景中的帮助按钮(false: 显示; true: 隐藏,默认为false)
|
||||
}
|
||||
|
||||
// 游戏结算界面中的关闭按钮
|
||||
public static class GameSettleCloseBtn implements Serializable {
|
||||
public boolean custom = false; // 游戏结算界面中的关闭按钮(false: 关闭结算界面返回大厅; true: 游戏通知按钮点击事件,并关闭结算界面返回大厅;默认为false)
|
||||
}
|
||||
|
||||
// 游戏结算界面中的再来一局按钮
|
||||
public static class GameSettleAgainBtn implements Serializable {
|
||||
// 游戏结算界面中的再来一局按钮
|
||||
// (false: 关闭结算界面返回大厅并将玩家设置为准备状态; true: 游戏通知按钮点击事件,并关闭结算界面返回大厅(不将玩家设置为准备状态);默认为false)
|
||||
public boolean custom = false;
|
||||
|
||||
// 是否隐藏结算界面中的『再来一局』按钮(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 是否隐藏背景图,包括大厅和战斗
|
||||
// !!!这里只隐藏加载完成后的背景图,加载中背景图如需隐藏则调用:{SudMGP.getCfg().setShowLoadingGameBg(false); }
|
||||
public static class GameBg implements Serializable {
|
||||
//(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 自定义阻止换座位
|
||||
public static class BlockChangeSeat implements Serializable {
|
||||
//(false: 可以换座位; true: 不可以换座位;默认为false)
|
||||
public boolean custom = false;
|
||||
}
|
||||
|
||||
// 大厅中的玩法选择设置面板
|
||||
public static class GameSettingSelectPnl implements Serializable {
|
||||
// 是否隐藏大厅中的玩法选择设置面板(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 游戏中的托管图标
|
||||
public static class GameManagedImage implements Serializable {
|
||||
// 是否隐藏游戏中的托管图标(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 游戏中牌桌背景图 (注:只对某些带牌桌类游戏有作用)
|
||||
public static class GameTableImage implements Serializable {
|
||||
// 是否隐藏游戏牌桌背景图(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 游戏中游戏倒计时显示 (注:现在只针对umo生效)
|
||||
public static class GameCountdownTime implements Serializable {
|
||||
// 是否隐藏游戏中游戏倒计时显示(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 游戏中所选择的玩法提示文字 (注:现在只针对ludo生效)
|
||||
public static class GameSelectedTips implements Serializable {
|
||||
// 是否隐藏游戏中所选择的玩法提示文字显示(false: 显示; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 控制NFT头像的开关
|
||||
public static class NFTAvatar implements Serializable {
|
||||
// true隐藏 false显示
|
||||
public boolean hide = true;
|
||||
}
|
||||
|
||||
// 控制开场动画的开关
|
||||
public static class GameOpening implements Serializable {
|
||||
// true隐藏 false显示
|
||||
public boolean hide = true;
|
||||
}
|
||||
|
||||
// 游戏结算前的mvp动画
|
||||
public static class GameMvp implements Serializable {
|
||||
// true隐藏 false显示
|
||||
public boolean hide = true;
|
||||
}
|
||||
|
||||
// 游戏中动画和头像右上角的UMO图标
|
||||
public static class UmoIcon implements Serializable {
|
||||
// 是否隐藏游戏中动画和头像右上角的UMO图标并改为UNO(false: 不隐藏,依然显示UMO; true: 隐藏,改为显示UNO,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 大厅中的logo
|
||||
public static class Logo implements Serializable {
|
||||
// 是否隐藏大厅中的logo(false: 不隐藏; true: 隐藏,默认为false)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
// 游戏中的游戏位
|
||||
public static class GamePlayers implements Serializable {
|
||||
// 是否隐藏游戏中的游戏位(false: 不隐藏; true: 隐藏,默认为false,暂时只支持你画我猜)
|
||||
public boolean hide = false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.model;
|
||||
|
||||
/**
|
||||
* 游戏视图
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/API/ISudFSMMG/onGetGameViewInfo.html
|
||||
*/
|
||||
public class GameViewInfoModel {
|
||||
// 返回码
|
||||
public int ret_code;
|
||||
|
||||
// 返回消息
|
||||
public String ret_msg;
|
||||
|
||||
// 游戏View的大小
|
||||
public GameViewSizeModel view_size = new GameViewSizeModel();
|
||||
|
||||
// 游戏安全操作区域
|
||||
public GameViewRectModel view_game_rect = new GameViewRectModel();
|
||||
|
||||
public static class GameViewSizeModel {
|
||||
// 游戏View的宽 (单位像素)
|
||||
public int width;
|
||||
|
||||
// 游戏View的高 (单位像素)
|
||||
public int height;
|
||||
}
|
||||
|
||||
public static class GameViewRectModel {
|
||||
// 相对于view_size左边框偏移(单位像素)
|
||||
public int left;
|
||||
// 相对于view_size上边框偏移(单位像素)
|
||||
public int top;
|
||||
// 相对于view_size右边框偏移(单位像素)
|
||||
public int right;
|
||||
// 相对于view_size下边框偏移(单位像素)
|
||||
public int bottom;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.state;
|
||||
|
||||
/**
|
||||
* mg2app,状态响应
|
||||
*/
|
||||
public class MGStateResponse {
|
||||
|
||||
// 返回码,成功
|
||||
public static final int SUCCESS = 0;
|
||||
|
||||
public int ret_code; // 返回码
|
||||
public String ret_msg; // 返回消息
|
||||
}
|
||||
@@ -0,0 +1,845 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.state;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* APP to MG 的通用状态定义
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/APPFST/
|
||||
*/
|
||||
public class SudMGPAPPState implements Serializable {
|
||||
|
||||
// region 通用状态
|
||||
/**
|
||||
* 1. 加入状态
|
||||
* 最低版本: v1.1.30.xx
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_IN = "app_common_self_in";
|
||||
|
||||
/**
|
||||
* 1. 加入状态 模型
|
||||
* 用户(本人)加入游戏/退出游戏
|
||||
* 正确流程:
|
||||
* 1.isIn=true: 加入游戏=>准备游戏=>开始游戏;
|
||||
* 2.isIn=false: 结束=>取消准备=>退出游戏;
|
||||
*/
|
||||
public static class APPCommonSelfIn implements Serializable {
|
||||
// rue 加入游戏,false 退出游戏
|
||||
public boolean isIn;
|
||||
|
||||
// 加入的游戏位(座位号) 默认传seatIndex = -1 随机加入,seatIndex 从0开始,不可大于座位数
|
||||
public int seatIndex;
|
||||
|
||||
// 默认为ture, 带有游戏位(座位号)的时候,如果游戏位(座位号)已经被占用,是否随机分配一个空位坐下 isSeatRandom=true 随机分配空位坐下,isSeatRandom=false 不随机分配
|
||||
public boolean isSeatRandom;
|
||||
|
||||
// 不支持分队的游戏:数值填1;支持分队的游戏:数值填1或2(两支队伍);
|
||||
public int teamId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 准备状态
|
||||
* 最低版本: v1.1.30.xx
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_READY = "app_common_self_ready";
|
||||
|
||||
/**
|
||||
* 2. 准备状态 模型
|
||||
* 用户(本人)准备/取消准备
|
||||
*/
|
||||
public static class APPCommonSelfReady implements Serializable {
|
||||
// true 准备,false 取消准备
|
||||
public boolean isReady;
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 游戏状态
|
||||
* 最低版本: v1.1.30.xx
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_PLAYING = "app_common_self_playing";
|
||||
|
||||
/**
|
||||
* 3. 游戏状态 模型
|
||||
* 用户游戏状态,如果用户在游戏中,建议:
|
||||
* a.空出屏幕中心区:
|
||||
* 关闭全屏礼物特效;
|
||||
* b.部分强操作类小游戏(spaceMax为true),尽量收缩原生UI,给游戏留出尽量大的操作空间:
|
||||
* 收缩公屏;
|
||||
* 收缩麦位;
|
||||
* 如果不在游戏中,则恢复。
|
||||
*/
|
||||
public static class APPCommonSelfPlaying implements Serializable {
|
||||
// true 开始游戏,false 结束游戏
|
||||
public boolean isPlaying;
|
||||
|
||||
// string类型,Https服务回调report_game_info参数,最大长度1024字节,超过则截断(2022-01-21)
|
||||
public String reportGameInfoExtras;
|
||||
|
||||
// string类型,最大长度64字节,接入方服务端,可以根据这个字段来查询一局游戏的数据
|
||||
public String reportGameInfoKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. 队长状态
|
||||
* 最低版本: v1.1.30.xx
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_CAPTAIN = "app_common_self_captain";
|
||||
|
||||
/**
|
||||
* 4. 队长状态 模型
|
||||
* 用户是否为队长,队长在游戏中会有开始游戏的权利。
|
||||
*/
|
||||
public static class APPCommonSelfCaptain implements Serializable {
|
||||
// 必填,指定队长uid
|
||||
public String curCaptainUID;
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. 踢人
|
||||
* v1.1.30.xx
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_KICK = "app_common_self_kick";
|
||||
|
||||
/**
|
||||
* 5. 踢人 模型
|
||||
* 用户(本人,队长)踢其他玩家;
|
||||
* 队长才能踢人;
|
||||
*/
|
||||
public static class APPCommonSelfKick implements Serializable {
|
||||
// 被踢用户uid
|
||||
public String kickedUID;
|
||||
}
|
||||
|
||||
/**
|
||||
* 6. 结束游戏
|
||||
* v1.1.30.xx
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_END = "app_common_self_end";
|
||||
|
||||
/**
|
||||
* 6. 结束游戏 模型
|
||||
* 用户(本人,队长)结束(本局)游戏
|
||||
*/
|
||||
public static class APPCommonSelfEnd implements Serializable {
|
||||
// 当前不需要传参
|
||||
}
|
||||
|
||||
/**
|
||||
* 7. 房间状态(depreated 已废弃v1.1.30.xx)
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_ROOM = "app_common_self_room";
|
||||
|
||||
/**
|
||||
* 8. 麦位状态(depreated 已废弃v1.1.30.xx)
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_SEAT = "app_common_self_seat";
|
||||
|
||||
/**
|
||||
* 9. 麦克风状态
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_MICROPHONE = "app_common_self_microphone";
|
||||
|
||||
/**
|
||||
* 9. 麦克风状态 模型
|
||||
* 用户(本人)麦克风状态,建议:
|
||||
* 进入房间后初始通知一次;
|
||||
* 每次变更(开麦/闭麦/禁麦/解麦)通知一次;
|
||||
*/
|
||||
public static class APPCommonSelfMicrophone implements Serializable {
|
||||
// true 开麦,false 闭麦
|
||||
public boolean isOn;
|
||||
|
||||
// true 被禁麦,false 未被禁麦
|
||||
public boolean isDisabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* 10. 文字命中状态
|
||||
*/
|
||||
public static final String APP_COMMON_SELF_TEXT_HIT = "app_common_self_text_hit";
|
||||
|
||||
/**
|
||||
* 10. 文字命中状态 模型
|
||||
* 用户(本人)聊天信息命中关键词状态,建议:
|
||||
* 精确匹配;
|
||||
* 首次聊天内容命中关键词之后,后续聊天内容不翻转成未命中;
|
||||
* 直至小游戏侧关键词更新,再将状态翻转为未命中;
|
||||
*/
|
||||
public static class APPCommonSelfTextHitState implements Serializable {
|
||||
// true 命中,false 未命中
|
||||
public boolean isHit;
|
||||
|
||||
// 单个关键词, 兼容老版本
|
||||
public String keyWord;
|
||||
|
||||
// 返回转写文本
|
||||
public String text;
|
||||
|
||||
// text:文本包含匹配; number:数字等于匹配
|
||||
public String wordType;
|
||||
|
||||
// 命中关键词,可以包含多个关键词
|
||||
public List<String> keyWordList;
|
||||
|
||||
// 在number模式下才有,返回转写的多个数字
|
||||
public List<Integer> numberList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 11. 打开或关闭背景音乐(2021-12-27新增)
|
||||
*/
|
||||
public static final String APP_COMMON_OPEN_BG_MUSIC = "app_common_open_bg_music";
|
||||
|
||||
/**
|
||||
* 11. 打开或关闭背景音乐(2021-12-27新增) 模型
|
||||
*/
|
||||
public static class APPCommonOpenBgMusic implements Serializable {
|
||||
// true 打开背景音乐,false 关闭背景音乐
|
||||
public boolean isOpen;
|
||||
}
|
||||
|
||||
/**
|
||||
* 12. 打开或关闭音效(2021-12-27新增)
|
||||
*/
|
||||
public static final String APP_COMMON_OPEN_SOUND = "app_common_open_sound";
|
||||
|
||||
/**
|
||||
* 12. 打开或关闭音效(2021-12-27新增) 模型
|
||||
*/
|
||||
public static class APPCommonOpenSound implements Serializable {
|
||||
// true 打开音效,false 关闭音效
|
||||
public boolean isOpen;
|
||||
}
|
||||
|
||||
/**
|
||||
* 13. 打开或关闭游戏中的振动效果(2021-12-27新增)
|
||||
*/
|
||||
public static final String APP_COMMON_OPEN_VIBRATE = "app_common_open_vibrate";
|
||||
|
||||
/**
|
||||
* 13. 打开或关闭游戏中的振动效果(2021-12-27新增)模型
|
||||
*/
|
||||
public static class APPCommonOpenVibrate implements Serializable {
|
||||
// true 打开振动效果,false 关闭振动效果
|
||||
public boolean isOpen;
|
||||
}
|
||||
|
||||
/**
|
||||
* 14. 设置游戏的音量大小(2021-12-31新增)
|
||||
*/
|
||||
public static final String APP_COMMON_GAME_SOUND_VOLUME = "app_common_game_sound_volume";
|
||||
|
||||
/**
|
||||
* 14. 设置游戏的音量大小(2021-12-31新增)模型
|
||||
*/
|
||||
public static class APPCommonGameSoundVolume implements Serializable {
|
||||
// 音量大小 0 到 100
|
||||
public int volume;
|
||||
}
|
||||
|
||||
/**
|
||||
* 15. 设置游戏玩法选项(2022-05-10新增)
|
||||
*/
|
||||
public static final String APP_COMMON_GAME_SETTING_SELECT_INFO = "app_common_game_setting_select_info";
|
||||
|
||||
/**
|
||||
* 15. 设置游戏玩法选项(2022-05-10新增) 模型
|
||||
*/
|
||||
public static class APPCommonGameSettingSelectInfo implements Serializable {
|
||||
public Ludo ludo; // 游戏名称
|
||||
}
|
||||
|
||||
public static class Ludo implements Serializable {
|
||||
public int mode; // mode: 默认赛制,0: 快速, 1: 经典;
|
||||
public int chessNum; // chessNum: 默认棋子数量, 2: 对应2颗棋子; 4: 对应4颗棋子;
|
||||
public int item; // item: 默认道具, 1: 有道具, 0: 没有道具
|
||||
}
|
||||
|
||||
/**
|
||||
* 16. 设置游戏中的AI玩家(2022-05-11新增)
|
||||
*/
|
||||
public static final String APP_COMMON_GAME_ADD_AI_PLAYERS = "app_common_game_add_ai_players";
|
||||
|
||||
/**
|
||||
* 16. 设置游戏中的AI玩家(2022-05-11新增) 模型
|
||||
*/
|
||||
public static class APPCommonGameAddAIPlayers implements Serializable {
|
||||
public List<AIPlayers> aiPlayers; // AI玩家
|
||||
public int isReady = 1; // 机器人加入后是否自动准备 1:自动准备,0:不自动准备 默认为1
|
||||
}
|
||||
|
||||
public static class AIPlayers implements Serializable {
|
||||
public String userId; // 玩家id
|
||||
public String avatar; // 头像url
|
||||
public String name; // 名字
|
||||
public String gender; // 性别 male:男,female:女
|
||||
}
|
||||
|
||||
/**
|
||||
* 17. app在收到游戏断开连接通知后,通知游戏重试连接(2022-06-21新增,暂时支持ludo)
|
||||
*/
|
||||
public static final String APP_COMMON_GAME_RECONNECT = "app_common_game_reconnect";
|
||||
|
||||
/**
|
||||
* 17. app在收到游戏断开连接通知后,通知游戏重试连接(2022-06-21新增,暂时支持ludo) 模型
|
||||
*/
|
||||
public static class APPCommonGameReconnect implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 18. app返回玩家当前积分
|
||||
*/
|
||||
public static final String APP_COMMON_GAME_SCORE = "app_common_game_score";
|
||||
|
||||
/**
|
||||
* 18. app返回玩家当前积分
|
||||
*/
|
||||
public static class APPCommonGameScore implements Serializable {
|
||||
public long score; // 玩家当前积分
|
||||
}
|
||||
// endregion 通用状态
|
||||
|
||||
// region 元宇宙砂砂舞
|
||||
/**
|
||||
* 1. 元宇宙砂砂舞相关设置
|
||||
* 参考文档:https://docs.sud.tech/zh-CN/app/Client/APPFST/CommonStateForDisco.html
|
||||
*/
|
||||
public static final String APP_COMMON_GAME_DISCO_ACTION = "app_common_game_disco_action";
|
||||
|
||||
/**
|
||||
* 1. 元宇宙砂砂舞相关设置 模型
|
||||
*/
|
||||
public static class AppCommonGameDiscoAction implements Serializable {
|
||||
public int actionId; // 必传的参数,用于指定类型的序号,不同序号用于区分游戏内的不同功能,不传则会判断为无效指令,具体序号代表的功能见下表
|
||||
public Integer cooldown; // 持续时间,单位秒,部分功能有持续时间就需要传对应的数值,不传或传错则会按各自功能的默认值处理(见下表)
|
||||
public Boolean isTop; // 是否置顶,针对部分功能可排队置顶(false:不置顶;true:置顶;默认为false)
|
||||
public String field1; // 额外参数1,针对部分功能有具体的意义
|
||||
public String field2; // 额外参数2,针对部分功能有具体的意义
|
||||
}
|
||||
// endregion 元宇宙砂砂舞
|
||||
|
||||
// region 定制火箭
|
||||
/**
|
||||
* 1. 礼物配置文件回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_CONFIG = "app_custom_rocket_config";
|
||||
|
||||
/**
|
||||
* 1. 礼物配置文件回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketConfig implements Serializable {
|
||||
public int maxSeat; // 最大机位
|
||||
public double firePrice; // 发射的静态价格
|
||||
public int isDynamicPrice; // 发射价格是否动态开关 0:静态 1动态
|
||||
public String gameIntroduce; // 玩法介绍
|
||||
public String monetaryUnit; // 货币的单位
|
||||
public long serverTime; // 服务器时间戳,单位秒
|
||||
public List<String> filterModel; // 过滤不显示的模块(默认是为空)
|
||||
public List<String> filterLayer; // 过滤不显示的页面(默认是为空)
|
||||
public List<ComponentModel> componentList; // 组件列表 1套装,2主仓,3尾翼,4头像,5签名,6颜色
|
||||
public List<HeadModel> headList; // 组件列表
|
||||
public List<ExtraModel> extraList; // 专属配置
|
||||
|
||||
public static class ComponentModel {
|
||||
public String componentId; // 组件的ID
|
||||
public int type; // 1套装,2主仓,3尾翼
|
||||
public String name; // 显示名称(商城+装配间+购买记录+...)
|
||||
public double price; // 价格
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期:单位是秒
|
||||
public String imageId; // 图片ID
|
||||
public int isLock; // 锁:0不锁 1锁
|
||||
public int isShow; // 展示:0不展示 1展示
|
||||
}
|
||||
|
||||
public static class HeadModel {
|
||||
public String componentId; // 组件的ID
|
||||
public int type; // 4头像(商城+装配间+购买记录+...)
|
||||
public String name; // 显示名称
|
||||
public double price; // 价格 暂时不考虑小数
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期:单位是秒
|
||||
public String userId; // 用户的userId
|
||||
public String nickname; // 昵称
|
||||
public int sex; // 性别 0:男 1:女
|
||||
public String url; // 头像URL
|
||||
}
|
||||
|
||||
public static class ExtraModel {
|
||||
public String componentId; // 组件的ID
|
||||
public int type; // 5签名,6颜色
|
||||
public String name; // 显示名称(商城+装配间+购买记录+...)
|
||||
public double price; // 价格
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期:单位是秒
|
||||
public String desc; // 描述
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 拥有模型列表回调(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_MODEL_LIST = "app_custom_rocket_model_list";
|
||||
|
||||
/**
|
||||
* 2. 拥有模型列表回调(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketModelList implements Serializable {
|
||||
public String defaultModelId; // 默认模型
|
||||
public int isScreenshot; // 截图:0不截图 1截图(app上传失败或者过期时,被动截图)
|
||||
public List<Model> list;
|
||||
|
||||
public static class Model {
|
||||
public String modelId; // 模型Id
|
||||
public int isAvatar; // 可以换装:0不可以 1可以
|
||||
public String serviceFlag; // 服务标识
|
||||
public List<ComponentModel> componentList; // 列表
|
||||
|
||||
public static class ComponentModel {
|
||||
public String itemId; // 唯一标识
|
||||
public int type; // 类型
|
||||
public String value; // 值
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期时间戳:单位是秒
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 拥有组件列表回调(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_COMPONENT_LIST = "app_custom_rocket_component_list";
|
||||
|
||||
/**
|
||||
* 3. 拥有组件列表回调(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketComponentList implements Serializable {
|
||||
public List<ComponentModel> defaultList; // 默认组件列表
|
||||
public List<ComponentModel> list; // 组件列表
|
||||
|
||||
public static class ComponentModel {
|
||||
public String itemId; // 唯一标识
|
||||
public int type; // 类型
|
||||
public String value; // 值
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期时间戳:单位是秒
|
||||
public long date; // 购买时间:1970年1月1日开始。时间戳:单位是秒
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. 获取用户信息回调(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_USER_INFO = "app_custom_rocket_user_info";
|
||||
|
||||
/**
|
||||
* 4. 获取用户信息回调(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketUserInfo implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public List<CustomRocketUserInfoModel> userList; // 用户信息列表
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. 订单记录列表回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_ORDER_RECORD_LIST = "app_custom_rocket_order_record_list";
|
||||
|
||||
/**
|
||||
* 5. 订单记录列表回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketOrderRecordList implements Serializable {
|
||||
public int pageIndex; // 第几页
|
||||
public int pageCount; // 总页数
|
||||
public List<ComponentModel> list; // 列表
|
||||
|
||||
/**
|
||||
* 定制火箭,订单组件 模型
|
||||
*/
|
||||
public static class ComponentModel {
|
||||
public int type; // 类型
|
||||
public String value; // 值
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期时间戳:单位是秒
|
||||
public long date; // 有效期时间戳:单位是秒
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 6. 展馆内列表回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_ROOM_RECORD_LIST = "app_custom_rocket_room_record_list";
|
||||
|
||||
/**
|
||||
* 6. 展馆内列表回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketRoomRecordList implements Serializable {
|
||||
public int pageIndex; // 第几页
|
||||
public int pageCount; // 总页数
|
||||
public List<RoomRecordModel> list; // 列表
|
||||
|
||||
public static class RoomRecordModel {
|
||||
public CustomRocketUserInfoModel fromUser; // 送礼人
|
||||
public int number; // 火箭数量
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 7. 展馆内玩家送出记录回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_USER_RECORD_LIST = "app_custom_rocket_user_record_list";
|
||||
|
||||
/**
|
||||
* 7. 展馆内玩家送出记录回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketUserRecordList implements Serializable {
|
||||
public int pageIndex; // 第几页
|
||||
public int pageCount; // 总页数
|
||||
public CustomRocketUserInfoModel fromUser; // 送礼人
|
||||
public List<UserRecordModel> list; // 列表
|
||||
|
||||
public static class UserRecordModel {
|
||||
public long date; // 订单时间戳: 单位是秒
|
||||
public int number; // 个数
|
||||
public CustomRocketUserInfoModel toUser; // 收礼人
|
||||
public List<ComponentModel> componentList; // 列表
|
||||
|
||||
public static class ComponentModel {
|
||||
public int type; // 类型
|
||||
public String value; // 值
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期时间戳:单位是秒
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 8. 设置默认模型(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_SET_DEFAULT_MODEL = "app_custom_rocket_set_default_model";
|
||||
|
||||
/**
|
||||
* 8. 设置默认模型(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketSetDefaultModel implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public Data data; // 数据
|
||||
|
||||
public static class Data {
|
||||
public String modelId; // 默认模型
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 9. 动态计算一键发送价格回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_DYNAMIC_FIRE_PRICE = "app_custom_rocket_dynamic_fire_price";
|
||||
|
||||
/**
|
||||
* 9. 动态计算一键发送价格回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketDynamicFirePrice implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public Data data; // 数据
|
||||
|
||||
public static class Data {
|
||||
public double price; // 发送的价格
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 10. 一键发送回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_FIRE_MODEL = "app_custom_rocket_fire_model";
|
||||
|
||||
/**
|
||||
* 10. 一键发送回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketFireModel implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
}
|
||||
|
||||
/**
|
||||
* 11. 新组装模型 回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_CREATE_MODEL = "app_custom_rocket_create_model";
|
||||
|
||||
/**
|
||||
* 11. 新组装模型 回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketCreateModel implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public Data data;
|
||||
|
||||
public static class Data {
|
||||
public String modelId; // 模型Id
|
||||
public int isAvatar; // 可以换装:0不可以 1可以
|
||||
public String serviceFlag; // 服务标识
|
||||
public List<ComponentModel> componentList;
|
||||
|
||||
public static class ComponentModel {
|
||||
public String itemId; // 模型Id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 12. 更换组件 回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_REPLACE_COMPONENT = "app_custom_rocket_replace_component";
|
||||
|
||||
/**
|
||||
* 12. 更换组件 回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketReplaceComponent implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public Data data;
|
||||
|
||||
public static class Data {
|
||||
public String modelId; // 模型Id
|
||||
public List<ComponentModel> componentList;
|
||||
|
||||
public static class ComponentModel {
|
||||
public String itemId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 13. 购买组件 回调
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_BUY_COMPONENT = "app_custom_rocket_buy_component";
|
||||
|
||||
/**
|
||||
* 13. 购买组件 回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketBuyComponent implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public Data data;
|
||||
|
||||
public static class Data {
|
||||
public List<ComponentModel> componentList;
|
||||
|
||||
public static class ComponentModel {
|
||||
public String itemId; // 唯一标识
|
||||
public int type; // 类型
|
||||
public String value; // 值
|
||||
public int isForever; // 永久:0非永久 1永久
|
||||
public long validTime; // 有效期时间戳:单位是秒
|
||||
public long date; // 有效期时间戳:单位是秒
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 14. app播放火箭发射动效(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_PLAY_MODEL_LIST = "app_custom_rocket_play_model_list";
|
||||
|
||||
/**
|
||||
* 14. app播放火箭发射动效(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketPlayModelList implements Serializable {
|
||||
public String orderId; // 订单号
|
||||
public List<ComponentModel> componentList; // 组件列表
|
||||
|
||||
public static class ComponentModel {
|
||||
public int type; // 类型
|
||||
public String value; // 值
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 15. app推送主播信息(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_NEW_USER_INFO = "app_custom_rocket_new_user_info";
|
||||
|
||||
/**
|
||||
* 15. app推送主播信息(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketNewUserInfo implements Serializable {
|
||||
public List<CustomRocketUserInfoModel> userList; // 用户信息列表
|
||||
}
|
||||
|
||||
/**
|
||||
* 16. 验证签名合规(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_VERIFY_SIGN = "app_custom_rocket_verify_sign";
|
||||
|
||||
/**
|
||||
* 16. 验证签名合规(火箭) 回调 模型
|
||||
*/
|
||||
public static class AppCustomRocketVerifySign implements Serializable {
|
||||
public int resultCode; // 0: 请求成功,1:请求失败
|
||||
public String error; // 错误描述
|
||||
public Data data;
|
||||
|
||||
public static class Data {
|
||||
public String sign; // 验证的签名
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 17. app主动调起火箭主界面(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_SHOW_GAME_SCENE = "app_custom_rocket_show_game_scene";
|
||||
|
||||
/**
|
||||
* 17. app主动调起火箭主界面(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketShowGameScene implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 18. app主动隐藏火箭主界面(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_HIDE_GAME_SCENE = "app_custom_rocket_hide_game_scene";
|
||||
|
||||
/**
|
||||
* 18. app主动隐藏火箭主界面(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketHideGameScene implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 19. app推送解锁组件(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_UNLOCK_COMPONENT = "app_custom_rocket_unlock_component";
|
||||
|
||||
/**
|
||||
* 19. app推送解锁组件(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketUnlockComponent implements Serializable {
|
||||
public int type; // 组件类型
|
||||
public String componentId; // 组件ID
|
||||
}
|
||||
|
||||
/**
|
||||
* 20. app推送火箭效果飞行点击(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_FLY_CLICK = "app_custom_rocket_fly_click";
|
||||
|
||||
/**
|
||||
* 20. app推送火箭效果飞行点击(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketFlyClick implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 21. app推送关闭火箭播放效果(火箭)
|
||||
*/
|
||||
public static final String APP_CUSTOM_ROCKET_CLOSE_PLAY_EFFECT = "app_custom_rocket_close_play_effect";
|
||||
|
||||
/**
|
||||
* 21. app推送关闭火箭播放效果(火箭) 模型
|
||||
*/
|
||||
public static class AppCustomRocketClosePlayEffect implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 定制火箭,用户信息 模型
|
||||
*/
|
||||
public static class CustomRocketUserInfoModel {
|
||||
public String userId; // 用户的userId
|
||||
public String nickname; // 昵称
|
||||
public int sex; // 性别 0:男 1:女
|
||||
public String url; // 头像URL
|
||||
}
|
||||
// endregion 定制火箭
|
||||
|
||||
// region 棒球
|
||||
/**
|
||||
* 1. 下发游戏客户端查询排行榜数据(棒球)
|
||||
*/
|
||||
public static final String APP_BASEBALL_RANKING = "app_baseball_ranking";
|
||||
|
||||
/**
|
||||
* 1. 下发游戏客户端查询排行榜数据(棒球) 模型
|
||||
*/
|
||||
public static class AppBaseballRanking implements Serializable {
|
||||
public List<AppBaseballPlayerInfo> data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 2. 下发游戏客户端查询我的排名数据(棒球)
|
||||
*/
|
||||
public static final String APP_BASEBALL_MY_RANKING = "app_baseball_my_ranking";
|
||||
|
||||
/**
|
||||
* 2. 下发游戏客户端查询我的排名数据(棒球) 模型
|
||||
*/
|
||||
public static class AppBaseballMyRanking implements Serializable {
|
||||
public AppBaseballPlayerInfo data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 3. 下发游戏客户端查询排在自己前后的玩家数据(棒球)
|
||||
*/
|
||||
public static final String APP_BASEBALL_RANGE_INFO = "app_baseball_range_info";
|
||||
|
||||
/**
|
||||
* 3. 下发游戏客户端查询排在自己前后的玩家数据(棒球) 模型
|
||||
*/
|
||||
public static class AppBaseballRangeInfo implements Serializable {
|
||||
public AppBaseballPlayerInfo before; // 前一名
|
||||
public AppBaseballPlayerInfo after; // 后一名
|
||||
}
|
||||
|
||||
/**
|
||||
* 4. app主动调起主界面(棒球)
|
||||
*/
|
||||
public static final String APP_BASEBALL_SHOW_GAME_SCENE = "app_baseball_show_game_scene";
|
||||
|
||||
/**
|
||||
* 4. app主动调起主界面(棒球) 模型
|
||||
*/
|
||||
public static class AppBaseballShowGameScene implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 5. app主动隐藏主界面(棒球)
|
||||
*/
|
||||
public static final String APP_BASEBALL_HIDE_GAME_SCENE = "app_baseball_hide_game_scene";
|
||||
|
||||
/**
|
||||
* 5. app主动隐藏主界面(棒球) 模型
|
||||
*/
|
||||
public static class AppBaseballHideGameScene implements Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* 6. app推送需要的文本数据(棒球)
|
||||
*/
|
||||
public static final String APP_BASEBALL_TEXT_CONFIG = "app_baseball_text_config";
|
||||
|
||||
/**
|
||||
* 6. app推送需要的文本数据(棒球) 模型
|
||||
*/
|
||||
public static class AppBaseballTextConfig implements Serializable {
|
||||
public String mode1;
|
||||
public String mode2;
|
||||
public String mode3;
|
||||
}
|
||||
|
||||
public static class AppBaseballPlayerInfo implements Serializable {
|
||||
public String playerId; // 玩家Id
|
||||
public String name; // 玩家昵称
|
||||
public String avatar; // 头像
|
||||
public long distance; // 距离
|
||||
public int rank; // 排名
|
||||
}
|
||||
// endregion 棒球
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.utils;
|
||||
|
||||
import android.text.TextUtils;
|
||||
|
||||
import tech.sud.mgp.SudMGPWrapper.state.SudMGPMGState;
|
||||
|
||||
/**
|
||||
* 游戏通用状态工具类
|
||||
*/
|
||||
public class GameCommonStateUtils {
|
||||
|
||||
/**
|
||||
* 解析公屏消息
|
||||
*
|
||||
* @param publicMessage
|
||||
* @return
|
||||
*/
|
||||
public static String parseMGCommonPublicMessage(SudMGPMGState.MGCommonPublicMessage publicMessage, String languageCode) {
|
||||
if (publicMessage == null || publicMessage.msg == null || publicMessage.msg.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (SudMGPMGState.MGCommonPublicMessage.MGCommonPublicMessageMsg msgModel : publicMessage.msg) {
|
||||
switch (msgModel.phrase) {
|
||||
case 1:
|
||||
String text = parseI18nText(languageCode, msgModel.text);
|
||||
if (text != null) {
|
||||
sb.append(text);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (msgModel.user != null && msgModel.user.name != null) {
|
||||
sb.append(msgModel.user.name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据当前的语言码,选择对应语言的文字
|
||||
*
|
||||
* @param languageCode 语言代码
|
||||
* @param model 游戏发过来的文本对象
|
||||
* @return 返回选择的字符串
|
||||
*/
|
||||
public static String parseI18nText(String languageCode, SudMGPMGState.MGCommonPublicMessage.MGCommonPublicMessageMsgText model) {
|
||||
if (model == null) return null;
|
||||
if (languageCode == null) return model.defaultStr;
|
||||
|
||||
// 精准匹配
|
||||
String text = i18nPrecise(languageCode, model);
|
||||
|
||||
if (TextUtils.isEmpty(text)) {
|
||||
// 如果未匹配到,则尝试模糊匹配
|
||||
if (isMatchLanguage(languageCode, "zh")) {
|
||||
return model.zh_CN;
|
||||
}
|
||||
return model.en_US;
|
||||
} else {
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
/** 精准匹配 */
|
||||
private static String i18nPrecise(String languageCode, SudMGPMGState.MGCommonPublicMessage.MGCommonPublicMessageMsgText model) {
|
||||
switch (languageCode) {
|
||||
case "zh-CN":
|
||||
return model.zh_CN;
|
||||
case "zh-HK":
|
||||
return model.zh_HK;
|
||||
case "zh-MO":
|
||||
return model.zh_MO;
|
||||
case "zh-SG":
|
||||
return model.zh_SG;
|
||||
case "zh-TW":
|
||||
return model.zh_TW;
|
||||
case "en-US":
|
||||
return model.en_US;
|
||||
case "en-GB":
|
||||
return model.en_GB;
|
||||
case "ms-BN":
|
||||
return model.ms_BN;
|
||||
case "ms-MY":
|
||||
return model.ms_MY;
|
||||
case "vi-VN":
|
||||
return model.vi_VN;
|
||||
case "id-ID":
|
||||
return model.id_ID;
|
||||
case "es-ES":
|
||||
return model.es_ES;
|
||||
case "ja-JP":
|
||||
return model.ja_JP;
|
||||
case "ko-KR":
|
||||
return model.ko_KR;
|
||||
case "th-TH":
|
||||
return model.th_TH;
|
||||
case "ar-SA":
|
||||
return model.ar_SA;
|
||||
case "ur-PK":
|
||||
return model.ur_PK;
|
||||
case "tr-TR":
|
||||
return model.tr_TR;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是该语言
|
||||
*/
|
||||
private static boolean isMatchLanguage(String languageCode, String matchLanguageCode) {
|
||||
if (languageCode != null && matchLanguageCode != null) {
|
||||
return matchLanguageCode.equals(languageCode) || languageCode.startsWith(matchLanguageCode + "-");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright © Sud.Tech
|
||||
* https://sud.tech
|
||||
*/
|
||||
|
||||
package tech.sud.mgp.SudMGPWrapper.utils;
|
||||
|
||||
import tech.sud.mgp.core.ISudFSMStateHandle;
|
||||
import tech.sud.mgp.SudMGPWrapper.state.MGStateResponse;
|
||||
|
||||
public class ISudFSMStateHandleUtils {
|
||||
|
||||
/**
|
||||
* 回调游戏,成功
|
||||
*
|
||||
* @param handle
|
||||
*/
|
||||
public static void handleSuccess(ISudFSMStateHandle handle) {
|
||||
MGStateResponse response = new MGStateResponse();
|
||||
response.ret_code = MGStateResponse.SUCCESS;
|
||||
response.ret_msg = "success";
|
||||
handle.success(SudJsonUtils.toJson(response));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package tech.sud.mgp.SudMGPWrapper.utils;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
/**
|
||||
* json解析工具
|
||||
*/
|
||||
public class SudJsonUtils {
|
||||
|
||||
/**
|
||||
* 解析json
|
||||
*
|
||||
* @return 如果解析出错,则返回空对象
|
||||
*/
|
||||
public static <T> T fromJson(final String json, final Class<T> type) {
|
||||
try {
|
||||
return getGson().fromJson(json, type);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对象解析成json
|
||||
*
|
||||
* @param object
|
||||
* @return
|
||||
*/
|
||||
public static String toJson(final Object object) {
|
||||
return getGson().toJson(object);
|
||||
}
|
||||
|
||||
public static Gson getGson() {
|
||||
return InnerClass.gson;
|
||||
}
|
||||
|
||||
public static class InnerClass {
|
||||
public static Gson gson = new GsonBuilder().serializeNulls().disableHtmlEscaping().create();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user