Exemplo n.º 1
0
        void doAdd_HappyDataAddItem(string parm)
        {
            string[] stringS      = parm.Split(',');
            int      UserID       = int.Parse(stringS[0]);
            int      the3rdUserID = int.Parse(stringS[1]);
            int      itemId       = int.Parse(stringS[2]);

            var cache = new PersonalCacheStruct <HappyModeData>();
            var hmd   = cache.FindKey(stringS[1]);

            if (null == hmd)
            {
                return;
            }

            persionRealItemInfo rii = new persionRealItemInfo();

            rii.Index          = hmd.RealItemInfoLst.Count;
            rii.UserId         = UserID;
            rii.the3rdUserId   = the3rdUserID;
            rii.Identify       = "GM_ADD";
            rii.happyPoint     = hmd.HappyPoint;
            rii.needHappyPoint = 0;
            rii.realItemID     = itemId;
            hmd.RealItemInfoLst.Add(rii);

            // save to db for ....
            var shareRealItemCache     = new ShareCacheStruct <shareRealItemInfo>();
            shareRealItemInfo shareRII = new shareRealItemInfo();

            shareRII.Index          = (int)shareRealItemCache.GetNextNo();
            shareRII.UserId         = UserID;
            shareRII.the3rdUserId   = the3rdUserID;
            shareRII.Identify       = "GM_ADD";
            shareRII.happyPoint     = hmd.HappyPoint;
            shareRII.needHappyPoint = 0;
            shareRII.realItemID     = itemId;
            shareRealItemCache.Add(shareRII);
        }
Exemplo n.º 2
0
        public override bool TakeAction()
        {
            int itemIndex = requestPack.realItemID;
            // int
            var           happyPersionCache = new PersonalCacheStruct <HappyModeData>();
            int           keyId             = utils.KeyUInt2Int(requestPack.the3rdUserID);
            HappyModeData hmd = happyPersionCache.FindKey(keyId.ToString());

            if (hmd == null)
            {
                responsePack.errorCode = (byte)Response1009Pack.EnumErrorCode.not_find_happymodedata;
                return(true);
            }

            // happData 01
            memoryRealInfoDataModel.HappyData happyData = GameConfigMgr.Instance().getHappyData(requestPack.realItemID);
            if (null == happyData)
            {
                responsePack.errorCode = (byte)Response1009Pack.EnumErrorCode.not_find_happPointConfig;
                return(true);
            }

            // share realitem modify 02
            var itemcntCache      = new ShareCacheStruct <ShareRealItemCnt>();
            ShareRealItemCnt sric = itemcntCache.FindKey(requestPack.realItemID);

            if (null == sric)
            {
                responsePack.errorCode = (byte)Response1009Pack.EnumErrorCode.not_find_item_cnt_data;
                return(true);
            }

            if (false == checkRefleshReplace(hmd, happyData))
            {
                return(true);
            }

            int needHappyPoint = happyData.needHappyPoint; // 配置文件总获得

            if (hmd.HappyPoint < needHappyPoint)
            {
                responsePack.errorCode = (byte)Response1009Pack.EnumErrorCode.not_enought_happyPoint;
                return(true);
            }

            if (sric.num <= 0)
            {
                responsePack.errorCode = (byte)Response1009Pack.EnumErrorCode.realitem_is_empty;
                return(true);
            }

            bool buyOK = false;

            if (sric.num > 0)
            {
                sric.ModifyLocked(() =>
                {
                    sric.num -= 1;
                    if (sric.num >= 0)
                    {
                        buyOK = true;
                    }
                });
            }

            if (false == buyOK)
            {
                responsePack.errorCode = (byte)Response1009Pack.EnumErrorCode.realitem_is_empty;
                return(true);
            }

            persionRealItemInfo rii = new persionRealItemInfo();

            rii.Index          = hmd.RealItemInfoLst.Count;
            rii.UserId         = requestPack.UserID;
            rii.the3rdUserId   = utils.KeyUInt2Int(requestPack.the3rdUserID);
            rii.Identify       = requestPack.identify;
            rii.happyPoint     = hmd.HappyPoint;
            rii.needHappyPoint = needHappyPoint;
            rii.realItemID     = requestPack.realItemID;
            hmd.RealItemInfoLst.Add(rii);

            // save to db for ....
            var shareRealItemCache     = new ShareCacheStruct <shareRealItemInfo>();
            shareRealItemInfo shareRII = new shareRealItemInfo();

            shareRII.Index          = (int)shareRealItemCache.GetNextNo();
            shareRII.UserId         = requestPack.UserID;
            shareRII.the3rdUserId   = utils.KeyUInt2Int(requestPack.the3rdUserID);
            shareRII.Identify       = requestPack.identify;
            shareRII.happyPoint     = hmd.HappyPoint;
            shareRII.needHappyPoint = needHappyPoint;
            shareRII.realItemID     = requestPack.realItemID;
            shareRealItemCache.Add(shareRII);

            hmd.ModifyLocked(() =>
            {
                hmd.HappyPoint -= needHappyPoint;
                hmd.realItemBuyCntInRefleshTime[itemIndex].cnt = hmd.realItemBuyCntInRefleshTime[itemIndex].cnt + 1;
            });
            responsePack.errorCode  = (byte)Response1009Pack.EnumErrorCode.ok;
            responsePack.realItemID = rii.realItemID;
            return(true);
        }