void CollectF(Car car, Player player, SetCollect sc, ref List <string> notifyMsg, out MileResultReason reason) { var from = GetFromWhenUpdateCollect(this._Players[sc.Key], sc.cType, car); var to = getCollectPositionTo();// this.promoteMilePosition; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var fbBase = Program.dt.GetFpByIndex(player.StartFPIndex); //var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); //var goPath = Program.dt.GetAFromB(from, to); var goPath = this.GetAFromB(from, to, player, ref notifyMsg); //var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnPath = this.GetAFromB(to, player.StartFPIndex, player, ref notifyMsg); var goMile = GetMile(goPath); var returnMile = GetMile(returnPath); if (car.ability.leftMile >= goMile + returnMile) { int startT; EditCarStateWhenCollectStartOK(player, ref car, to, fp1, sc, goPath, ref notifyMsg, out startT); StartArriavalThread(startT, car, sc, returnPath, goMile); // getAllCarInfomations(sc.Key, ref notifyMsg); reason = MileResultReason.Abundant;//返回原因 } else if (car.ability.leftMile >= goMile) { printState(player, car, $"剩余里程为{car.ability.leftMile}去程{goMile},回程{returnMile},你去了回不来。所以安排返回"); reason = MileResultReason.CanNotReturn; } else { printState(player, car, $"剩余里程为{car.ability.leftMile}去程{goMile},回程{returnMile},去不了。所以安排返回"); reason = MileResultReason.CanNotReach; // return false; } }
///// <summary> ///// ///// </summary> ///// <param name="player">玩家</param> ///// <param name="car">小车</param> ///// <param name="sa"></param> ///// <param name="notifyMsg"></param> ///// <param name="victimState">0,代表用户不存在了。1代表已经破产,2代表正常</param> /// <summary> /// 此函数,必须在this._Players.ContainsKey(sa.targetOwner)=true且this._Players[sa.targetOwner].Bust=false情况下运行。请提前进行判断! /// </summary> /// <param name="player">玩家</param> /// <param name="car"></param> /// <param name="sa"></param> /// <param name="notifyMsg"></param> /// <param name="victimState"></param> /// <param name="reason"></param> void attack(Player player, Car car, SetAttack sa, ref List <string> notifyMsg, out MileResultReason Mrr) { // if (this._Players.ContainsKey(sa.targetOwner)) { //if (this._Players[sa.targetOwner].Bust) if (car.ability.costBusiness + car.ability.costVolume > 0) { var from = this.getFromWhenAttack(player, car); var to = sa.target; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); // var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); //var goPath = Program.dt.GetAFromB(from, to); var goPath = this.GetAFromB(from, to, player, ref notifyMsg); //var returnPath = Program.dt.GetAFromB(fp2, baseFp.FastenPositionID); //var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnPath = this.GetAFromB(to, player.StartFPIndex, player, ref notifyMsg); var goMile = GetMile(goPath); var returnMile = GetMile(returnPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnMile) { int startT; EditCarStateWhenAttackStartOK(player, ref car, to, fp1, sa, goPath, out startT, ref notifyMsg); SetAttackArrivalThread(startT, car, sa, returnPath); // getAllCarInfomations(sa.Key, ref notifyMsg); Mrr = MileResultReason.Abundant; } else if (car.ability.leftMile >= goMile) { //当攻击失败,必须返回 Console.Write($"去程{goMile},回程{returnMile}"); Console.Write($"你去了回不来"); Mrr = MileResultReason.CanNotReturn; } else { #warning 这里要在web前台进行提示 //当攻击失败,必须返回 Console.Write($"去程{goMile},回程{returnMile}"); Console.Write($"你去不了"); Mrr = MileResultReason.CanNotReach; } } else { Mrr = MileResultReason.MoneyIsNotEnougt; } } //else //{ // throw new Exception("此方法,不该在此条件下运行"); //} }
/// <summary> /// /// </summary> /// <param name="player"></param> /// <param name="car"></param> /// <param name="sp"></param> /// <param name="notifyMsg"></param> /// <returns>true:表示已执行;false,表示各种原因(去不了、去了回不来)未执行。</returns> bool promote(Player player, Car car, SetPromote sp, ref List <string> notifyMsg, out MileResultReason reason) { var from = this.getFromWhenUpdatePromote(player, car); var to = GetPromotePositionTo(sp.pType);// this.promoteMilePosition; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); //var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); //var returnPath = Program.dt.GetAFromB(fp2, baseFp.FastenPositionID); // var goPath = Program.dt.GetAFromB(from, to); var goPath = this.GetAFromB(from, to, player, ref notifyMsg); // var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnPath = this.GetAFromB(to, player.StartFPIndex, player, ref notifyMsg); var goMile = GetMile(goPath); var returnMile = GetMile(returnPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnMile) { int startT; EditCarStateWhenPromoteStartOK(player, ref car, to, fp1, to, sp, goPath, ref notifyMsg, out startT); StartDiamondOwnerThread(startT, car, sp, returnPath, goMile); // getAllCarInfomations(sp.Key, ref notifyMsg); reason = MileResultReason.Abundant; return(true); } else if (car.ability.leftMile >= goMile) { printState(player, car, $"去程{goMile},回程{returnMile},去了回不来"); reason = MileResultReason.CanNotReturn; return(false); } else { printState(player, car, $"去程{goMile},回程{returnMile},去不了"); reason = MileResultReason.CanNotReach; return(false); } }
void DoCollectTaxF(Player player, Car car, SetTax st, ref List <string> notifyMsg, out MileResultReason reason) { var from = this.getFromWhenDoCollectTax(player, car); var to = st.target; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); // var goPath = Program.dt.GetAFromB(from, to); var goPath = this.GetAFromB(from, to, player, ref notifyMsg); // var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnPath = this.GetAFromB(to, player.StartFPIndex, player, ref notifyMsg); var goMile = GetMile(goPath); var returnMile = GetMile(returnPath); if (car.ability.leftMile >= goMile + returnMile) { car.targetFpIndex = to; Console.WriteLine($"{car.name}的目标设置成了{Program.dt.GetFpByIndex(to).FastenPositionName}"); car.setPurpose(player, ref notifyMsg, Purpose.tax); //car.purpose = Purpose.tax; var speed = car.ability.Speed; int startT = 0; List <Data.PathResult> result; if (car.state == CarState.waitAtBaseStation) { result = getStartPositon(fp1, st.car, ref startT); } else if (car.state == CarState.waitForTaxOrAttack) { result = new List <Data.PathResult>(); } else if (car.state == CarState.waitOnRoad && car.ability.diamondInCar == "" && (car.purpose == Purpose.@null || car.purpose == Purpose.tax)) { result = new List <Data.PathResult>(); } else { throw new Exception($"未知情况!{Newtonsoft.Json.JsonConvert.SerializeObject(car)}"); } car.setState(player, ref notifyMsg, CarState.roadForTax); //car.state = CarState.roadForTax; Program.dt.GetAFromBPoint(goPath, fp1, speed, ref result, ref startT); result.RemoveAll(item => item.t0 == item.t1); var animateData = new AnimateData() { animateData = result, recordTime = DateTime.Now }; car.setAnimateData(player, ref notifyMsg, animateData); //car.animateData = new AnimateData() //{ // animateData = result, // recordTime = DateTime.Now //}; Thread th = new Thread(() => setArrive(startT, new commandWithTime.placeArriving() { c = "placeArriving", key = st.Key, car = st.car, returnPath = returnPath, target = to, costMile = goMile })); th.Start(); reason = MileResultReason.Abundant; // car.changeState++;//更改状态 car.setPurpose(player, ref notifyMsg, Purpose.tax); //car.purpose = Purpose.tax; //getAllCarInfomations(st.Key, ref notifyMsg); } else if (car.ability.leftMile >= goMile) { //当攻击失败,必须返回 Console.Write($"去程{goMile},回程{returnMile}"); Console.Write($"你去了回不来"); #warning 这里要在前台进行提示 reason = MileResultReason.CanNotReturn; } else { #warning 这里要在web前台进行提示 //当攻击失败,必须返回 Console.Write($"去程{goMile},回程{returnMile}"); Console.Write($"你去不了"); reason = MileResultReason.CanNotReach; } }
private void bust(Player player, Car car, SetBust sb, ref List <string> notifyMsg, out MileResultReason Mrr) { { //if (this._Players[sa.targetOwner].Bust) { var from = this.getFromWhenAttack(player, car); var to = sb.target; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); // var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); var goPath = this.GetAFromB(from, to, player, ref notifyMsg); // var goPath = Program.dt.GetAFromB(from, to); //var returnPath = Program.dt.GetAFromB(fp2, baseFp.FastenPositionID); var returnPath = this.GetAFromB(to, player.StartFPIndex, player, ref notifyMsg); //var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var goMile = GetMile(goPath); var returnMile = GetMile(returnPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnMile) { int startT; EditCarStateWhenBustStartOK(player, ref car, to, fp1, sb, goPath, out startT, ref notifyMsg); SetBustArrivalThread(startT, car, sb, returnPath); // getAllCarInfomations(sa.Key, ref notifyMsg); Mrr = MileResultReason.Abundant; } else if (car.ability.leftMile >= goMile) { //当攻击失败,必须返回 Console.Write($"去程{goMile},回程{returnMile}"); Console.Write($"你去了回不来"); Mrr = MileResultReason.CanNotReturn; } else { #warning 这里要在web前台进行提示 //当攻击失败,必须返回 Console.Write($"去程{goMile},回程{returnMile}"); Console.Write($"你去不了"); Mrr = MileResultReason.CanNotReach; } } } }
public RoomMainF.RoomMain.commandWithTime.ReturningOjb maindDo(RoleInGame player, Car car, Command c, ref List <string> notifyMsg, out MileResultReason mrr) { if (c.c == "SetAttack") { var sa = (SetAttack)c; return(attack(player, car, sa, ref notifyMsg, out mrr)); } else { throw new Exception($"数据传输错误!(传出类型为{c.c})"); } }
public ReturningOjb maindDo(RoleInGame player, Car car, Command c, ref List <string> notifyMsg, out MileResultReason mrr) { //throw new NotImplementedException(); // car.state = CarState.returning; OrderToReturn otr = (OrderToReturn)c; car.setState(player, ref notifyMsg, CarState.returning); setReturn(new returnning() { c = "returnning", changeType = returnning.ChangeType.BeforeTax, key = otr.Key, returningOjb = player.returningOjb, target = car.targetFpIndex }); mrr = MileResultReason.Abundant; return(player.returningOjb); }
public commandWithTime.ReturningOjb randomWhenConfused(RoleInGame player, RoleInGame boss, Car car, interfaceOfHM.ContactInterface ci, ref List <string> notifyMsg, out MileResultReason Mrr) { var randomValue = that.rm.Next(0, 5); if (randomValue == 4) { return(contactPassBossAddress(player, boss, car, ci, ref notifyMsg, out Mrr)); } else { var victim = that._Players[ci.targetOwner]; var target = Program.dt.GetFpByIndex(victim.StartFPIndex); var collectIndexTarget = that.getCollectPositionsByDistance(target)[randomValue]; var sc = new SetCollect() { c = "SetCollect", collectIndex = collectIndexTarget, cType = "findWork", fastenpositionID = Program.dt.GetFpByIndex(that._collectPosition[collectIndexTarget]).FastenPositionID, Key = player.Key }; return(that.collectE.collectPassBossAddress(player, boss, car, sc, ref notifyMsg, out Mrr)); } }
internal commandWithTime.ReturningOjb randomWhenConfused(RoleInGame player, RoleInGame boss, Car car, SetAttack sa, ref List <string> notifyMsg, out MileResultReason Mrr) { AttackObj ao = new AttackObj(sa, (int startT, Car car, SetAttack sa, int goMile, Node goPath, commandWithTime.ReturningOjb ro) => { //this.SetAttackArrivalThread() List <string> notifyMsg = new List <string>(); car.setState(player, ref notifyMsg, CarState.working); this.sendMsg(notifyMsg); this.SetAttackArrivalThread(startT, 0, player, car, sa, goMile, goPath, ro); } ); return(this.randomWhenConfused(player, boss, car, ao, ref notifyMsg, out Mrr)); }
private RoomMainF.RoomMain.commandWithTime.ReturningOjb contactPassBossAddress(RoleInGame player, RoleInGame boss, Car car, interfaceOfHM.ContactInterface ci, ref List <string> notifyMsg, out MileResultReason mrr) { if (that._Players.ContainsKey(ci.targetOwner)) { var victimOrBeneficiary = that._Players[ci.targetOwner]; OssModel.FastonPosition fpResult; var distanceIsEnoughToStart = that.theNearestToPlayerIsCarNotMoney(player, car, victimOrBeneficiary, out fpResult); if (distanceIsEnoughToStart) { if (ci.carLeftConditions(car)) { var from = this.getFromWhenAction(player, car); var to = ci.target; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); // var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); //var goPath = Program.dt.GetAFromB(from, to); var goPath = that.GetAFromB_v2(from, to, player, ref notifyMsg); //var returnPath = Program.dt.GetAFromB(fp2, baseFp.FastenPositionID); //var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnToBossAddrPath = that.GetAFromB_v2(to, boss.StartFPIndex, player, ref notifyMsg); var returnToSelfAddrPath = that.GetAFromB_v2(boss.StartFPIndex, player.StartFPIndex, player, ref notifyMsg); var goMile = that.GetMile(goPath); var returnToBossAddrPathMile = that.GetMile(returnToBossAddrPath); var returnToSelfAddrPathMile = that.GetMile(returnToSelfAddrPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnToBossAddrPathMile + returnToSelfAddrPathMile) { int startT; this.EditCarStateWhenActionStartOK(player, ref car, to, fp1, goPath, ref notifyMsg, out startT); var ro = commandWithTime.ReturningOjb.ojbWithBoss(returnToBossAddrPath, returnToSelfAddrPath, boss); ci.SetArrivalThread(startT, car, goMile, goPath, ro); mrr = MileResultReason.Abundant; return(ro); } else if (car.ability.leftMile >= goMile) { mrr = MileResultReason.CanNotReturn; return(player.returningOjb); } else { mrr = MileResultReason.CanNotReach; return(player.returningOjb); } } else { this.WebNotify(player, "你身上的剩余业务空间不够啦!"); mrr = MileResultReason.MoneyIsNotEnougt; return(player.returningOjb); } } else { mrr = MileResultReason.NearestIsMoneyWhenAttack; that.ViewPosition(player, fpResult, ref notifyMsg); this.WebNotify(player, $"离【{victimOrBeneficiary.PlayerName}】最近的是[{fpResult.FastenPositionName}]处的钱,不是你的车,攻击失败!"); return(player.returningOjb); } } else { throw new Exception("判断条件异常!"); } }
public RoomMainF.RoomMain.commandWithTime.ReturningOjb contact(RoleInGame player, Car car, interfaceOfHM.ContactInterface ci, ref List <string> notifyMsg, out MileResultReason Mrr) { //sa = attackTargetChange(player, sa); RoleInGame boss; if (player.HasTheBoss(roomMain._Players, out boss)) { if (player.confuseRecord.IsBeingControlled()) { if (player.confuseRecord.getControlType() == Manager_Driver.ConfuseManger.ControlAttackType.Confuse) { return(randomWhenConfused(player, boss, car, ci, ref notifyMsg, out Mrr)); } else { return(contactPassBossAddress(player, boss, car, ci, ref notifyMsg, out Mrr)); } } else { return(contactPassBossAddress(player, boss, car, ci, ref notifyMsg, out Mrr)); } //return promotePassBossAddress(player, boss, car, sp, ref notifyMsg, out reason); } else { if (that._Players.ContainsKey(ci.targetOwner)) { //beneficiary var victimOrBeneficiary = that._Players[ci.targetOwner]; OssModel.FastonPosition fpResult; var distanceIsEnoughToStart = that.theNearestToPlayerIsCarNotMoney(player, car, victimOrBeneficiary, out fpResult); if (distanceIsEnoughToStart) { if (ci.carLeftConditions(car)) { var from = this.getFromWhenAction(player, car); var to = ci.target; var fp1 = Program.dt.GetFpByIndex(from); //var fp2 = Program.dt.GetFpByIndex(to); //var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); var goPath = that.GetAFromB_v2(from, to, player, ref notifyMsg); //var returnPath = Program.dt.GetAFromB(fp2, baseFp.FastenPositionID); //var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnPath = that.GetAFromB_v2(to, player.StartFPIndex, player, ref notifyMsg); var goMile = that.GetMile(goPath); var returnMile = that.GetMile(returnPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnMile) { int startT; this.EditCarStateWhenActionStartOK(player, ref car, to, fp1, goPath, ref notifyMsg, out startT); ci.SetArrivalThread(startT, car, goMile, goPath, commandWithTime.ReturningOjb.ojbWithoutBoss(returnPath)); // getAllCarInfomations(sa.Key, ref notifyMsg); Mrr = MileResultReason.Abundant; return(commandWithTime.ReturningOjb.ojbWithoutBoss(returnPath)); } else if (car.ability.leftMile >= goMile) { Mrr = MileResultReason.CanNotReturn; return(player.returningOjb); } else { Mrr = MileResultReason.CanNotReach; return(player.returningOjb); } } else { Mrr = MileResultReason.MoneyIsNotEnougt; this.WebNotify(player, "你身上的剩余业务空间不够啦!"); return(player.returningOjb); } } else { Mrr = MileResultReason.NearestIsMoneyWhenAttack; this.WebNotify(player, $"离【{victimOrBeneficiary.PlayerName}】最近的是[{fpResult.FastenPositionName}]处的钱,不是你的车,攻击失败!"); that.ViewPosition(player, fpResult, ref notifyMsg); return(player.returningOjb); } } else { throw new Exception("准备运行条件里没有筛查?"); } } }
public commandWithTime.ReturningOjb maindDo(RoleInGame player, Car car, Command c, ref List <string> notifyMsg, out MileResultReason mrr) { // throw new NotImplementedException(); if (c.c == "SetPromote") { var sp = (SetPromote)c; return(this.promote(player, car, sp, ref notifyMsg, out mrr)); } else { throw new Exception($"数据传输错误!(传出类型为{c.c})"); } }
private commandWithTime.ReturningOjb promotePassBossAddress(RoleInGame player, RoleInGame boss, Car car, SetPromote sp, ref List <string> notifyMsg, out MileResultReason mrr) { switch (sp.pType) { case "mile": case "business": case "volume": case "speed": { switch (car.state) { case CarState.waitAtBaseStation: { // if(player.Money<) //int collectIndex; OssModel.FastonPosition fpResult; var distanceIsEnoughToStart = that.theNearestToDiamondIsCarNotMoney(player, car, sp.pType, out fpResult); if (distanceIsEnoughToStart) { var from = this.getFromWhenAction(player, car); var to = that.GetPromotePositionTo(sp.pType); // this.promoteMilePosition; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); var goPath = that.GetAFromB_v2(from, to, player, ref notifyMsg); // var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnToBossPath = that.GetAFromB_v2(to, boss.StartFPIndex, player, ref notifyMsg); var returnToSelfPath = that.GetAFromB_v2(boss.StartFPIndex, player.StartFPIndex, player, ref notifyMsg); var goMile = that.GetMile(goPath); var returnToBossMile = that.GetMile(returnToBossPath); var returnToSelfMile = that.GetMile(returnToSelfPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnToBossMile + returnToSelfMile) { int startT; this.EditCarStateWhenActionStartOK(player, ref car, to, fp1, goPath, ref notifyMsg, out startT); RoomMainF.RoomMain.commandWithTime.ReturningOjb ro = commandWithTime.ReturningOjb.ojbWithBoss(returnToBossPath, returnToSelfPath, boss); that.diamondOwnerE.StartDiamondOwnerThread(startT, 0, player, car, sp, ro, goMile, goPath); // getAllCarInfomations(sp.Key, ref notifyMsg); mrr = MileResultReason.Abundant; return(ro); } else if (car.ability.leftMile >= goMile) { WebNotify(player, $"去程{goMile}km,回程{returnToBossMile + returnToSelfMile}km,去了回不来"); mrr = MileResultReason.CanNotReturn; return(player.returningOjb); } else { WebNotify(player, $"去程{goMile}km,回程{returnToBossMile + returnToSelfMile}km,去不了"); // printState(player, car, $"去程{goMile},回程{returnMile},去不了"); mrr = MileResultReason.CanNotReach; return(player.returningOjb); } } else { mrr = MileResultReason.NearestIsMoneyWhenPromote; this.WebNotify(player, $"离宝石最近的是[{fpResult.FastenPositionName}]处的钱,不是你的车。请离宝石再近点儿!"); return(player.returningOjb); //printState(player, car, "钱不够了,由于本身待在基地,不用返回。"); } }; case CarState.waitOnRoad: { OssModel.FastonPosition fpResult; var distanceIsEnoughToStart = that.theNearestToDiamondIsCarNotMoney(player, car, sp.pType, out fpResult); if (distanceIsEnoughToStart) { var from = this.getFromWhenAction(player, car); var to = that.GetPromotePositionTo(sp.pType); // this.promoteMilePosition; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var baseFp = Program.dt.GetFpByIndex(player.StartFPIndex); var goPath = that.GetAFromB_v2(from, to, player, ref notifyMsg); var returnToBossPath = that.GetAFromB_v2(to, boss.StartFPIndex, player, ref notifyMsg); var returnToSelfPath = that.GetAFromB_v2(boss.StartFPIndex, player.StartFPIndex, player, ref notifyMsg); var goMile = that.GetMile(goPath); var returnToBossMile = that.GetMile(returnToBossPath); var returnToSelfMile = that.GetMile(returnToSelfPath); //第一步,计算去程和回程。 if (car.ability.leftMile >= goMile + returnToBossMile + returnToSelfMile) { int startT; this.EditCarStateWhenActionStartOK(player, ref car, to, fp1, goPath, ref notifyMsg, out startT); RoomMainF.RoomMain.commandWithTime.ReturningOjb ro = commandWithTime.ReturningOjb.ojbWithBoss(returnToBossPath, returnToSelfPath, boss); that.diamondOwnerE.StartDiamondOwnerThread(startT, 0, player, car, sp, ro, goMile, goPath); mrr = MileResultReason.Abundant; return(ro); } else if (car.ability.leftMile >= goMile) { WebNotify(player, $"去程{goMile}km,回程{returnToBossMile + returnToSelfMile}km,去了回不来"); mrr = MileResultReason.CanNotReturn; return(player.returningOjb); } else { WebNotify(player, $"去程{goMile}km,回程{returnToBossMile + returnToSelfMile}km,去不了"); mrr = MileResultReason.CanNotReach; return(player.returningOjb); } } else { mrr = MileResultReason.NearestIsMoneyWhenPromote; this.WebNotify(player, $"离宝石最近的是[{fpResult.FastenPositionName}]处的钱,不是你的车。请离宝石再近点儿!"); return(player.returningOjb); } }; default: { throw new Exception($"{Enum.GetName(typeof(CarState), car.state)}不是注册的类型!"); } } }; default: { throw new Exception($"{sp.pType}-不是规定的输入!"); }; } }
public commandWithTime.ReturningOjb collectPassBossAddress(RoleInGame player, RoleInGame boss, Car car, SetCollect sc, ref List <string> notifyMsg, out MileResultReason mrr) { if (car.ability.leftVolume > 0) { var from = this.GetFromWhenUpdateCollect(that._Players[sc.Key], sc.cType, car); var to = getCollectPositionTo(sc.collectIndex); // this.promoteMilePosition; // return ActionInBoss(from, to); var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var fbBase = Program.dt.GetFpByIndex(player.StartFPIndex); //var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); //var goPath = Program.dt.GetAFromB(from, to); var goPath = that.GetAFromB_v2(from, to, player, ref notifyMsg); var returnToBossPath = that.GetAFromB_v2(to, boss.StartFPIndex, player, ref notifyMsg); var returnToSelfPath = that.GetAFromB_v2(boss.StartFPIndex, player.StartFPIndex, player, ref notifyMsg); var goMile = that.GetMile(goPath); var returnToBossMile = that.GetMile(returnToBossPath); var returnToSelfMile = that.GetMile(returnToSelfPath); if (car.ability.leftMile >= goMile + returnToBossMile + returnToSelfMile) { int startT; this.EditCarStateWhenActionStartOK(player, ref car, to, fp1, goPath, ref notifyMsg, out startT); var ro = commandWithTime.ReturningOjb.ojbWithBoss(returnToBossPath, returnToSelfPath, boss); car.setState(player, ref notifyMsg, CarState.working); StartArriavalThread(startT, 0, player, car, sc, ro, goMile, goPath); // getAllCarInfomations(sc.Key, ref notifyMsg); mrr = MileResultReason.Abundant;//返回原因 return(ro); } else if (car.ability.leftMile >= goMile) { // printState(player, car, $"剩余里程为{car.ability.leftMile}去程{goMile},回程{returnMile},你去了回不来。所以安排返回"); mrr = MileResultReason.CanNotReturn; return(player.returningOjb); } else { // printState(player, car, $"剩余里程为{car.ability.leftMile}去程{goMile},回程{returnMile},去不了。所以安排返回"); mrr = MileResultReason.CanNotReach; return(player.returningOjb); // return false; } } else { mrr = MileResultReason.MoneyIsNotEnougt; this.WebNotify(player, "你身上的剩余收集空间不够啦!"); return(player.returningOjb); } }
RoomMainF.RoomMain.commandWithTime.ReturningOjb collect(RoleInGame player, Car car, SetCollect sc, ref List <string> notifyMsg, out MileResultReason Mrr) { if (player.confuseRecord.IsBeingControlled()) { if (player.confuseRecord.getControlType() == Manager_Driver.ConfuseManger.ControlAttackType.Lost) { Model.FastonPosition target; if (car.state == CarState.waitOnRoad) { target = Program.dt.GetFpByIndex(car.targetFpIndex); } else if (car.state == CarState.waitAtBaseStation) { target = Program.dt.GetFpByIndex(player.StartFPIndex); } else { throw new Exception(""); } var positions = that.getCollectPositionsByDistance(target); if (sc.collectIndex == positions[0] || sc.collectIndex == positions[1]) { } else { var position0 = Program.dt.GetFpByIndex(that._collectPosition[positions[0]]); var position1 = Program.dt.GetFpByIndex(that._collectPosition[positions[1]]); var distance0 = CommonClass.Geography.getLengthOfTwoPoint.GetDistance(target.Latitde, target.Longitude, position0.Latitde, position0.Longitude); var distance1 = CommonClass.Geography.getLengthOfTwoPoint.GetDistance(target.Latitde, target.Longitude, position1.Latitde, position1.Longitude); if (distance0 < distance1) { this.WebNotify(player, $"您处于迷失状态,未能到达远方!只能先到附近的[{position0.FastenPositionName}]执行收集任务!"); var newSc = new SetCollect() { c = "SetCollect", collectIndex = positions[0], fastenpositionID = position0.FastenPositionID, cType = "findWork", Key = sc.Key }; return(collect(player, car, newSc, ref notifyMsg, out Mrr)); } else { this.WebNotify(player, $"您处于迷失状态,未能到达远方!只能先到附近的[{position1.FastenPositionName}]执行收集任务!"); var newSc = new SetCollect() { c = "SetCollect", collectIndex = positions[1], fastenpositionID = position1.FastenPositionID, cType = "findWork", Key = sc.Key }; return(collect(player, car, newSc, ref notifyMsg, out Mrr)); } } //var target = Program.dt.GetFpByIndex(victim.StartFPIndex); //var collectIndexTarget = that.getCollectPositionsByDistance(target)[randomValue]; } } RoleInGame boss; if (player.HasTheBoss(roomMain._Players, out boss)) { return(collectPassBossAddress(player, boss, car, sc, ref notifyMsg, out Mrr)); //return promotePassBossAddress(player, boss, car, sp, ref notifyMsg, out reason); } else { if (car.ability.leftVolume > 0) { var from = this.GetFromWhenUpdateCollect(that._Players[sc.Key], sc.cType, car); var to = getCollectPositionTo(sc.collectIndex);// this.promoteMilePosition; var fp1 = Program.dt.GetFpByIndex(from); var fp2 = Program.dt.GetFpByIndex(to); var fbBase = Program.dt.GetFpByIndex(player.StartFPIndex); //var goPath = Program.dt.GetAFromB(fp1, fp2.FastenPositionID); //var goPath = Program.dt.GetAFromB(from, to); var goPath = that.GetAFromB_v2(from, to, player, ref notifyMsg); //var returnPath = Program.dt.GetAFromB(to, player.StartFPIndex); var returnPath = that.GetAFromB_v2(to, player.StartFPIndex, player, ref notifyMsg); var goMile = that.GetMile(goPath); var returnMile = that.GetMile(returnPath); if (car.ability.leftMile >= goMile + returnMile) { int startT; this.EditCarStateWhenActionStartOK(player, ref car, to, fp1, goPath, ref notifyMsg, out startT); var ro = commandWithTime.ReturningOjb.ojbWithoutBoss(returnPath); // Thread th=new Thread() { } car.setState(player, ref notifyMsg, CarState.working); StartArriavalThread(startT, 0, player, car, sc, ro, goMile, goPath); //if (player.playerType == RoleInGame.PlayerType.NPC) // StartArriavalThread(startT, car, sc, ro, goMile); //else // StartArriavalThread(startT, car, sc, ro, goMile); // StartSelectThread(0, startT, car, sc, ro, goMile, goPath); // getAllCarInfomations(sc.Key, ref notifyMsg); Mrr = MileResultReason.Abundant;//返回原因 return(ro); } else if (car.ability.leftMile >= goMile) { // printState(player, car, $"剩余里程为{car.ability.leftMile}去程{goMile},回程{returnMile},你去了回不来。所以安排返回"); Mrr = MileResultReason.CanNotReturn; return(player.returningOjb); } else { // printState(player, car, $"剩余里程为{car.ability.leftMile}去程{goMile},回程{returnMile},去不了。所以安排返回"); Mrr = MileResultReason.CanNotReach; return(player.returningOjb); // return false; } } else { Mrr = MileResultReason.MoneyIsNotEnougt; this.WebNotify(player, "你身上的剩余收集空间不够啦!"); return(player.returningOjb); } } }
public commandWithTime.ReturningOjb maindDo(RoleInGame player, Car car, Command c, ref List <string> notifyMsg, out MileResultReason mrr) { if (c.c == "SetCollect") { var sc = (SetCollect)c; return(this.collect(player, car, sc, ref notifyMsg, out mrr)); } else { throw new Exception($"数据传输错误!(传出类型为{c.c})"); } }