using UnityEngine; using System.Collections; using Module.Log; using System.Collections.Generic; namespace Games.UserCommonData { enum USER_COMMONDATA { CD_COPYSCENE_QUITTIME = 3, CD_COPYSCENE_NUMBER3 = 5, CD_COPYSCENE_NUMBER4 = 6, CD_CONSIGNSALE = 7, CD_COPYSCENE_CANGJINGGE_TIER = 9, CD_COPYSCENE_CANGJINGGE_SWEEP = 10, CD_STAMINA_BUYNUM = 13, CD_RESTAURANT_FINISHFOOD_NUM = 14, CD_DAILYLUCKYDRAW_CDTIME = 15, CD_NOTICE_DATA = 16, CD_ORIGINAL_NUMBER = 17, CD_CJG_SWEEP_CD = 18, CD_SNS_REWARD_NUMBER = 19, CD_SHARE_NANGUA_CODE_REWARD_COUNT = 32, CD_VIPCP_JXZ = 34, CD_VIPCP_YZW = 36, CD_VIPCP_ZLQJ = 37, CD_VIPCP_YWGM = 38, CD_VIPCP_NHCJ = 39, CD_VIPCP_SSS = 40, CD_WISHINGWELL_TOTAL = 48, CD_WISHINGWELL_FETCH = 49, CD_WISHINGWELL_RIGHT = 51, CD_PAOSHANG_GOTTEN_NUM = 52, CD_VIPCP_MONEYTREE = 56, CD_MAX_NUM_DATA = 128, // 存储边界 上面添加 } enum USER_COMMONFLAG { CF_GUILDACTIVITY_FLAG = 2, // 帮会日常活动标记 CF_FELLOWFUNCTION_OPENFLAG = 10, // 伙伴开启 CF_BELLEFUNCTION_OPENFLAG = 11, // 美人开启 CF_ACTIVITYFUNCTION_OPENFLAG = 12, // 活动开启 CF_STRENGTHENFUNCTION_OPENFLAG = 13, // 强化开启 CF_RESTAURANTFUNCTION_OPENFLAG = 14, // 酒楼开启 CF_GUILDFUNCTION_OPENFLAG = 15, // 帮会功能开启标记 CF_XIAKEFUNCTION_OPENFLAG = 16, // 侠客功能开启标记 CF_MISSION_DAILYMISSION_FLAG = 19, //每日任务 完成标记 CF_ACTIVITY_SINGLEDAY_FLAG = 22, //光棍节活动标记 CF_ACTIVITY_THANKSGIVINGDAYFLAG = 23, //感恩节活动标记 CF_ACTIVITY_THANKSMISSIONERYDAYFLAG = 24,//感恩节活动任务标记 CF_ACTIVITY_SINGLEDAYMISSION_FLAG = 25, //光棍节活动任务标记 CF_ACTIVITY_HALLOWEEN_FLAG = 27, //万圣节活动任务标记 CF_CYFANS_AWARD_FLAG = 28, //畅游老玩家反馈 CF_ISOPENKILLNPCEXP = 29, // 是否提示杀怪经验 CF_SNS_DAILY_REWARD = 30, //SNS每日奖励 CF_REFUSE_ADD_FRIEND = 34, //拒绝被添加好友 CF_FRIEND_NOTICE = 38, // 好友消息推送 CF_MAX_NUM_FLAG = 160, // 存储边界 上面添加 } public class UserCommonData { public const int MAX_CHAR_COMMON_DATA_NUM = 128; public const int MAX_CHAR_COMMON_FLAG_NUM = 5; public const int MAX_COPY_DAY_NUMBER_NUM = 16; private int[] m_CommonData; private int[] m_CommonFlag; struct CopySceneDayNumber { public int m_nDayCount; public int m_ndayTeamCount; public int m_nTotalCount1; public int m_nTotalCount2; public int m_nTotalCount3; public int m_nTeamTotalCount1; public int m_nTeamTotalCount2; public int m_nTeamTotalCount3; public int m_nMultiple; public int m_nResetCount; public int m_nResetTeamCount; public int m_nExtraDayCount; public int m_nExtradayTeamCount; }; private Dictionary m_CopySceneDayNumber; public UserCommonData() { m_CommonData = new int[MAX_CHAR_COMMON_DATA_NUM]; m_CommonFlag = new int[MAX_CHAR_COMMON_FLAG_NUM]; m_CopySceneDayNumber = new Dictionary(); } public void ClearData() { if (m_CommonData != null) { for (int i = 0; i < MAX_CHAR_COMMON_DATA_NUM; i++) { m_CommonData[i] = 0; } } if (m_CommonFlag != null) { for (int i = 0; i < MAX_CHAR_COMMON_FLAG_NUM; i++) { m_CommonFlag[i] = 0; } } if (m_CopySceneDayNumber != null) { m_CopySceneDayNumber.Clear(); } } void SetCommonData(int nIndex, int nValue) { if (nIndex < 0 || nIndex >= MAX_CHAR_COMMON_DATA_NUM) { LogModule.DebugLog("SetCommonData: Index out of Range!!!"); return; } int nData = m_CommonData[nIndex]; m_CommonData[nIndex] = nValue; // 特殊添加 其他 更改 加在 OnCommonDataChange()中 if (nIndex == (int)Games.UserCommonData.USER_COMMONDATA.CD_COPYSCENE_CANGJINGGE_SWEEP) { if (ActivityController.Instance() != null) { //ActivityController.Instance().UpdateTabTips(); } if (FunctionButtonLogic.Instance()) { FunctionButtonLogic.Instance().UpdateActionButtonTip(); } } // 更新 操作 OnCommonDataChange(nIndex, nValue); } public int GetCommonData(int nIndex) { if (nIndex < 0 || nIndex >= MAX_CHAR_COMMON_DATA_NUM) { LogModule.DebugLog("GetCommonData: Index out of Range!!!"); return -1; } return m_CommonData[nIndex]; } void OnCommonDataChange(int nIndex, int nValue) { } void SetCommonFlag(int nBits, bool bFlag) { if (nBits < 0 || nBits >= MAX_CHAR_COMMON_FLAG_NUM*8) { LogModule.DebugLog("SetCommonFlag: Index out of Range!!!"); return; } int nIndex = nBits / (sizeof(int) * 8); if (nIndex >= 0 && nIndex < MAX_CHAR_COMMON_FLAG_NUM) { //int nOldBits = nBits; nBits = nBits % (sizeof(int) * 8);// 0-31 if (nBits >= 0 && nBits <= 31) { int nDataValue = m_CommonFlag[nIndex]; if (bFlag != false) { nDataValue |= (1 << nBits); } else { nDataValue &= ~(1 << nBits); } m_CommonFlag[nIndex] = nDataValue; } } // 更新后操作 OnCommonFlagChange(nBits); } public bool GetCommondFlag(int nBits) { if (nBits < 0 || nBits >= sizeof(int)*MAX_CHAR_COMMON_FLAG_NUM*8) { LogModule.DebugLog("GetCommondFlag: Index out of Range!!!"); return false; } int nIndex = nBits / (sizeof(int) * 8); if (nIndex >=0 && nIndex < MAX_CHAR_COMMON_FLAG_NUM) { nBits = nBits % (sizeof(int) * 8); if (nBits >= 0 && nBits <= 31) { int nDataValue = m_CommonFlag[nIndex]; uint nRet = (uint)(nDataValue & (1 << nBits)); return ((nRet > 0) ? true : false); } } return false; } void OnCommonFlagChange(int nBit) { if (nBit == (int)USER_COMMONFLAG.CF_GUILDACTIVITY_FLAG) { // 更新界面 if (FunctionButtonLogic.Instance()) { FunctionButtonLogic.Instance().UpdateActionButtonTip(); } if (ActivityController.Instance()) { //ActivityController.Instance().UpdateGuildActivityWindow(); } } } public void AskSetCommonFlag(int nBits, bool bFlag) { int nFlag = (bFlag == true ? 1 : 0); CG_ASK_SETCOMMONFLAG askPacket = (CG_ASK_SETCOMMONFLAG)PacketDistributed.CreatePacket(MessageID.PACKET_CG_ASK_SETCOMMONFLAG); askPacket.SetNBits(nBits); askPacket.SetNFlag(nFlag); askPacket.SendPacket(); } void SetCopySceneNumber(int nSceneClassID, CopySceneDayNumber copyInfo/* int nDayCount, int nDayTeamCount, int nTotalCount1, int nTotalCount2, int nTotalCount3, int nTeamTotalCount1, int nTeamTotalCount2, int nTeamTotalCount3, int nMultiple*/) { CopySceneDayNumber info; info = copyInfo; // info.m_nDayCount = copyInfo.nDayCount; // info.m_ndayTeamCount = nDayTeamCount; // info.m_nTotalCount1 = nTotalCount1; // info.m_nTotalCount2 = nTotalCount2; // info.m_nTotalCount3 = nTotalCount3; // info.m_nTeamTotalCount1 = nTeamTotalCount1; // info.m_nTeamTotalCount2 = nTeamTotalCount2; // info.m_nTeamTotalCount3 = nTeamTotalCount3; // info.m_nMultiple = nMultiple; if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { info.m_nExtraDayCount = m_CopySceneDayNumber[nSceneClassID].m_nExtraDayCount; info.m_nExtradayTeamCount = m_CopySceneDayNumber[nSceneClassID].m_nExtradayTeamCount; m_CopySceneDayNumber[nSceneClassID] = info; } else { m_CopySceneDayNumber.Add(nSceneClassID, info); } if (ActivityController.Instance() != null ) { //ActivityController.Instance().UpdateTabTips(); } if (FunctionButtonLogic.Instance()) { FunctionButtonLogic.Instance().UpdateActionButtonTip(); } } void SetCopySceneMultiple(int nSceneClassID,int nMultiple) { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { CopySceneDayNumber info; info.m_nDayCount = m_CopySceneDayNumber[nSceneClassID].m_nDayCount; info.m_ndayTeamCount =m_CopySceneDayNumber[nSceneClassID].m_ndayTeamCount; info.m_nTotalCount1 = m_CopySceneDayNumber[nSceneClassID].m_nTotalCount1; info.m_nTotalCount2 = m_CopySceneDayNumber[nSceneClassID].m_nTotalCount2; info.m_nTotalCount3 = m_CopySceneDayNumber[nSceneClassID].m_nTotalCount3; info.m_nTeamTotalCount1 = m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount1; info.m_nTeamTotalCount2 = m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount2; info.m_nTeamTotalCount3 = m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount3; info.m_nResetCount = m_CopySceneDayNumber[nSceneClassID].m_nResetCount; info.m_nResetTeamCount = m_CopySceneDayNumber[nSceneClassID].m_nResetTeamCount; info.m_nMultiple = nMultiple; info.m_nExtraDayCount = m_CopySceneDayNumber[nSceneClassID].m_nExtraDayCount; info.m_nExtradayTeamCount = m_CopySceneDayNumber[nSceneClassID].m_nExtradayTeamCount; m_CopySceneDayNumber[nSceneClassID] = info; } else { CopySceneDayNumber info; info.m_nDayCount = 0; info.m_ndayTeamCount = 0; info.m_nTotalCount1 = 0; info.m_nTotalCount2 = 0; info.m_nTotalCount3 = 0; info.m_nTeamTotalCount1 = 0; info.m_nTeamTotalCount2 = 0; info.m_nTeamTotalCount3 = 0; info.m_nResetCount = 0; info.m_nResetTeamCount = 0; info.m_nExtraDayCount = 0; info.m_nExtradayTeamCount = 0; info.m_nMultiple = nMultiple; m_CopySceneDayNumber.Add(nSceneClassID, info); } if (ActivityController.Instance() != null) { //ActivityController.Instance().UpdateTabTips(); } if (FunctionButtonLogic.Instance()) { FunctionButtonLogic.Instance().UpdateActionButtonTip(); } } void SetCopySceneExtra(int nSceneClassID, int nExtraDayCount, int nExtradayTeamCount) { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { CopySceneDayNumber info; info.m_nDayCount = m_CopySceneDayNumber[nSceneClassID].m_nDayCount; info.m_ndayTeamCount =m_CopySceneDayNumber[nSceneClassID].m_ndayTeamCount; info.m_nTotalCount1 = m_CopySceneDayNumber[nSceneClassID].m_nTotalCount1; info.m_nTotalCount2 = m_CopySceneDayNumber[nSceneClassID].m_nTotalCount2; info.m_nTotalCount3 = m_CopySceneDayNumber[nSceneClassID].m_nTotalCount3; info.m_nTeamTotalCount1 = m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount1; info.m_nTeamTotalCount2 = m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount2; info.m_nTeamTotalCount3 = m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount3; info.m_nResetCount = m_CopySceneDayNumber[nSceneClassID].m_nResetCount; info.m_nResetTeamCount = m_CopySceneDayNumber[nSceneClassID].m_nResetTeamCount; info.m_nMultiple = m_CopySceneDayNumber[nSceneClassID].m_nMultiple; info.m_nExtraDayCount = nExtraDayCount; info.m_nExtradayTeamCount = nExtradayTeamCount; m_CopySceneDayNumber[nSceneClassID] = info; } else { CopySceneDayNumber info; info.m_nDayCount = 0; info.m_ndayTeamCount = 0; info.m_nTotalCount1 = 0; info.m_nTotalCount2 = 0; info.m_nTotalCount3 = 0; info.m_nTeamTotalCount1 = 0; info.m_nTeamTotalCount2 = 0; info.m_nTeamTotalCount3 = 0; info.m_nResetCount = 0; info.m_nResetTeamCount = 0; info.m_nExtraDayCount = nExtraDayCount; info.m_nExtradayTeamCount = nExtradayTeamCount; info.m_nMultiple = 0; m_CopySceneDayNumber.Add(nSceneClassID, info); } if (ActivityController.Instance() != null) { //ActivityController.Instance().UpdateTabTips(); } if (FunctionButtonLogic.Instance()) { FunctionButtonLogic.Instance().UpdateActionButtonTip(); } } public int GetCopySceneNumber(int nSceneClassID, int nSingle) //当天次数 { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { if (nSingle == 1) { return m_CopySceneDayNumber[nSceneClassID].m_nDayCount; } else { return m_CopySceneDayNumber[nSceneClassID].m_ndayTeamCount; } } return 0; } public int GetCopySceneTotalNumber(int nSceneClassID, int nDiffcult, int nSingle) //总次数 { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { if (nSingle == 1) { if (nDiffcult == 1) { return m_CopySceneDayNumber[nSceneClassID].m_nTotalCount1; } else if (nDiffcult == 2) { return m_CopySceneDayNumber[nSceneClassID].m_nTotalCount2; } else if ( nDiffcult == 3) { return m_CopySceneDayNumber[nSceneClassID].m_nTotalCount3; } } else { if (nDiffcult == 1) { return m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount1; } else if (nDiffcult == 2) { return m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount2; } else if (nDiffcult == 3) { return m_CopySceneDayNumber[nSceneClassID].m_nTeamTotalCount3; } } } return 0; } public int GetCopySceneMultiple(int nSceneClassID) { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { return m_CopySceneDayNumber[nSceneClassID].m_nMultiple; } return 1; } public int GetCopySceneReset(int nSceneClassID,int nSingle) { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { if ( nSingle == 1) { return m_CopySceneDayNumber[nSceneClassID].m_nResetCount; } else { return m_CopySceneDayNumber[nSceneClassID].m_nResetTeamCount; } } return 0; } public int GetCopySceneExtraNumber(int nSceneClassID, int nSingle) //当天次数 { if (m_CopySceneDayNumber.ContainsKey(nSceneClassID)) { if (nSingle == 1) { return m_CopySceneDayNumber[nSceneClassID].m_nExtraDayCount; } else { return m_CopySceneDayNumber[nSceneClassID].m_nExtradayTeamCount; } } return 0; } public void HandlePacket(GC_SYNC_COMMONDATA packet) { for (int i = 0; i < packet.nIndexCount; i++ ) { SetCommonData(packet.GetNIndex(i), packet.GetNValue(i)); } } public void HandlePacket(GC_SYNC_COMMONFLAG packet) { for (int i = 0; i < packet.nIndexCount; i++) { m_CommonFlag[i] = packet.GetNValue(i); } } public void HandlePacket(GC_ASK_COMMONFLAG_RET packet) { bool bFlag = (packet.NFlag == 1? true:false); SetCommonFlag(packet.NBits, bFlag); } public void HandlePacket(GC_SYNC_COPYSCENENUMBER packet) { for (int i = 0; i < packet.nSceneClassIDCount; i++) { if (packet.nDayCountCount <= 0) { SetCopySceneMultiple(packet.GetNSceneClassID(i), packet.GetNMultiple(i)); } else { CopySceneDayNumber info; info.m_nDayCount = packet.GetNDayCount(i); info.m_ndayTeamCount = packet.GetNTeamDayCount(i); info.m_nTotalCount1 = packet.GetNTotalCount1(i); info.m_nTotalCount2 = packet.GetNTotalCount2(i); info.m_nTotalCount3 = packet.GetNTotalCount3(i); info.m_nTeamTotalCount1 = packet.GetNTeamTotalCount1(i); info.m_nTeamTotalCount2 = packet.GetNTeamTotalCount2(i); info.m_nTeamTotalCount3 = packet.GetNTeamTotalCount3(i); info.m_nMultiple = packet.GetNMultiple(i); info.m_nResetCount = packet.GetNDayResetCount(i); info.m_nResetTeamCount = packet.GetNTeamDayResetCount(i); info.m_nExtraDayCount = 0; info.m_nExtradayTeamCount = 0; SetCopySceneNumber(packet.GetNSceneClassID(i), info); } } } public void HandlePacket(GC_SYNC_COPYSCENEEXTRANUMBER packet) { for (int i = 0; i < packet.nSceneClassIDCount; i++) { SetCopySceneExtra(packet.GetNSceneClassID(i), packet.GetNDayExtraCount(i), packet.GetNTeamDayExtraCount(i)); } } } }