Esempio n. 1
0
 public void Rebel()
 {
     CreateTime = DateTime.Now;
     State      = SoldierState.Rebel;
     Owner      = 0;
     Name       = $"【叛军】第{GroupNamingRec.GetNextNo(0)}军";
     MongoService <SoldierGroup> .Update(this);
 }
Esempio n. 2
0
        public bool Recruit(MsgInformationEx MsgDTO, object[] param)
        {
            var castle = KindomCastle.Get(MsgDTO.FromGroup, MsgDTO.FromQQ);

            var soldierGroups = SoldierGroup.Get(MsgDTO.FromQQ);
            var curTotal      = soldierGroups.Sum(g => g.Count);

            var remain = Math.Max(castle.SoldierMaxVolume - curTotal, 0);
            var msg    = $"你当前共拥有士兵 {curTotal}人,还可招募 {remain}人";

            if (remain == 0)
            {
                msg += "\r\n无法招募新的士兵!";
                MsgSender.PushMsg(MsgDTO, msg, true);
                return(false);
            }

            var golds = castle.Golds;

            msg += $"\r\n你当前拥有金钱 {golds},最多招募等量的士兵";
            if (golds == 0)
            {
                msg += "\r\n无法招募新的士兵!";
                MsgSender.PushMsg(MsgDTO, msg, true);
                return(false);
            }

            var maxRecruit = Math.Min(remain, golds);
            var num        = WaiterSvc.WaitForNum(MsgDTO.FromGroup, MsgDTO.FromQQ, $"请输入招募士兵的数量!(1~{maxRecruit})", p => p >= 1 && p <= maxRecruit, MsgDTO.BindAi);

            if (num <= 0)
            {
                MsgSender.PushMsg(MsgDTO, "操作取消!");
                return(false);
            }

            var group = new SoldierGroup()
            {
                Owner = MsgDTO.FromQQ,
                Count = num,
                State = SoldierState.Working,
                Name  = $"第{GroupNamingRec.GetNextNo(MsgDTO.FromQQ)}军"
            };

            group.Insert();

            castle.Golds -= num;
            castle.Update();

            MsgSender.PushMsg(MsgDTO, "招募成功!");
            return(true);
        }
Esempio n. 3
0
        public static int GetNextNo(long QQNum)
        {
            var rec = MongoService <GroupNamingRec> .GetOnly(p => p.QQNum == QQNum);

            if (rec == null)
            {
                rec = new GroupNamingRec()
                {
                    QQNum = QQNum
                };
                MongoService <GroupNamingRec> .Insert(rec);
            }

            rec.SequeceNo++;
            MongoService <GroupNamingRec> .Update(rec);

            return(rec.SequeceNo);
        }