示例#1
0
        public override ReturnType GetEnterResults(
            Move move,
            out EnterResult result,
            out IEnumerable <MoveResult> moveResults)
        {
            moveResults = new MoveResult[0];
            result      = new EnterResult
            {
                Position    = move.Position,
                Destination = move.Position + Vector3Int.up,
                Step        = Vector3Int.up,
                Entered     = null,
                Moved       = null, // TODO arriving at the ledge
                Offset      = Vector3Int.zero,
                PitchAngle  = 0,
                MoveType    = MoveType.Climbing
            };

            if (!LevelSession.Instance.Get(
                    _levelPosition + Vector3Int.up, out BaseObject _
                    ))
            {
                result.Destination = _levelPosition + Vector3Int.up;
            }

            return(ReturnType.Succeeded_Next);

            //return base.GetEnterResults(move, out result, out moveResults);
        }
示例#2
0
        public HttpResponseMessage accountEnter([FromBody] EnterRequest nEnterRequest)
        {
            AccountInfo accountInfo_ = AccountAspect.getAccountId(nEnterRequest.mAccountName, nEnterRequest.mPassword, nEnterRequest.mAccountType);
            EnterResult enterResult_ = new EnterResult();

            enterResult_.mErrorCode = ConstAspect.mFail;
            enterResult_.mAuthority = 0;
            enterResult_.mRoleItem  = null;
            if ((null == accountInfo_) || (accountInfo_.mAccountId <= 0) || (accountInfo_.mAccountId != nEnterRequest.mAccountId))
            {
                enterResult_.mErrorCode = ConstAspect.mAccount;
                return(ConstAspect.toJson(enterResult_));
            }
            enterResult_.mAuthority = accountInfo_.mAuthority;
            RoleItem roleItem_ = RoleAspect.getRoleInfo(nEnterRequest.mOperatorName, nEnterRequest.mVersionNo, nEnterRequest.mAccountId, nEnterRequest.mRoleId, nEnterRequest.mServerId);

            if (null == roleItem_)
            {
                enterResult_.mErrorCode = ConstAspect.mRole;
                return(ConstAspect.toJson(enterResult_));
            }
            enterResult_.mErrorCode = ConstAspect.mSucess;
            enterResult_.mRoleItem  = roleItem_;
            if (nEnterRequest.mStart)
            {
                RoleAspect.updateRoleStart(nEnterRequest.mOperatorName, nEnterRequest.mVersionNo, nEnterRequest.mAccountId, nEnterRequest.mServerId, nEnterRequest.mRoleId);
            }
            return(ConstAspect.toJson(enterResult_));
        }
示例#3
0
        // TODO
        public override ReturnType GetEnterResults(
            Move move,
            out EnterResult enterResult,
            out IEnumerable <MoveResult> moveResults
            )
        {
            if (base.GetEnterResults(
                    move,
                    out enterResult,
                    out moveResults
                    ) > 0)
            {
                var dir = move.Step.SetY(0);

                // Moving up or moving down
                if ((move.Step.y >= 0 &&
                     dir == _direction) ||
                    (move.Step.y != 0 &&
                     dir == -_direction))
                {
                    enterResult.PitchAngle = dir == _direction ? VisitorAngle : -VisitorAngle;
                    enterResult.Offset     = Vector3.up * Level.CellSize / 2;
                    return(ReturnType.Succeeded_Next);
                }
            }

            return(ReturnType.Failed);
        }
示例#4
0
 public override ReturnType GetEnterResults(
     Move move,
     out EnterResult result,
     out IEnumerable <MoveResult> moveResults)
 {
     result      = null;
     moveResults = null;
     return(ReturnType.Failed);
 }
示例#5
0
 public override ReturnType GetEnterResults(
     Move move,
     out EnterResult result,
     out IEnumerable <MoveResult> results)
 {
     result  = new EnterResult();
     results = new MoveResult[0];
     return(ReturnType.Failed);
 }
示例#6
0
        public override ReturnType GetEnterResults(
            Move move,
            out EnterResult enterResult,
            out IEnumerable <MoveResult> results)
        {
            results     = new MoveResult[0];
            enterResult = null;
            if (move.User is Characters.Character)
            {
                return(ReturnType.Failed);
            }

            return(base.GetEnterResults(
                       move,
                       out enterResult,
                       out results));
        }
示例#7
0
        public override ReturnType GetEnterResults(
            Move move,
            out EnterResult enterResult,
            out IEnumerable <MoveResult> moveResults
            )
        {
            enterResult = null;
            moveResults = new MoveResult[0];

            if (_visitor != null && !_struggleTimer.IsActive)
            {
                // Stepping on top of the visitor
                enterResult = new EnterResult
                {
                    Destination = _levelPosition + Vector3Int.up,
                    Moved       = null,
                    Entered     = null,
                    PitchAngle  = 0f,
                    MoveType    = MoveType.Moving,
                    Offset      = Vector3.zero,
                    Position    = move.Position,
                    Scale       = 1,
                    Step        = move.Step.SetY(0)
                };

                return(ReturnType.Succeeded_Next);
            }
            else
            {
                return(base.GetEnterResults(
                           move,
                           out enterResult,
                           out moveResults
                           ));
            }
        }
示例#8
0
        public override ReturnType GetEnterResults(
            Move move,
            out EnterResult enterResult,
            out IEnumerable <MoveResult> moveResults)
        {
            if (base.GetEnterResults(
                    move,
                    out enterResult,
                    out moveResults) > 0)
            {
                enterResult.Entered = null;
                moveResults         = new MoveResult[0];

                if (LevelSession
                    .Instance
                    .GetOtherPortal(
                        this,
                        out Portal otherPortal))
                {
                    enterResult.Step        = otherPortal.Transform.forward.ToVector3Int();
                    enterResult.MoveType    = MoveType.UsingPortal;
                    enterResult.Position    = otherPortal._levelPosition;
                    enterResult.Destination = enterResult.Position + enterResult.Step;
                    enterResult.Offset      = Vector3.up * Level.CellSize / 2;
                    enterResult.Scale       = EnterScale;

                    if (LevelSession.Instance.Get(
                            enterResult.Destination,
                            out enterResult.Moved))
                    {
                        if (enterResult.Moved.GetMoveResults(
                                new Move
                        {
                            Type = MoveType.Moving,
                            Entered = null,
                            Position = enterResult.Destination,
                            Step = enterResult.Step,
                            User = enterResult.Moved
                        },
                                out moveResults,
                                isRecursiveCall: true) > 0)
                        {
                            return(ReturnType.Succeeded_Next);
                        }
                        else if (enterResult.Moved.GetEnterResults(
                                     new Move
                        {
                            Type = MoveType.Moving,
                            Entered = null,
                            Position = enterResult.Position,
                            Step = enterResult.Step,
                            User = move.User,
                            Source = move.Source
                        },
                                     out EnterResult nextEnterResult,
                                     out moveResults) > 0)
                        {
                            enterResult.Position    = nextEnterResult.Position;
                            enterResult.Step        = nextEnterResult.Step;
                            enterResult.Destination = nextEnterResult.Position + nextEnterResult.Step;
                            enterResult.Entered     = nextEnterResult.Entered;
                            enterResult.Moved       = nextEnterResult.Moved;
                            return(ReturnType.Succeeded_Next);
                        }
                    }
                    else
                    {
                        return(ReturnType.Succeeded_Next);
                    }
                }
            }

            return(ReturnType.Failed);;
        }