/******************************************************************** created: 2014/07/31 created: 31:7:2014 16:43 filename: PayActivityData.cs author: Tangyi purpose: 充值活动数据 *********************************************************************/ using UnityEngine; using System.Collections; using System.Collections.Generic; using GCGame.Table; using Module.Log; using System; public enum FLAGTYPE { //此枚举与服务器枚举对应 需要同时修改 FLAG_FIRSTTIME = 0, //首充礼包 是否领取 FLAG_MONTHCARD = 1, //月卡礼包 是否领取 FLAG_MONTHCARD_TODAY = 2, //月卡礼包 是否领取 FLAG_GROWUP = 3, //成长礼包 是否领取额 FLAG_GROWUP_40 = 4, //成长礼包 40级是否领取 FLAG_GROWUP_50 = 5, //成长礼包 50级是否领取 FLAG_GROWUP_60 = 6, //成长礼包 60级是否领取 FLAG_GROWUP_70 = 7, //成长礼包 70级是否领取 FLAG_GROWUP_80 = 8, //成长礼包 80级是否领取 FLAG_GROWUP_90 = 9, //成长礼包 90级是否领取 FLAG_NUM = 16, } public struct PayActivityData { /// /// 首充标记 /// /// public bool IsFirstTimeFlag() { return m_Flags[(int)FLAGTYPE.FLAG_FIRSTTIME]; } /// /// 月卡标记 /// /// public bool IsMonthCardFlag() { return m_Flags[(int)FLAGTYPE.FLAG_MONTHCARD]; } /// /// 月卡今日是否已经领取标记 /// /// public bool IsMonthCardTodayFlag() { return m_Flags[(int)FLAGTYPE.FLAG_MONTHCARD_TODAY]; } /// /// 成长标记 /// /// public bool IsGrowUpFlag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP]; } /// /// 40级成长礼包是否已领取 /// /// public bool IsGrowUp40Flag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP_40]; } /// /// 50级成长礼包是否已领取 /// /// public bool IsGrowUp50Flag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP_50]; } /// /// 60级成长礼包是否已领取 /// /// public bool IsGrowUp60Flag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP_60]; } /// /// 70级成长礼包是否已领取 /// /// public bool IsGrowUp70Flag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP_70]; } /// /// 80级成长礼包是否已领取 /// /// public bool IsGrowUp80Flag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP_80]; } /// /// 90级成长礼包是否已领取 /// /// public bool IsGrowUp90Flag() { return m_Flags[(int)FLAGTYPE.FLAG_GROWUP_90]; } /// /// 首周是否完成 /// /// public bool IsFirstWeekOver() { if (m_StartServerDays >= 7 || m_StartServerDays < 0) { return true; } return false; } // public int GetMonthCardLeftDay() { if (m_Flags[(int)FLAGTYPE.FLAG_MONTHCARD] && m_MonthCardBeginTime != 0) { DateTime startTime = new DateTime(1970, 1, 1); //开始时间 DateTime MonthCardBegin = new DateTime(startTime.Ticks + (long)m_MonthCardBeginTime * 10000000L, DateTimeKind.Utc); MonthCardBegin = MonthCardBegin.AddHours(8); //调到北京时间 //MonthCardBegin = MonthCardBegin.ToLocalTime(); //当前时间 DateTime NowData = new DateTime(startTime.Ticks + (long)GlobalData.ServerAnsiTime * 10000000L, DateTimeKind.Utc); NowData = NowData.AddHours(8); //调到北京时间 //NowData = NowData.ToLocalTime(); //相差天数 TimeSpan span = NowData.Subtract(MonthCardBegin); return 30 - span.Days; } return 0; } /// /// 月卡是否完成 /// /// public bool IsMonthCardOver() { if (m_Flags[(int)FLAGTYPE.FLAG_MONTHCARD] && m_MonthCardBeginTime != 0) { DateTime startTime = new DateTime(1970, 1, 1); //开始时间 DateTime MonthCardBegin = new DateTime(startTime.Ticks + (long)m_MonthCardBeginTime * 10000000L, DateTimeKind.Utc); MonthCardBegin = MonthCardBegin.AddHours(8); //调到北京时间 //MonthCardBegin = MonthCardBegin.ToLocalTime(); //当前时间 DateTime NowData = new DateTime(startTime.Ticks + (long)GlobalData.ServerAnsiTime * 10000000L, DateTimeKind.Utc); NowData = NowData.AddHours(8); //调到北京时间 //NowData = NowData.ToLocalTime(); //相差天数 TimeSpan span = NowData.Subtract(MonthCardBegin); if (span.Days >= 29) { return true; } } return false; } /// /// 成长基金是否完成 /// /// public bool IsGrowUpOver() { if (m_Flags[(int)FLAGTYPE.FLAG_GROWUP]) { if (m_Flags[(int)FLAGTYPE.FLAG_GROWUP_40] && m_Flags[(int)FLAGTYPE.FLAG_GROWUP_50] && m_Flags[(int)FLAGTYPE.FLAG_GROWUP_60] && m_Flags[(int)FLAGTYPE.FLAG_GROWUP_70] && m_Flags[(int)FLAGTYPE.FLAG_GROWUP_80] && m_Flags[(int)FLAGTYPE.FLAG_GROWUP_90]) { return true; } } return false; } public void CleanUp() { m_Flags = new bool[(int)FLAGTYPE.FLAG_NUM]; for (int i = 0; i < (int)FLAGTYPE.FLAG_NUM; i++) { m_Flags[i] = false; } m_MonthCardBeginTime = 0; m_MonthCardYBTotal = 0; m_StartServerDays = -1; m_RebateOpen = false; m_RebateRate = 0.0f; m_OldServerRate = 0.0f; } private bool[] m_Flags; //月卡开始时间 private int m_MonthCardBeginTime; public int MonthCardBeginTime { get { return m_MonthCardBeginTime; } set { m_MonthCardBeginTime = value; } } //月卡累计领取元宝数 private int m_MonthCardYBTotal; public int MonthCardYBTotal { get { return m_MonthCardYBTotal; } set { m_MonthCardYBTotal = value; } } //开服天数 private int m_StartServerDays; public int StartServerDays { get { return m_StartServerDays; } set { m_StartServerDays = value; } } //不定时返利是否打开 private bool m_RebateOpen; public bool RebateOpen { get { return m_RebateOpen; } set { m_RebateOpen = value; } } //不定时返利倍率 private float m_RebateRate; public float RebateRate { get { return m_RebateRate; } set { m_RebateRate = value; } } //老服返利倍率 private float m_OldServerRate; public float OldServerRate { get { return m_OldServerRate; } set { m_OldServerRate = value; } } public void HandlePacket(GC_SYNC_PAY_ACTIVITY_DATA packet) { //获取数据 int flagCount = packet.flagsCount; for (int i = 0; i < flagCount && i < (int)FLAGTYPE.FLAG_NUM; i++) { m_Flags[i] = (packet.GetFlags(i)) > 0 ? true : false; } m_MonthCardBeginTime = packet.Monthcardbegin; m_MonthCardYBTotal = packet.Monthcardyb; m_StartServerDays = packet.Startserverdays; m_RebateOpen = (packet.Rebateopen == 1); m_RebateRate = (float)packet.Rebaterate / 10; if (packet.HasOldserverrebate) { m_OldServerRate = (float)packet.Oldserverrebate / 10; } } public void HandlePacket(GC_ASK_PAY_ACTIVITY_PRIZE_RET packet) { } public void SendMonthCardPacket() { if (m_Flags[(int)FLAGTYPE.FLAG_MONTHCARD] == false) { return; } if (m_Flags[(int)FLAGTYPE.FLAG_MONTHCARD_TODAY]) { return; } if (IsMonthCardOver()) { return; } CG_ASK_PAY_ACTIVITY_PRIZE msg = (CG_ASK_PAY_ACTIVITY_PRIZE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_PAY_ACTIVITY_PRIZE); msg.SetPrizetype((int)CG_ASK_PAY_ACTIVITY_PRIZE.PrizeType.PRIZE_MONTHCARD); msg.SetPrizepram1(0); msg.SetPrizepram2(0); msg.SendPacket(); } public void SendGrowUpPacket(int level) { if (m_Flags[(int)FLAGTYPE.FLAG_GROWUP] == false) { return; } if (IsGrowUpOver()) { return; } if (GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level < level) { return; } CG_ASK_PAY_ACTIVITY_PRIZE msg = (CG_ASK_PAY_ACTIVITY_PRIZE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_PAY_ACTIVITY_PRIZE); msg.SetPrizetype((int)CG_ASK_PAY_ACTIVITY_PRIZE.PrizeType.PRIZE_GROWUP); msg.SetPrizepram1(level); msg.SetPrizepram2(0); msg.SendPacket(); } }