//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Saturday, September 02, 2017
|
//--------------------------------------------------------
|
|
using System.Collections;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using UnityEngine.Events;
|
using System;
|
using System.Collections.Generic;
|
|
namespace vnxbqy.UI
|
{
|
|
public class CreateRoleWin : Window
|
{
|
[SerializeField] SelectRoleButton m_JobSelect1;
|
[SerializeField] SelectRoleButton m_JobSelect2;
|
|
[SerializeField] Button m_Create;
|
[SerializeField] Button m_RandomName;
|
[SerializeField] Button m_Back;
|
|
[SerializeField] InputField m_NameInput;
|
|
[SerializeField] Image m_JobName;
|
|
[SerializeField] PositionTween m_LeftPostionTween;
|
[SerializeField] PositionTween m_RightPositionTween;
|
|
[SerializeField] Image m_SpiritRadar;
|
[SerializeField] SpiritButton[] m_SpiritButtons;
|
|
LoginModel model { get { return ModelCenter.Instance.GetModel<LoginModel>(); } }
|
|
string m_MarkName = string.Empty;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_JobSelect1.SetListener(SelectJob1);
|
m_JobSelect2.SetListener(SelectJob2);
|
|
m_Back.SetListener(BackBtn);
|
m_Create.SetListener(CreateRole);
|
m_RandomName.SetListener(() =>
|
{
|
var job = CreateRoleManager.Instance.selectedJob.value;
|
ChangeUserName(job, true);
|
});
|
|
m_SpiritButtons[0].SetListener(() =>
|
{
|
DisplaySpiritRadar(1);
|
SelectSpiritButton(1);
|
});
|
|
m_SpiritButtons[1].SetListener(() =>
|
{
|
DisplaySpiritRadar(2);
|
SelectSpiritButton(2);
|
});
|
|
m_SpiritButtons[2].SetListener(() =>
|
{
|
DisplaySpiritRadar(3);
|
SelectSpiritButton(3);
|
});
|
}
|
|
private void BackBtn()
|
{
|
GameNetSystem.Instance.LoginOut();
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.onCreateRole = true;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
//代表自动登录测试
|
if (VersionConfig.Get().versionAuthority == VersionAuthority.InterTest && VersionConfig.Get().banHao == "test")
|
{
|
List<string> abc = new List<string> { "a", "b", "c", "d", "e", "f", "g"};
|
m_NameInput.text = abc[UnityEngine.Random.Range(0, 6)] + UnityEngine.Random.Range(1, 100000);
|
CreateRole();
|
}
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
model.onCreateRole = false;
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
m_LeftPostionTween.Play();
|
m_RightPositionTween.Play();
|
|
ChangeUserName(CreateRoleManager.Instance.selectedJob.value, true);
|
DisplayDynamicInfo(true);
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
DisplayDynamicInfo(false);
|
}
|
|
#endregion
|
|
private void DisplayDynamicInfo(bool force)
|
{
|
if (force || CreateRoleManager.Instance.selectedJob.dirty)
|
{
|
var job = CreateRoleManager.Instance.selectedJob.Fetch();
|
OnSelectedJobChange(job);
|
}
|
}
|
|
private void SelectJob1()
|
{
|
if (CreateRoleManager.Instance.selectedJob.value == 1)
|
{
|
ChangeUserName(1, true);
|
return;
|
}
|
|
ChangeUserName(1, false);
|
CreateRoleManager.Instance.View(1, false);
|
}
|
|
private void SelectJob2()
|
{
|
if (CreateRoleManager.Instance.selectedJob.value == 2)
|
{
|
ChangeUserName(2, true);
|
return;
|
}
|
|
ChangeUserName(2, false);
|
CreateRoleManager.Instance.View(2, false);
|
}
|
|
private void OnSelectedJobChange(int job)
|
{
|
m_JobSelect1.SetSelected(job == 1);
|
m_JobSelect2.SetSelected(job == 2);
|
|
var config = CreateRoleConfig.Get(job);
|
m_JobName.SetSprite(config.jobName);
|
InitSpiritButtons(job);
|
|
DisplaySpiritRadar(1);
|
SelectSpiritButton(1);
|
}
|
|
private void InitSpiritButtons(int job)
|
{
|
var config = CreateRoleConfig.Get(job);
|
for (int i = 1; i <= 3; i++)
|
{
|
m_SpiritButtons[i - 1].Init(config.spiritSelectedIcons[i - 1], config.spiritUnSelectedIcons[i - 1]);
|
}
|
}
|
|
private void SelectSpiritButton(int index)
|
{
|
if (index < 1 || index > 3)
|
{
|
return;
|
}
|
|
for (int i = 1; i <= 3; i++)
|
{
|
m_SpiritButtons[i - 1].SetSelected(i == index);
|
}
|
}
|
|
private void DisplaySpiritRadar(int index)
|
{
|
if (index < 1 || index > 3)
|
{
|
return;
|
}
|
|
var config = CreateRoleConfig.Get(CreateRoleManager.Instance.selectedJob.value);
|
m_SpiritRadar.SetSprite(config.spiritRadars[index - 1]);
|
m_SpiritRadar.SetNativeSize();
|
}
|
|
private void ChangeUserName(int job, bool force = true)
|
{
|
if (!force && !m_MarkName.Equals(m_NameInput.text))
|
{
|
return;
|
}
|
|
var name = RandomNameConfig.GetFirstName(job) + RandomNameConfig.GetSecondName(job);
|
m_MarkName = name;
|
m_NameInput.text = name;
|
}
|
|
private void CreateRole()
|
{
|
if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected)
|
{
|
return;
|
}
|
|
if (m_NameInput.text.Equals(string.Empty))
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameNull"));
|
return;
|
}
|
|
if (!ConfigInitiator.done)
|
{
|
SysNotifyMgr.Instance.ShowTip("configloading");
|
return;
|
}
|
|
int error = 0;
|
if (!UIHelper.SatisfyNameLength(m_NameInput.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(m_NameInput.text) || UIHelper.HasSpecialCharac(m_NameInput.text)
|
|| DirtyNameConfig.IsDirtName(m_NameInput.text))
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1007"));
|
return;
|
}
|
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1116"));
|
return;
|
}
|
|
LanguageVerify.Instance.VerifyPlayerName(m_NameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) =>
|
{
|
DTC0132_tagCreateRoleSucess.isCreateRole = false;
|
C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole
|
createRole.Job = (byte)CreateRoleManager.Instance.selectedJob.value;
|
createRole.Name = name;
|
createRole.Sex = 1;
|
createRole.Hair = 10002;
|
createRole.HairColor = 1;
|
createRole.Face = 0;
|
createRole.FacePic = 0;
|
createRole.PlayerType = 1;
|
GameNetSystem.Instance.SendInfo(createRole);//发送创角包
|
});
|
}
|
|
private void OnCreateRoleSuccess()
|
{
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1116"));
|
return;
|
}
|
}
|
|
[System.Serializable]
|
public struct SelectRoleButton
|
{
|
public int job;
|
public Button select;
|
public Image backGround;
|
public Image icon;
|
|
public void SetListener(UnityAction action)
|
{
|
select.SetListener(action);
|
}
|
|
public void SetSelected(bool selected)
|
{
|
var config = CreateRoleConfig.Get(job);
|
backGround.SetActive(selected);
|
icon.SetSprite(selected ? config.selectIcon : config.unselectIcon);
|
icon.SetNativeSize();
|
}
|
|
}
|
|
[System.Serializable]
|
public struct SpiritButton
|
{
|
public Button button;
|
public Image selectedImgae;
|
public Image unSelectedImage;
|
public GameObject unSelectedImageFrame;
|
|
public void Init(string selectIconKey, string unSelectIconKey)
|
{
|
selectedImgae.SetSprite(selectIconKey);
|
unSelectedImage.SetSprite(unSelectIconKey);
|
}
|
|
public void SetListener(UnityAction action)
|
{
|
button.SetListener(action);
|
}
|
|
public void SetSelected(bool isSelected)
|
{
|
selectedImgae.SetActive(isSelected);
|
unSelectedImage.SetActive(!isSelected);
|
unSelectedImageFrame.SetActive(!isSelected);
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|