コード例 #1
0
ファイル: Engine_Return.cs プロジェクト: sxtgyrq/VRPGame
        private void ReturnToSelf(RoleInGame player, Car car, returnning cmp, ref List <string> notifyMsg)
        {
            var speed  = car.ability.Speed;
            int startT = 0;
            var result = new List <int>();
            //RoleInGame boss = cmp.returningOjb.Boss;
            //  that.getStartPositon(Program.dt.GetFpByIndex(cmp.target), (boss.positionInStation + 1) % 5, ref startT);
            var boss = cmp.returningOjb.Boss;

            // Program.dt.GetAFromBPoint(cmp.returningOjb.returnToSelfAddrPath, Program.dt.GetFpByIndex(cmp.target), speed, ref result, ref startT, player.improvementRecord.speedValue > 0);

            if (cmp.returningOjb.returnToSelfAddrPath.path.Count > 0)
            {
                Program.dt.GetAFromBPoint(cmp.returningOjb.returnToSelfAddrPath.path[0].path, cmp.returningOjb.returnToSelfAddrPath.path[0].position, speed, ref result, ref startT, player.improvementRecord.speedValue > 0);
            }
            var self = player;

            //  that.getEndPositon(Program.dt.GetFpByIndex(self.StartFPIndex), self.positionInStation, ref result, ref startT, player.improvementRecord.speedValue > 0);
            // result.RemoveAll(item => item.t == 0);

            car.setState(that._Players[cmp.key], ref notifyMsg, CarState.returning);
            car.targetFpIndex = self.StartFPIndex;

            Data.PathStartPoint2 startPosition;
            if (cmp.returningOjb.returnToSelfAddrPath.path.Count == 0)
            {
                //that.getStartPositionByFp(out startPosition, cmp.returningOjb.returnToSelfAddrPath.path[0].position);
                // that.getStartPositionByFp(out startPosition, Program.dt.GetFpByIndex(player.StartFPIndex));
                var    fp = Program.dt.GetFpByIndex(player.StartFPIndex);
                double x, y;
                CommonClass.Geography.calculatBaideMercatorIndex.getBaiduPicIndex(fp.positionLongitudeOnRoad, fp.positionLatitudeOnRoad, out x, out y);
                startPosition = new Data.PathStartPoint2()
                {
                    x = Convert.ToInt32(x * 256),
                    y = Convert.ToInt32(y * 256)
                };
            }
            else
            {
                that.getStartPositionByGoPath(out startPosition, cmp.returningOjb.returnToSelfAddrPath.path[0]);
            }
            car.setState(player, ref notifyMsg, CarState.returning);
            car.setAnimateData(player, ref notifyMsg,
                               new AnimateData2(startPosition, result, DateTime.Now, false));
            car.setState(player, ref notifyMsg, CarState.returning);
            this.StartArriavalThread(startT, 0, player, car, cmp.returningOjb.returnToSelfAddrPath,
                                     (newStartT) =>
            {
                this.startNewThread(newStartT, new commandWithTime.comeBack()
                {
                    c = "comeBack",
                    //car = cmp.car,
                    key = cmp.key
                }, this);
            }, player);
        }
コード例 #2
0
ファイル: Engine_Return.cs プロジェクト: sxtgyrq/VRPGame
 internal void SetReturnFromBoss(int v, RoleInGame boss, returnning returnning)
 {
     this.startNewThread(v, returnning, this);
     //this.newt
     //returnning returnningObj = new returnning()
     //{
     //    c = "returnning",
     //    changeType = returnning.ChangeType.AfterTax,
     //    key = returnning.key,
     //    returningOjb = returnning.returningOjb
     //};
     //this.newThreadDo(returnningObj);
     //throw new NotImplementedException();
 }
コード例 #3
0
ファイル: Engine_Return.cs プロジェクト: sxtgyrq/VRPGame
 public void newThreadDo(baseC dObj)
 {
     if (dObj.c == "returnning")
     {
         returnning obj = (returnning)dObj;
         this.setReturn(obj);
     }
     else if (dObj.c == "comeBack")
     {
         comeBack obj = (comeBack)dObj;
         this.setBack(obj);
     }
     //throw new NotImplementedException();
 }
