Exemple #1
0
        ///// <summary>
        ///// 售票口基础产出公式:Y=base*0.05*1.07^((lv*1.6)-1)
        ///// </summary>
        ///// <returns></returns>
        //public static System.Numerics.BigInteger GetEntryBaseTollPrice(int level)
        //{
        //    if (level<1)
        //    {
        //        //Logger.LogWarp.LogError("等级为0");
        //        level = 1;
        //    }
        //    int baseprice = Config.ticketConfig.getInstace().getCell(1).pricebase;
        //    int number = (int)(level * 1.6f) - 1;
        //    //1.07^((lv*1.6)-1)
        //    var numerator = System.Numerics.BigInteger.Parse("107");
        //    numerator = System.Numerics.BigInteger.Pow(numerator, number);
        //    var denominator = System.Numerics.BigInteger.Parse("100");
        //    denominator = System.Numerics.BigInteger.Pow(denominator, number);

        //    //base * 0.05 * numerator/(denominator*100)
        //    var price = numerator * baseprice*5 / (denominator*100);

        //    return price;
        //}
        /// <summary>
        /// 售票口门票价格
        /// </summary>
        /// <returns></returns>
        public static System.Numerics.BigInteger GetEntryPrice(int level, int sceneID, bool noBuffAffect)
        {   //Y=pricebase*等级段加成*(0.1*lv+0.9)*场景加成*BUFF加成+MIN(5*lv,500)
            if (sceneID == -1)
            {
                sceneID = GlobalDataManager.GetInstance().playerData.playerZoo.currSceneID;
            }
            var allData = Config.ticketConfig.getInstace().AllData;

            Config.ticketCell ticketCell = null;
            foreach (var item in allData)
            {
                if (item.Value.scene == sceneID)
                {
                    ticketCell = item.Value;
                    break;
                }
            }
            //pricebase
            var pricebase = System.Numerics.BigInteger.Parse(ticketCell.pricebase);
            //等级段加成
            var lvAddition = GetLevelAddition(ticketCell, level);
            //(0.1*lv+0.9)
            float idx_1 = 0.1f * level + 0.9f;
            //场景加成
            int doublenum = Config.sceneConfig.getInstace().getCell(sceneID).doublenum;
            //BUFF加成
            float buffAll = PlayerDataModule.PlayerRatioCoinInComeAll(sceneID, noBuffAffect);
            //MIN(5*lv,500)
            int idx_2 = level;
            var price = pricebase * doublenum * lvAddition * GetInteger(idx_1 * buffAll * 100) / 100 + idx_2;

            //LogWarp.LogErrorFormat("测试:pricebase={0},等级段加成={1},产出基数={2},场景加成={3},BUFF加成={4},MIN(5*lv,500)={5}",
            //    pricebase, lvAddition, idx_1, doublenum, buffAll, idx_2);
            return(price);
        }
        /// <summary>
        /// 动物栏门票:
        /// </summary>
        /// <param name="level">动物栏等级</param>
        /// <returns></returns>
        public static System.Numerics.BigInteger GetLittleZooPrice(int littleZooID, int level, bool isNeedMulBuff = false)
        {   /*      Y=pricebase*等级段加成*动物栏产出基数*场景加成*BUFF加成+MIN(5*lv,500)    */
            var buildupCell = Config.buildupConfig.getInstace().getCell(littleZooID);
            int sceneID     = buildupCell.scene;

            //基础值
            System.Numerics.BigInteger pricebase = System.Numerics.BigInteger.Parse(buildupCell.pricebase);
            //等级段加成
            var lvAddition = GetLevelAddition(buildupCell, level);
            //动物栏产出基数
            var baseTollPrice = GetLittleZooBaseTollPrice(littleZooID, level);
            //场景加成
            int doublenum = Config.sceneConfig.getInstace().getCell(sceneID).doublenum;
            //buff加成
            float buffAll = PlayerDataModule.PlayerRatioCoinInComeAll(sceneID, isNeedMulBuff);
            //MIN(5*lv,500)
            int idx_2 = level;

            var price = pricebase * lvAddition * doublenum * GetInteger(baseTollPrice * buffAll * 100) / 100 + idx_2;

            //LogWarp.LogErrorFormat("测试:pricebase={0},等级段加成={1},动物栏产出基数={2},场景加成={3},BUFF加成={4}",
            //    pricebase, lvAddition, baseTollPrice, doublenum, buffAll);
            return(price);
        }