| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 | using System;using ET;using UnityEngine;namespace GFGGame{    public class AntiAddictionController    {        public static void ShowAntiAddictionAlert()        {            string promptStr = "您属于未成年人,账号已被纳入防沉迷系统,根据国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》、《关于进一步严格管理切实防止未成年人沉迷网络游戏的通知》要求,您仅可在周五、周六、周日和法定节假日每日20时只21时登录游戏。未满8周岁用户无法充值;8周岁至未满16周岁用户单次充值不得超过50元,每月累计充值金额不得超过200元;16周岁至未满18周岁用户单次充值不得超过100元,每月累计充值金额不得超过400元。目前已超出健康游戏体验时间,将强制游戏下线。";            AlertSystem.Show(promptStr)                .SetRightButton(true, "知道啦", (object data) =>                {                    GameController.QuitToLoginView(true);                });        }        public static bool CheckAntiAddictionWhenLogin()        {            if (!GameGlobal.antiAddiction)            {                return false;            }            int age = GameGlobal.userAge;            if (age < 18)            {                int remainMinutes = GetRemainGameMinutes();                if (remainMinutes <= 0)                {                    ShowAntiAddictionAlert();                    return true;                }                else                {                    string ageRangeStr = null;                    int maxRechargeSingle = 0;                    int maxRechargeTotal = 0;                    GetAntiValue(out ageRangeStr, out maxRechargeSingle, out maxRechargeTotal);                    string promptStr = "您属于{0}未成年人,已被纳入防沉迷系统。仅可在周五、周六、周日和法定节假日每日20时至21时登录游戏,目前游戏剩余{1}分钟。";                    promptStr = String.Format(promptStr, ageRangeStr, remainMinutes);                    if (age < 8)                    {                        promptStr += "本游戏不为未满8周岁的用户提供游戏充值服务。";                    }                    else                    {                        promptStr += "单次充值金额不得超过{0}元人民币,每月充值金额不得超过{1}元人民币。";                        promptStr = String.Format(promptStr, maxRechargeSingle, maxRechargeTotal);                    }                    AlertSystem.Show(promptStr)                        .SetRightButton(true, "知道啦");                }            }            return false;        }        public static bool CheckAntiAddictionWhenPlay()        {            if (!GameGlobal.antiAddiction)            {                return false;            }            int age = GameGlobal.userAge;            if (age < 18)            {                int remainMinutes = GetRemainGameMinutes();                if (remainMinutes <= 0)                {                    string promptStr = "您属于未成年人,已被纳入防沉迷系统。仅可在周五、周六、周日和法定节假日每日20时至21时登录游戏。目前已超出健康游戏体验时间,将强制游戏下线。";                    AlertSystem.Show(promptStr)                        .SetRightButton(true, "知道啦", (object data) =>                        {                            GameController.QuitToLoginView(false);                        });                    return true;                }            }            return false;        }        public static bool CheckAntiAddictionRecharge(int value)        {            if (!GameGlobal.antiAddiction)            {                return false;            }            string promptStr = "";            if (GameGlobal.isVisitor)            {                promptStr += "您当前为游客模式,已被纳入防沉迷系统,在此模式下不能充值和付费消费。";                AlertSystem.Show(promptStr)                     .SetRightButton(true, "知道啦");                return true;            }            string ageRangeStr = null;            int maxRechargeSingle = 0;            int maxRechargeTotal = 0;            GetAntiValue(out ageRangeStr, out maxRechargeSingle, out maxRechargeTotal);            promptStr = "您属于{0}未成年人,已被纳入防沉迷系统。";            promptStr = String.Format(promptStr, ageRangeStr);            int age = GameGlobal.userAge;            if (age < 8)            {                promptStr += "本游戏不为未满8周岁的用户提供游戏充值服务。";                AlertSystem.Show(promptStr)                    .SetRightButton(true, "知道啦");                return true;            }            else if (age < 18)            {                int preTotalMon = RoleDataManager.rechargeTotalMon + value;                if (value > maxRechargeSingle || preTotalMon > maxRechargeTotal)                {                    promptStr += "单次充值金额不得超过{0}元人民币,每月充值金额不得超过{1}元人民币。";                    promptStr = String.Format(promptStr, maxRechargeSingle, maxRechargeTotal);                    AlertSystem.Show(promptStr)                        .SetRightButton(true, "知道啦");                    return true;                }            }            return false;        }        private static void GetAntiValue(out string ageRangeStr, out int maxRechargeSingle, out int maxRechargeTotal)        {            int age = GameGlobal.userAge;            if (age < 8)            {                ageRangeStr = "未满8周岁";                maxRechargeSingle = 0;                maxRechargeTotal = 0;            }            else if (age < 16)            {                ageRangeStr = "8周岁以上未满16周岁";                maxRechargeSingle = 50;                maxRechargeTotal = 200;            }            else            {                ageRangeStr = "16周岁以上未满18周岁";                maxRechargeSingle = 100;                maxRechargeTotal = 400;            }        }        /// <summary>        /// 防沉迷对象当日剩余可玩时间        /// </summary>        /// <returns></returns>        private static int GetRemainGameMinutes()        {            var dateTime = TimeHelper.DateTimeNow();            int hour = dateTime.Hour;            if (hour >= 20 && hour < 21)            {                int minute = dateTime.Minute;                return 60 - minute;            }            return 0;        }    }}
 |