private void ReturnThenSetComeBack(RoleInGame player, Car car, commandWithTime.returnning cmp, ref List <string> notifyMsg) { if (cmp.returningOjb.NeedToReturnBoss) { ReturnToBoss(player, car, cmp, ref notifyMsg); } else { ReturnToSelf(player, car, cmp, ref notifyMsg); } }
void setReturn(commandWithTime.returnning rObj) { List <string> notifyMsg = new List <string>(); lock (that.PlayerLock) { var player = that._Players[rObj.key]; var car = that._Players[rObj.key].getCar(); car.targetFpIndex = that._Players[rObj.key].StartFPIndex; ReturnThenSetComeBack(player, car, rObj, ref notifyMsg); } for (var i = 0; i < notifyMsg.Count; i += 2) { var url = notifyMsg[i]; var sendMsg = notifyMsg[i + 1]; Startup.sendMsg(url, sendMsg); } }
private void ReturnThenSetComeBack(RoleInGame player, Car car, commandWithTime.returnning cmp, ref List <string> notifyMsg) { var speed = car.ability.Speed; int startT = 0; var result = new List <int>(); Program.dt.GetAFromBPoint(cmp.returnPath, Program.dt.GetFpByIndex(cmp.target), speed, ref result, ref startT); getEndPositon(Program.dt.GetFpByIndex(this._Players[cmp.key].StartFPIndex), this._Players[cmp.key].positionInStation, ref result, ref startT); // result.RemoveAll(item => item.t == 0); car.setState(this._Players[cmp.key], ref notifyMsg, CarState.returning); // car.state = CarState.returning; Thread th = new Thread(() => setBack(startT, new commandWithTime.comeBack() { c = "comeBack", //car = cmp.car, key = cmp.key })); th.Start(); Data.PathStartPoint2 startPosition; this.getStartPositionByGoPath(out startPosition, cmp.returnPath); //var player = this._Players[cmp.key]; car.setAnimateData(player, ref notifyMsg, new AnimateData2() { start = startPosition, animateData = result, recordTime = DateTime.Now }); //car.animateData = new AnimateData() //{ // animateData = result, // recordTime = DateTime.Now //}; //第二步,更改状态 //car.changeState++; //getAllCarInfomations(cmp.key, ref notifyMsg); }
internal void SetReturnT(int t, commandWithTime.returnning returnning) { this.startNewThread(t + 1, returnning, this); //Thread th = new Thread(() => setReturn(t, returnning)); //th.Start(); }
/// <summary> /// set return 本身自带广播功能 /// </summary> /// <param name="startT"></param> /// <param name="cmp"></param> private async void setReturn(int startT, commandWithTime.returnning cmp) { Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}开始执行setReturn"); Thread.Sleep(startT + 1); Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}开始执行setReturn正文"); List <string> notifyMsg = new List <string>(); bool needUpdatePromoteState = false; lock (this.PlayerLock) { var player = this._Players[cmp.key]; var car = this._Players[cmp.key].getCar(cmp.car); car.targetFpIndex = this._Players[cmp.key].StartFPIndex; if ((cmp.changeType == "mile" || cmp.changeType == "business" || cmp.changeType == "volume" || cmp.changeType == "speed") && car.state == CarState.buying) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if ((cmp.changeType == "mile" || cmp.changeType == "business" || cmp.changeType == "volume" || cmp.changeType == "speed") && car.state == CarState.waitOnRoad) { /* * 此项对应的条件是在找能力提升宝石过程中,里程不够然后安排返回。 * */ ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if (cmp.changeType == CollectReturn && (car.state == CarState.waitForCollectOrAttack || car.state == CarState.waitOnRoad)) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if (cmp.changeType == "tax-return" && (car.state == CarState.waitForTaxOrAttack || car.state == CarState.waitOnRoad)) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if (cmp.changeType == "Attack" && car.state == CarState.roadForAttack && car.purpose == Purpose.attack) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if (cmp.changeType == AttackFailedReturn) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if (cmp.changeType == "sys-return") { //if (car.state == CarState.roadForAttack) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } } else if (cmp.changeType == "orderToReturn") { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else if (cmp.changeType == "Bust" && car.state == CarState.roadForAttack && car.purpose == Purpose.attack) { ReturnThenSetComeBack(player, car, cmp, ref notifyMsg); } else { var json = Newtonsoft.Json.JsonConvert.SerializeObject(car); for (var i = 0; i < 100; i++) { Console.WriteLine("↓↓↓↓↓出现异常↓↓↓↓↓"); } Console.WriteLine(json); DebugRecord.FileRecord($@"-----setReturn 以下情况未注册----- {json} -----setReturn 以下情况未注册-----"); } } for (var i = 0; i < notifyMsg.Count; i += 2) { var url = notifyMsg[i]; var sendMsg = notifyMsg[i + 1]; Console.WriteLine($"url:{url}"); await Startup.sendMsg(url, sendMsg); } Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}执行setReturn结束"); if (needUpdatePromoteState) { await CheckAllPlayersPromoteState(cmp.changeType); } }