//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Saturday, September 02, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using System.Text;
|
using System.Text.RegularExpressions;
|
|
namespace Snxxz.UI
|
{
|
|
public class CreateRoleWin : Window
|
{
|
[SerializeField] Button qhBtn;
|
[SerializeField] Image qhImg;
|
[SerializeField] Button dsBtn;
|
[SerializeField] Image dsImg;
|
[SerializeField] Button jsBtn;
|
[SerializeField] Image jsImg;
|
[SerializeField] Button createBtn;
|
[SerializeField] Button randomBtn;
|
[SerializeField] Button backBtn;
|
[SerializeField] InputField userNameInput;
|
[SerializeField] Image m_DescImg;
|
private int userJob = 0;
|
CreateRoleHeroShow m_CreateRoleShow;
|
|
LoginModel m_Model;
|
LoginModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<LoginModel>()); } }
|
|
string m_MarkName = string.Empty;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
qhBtn.onClick.AddListener(QhBtn);
|
dsBtn.onClick.AddListener(DsBtn);
|
jsBtn.onClick.AddListener(JsBtn);
|
|
createBtn.onClick.AddListener(CreateBtn);
|
randomBtn.onClick.AddListener(() =>
|
{
|
ChangeUserName(true);
|
});
|
backBtn.onClick.AddListener(BackBtn);
|
|
}
|
|
private void BackBtn()
|
{
|
GameNetSystem.Instance.LoginOut();
|
}
|
|
protected override void OnPreOpen()
|
{
|
DTC0309_tagPlayerLoginInfo.RoleChange += RoleChage;
|
model.onCreateRole = true;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
userJob = 1;
|
int _rand = UnityEngine.Random.Range(0, 100);
|
for (int i = 0; i < GeneralDefine.RandomJobs.Count; i++)
|
{
|
var _value = GeneralDefine.RandomJobs[i];
|
if (_value != 0 && _rand < _value)
|
{
|
userJob = i + 1;
|
break;
|
}
|
}
|
ChangeUserName(true);
|
RoleShow(0.2f);
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
DTC0309_tagPlayerLoginInfo.RoleChange -= RoleChage;
|
model.onCreateRole = false;
|
RemoveRoleModel();
|
}
|
#endregion
|
|
private void JsBtn()
|
{
|
if (userJob == 3)
|
{
|
ChangeUserName(true);
|
return;
|
}
|
userJob = 3;
|
ChangeUserName(false);
|
RoleShow(0f);
|
}
|
|
private void DsBtn()
|
{
|
if (userJob == 2)
|
{
|
ChangeUserName(true);
|
return;
|
}
|
userJob = 2;
|
ChangeUserName(false);
|
RoleShow(0f);
|
}
|
|
private void QhBtn()
|
{
|
if (userJob == 1)
|
{
|
ChangeUserName(true);
|
return;
|
}
|
userJob = 1;
|
ChangeUserName(false);
|
RoleShow(0f);
|
}
|
|
public void UpdateInfo()
|
{
|
CreateRoleConfig qhCfg = CreateRoleConfig.Get(1);
|
CreateRoleConfig dsCfg = CreateRoleConfig.Get(2);
|
CreateRoleConfig jsCfg = CreateRoleConfig.Get(3);
|
CreateRoleConfig sltCfg = null;
|
switch (userJob)
|
{
|
case 1:
|
sltCfg = qhCfg;
|
break;
|
case 2:
|
sltCfg = dsCfg;
|
break;
|
case 3:
|
sltCfg = jsCfg;
|
break;
|
}
|
qhBtn.image.SetSprite(userJob == 1 ? sltCfg.selectIcon : sltCfg.unselectIcon);
|
dsBtn.image.SetSprite(userJob == 2 ? sltCfg.selectIcon : sltCfg.unselectIcon);
|
jsBtn.image.SetSprite(userJob == 3 ? sltCfg.selectIcon : sltCfg.unselectIcon);
|
qhImg.SetSprite(userJob == 1 ? "CreateRole_Job1_Select" : "CreateRole_Job1_UnSelect");
|
dsImg.SetSprite(userJob == 2 ? "CreateRole_Job2_Select" : "CreateRole_Job2_UnSelect");
|
jsImg.SetSprite(userJob == 3 ? "CreateRole_Job3_Select" : "CreateRole_Job3_UnSelect");
|
m_DescImg.SetSprite(sltCfg.desc);
|
}
|
|
private void ChangeUserName(bool _force = true)
|
{
|
if (!_force && !m_MarkName.Equals(userNameInput.text))
|
{
|
return;
|
}
|
var _name = RandomNameConfig.GetFirstName(userJob) + RandomNameConfig.GetSecondName(userJob);
|
m_MarkName = _name;
|
ChangeUserName(_name);
|
}
|
|
private void ChangeUserName(string _name)
|
{
|
userNameInput.text = _name;
|
}
|
|
private void CreateBtn()
|
{
|
if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected)
|
{
|
return;
|
}
|
|
if (userNameInput.text.Equals(string.Empty))
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameNull"));
|
return;
|
}
|
int error = 0;
|
if (!UIHelper.SatisfyNameLength(userNameInput.text, out error))
|
{
|
switch (error)
|
{
|
case 1:
|
ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameLimit"));
|
break;
|
case 2:
|
ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameShort"));
|
break;
|
}
|
return;
|
}
|
if (DirtyWordConfig.IsDirtWord(userNameInput.text) || UIHelper.HasSpecialCharac(userNameInput.text)
|
|| DirtyNameConfig.IsDirtName(userNameInput.text))
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1007"));
|
return;
|
}
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1116"));
|
return;
|
}
|
|
LanguageVerify.Instance.VerifyPlayerName(userNameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) =>
|
{
|
C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole
|
createRole.Job = (byte)userJob;
|
createRole.Name = name;
|
createRole.Sex = 1;
|
createRole.Hair = 10002;
|
createRole.HairColor = 1;
|
createRole.Face = 10006;
|
createRole.FacePic = 11004;
|
createRole.PlayerType = 1;
|
GameNetSystem.Instance.SendInfo(createRole);//发送创角包
|
});
|
|
|
|
//屏蔽职业特效预先加载逻,以减少不必要的内存损耗和获得更快的场景切换速度,资源压缩使用LZ4才行。
|
// AssetPreLoad.Instance.PreLoadJobEffect(userJob);
|
}
|
|
private void RoleChage()
|
{
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1116"));
|
return;
|
}
|
C0108_tagCRoleLoginAsk tagCRoleLoginAsk = new C0108_tagCRoleLoginAsk();
|
tagCRoleLoginAsk.Type = 2;//进入游戏
|
tagCRoleLoginAsk.ClientID = SDKUtility.Instance.RegistrationID;
|
GameNetSystem.Instance.SendInfo(tagCRoleLoginAsk);
|
NetLinkWin.Show();
|
}
|
|
private void RoleShow(float _delay)
|
{
|
StopCoroutine("DelayShowActor");
|
StartCoroutine("DelayShowActor", _delay);
|
}
|
|
IEnumerator DelayShowActor(float _delay)
|
{
|
m_CreateRoleShow = GameObject.FindObjectOfType<CreateRoleHeroShow>();
|
UpdateInfo();
|
|
yield return new WaitForSeconds(_delay);
|
RemoveRoleModel();
|
ShowRoleModel();
|
}
|
|
private void ShowRoleModel()
|
{
|
m_CreateRoleShow.CreateRoleShow(userJob);
|
}
|
|
private void RemoveRoleModel()
|
{
|
m_CreateRoleShow.Dispose();
|
}
|
}
|
|
}
|
|
|
|
|