| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using JCEngineCore;
- using UnityEngine.SceneManagement;
- using DG.Tweening;
- /* Socket组件-玩家业务 */
- public class UserPlayer : JCEntity
- {
- public static UserPlayer ins;
- public UserPlayer() {
- ins = this;
- components.Add("PKComp", PKComp.ins);
- }
- public static void ConnectServer() {
- if (ins != null) return;
- if (HomeMgr.ins) HomeMgr.ins.ShowAuthLoginMask(true);
- JCEngine.boot(CommonConfig.businessServerWsURI, new UserPlayer());
- }
- //之所以做成协程延迟触发,是因为用编辑器调试时,停止运行后会触发断线重连,就会造成游戏停止调试了,但socket还连接的现象。
- IEnumerator ReconnenctServer() {
- yield return new WaitForSecondsRealtime(0.1f);
- JCEngine.reboot(this);
- }
- bool canReconnnect = true;
- public override void onLoad() {
- Debug.Log("UserPlayer onLoad()");
- authToken();
- }
- public override void onReload() {
- Debug.Log("UserPlayer onReload()");
- authToken();
- }
- public override void onDestroy() {
- Debug.Log("UserPlayer onDestroy()");
- if (canReconnnect) {
- JC.Unity.CoroutineStarter.Start(ReconnenctServer());
- }
- }
- public override void onMiss() {
- Debug.Log("UserPlayer onMiss()");
- if (canReconnnect) {
- JC.Unity.CoroutineStarter.Start(ReconnenctServer());
- }
- }
- public void Close() {
- if (ins == this) ins = null;
- this.canReconnnect = false;
- this.channel.close();
- Debug.Log("user player close");
- }
- //向服务端发送的请求
- public void authToken() {
- string p0 = PlayerPrefs.GetString("IdAndToken", "");
- #if UNITY_EDITOR
- if (string.IsNullOrEmpty(p0)) {
- p0 = "12&f29f72fcba4b4a63aa4f965b5d603a4e";
- }
- #endif
- call("authToken", p0);
- }
- //被服务端调用的函数
- public void onAuthRes(bool res) {
- Debug.Log("onAuthRes," + res);
- if (res) {
- UserComp.ins.getUserInfo(delegate(UserInfo userInfo) {
- LoginMgr.myUserInfo = userInfo;
- if (HomeView.ins) {
- HomeView.ins.RenderMyAvatarSprite();
- HomeView.ins.RenderNameOrGender();
- HomeView.ins.RenderDeviceNames();
- }
- if (HomeMgr.ins) {
- HomeMgr.ins.ShowAuthLoginMask(false);
- }
- });
- } else {
- //clear token info
- PlayerPrefs.DeleteKey("IdAndToken");
- //tip
- if (HomeMgr.ins && HomeMgr.ins.IsAuthLoginMaskActive()) {
- HomeMgr.ins.SetAuthLoginText(TextAutoLanguage2.GetTextByCNKey("登录认证过期"));
- } else {
- PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("登录认证过期"));
- }
- //delay back login or quit
- Sequence seq = DOTween.Sequence();
- seq.AppendInterval(1.5f);
- seq.AppendCallback(() => {
- if (SceneManager.GetActiveScene().name == "Home") {
- SceneManager.LoadScene("Login", LoadSceneMode.Single);
- } else {
- Application.Quit();
- }
- });
- //close socket
- Close();
- }
- }
- public void onRequestAddFriend() {
- PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("tip_friend-receive-request"));
- tempData.hasFriendRequest = true;
- }
- public void onHasFriendTip() {
- tempData.hasFriendRequest = true;
- }
- public TempData tempData = new TempData();
- public class TempData {
- public System.Action onUpdate;
- private bool _hasFriendRequest;
- public bool hasFriendRequest {
- get {
- return _hasFriendRequest;
- }
- set {
- _hasFriendRequest = value;
- onUpdate?.Invoke();
- }
- }
- }
- }
|