/// <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); }
/// <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); }
/// <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))); }