CultivateImmortal/Assets/Scripts/GameScene/UI/BattlePanel.cs

315 lines
9.3 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using System.Threading;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class BattlePanel : BasePanel
{
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
public Text txtTitle;
//<2F><><EFBFBD><EFBFBD>
public Text txtAward;
//<2F><><EFBFBD>͵<EFBFBD>ͼ
public Button btnLowMap;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
public Button btnUpMap;
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
public Button btnLowLev;
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
public Button btnUpLev;
//<2F><><EFBFBD>Ҷ<EFBFBD><D2B6><EFBFBD>
public PlayerObject playerObj;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public MonsterObject monsterObj;
//<2F>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>
public Transform damageUser;
public Transform damageMonster;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>1<EFBFBD><31>2
public Transform target1;
public Transform target2;
void Awake()
{
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><E5BCB4>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>Ϊ1
if (Time.timeScale<1)
{
Time.timeScale = 1f;
}
//ע<><D7A2><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>¼<EFBFBD>
EventCenter.Instance.AddEventListener<int>(E_EventType.E_Player_DamageNum, DamageUserNum);
2024-12-02 18:00:58 +08:00
EventCenter.Instance.AddEventListener<int>(E_EventType.E_Player_CritDamageNum, DamageUserCritNum);
EventCenter.Instance.AddEventListener<int>(E_EventType.E_Monster_DamageNum, DamageMonsterNum);
2024-12-02 18:00:58 +08:00
EventCenter.Instance.AddEventListener<int>(E_EventType.E_Monster_CritDamageNum, DamageMonsterCritNum);
//ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Һ͹<D2BA><CDB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EventCenter.Instance.AddEventListener(E_EventType.E_Player_Init,InitPlayerPanel);
EventCenter.Instance.AddEventListener(E_EventType.E_Monster_Init,InitMonsterPanel);
//ע<><EFBFBD><E1B5AF><EFBFBD><EFBFBD>Ϣ
EventCenter.Instance.AddEventListener<string>(E_EventType.E_Pool_Register1, PoolTipTarget1);
EventCenter.Instance.AddEventListener<string>(E_EventType.E_Pool_Register2, PoolTipTarget2);
}
public override void Init()
{
//<2F>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdatePanel();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC>ť<EFBFBD><C5A5>ʲô
btnLowMap.onClick.AddListener(() =>
{
//<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
BtnOnclick2("<22><><EFBFBD>͵<EFBFBD>ͼ<EFBFBD><CDBC>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
UpOrDownMap(-10, GameDataMgr.Instance.nowMonster);
});
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ť<EFBFBD><C5A5>ʲô
btnUpMap.onClick.AddListener(() =>
{
BtnOnclick2("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
UpOrDownMap(10, GameDataMgr.Instance.nowMonster);
});
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>㰴ť<E3B0B4><C5A5>ʲô
btnLowLev.onClick.AddListener(() =>
{
BtnOnclick2("<22><><EFBFBD><EFBFBD>һ<EFBFBD>㰴ť<E3B0B4><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
UpOrDownLev(-1, GameDataMgr.Instance.nowMonster);
});
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>㰴ť<E3B0B4><C5A5>ʲô
btnUpLev.onClick.AddListener(() =>
{
BtnOnclick2("<22><><EFBFBD><EFBFBD>һ<EFBFBD>㰴ť<E3B0B4><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
UpOrDownLev(1, GameDataMgr.Instance.nowMonster);
});
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>򽵵<EFBFBD>һ<EFBFBD><EFBFBD><E3BEB3>
/// </summary>
/// <param name="num"><3E><><EFBFBD><EFBFBD><EFBFBD>򽵵Ͷ<F2BDB5B5><CDB6>ٲ<EFBFBD><D9B2><EFBFBD></param>
/// <param name="nowMonster"><3E><>ǰ<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
private void UpOrDownLev(int num,MonsterData monster)
{
int nowMonsterNum = GameDataMgr.Instance.monsters.IndexOf(monster);
int index1=nowMonsterNum/10;
nowMonsterNum += num;
int index2=nowMonsterNum/10;
if (nowMonsterNum > GameDataMgr.Instance.monsters.Count-1)
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD>Ѵ<D1B4><EFB5BD><EFBFBD>߾<EFBFBD><DFBE><EFBFBD>");
return;
}
if (nowMonsterNum < 0)
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><CDBE><EFBFBD>");
return;
}
//<2F>ı<EFBFBD><C4B1><EFBFBD>ͼ<EFBFBD>ɹ<EFBFBD>
if (index1==index2)
{
//<2F>ɽ<EFBFBD><C9BD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameMgr.Instance.isFeijianClose = true;
GameDataMgr.Instance.nowMonster = GameDataMgr.Instance.monsters[nowMonsterNum];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdatePanel();
if (num>0)
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD><D1B8><EFBFBD>");
}
else
{
BtnOnclick1("<22><><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD><D1B8><EFBFBD>");
}
}
else
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>");
}
}
/// <summary>
/// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>򽵵<EFBFBD>
/// </summary>
/// <param name="num"></param>
/// <param name="nowMonster"></param>
private void UpOrDownMap(int num, MonsterData monster)
{
int nowMonsterNum = GameDataMgr.Instance.monsters.IndexOf(monster);
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򽵵͵<F2BDB5B5>ͼ<EFBFBD><CDBC><EFBFBD>Ǵ<EFBFBD>ÿʮ<C3BF><CAAE><EFBFBD>ĵ<EFBFBD>һ<EFBFBD>ʼ
nowMonsterNum =nowMonsterNum/10*10+num;
if (nowMonsterNum > GameDataMgr.Instance.monsters.Count-1)
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD>Ѵ<D1B4><EFB5BD><EFBFBD>߾<EFBFBD><DFBE><EFBFBD>");
return;
}
if (nowMonsterNum < 0)
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><CDBE><EFBFBD>");
return;
}
//<2F>ı<EFBFBD><C4B1><EFBFBD>ͼ<EFBFBD>ɹ<EFBFBD>
if (GameDataMgr.Instance.player.stateId >= nowMonsterNum)
{
//<2F>ɽ<EFBFBD><C9BD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameMgr.Instance.isFeijianClose = true;
GameDataMgr.Instance.nowMonster = GameDataMgr.Instance.monsters[nowMonsterNum];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UpdatePanel();
if (num > 0)
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD><D1B8><EFBFBD>");
}
else
{
BtnOnclick1("<22><><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD><D1B8><EFBFBD>");
}
}
else
{
BtnOnclick1("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>");
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ս<EFBFBD><D5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵĽ<CFB5><C4BD><EFBFBD><EFBFBD><EFBFBD>ʾ
/// </summary>
private void UpdatePanel()
{
MonsterData monster = GameDataMgr.Instance.nowMonster;
//<2F>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>
txtAward.text = "<22>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + "<22><>ʯ+" + GameMgr.Instance.SetNumber(monster.stone) + "<22><>Դʯ+" + monster.yuan;
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
txtTitle.text = monster.state;
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>-<2D><>ʼ
GameMgr.Instance.isStartAtk = true;
//<2F>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD>ղֿ<D5B2>
GameMgr.Instance.isFeijianClose = true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD>
InitPlayerPanel();
//<2F><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD>
InitMonsterPanel();
}
//<2F>Ϸ<EFBFBD><CFB7><EFBFBD>ʾ<EFBFBD><CABE>
private void BtnOnclick1(string str)
{
EventCenter.Instance.EventTrigger(E_EventType.E_Pool_Register1, str);
}
//<2F>·<EFBFBD><C2B7><EFBFBD>ʾ<EFBFBD><CABE>
private void BtnOnclick2(string str)
{
EventCenter.Instance.EventTrigger(E_EventType.E_Pool_Register2, str);
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>
private void InitPlayerPanel()
{
EventCenter.Instance.Claer(E_EventType.E_Player_Wound);
if (!playerObj.gameObject.activeSelf)
{
playerObj.gameObject.SetActive(true);
}
playerObj.UpdatePanel();
}
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
private void InitMonsterPanel()
{
EventCenter.Instance.Claer(E_EventType.E_Monster_Wound);
if (!monsterObj.gameObject.activeSelf)
{
monsterObj.gameObject.SetActive(true);
}
monsterObj.UpdatePanel();
}
/// <summary>
2024-12-02 18:00:58 +08:00
/// <20><><EFBFBD>ұ<EFBFBD><D2B1>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
/// </summary>
private void DamageUserNum(int damageHp)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameObject go = PoolMgr.Instance.GetObj("Object/DamageNum");
go.transform.SetParent(damageUser, false);
go.transform.localPosition = Vector3.zero;
go.transform.localScale = Vector3.one;
go.GetComponent<DamageNum>().UpdateTxtInfo("-" + damageHp);
}
/// <summary>
2024-12-02 18:00:58 +08:00
/// <20><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
/// </summary>
private void DamageUserCritNum(int damageHp)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameObject go = PoolMgr.Instance.GetObj("Object/DamageNum");
go.transform.SetParent(damageUser, false);
go.transform.localPosition = Vector3.zero;
go.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
go.GetComponent<DamageNum>().UpdateTxtInfo("-" + damageHp);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
/// </summary>
private void DamageMonsterNum(int damageHp)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameObject go = PoolMgr.Instance.GetObj("Object/DamageNum");
go.transform.SetParent(damageMonster, false);
go.transform.localPosition = Vector3.zero;
go.transform.localScale = Vector3.one;
go.GetComponent<DamageNum>().UpdateTxtInfo("-" + damageHp);
}
2024-12-02 18:00:58 +08:00
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFB1BB><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>
/// </summary>
private void DamageMonsterCritNum(int damageHp)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѫ<EFBFBD><D1AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GameObject go = PoolMgr.Instance.GetObj("Object/DamageNum");
go.transform.SetParent(damageMonster, false);
go.transform.localPosition = Vector3.zero;
go.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
go.GetComponent<DamageNum>().UpdateTxtInfo("-" + damageHp);
}
/// <summary>
/// <20><><EFBFBD>õĵ<C3B5><C4B5><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="str"></param>
private void PoolTipTarget1(string str)
{
GameObject obj = PoolMgr.Instance.GetObj("Object/TipTool");
obj.transform.SetParent(target1, false);
obj.transform.localPosition = Vector3.zero;
obj.transform.localScale = Vector3.one;
obj.GetComponent<TipTool>().UpdateTxtInfo(str);
}
/// <summary>
/// <20><><EFBFBD>õĵ<C3B5><C4B5><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ӽ<EFBFBD><D3BD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="str"></param>
private void PoolTipTarget2(string str)
{
GameObject obj = PoolMgr.Instance.GetObj("Object/TipTool");
obj.transform.SetParent(target2, false);
obj.transform.localPosition = Vector3.zero;
obj.transform.localScale = Vector3.one;
obj.GetComponent<TipTool>().UpdateTxtInfo(str);
}
}