Esempio n. 1
0
        public bool MyKitchen(MsgInformationEx MsgDTO, object[] param)
        {
            var cookingRec = CookingRecord.Get(MsgDTO.FromQQ);
            var level      = CookingLevelSvc.LocationLevel(cookingRec.TotalPrice);
            var msg        = $"【{level.Name}(lv.{level.Level})】\r\n";
            var itemColle  = ItemCollectionRecord.Get(MsgDTO.FromQQ);
            var dietList   = cookingRec.LearndDietMenu.Select(diet =>
            {
                var Diet = CookingDietSvc[diet];
                if (!Diet.Flavorings.IsNullOrEmpty() && !cookingRec.CheckFlavorings(Diet.Flavorings) ||
                    !Diet.Materials.IsNullOrEmpty() && !itemColle.CheckItem(Diet.Materials))
                {
                    return($"{diet}(材料不足)");
                }

                return(diet);
            });

            msg +=
                $"已学会的菜谱:{string.Join(",", dietList)}\r\n";
            msg += $"当前持有菜肴:{string.Join(",", cookingRec.CookedDietDic.Select(p => $"{p.Key}*{p.Value}"))}\r\n";
            msg += $"当前持有调味料:{string.Join(",", cookingRec.FlavoringDic.Select(p => $"{p.Key}*{p.Value}"))}\r\n";
            msg += $"推荐学习菜谱:【{CookingDietSvc.SuggestDiet(cookingRec.LearndDietMenu)?.Name}】";

            MsgSender.PushMsg(MsgDTO, msg);
            return(true);
        }
Esempio n. 2
0
        public bool MyCookingHistory(MsgInformationEx MsgDTO, object[] param)
        {
            var cookingRec = CookingRecord.Get(MsgDTO.FromQQ);
            var history    = cookingRec.CookingHistory;

            if (history.IsNullOrEmpty())
            {
                MsgSender.PushMsg(MsgDTO, "你尚未烹饪过任何东西!");
                return(false);
            }

            var sumDietCount = history.Sum(p => p.Value);
            var totalPrice   = cookingRec.TotalPrice;

            var curLevel  = CookingLevelSvc.LocationLevel(totalPrice);
            var nextLevel = CookingLevelSvc[curLevel.Level + 1];

            var msg = $"你总共烹饪过 {sumDietCount} 道菜肴\r\n" +
                      $"总共消耗了物品 {cookingRec.ItemConsumeDic.Sum(p => p.Value)} 个,调味料 {cookingRec.FlavoringTotal} 个\r\n" +
                      $"总价值:{totalPrice.CurencyFormat()}\r\n" +
                      $"当前烹饪评级为:【{curLevel.Name}(lv.{curLevel.Level})】,距离下一等级【{nextLevel.Name}({nextLevel.Level})】还差 {(nextLevel.NeedPrice - totalPrice).CurencyFormat()}";

            MsgSender.PushMsg(MsgDTO, msg);
            return(true);
        }
Esempio n. 3
0
        public bool DietMenu(MsgInformationEx MsgDTO, object[] param)
        {
            var cookingRec = CookingRecord.Get(MsgDTO.FromQQ);
            var allDiets   = CookingDietSvc.DietList;
            var msg        = string.Join("\r\n",
                                         allDiets.Select(
                                             diet => $"{diet.Name}{(cookingRec.LearndDietMenu.Contains(diet.Name) ? "(已学会)" : string.Empty)}:{string.Join(",", diet.Attributes)}"));

            MsgSender.PushMsg(MsgDTO, msg);
            return(true);
        }
Esempio n. 4
0
        public static CookingRecord Get(long QQNum)
        {
            var record = MongoService <CookingRecord> .GetOnly(p => p.QQNum == QQNum);

            if (record != null)
            {
                return(record);
            }

            record = new CookingRecord()
            {
                QQNum = QQNum
            };
            MongoService <CookingRecord> .Insert(record);

            return(record);
        }
