示例#1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="moveType">移动类型></param>
 /// <param name="target">移动目标</param>
 /// <param name="oneRoundTime">单次运行时间</param>
 /// <param name="repeatType">重复类型默认为循环</param>
 public void Initialize(MoveActionType moveType, Transform target
                        , float oneRoundTime, MoveRepeatType repeatType = MoveRepeatType.Loop)
 {
     this.MoveType     = moveType;
     this.RepeatType   = repeatType;
     this.MoveTarget   = target;
     this.OneRoundTime = oneRoundTime;
 }
        public void SetMovement(Vector3 direction, MoveActionType actionType)
        {
            if (IsFallingNow)
            {
                return;
            }
            if (actionType == MoveActionType.NO_MOVE)
            {
                StopAllMovements();
                return;
            }

            isRelativeDirectionNow = false;
            CurrentTargetDirection = new Vector3(direction.x, 0, direction.y);
            CurrentMoveActionType  = actionType;
        }
        public void SetMovement(RelativeDirection relDirection, MoveActionType actionType)
        {
            if (IsFallingNow)
            {
                return;
            }
            if (actionType == MoveActionType.NO_MOVE)
            {
                StopAllMovements();
                return;
            }

            isRelativeDirectionNow = true;
            relativeDirection      = relDirection;
            CurrentTargetDirection = CurrentDirection;
            CurrentMoveActionType  = actionType;
        }
示例#4
0
        public void SetMovement(RelativeDirection relDirection, MoveActionType actionType)
        {
            if (TranslationsController == null)
            {
                return;
            }

            // Управление перемещением более приоритетно, чем прицеливание - отменяем прицеливание по возможности
            if (artilleryLauncher?.IsLaunchingNow ?? false)
            {
                return;
            }
            if (isAimingNow && actionType == MoveActionType.NO_MOVE)
            {
                return;
            }
            if (actionType != MoveActionType.NO_MOVE)
            {
                artilleryLauncher.ClearAimData();
            }
            isAimingNow = false;

            TranslationsController.SetMovement(relDirection, actionType);
        }
示例#5
0
        private List <Room> GetTargetRoomList(MoveActionType MoveActionType, Room CurrentRoom, Player CurrentPlayer)
        {
            var TargetRoomList = new List <Room>();
            var CurrentLayer   = GameMap.Find(x => x.RoomList.Contains(CurrentRoom));

            switch (MoveActionType)
            {
            case MoveActionType.Up:
                if (CurrentLayer.Depth == 1)
                {
                    TargetRoomList.Add(GetRoom(0, 0));
                }
                else if (CurrentLayer.Depth == 7)
                {
                    if (CurrentRoom.Index == 0)
                    {
                        TargetRoomList.Add(GetRoom(6, 0));
                        TargetRoomList.Add(GetRoom(6, 1));
                        TargetRoomList.Add(GetRoom(6, 2));
                    }
                    else
                    {
                        TargetRoomList.Add(GetRoom(6, 2));
                        TargetRoomList.Add(GetRoom(6, 3));
                        TargetRoomList.Add(GetRoom(6, 4));
                    }
                }
                else
                {
                    TargetRoomList.Add(GetRoom(CurrentRoom.Depth - 1, CurrentRoom.Index));
                }
                break;

            case MoveActionType.Down:
                if (CurrentLayer.Depth == 0)
                {
                    TargetRoomList.Add(GetRoom(1, 0));
                    TargetRoomList.Add(GetRoom(1, 1));
                    TargetRoomList.Add(GetRoom(1, 2));
                    TargetRoomList.Add(GetRoom(1, 3));
                    TargetRoomList.Add(GetRoom(1, 4));
                }
                else if (CurrentLayer.Depth == 6)
                {
                    if (CurrentRoom.Index <= 2)
                    {
                        TargetRoomList.Add(GetRoom(7, 0));
                    }
                    else
                    {
                        TargetRoomList.Add(GetRoom(7, 1));
                    }
                }
                else
                {
                    TargetRoomList.Add(GetRoom(CurrentRoom.Depth + 1, CurrentRoom.Index));
                }
                break;

            case MoveActionType.Left:
                TargetRoomList.Add(GetRoom(CurrentRoom.Depth, CurrentRoom.Index - 1));
                break;

            case MoveActionType.Right:
                TargetRoomList.Add(GetRoom(CurrentRoom.Depth, CurrentRoom.Index + 1));
                break;

            case MoveActionType.Stay:
                TargetRoomList.Add(GetRoom(CurrentRoom.Depth, CurrentRoom.Index));
                break;
            }
            return(TargetRoomList);
        }
示例#6
0
 protected override void ReadData(IPacketReader reader)
 {
     _moveAction = (MoveActionType)reader.ReadByte();
     _elapse     = reader.ReadShort();
 }
示例#7
0
 public void Reset()
 {
     MoveTarget  = null;
     m_bPlalying = false;
     MoveType    = MoveActionType.Circle;
 }