Пример #1
0
        public bool Move(Rectangle area, float distance, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled)
        {
            AbortCurrentMovement();

            this.data = data;
            this.onMovementFinished  = onMovementFinished;
            this.onMovementCancelled = onMovementCancelled;

            if (area.Contains(representable.getPosition(), 0))
            {
                if (onMovementFinished != null)
                {
                    onMovementFinished(data);
                }
                return(true);
            }

            var accesible = TrajectoryHandler.GetAccessibleTrajectory(representable.getPosition(), FindObjectOfType <SceneMB>().Trajectory);

            Vector2[] intersections;
            if (TrajectoryHandler.TrajectoryRectangleIntersections(area, accesible, out intersections))
            {
                var route = accesible.route(representable.getPosition(), intersections);
                if (route != null && route.Length > 0)
                {
                    toArea         = area;
                    distanceToArea = distance;
                    MoveRoute(route);
                    return(true);
                }
            }
            return(false);
        }
Пример #2
0
        public InteractuableResult Interacted(PointerEventData pointerData)
        {
            InteractuableResult res = InteractuableResult.IGNORES;

            switch (SceneData.getType())
            {
            case GeneralScene.GeneralSceneSceneType.SCENE:
                var scene = SceneData as Scene;
                if (!Game.Instance.GameState.IsFirstPerson && scene.isAllowPlayerLayer())
                {
                    RaycastHit hitInfo;
                    background.GetComponent <Collider>().Raycast(Camera.main.ScreenPointToRay(pointerData.position), out hitInfo, float.MaxValue);
                    var texPos   = PixelsSize;
                    var texCoord = hitInfo.textureCoord;
                    texCoord.y = 1 - texCoord.y;
                    texPos.Scale(texCoord);
                    var positioner = PlayerMB.Instance.GetComponent <ScenePositioner>();
                    var accesible  = TrajectoryHandler.GetAccessibleTrajectory(positioner.Position, trajectoryHandler);
                    PlayerMB.Instance.GetComponent <Mover>().Move(accesible.closestPoint(texPos));
                }
                break;

            case GeneralScene.GeneralSceneSceneType.SLIDESCENE:
                if (ProgressSlide())
                {
                    res = InteractuableResult.REQUIRES_MORE_INTERACTION;
                }
                else
                {
                    res = FinishCutscene((Cutscene)SceneData);
                }
                break;

            case GeneralScene.GeneralSceneSceneType.VIDEOSCENE:
                var videoscene = (Videoscene)SceneData;
                if (movieplayer == MovieState.NOT_MOVIE ||
                    movieplayer == MovieState.STOPPED ||
                    (movieplayer == MovieState.PLAYING && !movie.isPlaying()) ||
                    videoscene.isCanSkip())
                {
                    movie.Stop();
                    movieplayer = MovieState.STOPPED;
                    if (movieplayer == MovieState.PLAYING)
                    {
                        TrackerAsset.Instance.Accessible.Skipped(SceneData.getId(), AccessibleTracker.Accessible.Cutscene);
                    }
                    res = FinishCutscene(videoscene);
                }
                break;
            }

            return(res);
        }
Пример #3
0
        public bool Move(Vector2 point, object data, OnMovementFinished onMovementFinished, OnMovementCancelled onMovementCancelled)
        {
            AbortCurrentMovement();

            this.data = data;
            this.onMovementFinished  = onMovementFinished;
            this.onMovementCancelled = onMovementCancelled;

            var accesible = TrajectoryHandler.GetAccessibleTrajectory(representable.getPosition(), FindObjectOfType <SceneMB>().Trajectory);
            var route     = accesible.route(representable.getPosition(), point);

            if (route != null && route.Length > 0)
            {
                toArea = null;
                MoveRoute(route);
                return(true);
            }
            return(false);
        }