314 lines
9.0 KiB
Dart
314 lines
9.0 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import '../beans/config_bean.dart';
|
|
import '../beans/game_token_bean.dart';
|
|
import '../beans/login_bean.dart';
|
|
import '../beans/queue_bean.dart';
|
|
import '../beans/reconnect_bean.dart';
|
|
import '../beans/user_info_bean.dart';
|
|
import '../network/BaseEntity.dart';
|
|
import '../network/NetworkConfig.dart';
|
|
import '../network/RequestCenter.dart';
|
|
|
|
class HomeModel {
|
|
StreamController streamController = StreamController.broadcast();
|
|
|
|
HomeModel() {
|
|
setUp();
|
|
}
|
|
|
|
void setUp() {}
|
|
|
|
///Token登录
|
|
Future<void> loginToToken() async {
|
|
RequestCenter.instance.request(NetworkConfig.login, {}, (BaseEntity dataEntity) async {
|
|
if (dataEntity.code == 0) {
|
|
LoginBean loginBean = LoginBean.fromJson(dataEntity.data);
|
|
NetworkConfig.userId = loginBean.userId!.toString();
|
|
NetworkConfig.userName = loginBean.nickName!;
|
|
NetworkConfig.token = loginBean.token!;
|
|
|
|
//保存token
|
|
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
await prefs.setString('token', loginBean.token!);
|
|
|
|
//获取游戏token
|
|
getToken();
|
|
//获取用户信息
|
|
getUserInfo();
|
|
|
|
streamController.sink.add({
|
|
'code': "loginToToken", //有数据
|
|
'data': dataEntity.message,
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "loginError", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///获取APP配置
|
|
Future<void> getAppConfig() async {
|
|
RequestCenter.instance.requestGet(NetworkConfig.getAppConfig, {}, (BaseEntity dataEntity) {
|
|
print("dataEntity==${dataEntity.message}");
|
|
|
|
ConfigBean configBean = ConfigBean.fromJson(dataEntity.data);
|
|
NetworkConfig.configBean = configBean;
|
|
NetworkConfig.signKey = configBean.signKey!;
|
|
NetworkConfig.isChecking = configBean.isChecking!;
|
|
|
|
if (dataEntity.code == 0) {
|
|
streamController.sink.add({
|
|
'code': "getAppConfig", //有数据
|
|
'data': "data",
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "error", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///获取游戏token
|
|
Future<void> getToken() async {
|
|
RequestCenter.instance.request(NetworkConfig.getToken, {
|
|
"sn": NetworkConfig.deviceID,
|
|
}, (BaseEntity dataEntity) {
|
|
if (dataEntity.code == 0) {
|
|
GameTokenBean gameTokenBean = GameTokenBean.fromJson(dataEntity.data);
|
|
|
|
streamController.sink.add({
|
|
'code': "getToken", //有数据
|
|
'data': gameTokenBean
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "-1", //有数据
|
|
'data': dataEntity.message
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///启动游戏
|
|
Future<void> playGame(gameId) async {
|
|
RequestCenter.instance.request(NetworkConfig.playGame, {
|
|
"sn": NetworkConfig.deviceID,
|
|
"gameId": gameId,
|
|
"modelName": NetworkConfig.deviceName,
|
|
"cpu": NetworkConfig.deviceName,
|
|
}, (BaseEntity dataEntity) {
|
|
switch (dataEntity.code) {
|
|
case 0:
|
|
streamController.sink.add({
|
|
'code': "playGame", //有数据
|
|
'data': dataEntity.data,
|
|
'gameId': gameId
|
|
});
|
|
break;
|
|
|
|
case 201:
|
|
QueueBean queueBean = QueueBean.fromJson(dataEntity.data);
|
|
streamController.sink.add({
|
|
'code': "gameQueue", //有数据
|
|
'data': queueBean,
|
|
'gameId': gameId
|
|
});
|
|
break;
|
|
default:
|
|
streamController.sink.add({
|
|
'code': "gameError", //
|
|
'data': dataEntity.message,
|
|
'gameId': gameId
|
|
});
|
|
break;
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///游戏排队
|
|
Future<void> playGameQueue(gameId) async {
|
|
RequestCenter.instance.requestGet(NetworkConfig.playGameQueue, {
|
|
"gameId": gameId,
|
|
}, (BaseEntity dataEntity) {
|
|
// ReconnectBean reconnectBean = ReconnectBean.fromJson(dataEntity.data);
|
|
|
|
switch (dataEntity.code) {
|
|
case 0:
|
|
streamController.sink.add({
|
|
'code': "gameQueueSuccess", //有数据
|
|
'data': "data",
|
|
});
|
|
break;
|
|
|
|
case 201:
|
|
QueueBean queueBean = QueueBean.fromJson(dataEntity.data);
|
|
streamController.sink.add({
|
|
'code': "playGameQueue", //有数据
|
|
'data': queueBean,
|
|
});
|
|
break;
|
|
|
|
default:
|
|
streamController.sink.add({
|
|
'code': "-1", //
|
|
'data': dataEntity.message,
|
|
});
|
|
break;
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///取消排队
|
|
Future<void> cancelQueue(gameId) async {
|
|
RequestCenter.instance.request(NetworkConfig.cancelQueue, {
|
|
"gameId": gameId,
|
|
}, (BaseEntity dataEntity) {
|
|
// ReconnectBean reconnectBean = ReconnectBean.fromJson(dataEntity.data);
|
|
if (dataEntity.code == 0) {
|
|
streamController.sink.add({
|
|
'code': "cancelQueue", //有数据
|
|
'data': 'data',
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "-1", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///获取可重连的游戏
|
|
Future<void> getMyScList() async {
|
|
RequestCenter.instance.request(NetworkConfig.getMyScList, {
|
|
"sn": NetworkConfig.deviceID,
|
|
}, (BaseEntity dataEntity) {
|
|
ReconnectBean reconnectBean = ReconnectBean.fromJson(dataEntity.data);
|
|
|
|
if (dataEntity.code == 0) {
|
|
streamController.sink.add({
|
|
'code': "getMyScList", //有数据
|
|
'data': reconnectBean,
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "error", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///重连游戏
|
|
Future<void> reconPlayGame(gameId) async {
|
|
RequestCenter.instance.request(NetworkConfig.reconPlayGame, {
|
|
"gameId": gameId,
|
|
}, (BaseEntity dataEntity) {
|
|
// ReconnectBean reconnectBean = ReconnectBean.fromJson(dataEntity.data);
|
|
|
|
if (dataEntity.code == 0) {
|
|
streamController.sink.add({
|
|
'code': "reconPlayGame", //有数据
|
|
'data': dataEntity.data,
|
|
'gameId': gameId
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "reconPlayGameError", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///退出游戏
|
|
Future<void> exitPlayGame(gameId) async {
|
|
RequestCenter.instance.request(NetworkConfig.exitPlayGame, {
|
|
"gameId": gameId,
|
|
"playGameDetails": "playGameDetails",
|
|
}, (BaseEntity dataEntity) {
|
|
// ReconnectBean reconnectBean = ReconnectBean.fromJson(dataEntity.data);
|
|
|
|
if (dataEntity.code == 0) {
|
|
streamController.sink.add({
|
|
'code': "exitPlayGame", //有数据
|
|
'data': 'data',
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "reconPlayGameError", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///退出游戏
|
|
Future<void> exitApp() async {
|
|
RequestCenter.instance.requestGet(NetworkConfig.exitApp, {}, (BaseEntity dataEntity) {
|
|
// ReconnectBean reconnectBean = ReconnectBean.fromJson(dataEntity.data);
|
|
if (dataEntity.code == 0) {
|
|
streamController.sink.add({
|
|
'code': "exitApp", //有数据
|
|
'data': 'data',
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "-1", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
|
|
///用户信息
|
|
Future<void> getUserInfo() async {
|
|
RequestCenter.instance.requestGet(NetworkConfig.getUserInfo, {}, (BaseEntity dataEntity) {
|
|
if (dataEntity.code == 0) {
|
|
UserInfoBean userInfoBean = UserInfoBean.fromJson(dataEntity.data);
|
|
NetworkConfig.userInfoBean = userInfoBean;
|
|
|
|
streamController.sink.add({
|
|
'code': "getUserInfo", //有数据
|
|
'data': userInfoBean,
|
|
});
|
|
} else {
|
|
streamController.sink.add({
|
|
'code': "error", //
|
|
'data': dataEntity.message,
|
|
});
|
|
}
|
|
}, (ErrorEntity errorEntity) {
|
|
print("errorEntity==${errorEntity.message}");
|
|
});
|
|
}
|
|
}
|