CultivateImmortal/Assets/Scripts/GameScene/GameMgr.cs

145 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}