Esempio n. 1
0
        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);
        }