145 lines
4.2 KiB
C#
145 lines
4.2 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Threading;
|
||
using UnityEngine;
|
||
|
||
public class GameMgr:SingletonAutoMono<GameMgr>
|
||
{
|
||
//玩家是否开始攻击
|
||
public bool isStartAtk = true;
|
||
|
||
//飞剑是否应该消失
|
||
public bool isFeijianClose = false;
|
||
|
||
//人物界面灵气和弹窗是否立即消失
|
||
public bool isUserNumAndGas = false;
|
||
|
||
void Start()
|
||
{
|
||
StartCoroutine(UserGasAdd());
|
||
}
|
||
|
||
/// <summary>
|
||
/// 上线后每5秒自动加灵气
|
||
/// </summary>
|
||
IEnumerator UserGasAdd()
|
||
{
|
||
while (true)
|
||
{
|
||
yield return new WaitForSeconds(5f);
|
||
//具体显示的灵气数值
|
||
int gas = GameDataMgr.Instance.player.minuteGas / 12;
|
||
GameDataMgr.Instance.player.gas += gas;
|
||
if (UIManager.Instance.GetPanel<UserPanel>()!=null)
|
||
{
|
||
EventCenter.Instance.EventTrigger<int>(E_EventType.E_Pool_GasTip,gas);
|
||
}
|
||
//更新TopPanel面板上的数据
|
||
if (UIManager.Instance.GetPanel<TopPanel>() != null)
|
||
{
|
||
UIManager.Instance.GetPanel<TopPanel>().UpdatePanel();
|
||
}
|
||
//保存玩家数据
|
||
GameDataMgr.Instance.PlayerDataSave();
|
||
}
|
||
}
|
||
|
||
//玩家和怪物重置方法
|
||
public void StartInit()
|
||
{
|
||
StartCoroutine(InitPlayerAndMonster());
|
||
}
|
||
|
||
//玩家或者怪物死亡时,等待1s,重置怪物和玩家
|
||
private IEnumerator InitPlayerAndMonster()
|
||
{
|
||
yield return new WaitForSeconds(2f);
|
||
EventCenter.Instance.EventTrigger(E_EventType.E_Player_Init);
|
||
EventCenter.Instance.EventTrigger(E_EventType.E_Monster_Init);
|
||
//开启攻击
|
||
isStartAtk = true;
|
||
}
|
||
|
||
// 将数字转换为简化后的表示
|
||
public string SetNumber(long num)
|
||
{
|
||
if (num >= 1000000)
|
||
{
|
||
return ((float)num / 1000000).ToString("F2") + "百万";
|
||
}
|
||
else if (num >= 10000)
|
||
{
|
||
return ((float)num / 10000).ToString("F2") + "万";
|
||
}
|
||
else if (num >= 100000000)
|
||
{
|
||
return ((float)num / 100000000).ToString("F2") + "亿";
|
||
}
|
||
else
|
||
{
|
||
return num.ToString();
|
||
}
|
||
}
|
||
|
||
// 将十六进制颜色转换为 Color
|
||
public Color HexToColor(string hex)
|
||
{
|
||
byte r = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
|
||
byte g = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
|
||
byte b = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
|
||
return new Color32(r, g, b, 255);
|
||
}
|
||
|
||
public Color HexToColorAlaph(string hex)
|
||
{
|
||
byte r = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
|
||
byte g = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
|
||
byte b = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
|
||
return new Color32(r, g, b, 120);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 弹出获得奖励消息
|
||
/// </summary>
|
||
/// <param name="stone"></param>
|
||
/// <param name="yu"></param>
|
||
/// <param name="gas"></param>
|
||
public void StartTip(int stone, int yuan)
|
||
{
|
||
StartCoroutine(TipMessage(stone, yuan));
|
||
}
|
||
/// <summary>
|
||
/// 弹窗奖励消息协程
|
||
/// </summary>
|
||
/// <param name="stone"></param>
|
||
/// <param name="yu"></param>
|
||
/// <param name="gas"></param>
|
||
/// <returns></returns>
|
||
IEnumerator TipMessage(int stone, int yuan)
|
||
{
|
||
if (UIManager.Instance.GetPanel<TopPanel>() != null)
|
||
{
|
||
UIManager.Instance.GetPanel<TopPanel>().UpdatePanel();
|
||
}
|
||
EventCenter.Instance.EventTrigger<string>(E_EventType.E_Pool_Register2, "你获得了灵石+" + SetNumber(stone));
|
||
yield return new WaitForSeconds(0.5f);
|
||
EventCenter.Instance.EventTrigger<string>(E_EventType.E_Pool_Register2, "你获得了源石+" + yuan);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 概率反馈
|
||
/// </summary>
|
||
/// <param name="probability">传递过来的概率</param>
|
||
/// <returns></returns>
|
||
public bool ProbaReturn(float probability)
|
||
{
|
||
//获得0-1中间的浮点数
|
||
float f = Random.value;
|
||
if (f <= (probability/100))
|
||
{
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
}
|