unityzgy/.svn/pristine/de/de93db5eb5370cd75c1035294117fb8dde44e7f5.svn-base
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

159 lines
4.8 KiB
Plaintext

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XFramework;
public class LoginPanel : BasePanel
{
const string panelName = "Panel_LoginPublic";
private RunState runState;//运行模式 教员/学员
bool teacherLogin = true;
public Toggle toggleTeacher;
public Toggle toggleAdmin;
public InputField inputField_user;
public InputField inputField_password;
public Text loginErrorLog;
public Button loginButton;
User thisUser = new User();
// Start is called before the first frame update
public LoginPanel() :base(new UIType(panelName) )
{
}
protected override void InitEvent()
{
Start();
}
void Start()
{
toggleTeacher = ActivePanel.transform.Find("Image_loginWindow/ToggleGroup/Toggle_teacher").GetComponent<Toggle>();
toggleAdmin = ActivePanel.transform.Find("Image_loginWindow/ToggleGroup/Toggle_admin").GetComponent<Toggle>();
inputField_user = ActivePanel.transform.Find("Image_loginWindow/InputField_user").GetComponent<InputField>();
inputField_password = ActivePanel.transform.Find("Image_loginWindow/InputField_password").GetComponent<InputField>();
loginErrorLog = ActivePanel.transform.Find("Image_loginWindow/Text_loginFailMess").GetComponent<Text>();
loginButton = ActivePanel.transform.Find("Image_loginWindow/Button_login").GetComponent<Button>();
runState = GameMain.Instance.runState;
switch (runState)
{
case RunState.teacher:
thisUser.userType = UserType.Teacher;
break;
case RunState.student:
thisUser.userType = UserType.student;
EventCenter.Instance.AddEventListener<bool>("LoginResult", StudentLoginResult);
break;
default:
break;
}
toggleTeacher.onValueChanged.AddListener(TeacherToggleOn);
loginButton.onClick.AddListener(LoginButtonClick);
InitPanel();
}
void InitPanel()
{
if (runState == RunState.student)
{
toggleTeacher.gameObject.SetActive(false);
toggleAdmin.gameObject.SetActive(false);
}
loginErrorLog.gameObject.SetActive(false);
}
// 登陆按钮按下
void LoginButtonClick()
{
string user = inputField_user.text;
string password = inputField_password.text;
if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(password))
{
loginErrorLog.gameObject.SetActive(true);
loginErrorLog.text = "未输入有效的用户名/密码!";
return;
}
thisUser.user = inputField_user.text.Trim();
thisUser.password = inputField_password.text.Trim();
if (runState == RunState.teacher)
{
if (teacherLogin)//教师登录时通过数据库查询登录名称是否正确
{
bool result= DBManager.Instance.CheckUserLogin(thisUser);
if (result)
LoginSucceed(UserType.Teacher);
else
LoginMsgWrong();
}
else//管理员登录时 使用默认密码
{
if (user != "a" || password != "a")
{
LoginMsgWrong();
}
else
{
LoginSucceed( UserType.manager);
}
}
}
else//学员发送登陆请求
{
TCPManager.Instance.SendNetMsg<User>(thisUser, NetMsgName.Login);
//StudentLoginResult(true);//测试时调用
}
}
//登陆用户名或密码有误执行
void LoginMsgWrong()
{
loginErrorLog.gameObject.SetActive(true);
loginErrorLog.text = "用户名/密码不正确!";
}
//登录成功执行
void LoginSucceed(UserType userType)
{
loginErrorLog.gameObject.SetActive(false);
inputField_password.text = "";
inputField_user.text = "";
Pop();
switch (userType)
{
case UserType.student:
Push(new StudentWaitingPanel());
break;
case UserType.Teacher:
Push(new DaoHangPanel());
ChangeNextPanel((float)userType);
break;
case UserType.manager:
Push(new DaoHangPanel());
ChangeNextPanel((float)userType);
break;
}
}
void TeacherToggleOn(bool isOn)
{
teacherLogin = isOn;
}
//学员登陆时需等待登陆结果判定信息
void StudentLoginResult(bool result)
{
if (result)
LoginSucceed(UserType.student);
else
LoginMsgWrong();
}
}