Exemplo n.º 1
0
 public FightMenager(FightAniMenager AniMgr)
 {
     this.FightAniMenager = AniMgr;
     this.FightProcess    = new FightProcess(AniMgr);
 }
Exemplo n.º 2
0
        //private static WAR_COPY_ATTACK _objInstance;

        ///// <summary>WAR_COPY_ATTACK单体模式</summary>
        //public static WAR_COPY_ATTACK GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_COPY_ATTACK());
        //}

        /// <summary> 出阵 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            var planId = session.Player.War.planId;

            if (planId == 0)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }

            var _id     = data.ContainsKey("id") ? data["id"] : null;
            var _zhenId = data.ContainsKey("zhenId") ? data["zhenId"] : null;
            var _list   = data.ContainsKey("list") ? data["list"] : null;

            if (_id == null || _zhenId == null || _list == null)
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }

            var id       = Convert.ToInt32(_id);
            var zhenId   = Convert.ToInt32(_zhenId);
            var objs     = _list as object[];
            var list     = new List <WarRolesLinesVo>();
            var userid   = session.Player.User.id;
            var level    = session.Player.Role.Kind.role_level;
            var username = session.Player.User.player_name;

            var baseWarCopy = Variable.BASE_WAR_COPY.FirstOrDefault(m => m.id == id);

            if (baseWarCopy == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            if (level < baseWarCopy.level)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_LEVEL_ERROR));
            }

            var warroles = new List <tg_war_role>();
            var result   = BuildWarRole(objs, userid, ref list, ref warroles);

            if (result != ResultType.SUCCESS)
            {
                return(CommonHelper.ErrorResult(result));
            }
            if (!warroles.Any())
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_COPY_ROLE_ERROR));
            }

            var count = warroles.Sum(m => m.army_soldier);
            var model = tg_war_copy.GetFindByUserId(userid);
            var temp  = tg_war_copy_count.GetEntityBySceneId(userid, baseWarCopy.sceneId);

            if (model == null || temp == null)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_COPY_SOLDIER_NULL));
            }
            if (count <= 0)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_COPY_SOLDIER_COUNT_ERROR));
            }
            if (temp.count <= 0)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_COPY_COUNT_ERROR));
            }
            if (model.forces < count)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_COPY_SOLDIER_COUNT_ERROR));
            }

            var entity  = new WarFight(planId, baseWarCopy, list, warroles, zhenId, model.morale, username);
            var fightvo = new FightProcess().GetFightProcess(entity); //调用合战战斗

            if (fightvo == null)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_FIGHT_ERROR));
            }
            if (fightvo.Item2.result.isWin == 1)             //胜利
            {
                var rewards = GetReward(baseWarCopy.reward); //组装获取奖励
                var str     = GetReward(rewards);            //获取邮件通用奖励字符串

                model.score      += baseWarCopy.integral;
                model.latest_time = DateTime.Now.Ticks;
                var flag = new RandomSingle().IsTrue(baseWarCopy.dropProbability);
                if (flag) //是否获得筑城令
                {
                    var prop = GetProp(baseWarCopy, userid);
                    if (prop != null)
                    {
                        str = str + "|" + (int)GoodsType.TYPE_PROP + "_" + prop.base_id + "_" + prop.bind + "_" + prop.count;
                        rewards.Add(new RewardVo
                        {
                            goodsType = (int)GoodsType.TYPE_PROP,
                            increases = new List <ASObject> {
                                AMFConvert.ToASObject(EntityToVo.ToPropVo(prop))
                            },
                        });
                    }
                }
                (new Share.Message()).BuildMessagesSend(userid, "挑战合战副本胜利奖励", "挑战合战副本胜利奖励", str);
                temp.count -= 1;
                temp.Update();
                fightvo.Item2.result.reward = rewards;
            }

            model.forces -= fightvo.Item2.result.myDieCount;
            if (model.forces < 0)
            {
                model.forces = 0;
            }

            model.Update();
            return(BuildData(fightvo.Item2));
        }