Пример #1
0
 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);
     }
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 internal void SetReturnT(int t, commandWithTime.returnning returnning)
 {
     this.startNewThread(t + 1, returnning, this);
     //Thread th = new Thread(() => setReturn(t, returnning));
     //th.Start();
 }
Пример #5
0
        /// <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);
            }
        }