/// <summary> 判定先后手 </summary> /// <param name="oneself">己方</param> /// <param name="rival">敌方</param> private void FirstAfter(PlayMatrix oneself, PlayMatrix rival) { switch (RivalFightType) { case (int)FightType.SIEGE: case (int)FightType.BUILDING: { GiveFirstAfter(oneself, true); //活动始终玩家先手 GiveFirstAfter(rival, false); FirstUserId = oneself.user_id; break; } default: { var attack = GetAattackAndGiveAllRoles(oneself); var rivalAttack = GetAattackAndGiveAllRoles(rival); if (attack >= rivalAttack) { GiveFirstAfter(oneself, true); //攻击值验证 判定先后手 GiveFirstAfter(rival, false); FirstUserId = oneself.user_id; } else { GiveFirstAfter(oneself, false); //攻击值验证 判定先后手 GiveFirstAfter(rival, true); FirstUserId = rival.user_id; } break; } } FirstYinVo = oneself.yin == null ? null : EntityToVo.ToFightYinVo(oneself.yin); AfterYinVo = rival.yin == null ? null : EntityToVo.ToFightYinVo(rival.yin); }
/// <summary> 获取雇佣武将 </summary> private PlayMatrix GetHireRole(PlayMatrix model) { bool flag = false; if (model.r1 == null) { model.r1 = GetHireRole(model.user_id); flag = true; } if (model.r2 == null && !flag) { model.r2 = GetHireRole(model.user_id); flag = true; } if (model.r3 == null && !flag) { model.r3 = GetHireRole(model.user_id); flag = true; } if (model.r4 == null && !flag) { model.r4 = GetHireRole(model.user_id); flag = true; } if (model.r5 == null && !flag) { model.r5 = GetHireRole(model.user_id); } return(model); }
/// <summary>构建NPC个人战数据</summary> private PlayMatrix GetRivalMatrix(String matrix) { var model = new PlayMatrix(); var matrix_rid = matrix.Split(','); switch (RivalFightType) { case (int)FightType.NPC_MONSTER: { matrix_rid = GetMatrixRids(matrix_rid); break; } } for (var i = 0; i < matrix_rid.Length; i++) { switch (i) { case 0: model.r1 = ConvertRole(Variable.BASE_NPCROLE.FirstOrDefault(m => m.id == Convert.ToInt32(matrix_rid[0])), -1); break; case 1: model.r2 = ConvertRole(Variable.BASE_NPCROLE.FirstOrDefault(m => m.id == Convert.ToInt32(matrix_rid[1])), -2); break; case 2: model.r3 = ConvertRole(Variable.BASE_NPCROLE.FirstOrDefault(m => m.id == Convert.ToInt32(matrix_rid[2])), -3); break; case 3: model.r4 = ConvertRole(Variable.BASE_NPCROLE.FirstOrDefault(m => m.id == Convert.ToInt32(matrix_rid[3])), -4); break; case 4: model.r5 = ConvertRole(Variable.BASE_NPCROLE.FirstOrDefault(m => m.id == Convert.ToInt32(matrix_rid[4])), -5); break; } } return(model); }
/// <summary> 给全局前后手赋值 </summary> /// <param name="model"></param> /// <param name="flag">是否先手</param> private void GiveFirstAfter(PlayMatrix model, bool flag) { if (model.r1 != null) { if (flag) { FirstRoles.Add(1, model.r1.id); } else { AfterRoles.Add(1, model.r1.id); } } if (model.r2 != null) { if (flag) { FirstRoles.Add(2, model.r2.id); } else { AfterRoles.Add(2, model.r2.id); } } if (model.r3 != null) { if (flag) { FirstRoles.Add(3, model.r3.id); } else { AfterRoles.Add(3, model.r3.id); } } if (model.r4 != null) { if (flag) { FirstRoles.Add(4, model.r4.id); } else { AfterRoles.Add(4, model.r4.id); } } if (model.r5 != null) { if (flag) { FirstRoles.Add(5, model.r5.id); } else { AfterRoles.Add(5, model.r5.id); } } }
/// <summary> 修改血量 </summary> /// <param name="oneself"></param> /// <param name="rival"></param> /// <param name="roleid"></param> /// <param name="hp"></param> /// <param name="rovalhp"></param> private void UpdateHp(PlayMatrix oneself, PlayMatrix rival, Int64 roleid, Int64 hp, Int64 rovalhp) { switch (RivalFightType) { case (int)FightType.SIEGE: case (int)FightType.BUILDING: { if (rival.r1 != null) { rival.r1.hp = rovalhp; } return; } case (int)FightType.DUPLICATE_SHARP: { UpdateLeadRoleHp(oneself, roleid, hp); break; } default: { return; } } }
/// <summary> 获取总攻击力给全局AllRoles赋值 </summary> private double GetAattackAndGiveAllRoles(PlayMatrix model) { double attack = 0; var dic = new Dictionary <Int64, Role>(); if (model.r1 != null) { dic.Add(model.r1.id, model.r1); attack += model.r1.attack <= 0 ? 0 : model.r1.attack; } if (model.r2 != null) { dic.Add(model.r2.id, model.r2); attack += model.r2.attack <= 0 ? 0 : model.r2.attack; } if (model.r3 != null) { dic.Add(model.r3.id, model.r3); attack += model.r3.attack <= 0 ? 0 : model.r3.attack; } if (model.r4 != null) { dic.Add(model.r4.id, model.r4); attack += model.r4.attack <= 0 ? 0 : model.r4.attack; } if (model.r5 != null) { dic.Add(model.r5.id, model.r5); attack += model.r5.attack <= 0 ? 0 : model.r5.attack; } foreach (var item in dic) { AllRoles.Add(item.Key, item.Value); AllRolesHp.Add(item.Key, item.Value); } return(attack); }
/// <summary> 修改主角血量 </summary> /// <param name="model"></param> /// <param name="roleid"></param> /// <param name="hp"></param> private void UpdateLeadRoleHp(PlayMatrix model, Int64 roleid, Int64 hp) { if (model.r1 != null) { if (model.r1.id == roleid) { model.r1.hp = hp; return; } } if (model.r2 != null) { if (model.r2.id == roleid) { model.r2.hp = hp; return; } } if (model.r3 != null) { if (model.r3.id == roleid) { model.r3.hp = hp; return; } } if (model.r4 != null) { if (model.r4.id == roleid) { model.r4.hp = hp; return; } } if (model.r5 != null) { if (model.r5.id == roleid) { model.r5.hp = hp; } } }