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 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 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 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 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 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 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 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 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 exitPlayGame(gameId) async { RequestCenter.instance.request(NetworkConfig.exitPlayGame, { "gameId": gameId, }, (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 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 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}"); }); } }