public static void initFundData(GameClient client) { lock (client.ClientData.LockFund) { FundData fundData = new FundData(); if (!FundManager.IsGongNengOpened(client, false)) { client.ClientData.MyFundData = fundData; } else { fundData.IsOpen = true; fundData.FundDic.Add(1, FundManager.initFundItem(client, EFund.ChangeLife)); fundData.FundDic.Add(2, FundManager.initFundItem(client, EFund.Login)); fundData.FundDic.Add(3, FundManager.initFundItem(client, EFund.Money)); List <FundDBItem> dbItemList = FundManager.DBFundInfo(client); if (dbItemList == null) { client.ClientData.MyFundData = fundData; } else { foreach (FundDBItem dbItem in dbItemList) { if (fundData.FundDic.ContainsKey(dbItem.FundType) && dbItem.State > 0) { FundItem fundItem = fundData.FundDic[dbItem.FundType]; fundItem.BuyType = 1; fundItem.BuyTime = dbItem.BuyTime; fundItem.FundID = dbItem.FundID; fundItem.AwardID = dbItem.AwardID; fundItem.AwardType = 1; if (fundItem.FundType == 3) { fundItem.Value1 = dbItem.Value1; fundItem.Value2 = dbItem.Value2; } if (fundItem.FundType == 2 && fundItem.BuyTime > DateTime.MinValue) { fundItem.Value1 = Global.GetOffsetDay(TimeUtil.NowDateTime()) - Global.GetOffsetDay(fundItem.BuyTime) + 1; } if (dbItem.State == 1) { FundManager.initFundAwardNext(client, fundItem); } } } client.ClientData.MyFundData = fundData; FundManager.CheckActivityTip(client); } } } }
private static FundData FundAward(GameClient client, int fundType) { FundData myData = FundManager.GetFundData(client); FundData result; if (!myData.IsOpen) { result = myData; } else { myData.FundType = fundType; if (!myData.FundDic.ContainsKey(fundType)) { myData.State = -1; result = myData; } else { FundItem myItem = myData.FundDic[fundType]; if (myItem.BuyType != 1) { myData.State = -8; result = myData; } else if (myItem.AwardType == 3) { myData.State = -6; result = myData; } else if (myItem.AwardType == 1) { myData.State = -7; result = myData; } else { DateTime buyTime = TimeUtil.NowDateTime(); FundDBItem dbItem = new FundDBItem(); dbItem.zoneID = client.ClientData.ZoneID; dbItem.UserID = client.strUserID; dbItem.RoleID = client.ClientData.RoleID; dbItem.FundType = myData.FundType; dbItem.FundID = myItem.FundID; dbItem.BuyTime = buyTime; dbItem.AwardID = myItem.AwardID; int fundState = 1; bool isAwardMax = (from info in FundManager._fundAwardDic.Values where info.FundType == myItem.FundType && info.FundID == myItem.FundID && info.AwardID > myItem.AwardID select info).Any <FundAwardInfo>(); bool isFundMax = (from info in FundManager._fundDic.Values where info.FundType == myItem.FundType && info.FundID > myItem.FundID select info).Any <FundInfo>(); if (!isAwardMax && !isFundMax) { fundState = 2; } dbItem.State = fundState; if (!FundManager.DBFundAward(client, dbItem)) { myData.State = -1; result = myData; } else { FundAwardInfo awardInfo = FundManager._fundAwardDic[myItem.AwardID]; if (!FundManager.AddDiamone(client, awardInfo.AwardIsBind, awardInfo.AwardCount)) { myData.State = -1; result = myData; } else { myData.State = 1; if (dbItem.State == 2) { myItem.AwardType = 1; FundManager.CheckActivityTip(client); result = myData; } else { FundManager.initFundAwardNext(client, myItem); FundManager.CheckActivityTip(client); myData.FundType = fundType; result = myData; } } } } } } return(result); }