public static void FundMoneyCost(GameClient client, int moneyCost) { FundData fundData = FundManager.GetFundData(client); if (fundData != null && fundData.IsOpen) { if (fundData.FundDic.ContainsKey(3)) { FundItem fundItem = fundData.FundDic[3]; if (fundItem.BuyType == 1) { if (FundManager.DBFundMoney(client, new FundDBItem { UserID = client.strUserID, RoleID = client.ClientData.RoleID, Value1 = 0, Value2 = moneyCost })) { fundItem.Value2 += moneyCost; FundAwardInfo awardInfo = FundManager._fundAwardDic[fundItem.AwardID]; if (fundItem.AwardType == 3 && fundItem.Value1 >= awardInfo.Value1 && fundItem.Value2 >= awardInfo.Value2) { fundItem.AwardType = 2; FundManager.CheckActivityTip(client); } } } } } }
public static void FundVip(GameClient client) { FundData fundData = FundManager.GetFundData(client); if (fundData != null && fundData.IsOpen) { bool isTip = false; foreach (FundItem item in fundData.FundDic.Values) { if (item.BuyType == 3) { FundInfo info = FundManager._fundDic[item.FundID]; if (client.ClientData.VipLevel >= info.MinVip) { item.BuyType = 2; isTip = true; } } } if (isTip) { FundManager.CheckActivityTip(client); } } }
private static FundData FundGetData(GameClient client) { FundData fundData = FundManager.GetFundData(client); bool isOpen = FundManager.IsGongNengOpened(client, false); if (fundData.IsOpen != isOpen) { FundManager.initFundData(client); } return(FundManager.GetFundData(client)); }
public static void FundChangeLife(GameClient client) { FundData fundData = FundManager.GetFundData(client); if (fundData != null && fundData.IsOpen) { if (fundData.FundDic.ContainsKey(1)) { FundItem fundItem = fundData.FundDic[1]; fundItem.Value1 = client.ClientData.ChangeLifeCount; fundItem.Value2 = client.ClientData.Level; if (fundItem.BuyType == 1 && fundItem.AwardType == 3) { FundAwardInfo awardInfo = FundManager._fundAwardDic[fundItem.AwardID]; if (fundItem.Value1 >= awardInfo.Value1 && fundItem.Value2 >= awardInfo.Value2) { fundItem.AwardType = 2; FundManager.CheckActivityTip(client); } } } } }
private static void CheckActivityTip(GameClient client) { lock (client.ClientData.LockFund) { FundData fundData = FundManager.GetFundData(client); if (fundData.IsOpen) { bool isChange = false; bool isAll = false; List <int> tipTypeList = new List <int>(); foreach (FundItem item in fundData.FundDic.Values) { bool tip = item.BuyType == 2 || item.AwardType == 2; isAll = (isAll || tip); switch (item.FundType) { case 1: isChange |= client._IconStateMgr.AddFlushIconState(14106, tip); break; case 2: isChange |= client._IconStateMgr.AddFlushIconState(14107, tip); break; case 3: isChange |= client._IconStateMgr.AddFlushIconState(14108, tip); break; } } isChange |= client._IconStateMgr.AddFlushIconState(14109, isAll); if (isChange) { client._IconStateMgr.SendIconStateToClient(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); }
private static FundData FundBuy(GameClient client, int fundType) { FundData myData = FundManager.GetFundData(client); FundData result; if (!myData.IsOpen) { result = myData; } else { myData.FundType = fundType; if (GameFuncControlManager.IsGameFuncDisabled(GameFuncType.System1Dot9)) { myData.State = -2; result = myData; } else if (!myData.FundDic.ContainsKey(fundType)) { myData.State = -1; result = myData; } else { FundItem myItem = myData.FundDic[fundType]; if (myItem.BuyType == 1) { myData.State = -4; result = myData; } else if (myItem.BuyType == 3) { myData.State = -5; result = myData; } else { FundInfo fundInfo = FundManager._fundDic[myItem.FundID]; if (fundInfo.Price > client.ClientData.UserMoney) { myData.State = -3; result = myData; } else if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, fundInfo.Price, "基金购买", true, false, false, DaiBiSySType.None)) { myData.State = -1; result = myData; } else { DateTime buyTime = TimeUtil.NowDateTime(); if (!FundManager.DBFundBuy(client, new FundDBItem { zoneID = client.ClientData.ZoneID, UserID = client.strUserID, RoleID = client.ClientData.RoleID, FundType = myData.FundType, FundID = myItem.FundID, BuyTime = buyTime, State = 1 })) { myData.State = -1; result = myData; } else { myItem.BuyType = 1; myItem.BuyTime = buyTime; if (myItem.FundType == 2) { myItem.Value1 = Global.GetOffsetDay(TimeUtil.NowDateTime()) - Global.GetOffsetDay(myItem.BuyTime) + 1; } FundAwardInfo awardInfo = FundManager._fundAwardDic[myItem.AwardID]; if (myItem.Value1 >= awardInfo.Value1 && myItem.Value2 >= awardInfo.Value2) { myItem.AwardType = 2; } else { myItem.AwardType = 3; } myData.State = 1; myData.FundType = fundType; FundManager.CheckActivityTip(client); result = myData; } } } } } return(result); }