using UnityEngine;
using System.Collections;
/// <summary>
/// 游戏全局设置管理类
/// </summary>
public class GlobalMngr
{
/// <summary> 最大尝试量</summary>
private int max_try_count = 20;
/// <summary>暂停时间 </summary>
public float pausedTime;
/// <summary>时间间隔 </summary>
private float time_interval;
public int availableMemSize { get; private set; }
public string deviceModel { get; private set; }
public string deviceName { get; private set; }
public string deviceType { get; private set; }
public SettingLevelEnum gfxMode { get; private set; }
public string graphicsDeviceName { get; private set; }
public bool isMemCritMode { get; set; }
public string locationInfo { get; private set; }
public SettingLevelEnum memMode { get; private set; }
public int memSize { get; private set; }
public float originalDpi { get; private set; }
public int originalHeight { get; private set; }
public int originalWidth { get; private set; }
public int processorCount { get; private set; }
public float refDpi { get; private set; }
public int state { get; set; }
private static GlobalMngr _this = new GlobalMngr();
public static GlobalMngr GetInstance()
{
return _this;
}
public float GetPlayedTime()
{
return (Time.realtimeSinceStartup - this.pausedTime);
}
public void Pause()
{
this.pausedTime = Time.realtimeSinceStartup - this.pausedTime;
}
public void PrintGlobalSetting()
{
Debug.Log("---global setting---");
Debug.Log("device model: " + this.deviceModel);
Debug.Log("graphics device name: " + this.graphicsDeviceName);
Debug.Log(string.Concat(new object[] { "resolution: " , Screen.width , "x" , Screen.height }));
Debug.Log("ref dpi: " + this.refDpi);
Debug.Log("processor count: " + this.processorCount);
Debug.Log("mem size: " + this.memSize);
Debug.Log("available mem size: " + this.availableMemSize);
Debug.Log("gfx mode: " + this.gfxMode);
Debug.Log("mem mode: " + this.memMode);
Debug.Log("--------------------");
}
public void Resume()
{
this.pausedTime = Time.realtimeSinceStartup - this.pausedTime;
}
public void SetResolution()
{
int num = 400;
int num2 = (int)((((float)Screen.width) / ((float)Screen.height)) * num);
if (this.deviceModel == "xiaomihm1sc")
{
int height = 600;
int width = (int)((((float)Screen.width) / ((float)Screen.height)) * height);
Screen.SetResolution(width , height , true);
}
else if (Screen.dpi > this.refDpi)
{
float num5 = this.refDpi / Screen.dpi;
int num6 = (int)((Screen.height * num5) + 0.5f);
int num7 = (int)((Screen.width * num5) + 0.5f);
if (num6 < num)
{
num7 = num2;
num6 = num;
}
Screen.SetResolution(num7 , num6 , true);
}
}
public GlobalMngr()
{
//屏幕 睡眠 设置
Screen.sleepTimeout = -1;
//对AssetBundle 的缓存管理,最大字节缓存
Caching.maximumAvailableDiskSpace = 0x32000000L;
//是否能多点触控
Input.multiTouchEnabled = false;
//平台 用60帧还是 30帧 值得研究
//if (PlatformMngr.GetInstance().IsOpenPlatform())
//{
// Application.targetFrameRate = 30;
//}
//else
//{
// Application.targetFrameRate = 60;
//}
this.state = 0;
this.isMemCritMode = false;
this.deviceModel = SystemInfo.deviceModel.Replace(" " , string.Empty).ToLower();
this.deviceName = SystemInfo.deviceName.Replace(" " , string.Empty).ToLower();
this.deviceType = SystemInfo.deviceType.ToString().ToLower();
this.graphicsDeviceName = SystemInfo.graphicsDeviceName.Replace(" " , string.Empty).ToLower();
this.memSize = (SystemInfo.systemMemorySize <= 0) ? (0x1000 + SystemInfo.systemMemorySize) : SystemInfo.systemMemorySize;
this.availableMemSize = -1;
//进程数
this.processorCount = SystemInfo.processorCount;
this.originalWidth = Screen.width;
this.originalHeight = Screen.height;
this.originalDpi = Screen.dpi;
//=========== 设置游戏品质 ==========//
//小米平板 或 英伟达游戏掌机
if ((this.deviceModel == "xiaomimipad") || (this.deviceModel == "nvidiashield"))
{
this.gfxMode = SettingLevelEnum.ULTRA;
}
else if(processorCount==1)
{//游戏渲染品质么???
gfxMode = SettingLevelEnum.LOW;
}
else if(processorCount<4 || memSize<=0x400)
{
gfxMode = SettingLevelEnum.MEDIUM;
}
{
this.gfxMode = SettingLevelEnum.HIGH;
}
if (this.memSize <= 0x200)
{
this.memMode = SettingLevelEnum.LOW;
}
else if (this.memSize <= 0x400)
{
this.memMode = SettingLevelEnum.MEDIUM;
}
else
{
this.memMode = SettingLevelEnum.ULTRA;
}
//========= GPU ==============//
if (this.graphicsDeviceName == "mali-450mp")
{
this.refDpi = 350f;
}
else if (this.graphicsDeviceName == "mali-t628mp")
{
this.refDpi = 350f;
}
else if (this.graphicsDeviceName == "mali-t720mp")
{
this.refDpi = 350f;
}
else if (this.graphicsDeviceName == "mali-t760mp")
{
this.refDpi = 400f;
}
else if (this.graphicsDeviceName == "adreno(tm)320")
{
this.refDpi = 350f;
}
else if (this.graphicsDeviceName == "adreno(tm)330")
{
this.refDpi = 400f;
}
else if (this.graphicsDeviceName == "adreno(tm)420")
{
this.refDpi = 400f;
}
else if (this.graphicsDeviceName == "adreno(tm)430")
{
this.refDpi = 400f;
}
else if (this.graphicsDeviceName == "powervrg6200")
{
this.refDpi = 350f;
}
else if (this.graphicsDeviceName == "powervrg6400")
{
this.refDpi = 400f;
}
else if (this.processorCount >= 4)
{
this.refDpi = 250f;
}
else
{
this.refDpi = 200f;
}
if (this.graphicsDeviceName == "bluestacks")
{
this.gfxMode = SettingLevelEnum.LOW;
this.memMode = SettingLevelEnum.LOW;
this.refDpi = 500f;
}
//========= no infor===========//
//if (RunParam.GetInstance().gfxMode != SettingLevelEnum.AUTO)
//{
// this.gfxMode = RunParam.GetInstance().gfxMode;
//}
//if (RunParam.GetInstance().memMode != SettingLevelEnum.AUTO)
//{
// this.memMode = RunParam.GetInstance().memMode;
//}
}
//public void CheckAvailableMemory()
//{
// if (this.availableMemSize == -1)
// {
// this.availableMemSize = ((int)(RuntimeEnv.GetInstance().GetSystemAvailMemory() >> 20)) + 120;
// if (this.memMode == SettingLevelEnum.LOW)
// {
// if (this.availableMemSize < 300)
// {
// this.isMemCritMode = true;
// }
// else
// {
// this.isMemCritMode = false;
// }
// }
// else if (this.memMode == SettingLevelEnum.MEDIUM)
// {
// if (this.availableMemSize < 400)
// {
// this.isMemCritMode = true;
// }
// else
// {
// this.isMemCritMode = false;
// }
// }
// else if (this.memMode == SettingLevelEnum.HIGH)
// {
// if (this.availableMemSize < 500)
// {
// this.isMemCritMode = true;
// }
// else
// {
// this.isMemCritMode = false;
// }
// }
// else if (this.availableMemSize < 600)
// {
// this.isMemCritMode = true;
// }
// else
// {
// this.isMemCritMode = false;
// }
// PlayerPrefs.SetInt("prevAvailableMemSize" , this.availableMemSize);
// PlayerPrefs.SetInt("prevIsMemCritMode" , !this.isMemCritMode ? 0 : 1);
// PlayerPrefs.Save();
// }
//}
//public void ClearSystemMemory()
//{
// RuntimeEnv.GetInstance().ClearMemory(0x40000000L);
//}
}