/********************************************************************
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();
}
}