SteamCloudGame/lib/tools/home_model.dart
2024-12-20 22:23:45 +08:00

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}");
});
}
}