// =============================================================================== // Author : 薛之猫 // Create Time : Sunday, January 11, 2026 // Update Time : Sunday, January 11, 2026 // Class Description : LoginMediator // Copyright 虚幻骑士科技 All rights reserved. // =============================================================================== using UnityEngine; using System.Collections.Generic; using System.Linq; using Skyunion; using Client; using PureMVC.Interfaces; using SprotoType; using UnityEngine.UI; namespace Game { /// /// 登录视图控制器中介者 /// public class LoginMediator : GameMediator { #region 成员 /// /// 中介者名称,作为视图中介者的唯一标识符,用于在AppFacade中查找和注册,或者移除中介者 /// public static string NameMediator = "LoginMediator"; /// /// 玩家代理 /// private PlayerProxy _playerProxy; /// /// 上次登录名称 /// private string _lastLoginName; /// /// 网络代理 /// private NetProxy m_netProxy; #endregion /// /// 构造函数,构造的视图组件交给中介者管理 /// /// 视图组件 public LoginMediator(object viewComponent ):base(NameMediator, viewComponent ) {} /// /// 登录视图 /// public LoginView view; private string m_serverIP; public override string[] ListNotificationInterests() { return new List(){ CmdConstant.AuthEvent, Role_GetRoleList.TagName, Role_RoleLogin.TagName, }.ToArray(); } public override void HandleNotification(INotification notification) { } #region UI 模板方法 public override void OpenAniEnd(){ } public override void WinFocus(){ } public override void WinClose(){ } public override void PrewarmComplete(){ } public override void Update() { } protected override void InitData() { _playerProxy = AppFacade.GetInstance().RetrieveProxy(PlayerProxy.ProxyNAME) as PlayerProxy; m_netProxy = AppFacade.GetInstance().RetrieveProxy(NetProxy.ProxyNAME) as NetProxy; view.m_btn_login_Button.enabled = true; _lastLoginName = PlayerPrefs.GetString("lastLoginName", RmdName()); view.m_ipt_username_GameInput.text = _lastLoginName; view.m_btn_login_Button.enabled = true; } protected override void BindUIEvent() { view.m_btn_login_Button.onClick.AddListener(OnLogin); view.m_btn_rmdname_GameButton.onClick.AddListener(OnRmdName); view.m_dd_serverip_Dropdown.onValueChanged.AddListener( onSelectedServer); int serverIndex = PlayerPrefs.GetInt("serverindex", 0); view.m_dd_serverip_Dropdown.value = serverIndex; onSelectedServer(serverIndex); } private void onSelectedServer(int change) { m_serverIP = view.m_dd_serverip_Dropdown.options[change].text; PlayerPrefs.SetInt("serverindex",change); Debug.Log("服务器ip index:"+change+" "+m_serverIP); } protected override void BindUIData() { // CoreUtils.audioService.SetMusicVolume(0); // CoreUtils.audioService.SetSfxVolume(0); } #endregion private string RmdName() { return "ID" + Random.Range(1, 2000000).ToString(); } //随机名字 private void OnRmdName() { _lastLoginName = RmdName(); view.m_ipt_username_GameInput.text = _lastLoginName; } //登录处理 private void OnLogin() { view.m_btn_login_Button.enabled = false; if (view.m_ipt_username_GameInput.text.Length>0) { view.m_lbl_error_LanguageText.text = ""; _lastLoginName = view.m_ipt_username_GameInput.text; PlayerPrefs.SetString("lastLoginName",_lastLoginName); string ip = "127.0.0.1"; string pwd = view.m_ipt_password_GameInput.text; var pwds = pwd.Split('|'); if(pwds.Length == 2) { ip = pwds[0]; pwd = pwds[1]; } IGGSDKConstant.IGGDefault.AppConfigIP = ip; IGGSDKConstant.IGGDefault.IGGID = _lastLoginName; IGGSDKConstant.IGGDefault.Token = pwd; m_netProxy.SaveLoginInfo(m_serverIP, 10000, _lastLoginName, pwd, view.m_ipt_serverGameNode_GameInput.text); CoreUtils.uiManager.CloseUI(UI.s_LoginView); // m_netProxy.Connection(); AppFacade.GetInstance().SendNotification(CmdConstant.LoginToServer); } else { Tip.CreateTip("请输入账号").Show(); } } } }