/// <summary>还有挑战次数,返回当前层</summary>
        /// <param name="count">翻将次数</param>
        /// <param name="towerpass">当前层基表数据</param>
        /// <param name="checkpoint">爬塔实体</param>
        /// <returns></returns>
        private ASObject GetChalleng(int count, BaseTowerPass towerpass, tg_duplicate_checkpoint checkpoint)
        {
            var aso     = new ASObject();
            var towervo = new TowerPassVo();

            if (towerpass.enemyType == (int)DuplicateEnemyType.FIGHTING)
            {
                var npcid   = Common.GetInstance().GetNpcId(checkpoint);
                var npclist = Common.GetInstance().GetNpcList(checkpoint);
                towervo = EntityToVo.ToTowerPassVo(checkpoint, towerpass.enemyType, npcid, count, npclist);

                if (Common.GetInstance().CheckWatchmenRight(towerpass.watchmen, checkpoint))
                {
                    var tower     = tg_duplicate_checkpoint.GetEntityByTowerSite(checkpoint.site);
                    var wahtchmen = tg_user.GetUsersById(tower.user_id);
                    if (wahtchmen != null)
                    {
                        var uservo = Common.GetInstance().ConvertUser(wahtchmen);
                        aso = BulidData((int)ResultType.SUCCESS, uservo, towervo, (int)FightResultType.LOSE,
                                        checkpoint.blood, checkpoint.dekaron);
                        return(aso);
                    }
                }
            }
            else
            {
                towervo = EntityToVo.ToTowerPassVo(checkpoint, towerpass.enemyType, towerpass.enemyId, count, null);
            }
            aso = BulidData((int)ResultType.SUCCESS, null, towervo, (int)FightResultType.LOSE, checkpoint.blood, (int)DuplicateRightType.NORIGHT);
            Common.GetInstance().CheckpointUpdate(checkpoint);
            return(aso);
        }
        /// <summary>推送挑战怪物结果</summary>
        private void CheckpointDarePush(Int64 userid, UserInfoVo uservo, TowerPassVo towerpassvo, int type, Int64 blood, int challenge)
        {
            var aso = new ASObject();

            aso = BulidData((int)ResultType.SUCCESS, uservo, towerpassvo, type, blood, challenge);
            CheckpointDarePush(userid, aso);
        }
示例#3
0
        /// <summary>下一关卡信息</summary>
        public TowerPassVo TowerPassMessage(int count, ref tg_duplicate_checkpoint checkpoint)
        {
            var site      = checkpoint.site;
            var towerpass = Variable.BASE_TOWERPASS.FirstOrDefault(m => m.pass == site);

            if (towerpass == null)
            {
                return(null);
            }
            var nextpass = Variable.BASE_TOWERPASS.FirstOrDefault(m => m.id == towerpass.nextId);

            if (nextpass == null)
            {
                return(null);
            }

            var towervo = new TowerPassVo();

            if (nextpass.enemyType == (int)DuplicateEnemyType.SMALL_GAME)
            {
                checkpoint.site = nextpass.pass;
                towervo         = EntityToVo.ToTowerPassVo(checkpoint, nextpass.enemyType, nextpass.enemyId, count, null);
            }
            else
            {
                var npcid = RefreshNpc(nextpass.pass);
                checkpoint.npcids = npcid;
                checkpoint.site   = nextpass.pass;
                var npclist = GetNpcList(checkpoint);
                towervo = EntityToVo.ToTowerPassVo(checkpoint, nextpass.enemyType, Convert.ToInt32(npcid),
                                                   count, npclist);
            }
            return(towervo);
        }
示例#4
0
        /// <summary>组装数据</summary>
        public Dictionary <String, Object> BulidData(int result, int count, TowerPassVo towerpassvo, UserInfoVo user)
        {
            var dic = new Dictionary <string, object>
            {
                { "result", result },
                { "towerpass", towerpassvo },
                { "count", count },
                { "watchmen", user },
            };

            return(dic);
        }
        /// <summary>组装数据</summary>
        private ASObject BulidData(int result, UserInfoVo watchmen, TowerPassVo towerpass, int type, Int64 blood, int challenge)
        {
            var dic = new Dictionary <string, object>
            {
                { "result", result },
                { "type", type },
                { "blood", blood },
                { "challenge", challenge },
                { "watchmen", watchmen },
                { "towerpass", towerpass },
            };

            return(new ASObject(dic));
        }
        /// <summary>点击下一关</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "TOWER_CHECKPOINT_NEXT_PASS", "点击下一关");
#endif
            var checkpoint = tg_duplicate_checkpoint.GetEntityByUserId(session.Player.User.id);
            var towervo    = new TowerPassVo();
            if (checkpoint == null)
            {
                return(new ASObject(Common.GetInstance().BulidData((int)ResultType.DATABASE_ERROR, 0, null, null)));
            }
            if (checkpoint.state == (int)DuplicateClearanceType.CLEARANCE_FAIL || checkpoint.blood <= 0)
            {
                return(new ASObject(Common.GetInstance().BulidData((int)ResultType.CHALLENGE_FAIL, 0, null, null)));
            }

            var towerpass = Variable.BASE_TOWERPASS.FirstOrDefault(m => m.pass == checkpoint.site);
            if (towerpass == null)
            {
                return(new ASObject(Common.GetInstance().BulidData((int)ResultType.BASE_TABLE_ERROR, 0, null, null)));
            }

            if (towerpass.watchmen == (int)DuplicateTargetType.WATCHMEM &&
                checkpoint.state == (int)DuplicateClearanceType.CLEARANCE_SUCCESS)
            {
                towervo            = TowerPassMessage(session.Player.UserExtend.npc_refresh_count, ref checkpoint);
                checkpoint.dekaron = (int)DuplicateRightType.HAVERIGHT;
                Common.GetInstance().CheckpointUpdate(checkpoint);
            }
            else
            {
                return(new ASObject(Common.GetInstance().BulidData((int)ResultType.CHALLENGE_FAIL, 0, null, null)));
            }
            return(new ASObject(Common.GetInstance().BulidData((int)ResultType.SUCCESS,
                                                               session.Player.UserExtend.challenge_count, towervo, null)));
        }