Esempio n. 5
0
        public bool ExchangeMenu(MsgInformationEx MsgDTO, object[] param)
        {
            var dietName = param[0] as string;
            var diet     = CookingDietSvc[dietName];

            if (diet == null)
            {
                MsgSender.PushMsg(MsgDTO, "未查找到相关菜肴");
                return(false);
            }

            var cookingRec = CookingRecord.Get(MsgDTO.FromQQ);

            if (cookingRec.LearndDietMenu.Contains(dietName))
            {
                MsgSender.PushMsg(MsgDTO, "你已经学会了该菜肴的烹饪方法!");
                return(false);
            }

            var itemColle  = ItemCollectionRecord.Get(MsgDTO.FromQQ);
            var honorModel = HonorSvc.FindHonor(diet.ExchangeHonor);
            var items      = honorModel.Items.ToDictionary(p => p.Name, p => 1);

            if (!itemColle.CheckItem(items))
            {
                MsgSender.PushMsg(MsgDTO, $"你尚未集齐【{diet.ExchangeHonor}】的所有物品!");
                return(false);
            }

            itemColle.ItemConsume(items);
            itemColle.Update();

            cookingRec.LearndDietMenu.Add(diet.Name);
            cookingRec.Update();

            MsgSender.PushMsg(MsgDTO, "兑换成功!");
            return(true);
        }
Esempio n. 6
0
        public bool Cook(MsgInformationEx MsgDTO, object[] param)
        {
            var dietName = param[0] as string;

            var Diet = CookingDietSvc[dietName];

            if (Diet == null)
            {
                MsgSender.PushMsg(MsgDTO, "未查找到相关菜肴名称!");
                return(false);
            }

            var pet = PetRecord.Get(MsgDTO.FromQQ);

            if (pet.Level < Diet.Level)
            {
                MsgSender.PushMsg(MsgDTO, $"{pet.Name}的等级太低,还不能烹饪该菜肴!({pet.Level}/{Diet.Level})");
                return(false);
            }

            var cookingRec = CookingRecord.Get(MsgDTO.FromQQ);

            if (cookingRec.LearndDietMenu.IsNullOrEmpty() || !cookingRec.LearndDietMenu.Contains(dietName))
            {
                MsgSender.PushMsg(MsgDTO, $"你尚未学会{dietName}的烹饪方法!(可使用【{Diet.ExchangeHonor}】兑换,详情请参见【帮助 兑换菜谱】)");
                return(false);
            }

            var falvoringNeedStr = string.Join(",", Diet.Flavorings.Select(f => $"{f.Key}({cookingRec.FlavoringDic.GetDicValueSafe(f.Key)}/{f.Value})"));

            if (!Diet.Flavorings.IsNullOrEmpty() && !cookingRec.CheckFlavorings(Diet.Flavorings))
            {
                MsgSender.PushMsg(MsgDTO, $"调味料不足!({falvoringNeedStr})");
                return(false);
            }

            var itemColle       = ItemCollectionRecord.Get(MsgDTO.FromQQ);
            var allitems        = itemColle.AllItemsDic;
            var materialNeedStr = string.Join(",", Diet.Materials.Select(m => $"{m.Key}({allitems.GetDicValueSafe(m.Key)}/{m.Value})"));

            if (!Diet.Materials.IsNullOrEmpty() && !itemColle.CheckItem(Diet.Materials))
            {
                MsgSender.PushMsg(MsgDTO, $"材料不足!({materialNeedStr})");
                return(false);
            }

            var msg = $"烹饪 {dietName} 将需要消耗\r\n{falvoringNeedStr}\r\n{materialNeedStr}\r\n是否确认?";

            if (!WaiterSvc.WaitForConfirm(MsgDTO, msg))
            {
                MsgSender.PushMsg(MsgDTO, "操作取消!");
                return(false);
            }

            cookingRec.FlavoringConsume(Diet.Flavorings);
            itemColle.ItemConsume(Diet.Materials);

            cookingRec.AddDiet(dietName);

            cookingRec.Update();
            itemColle.Update();

            MsgSender.PushMsg(MsgDTO, "烹饪成功!");
            return(true);
        }