コード例 #4
0
ファイル: Engine_Return.cs プロジェクト: sxtgyrq/VRPGame
        private void ReturnToBoss(RoleInGame player, Car car, returnning cmp, ref List <string> notifyMsg)
        {
            switch (cmp.changeType)
            {
            case returnning.ChangeType.AfterTax:
            {
                var speed  = car.ability.Speed;
                int startT = 0;
                var result = new List <int>();
                //RoleInGame boss = cmp.returningOjb.Boss;
                //  that.getStartPositon(Program.dt.GetFpByIndex(cmp.target), (boss.positionInStation + 1) % 5, ref startT);
                var boss = cmp.returningOjb.Boss;

                Data.PathStartPoint2 startPosition;
                var fp1 = Program.dt.GetFpByIndex(boss.StartFPIndex);
                result = that.getStartPositon(fp1, boss.positionInStation + 1, ref startT, out startPosition, player.improvementRecord.speedValue > 0);
                Program.dt.GetAFromBPoint(cmp.returningOjb.returnToSelfAddrPath.path[0].path, cmp.returningOjb.returnToSelfAddrPath.path[0].position, speed, ref result, ref startT, player.improvementRecord.speedValue > 0);

                var self = player;
                // that.getEndPositon(Program.dt.GetFpByIndex(self.StartFPIndex), self.positionInStation, ref result, ref startT, player.improvementRecord.speedValue > 0);
                // result.RemoveAll(item => item.t == 0);

                car.setState(that._Players[cmp.key], ref notifyMsg, CarState.returning);
                car.targetFpIndex = self.StartFPIndex;
                car.setAnimateData(player, ref notifyMsg,
                                   new AnimateData2(startPosition, result, DateTime.Now, false));
                car.setState(player, ref notifyMsg, CarState.returning);
                this.StartArriavalThread(startT, 0, player, car, cmp.returningOjb.returnToSelfAddrPath, (int newStart) =>
                    {
                        this.startNewThread(newStart, new commandWithTime.comeBack()
                        {
                            c = "comeBack",
                            //car = cmp.car,
                            key = cmp.key
                        }, this);
                    }, self);
            }; break;

            case returnning.ChangeType.BeforeTax:
            {
                var speed  = car.ability.Speed;
                int startT = 0;
                var result = new List <int>();
                //RoleInGame boss = cmp.returningOjb.Boss;
                //  that.getStartPositon(Program.dt.GetFpByIndex(cmp.target), (boss.positionInStation + 1) % 5, ref startT);
                var boss = cmp.returningOjb.Boss;

                if (cmp.returningOjb.returnToBossAddrPath.path.Count > 0)
                {
                    Program.dt.GetAFromBPoint(cmp.returningOjb.returnToBossAddrPath.path[0].path, cmp.returningOjb.returnToBossAddrPath.path[0].position, speed, ref result, ref startT, player.improvementRecord.speedValue > 0);
                }
                //  that.getEndPositon(Program.dt.GetFpByIndex(boss.StartFPIndex), boss.positionInStation + 1, ref result, ref startT, player.improvementRecord.speedValue > 0);
                // result.RemoveAll(item => item.t == 0);

                car.setState(that._Players[cmp.key], ref notifyMsg, CarState.returning);
                car.targetFpIndex = boss.StartFPIndex;

                /*
                 * A:这里的if 是正常情况
                 * B:else 考虑的是攻击自己的老大的情况!位置就是处于老大大本营时的情况
                 */
                if (cmp.returningOjb.returnToBossAddrPath.path.Count > 0)
                {
                    Data.PathStartPoint2 startPosition;
                    that.getStartPositionByGoPath(out startPosition, cmp.returningOjb.returnToBossAddrPath.path[0]);
                    car.setAnimateData(player, ref notifyMsg,
                                       new AnimateData2(startPosition, result, DateTime.Now, false));
                }
                else
                {
                }
                car.setState(player, ref notifyMsg, CarState.returning);
                StartArriavalThread(startT, 0, player, car, cmp.returningOjb.returnToBossAddrPath, (int newStartT) =>
                    {
                        that.taxE.CollectTax(newStartT, new taxSet()
                        {
                            c            = "taxSet",
                            changeType   = returnning.ChangeType.BeforeTax,
                            key          = cmp.key,
                            target       = cmp.target,
                            returningOjb = cmp.returningOjb
                        });
                    }, boss);
                //startNewThread(startT,)
            }; break;

            default:
            {
                throw new Exception($"cmp.changeType 没有赋正确值");
            }
            }
        }