public void OnStepMoved(StepData step, float duration) { Vector2 piecePixelPos = this.playerPiece.LocalPixelPosition; Vector2 piecePos = Roga2dUtils.pixelToLocal(new Vector2(piecePixelPos.x, piecePixelPos.y)); Vector2 movePos = Roga2dUtils.pixelToLocal(new Vector2(step.PosX + 16, step.PosY + 16)); Vector2 cameraPos = this.camera.LocalPosition; Vector2 cameraFocusPos = Roga2dUtils.pixelToLocal(new Vector2(piecePixelPos.x - 16, piecePixelPos.y - 16)); Vector2 cameraMovePos = Roga2dUtils.pixelToLocal(new Vector2(step.PosX , step.PosY)); Roga2dFunc func = new Roga2dFunc(this.onPieceMoved); // Move camera and piece at the same time Roga2dParallel parallel = new Roga2dParallel(new List<Roga2dBaseInterval> { new Roga2dPositionInterval(this.playerPiece, piecePos, movePos, Roga2dUtils.TimeToFrame(duration), true, null), new Roga2dPositionInterval(this.camera, cameraFocusPos, cameraMovePos, Roga2dUtils.TimeToFrame(duration), true, null) }); // At first move back to the piece position float distance = Vector2.Distance(cameraPos, piecePos); float cameraFocusDuration = distance * 0.2f; Roga2dSequence sequence = new Roga2dSequence(new List<Roga2dBaseInterval> { new Roga2dPositionInterval(this.camera, cameraPos, cameraFocusPos, Roga2dUtils.TimeToFrame(cameraFocusDuration), true, null), parallel, func }); Roga2dIntervalPlayer.GetInstance().Play(sequence); }
public Model.MapModel GetModel() { StepData[] steps = new StepData[5]; steps[0] = new StepData(1, 100, 250); steps[1] = new StepData(2, 100, 300); steps[2] = new StepData(3, 100, 350); steps[3] = new StepData(4, 100, 400); steps[4] = new StepData(5, 100, 450); return new Model.MapModel(steps); }
public MapModel(StepData[] steps) { this.currentStepId = 1; this.steps = steps; }
private void onStepMoved(StepData step, float duration) { this.player.startWalkingAnimation(); this.stage.Scroll(duration); }