public static RelativeWayList FromVektorList(Vector2iList vektorList) { var list = new RelativeWayList(); // SPoint Vek = new SPoint(); foreach (var vek in vektorList) { if (vek.X != 0) { if (vek.X > 0) { list.Add(new RelativeWay(vek.X, RelativeWayDirection.Right)); } else { list.Add(new RelativeWay(vek.X, RelativeWayDirection.Left)); } } if (vek.Y != 0) { if (vek.Y > 0) { list.Add(new RelativeWay(vek.Y, RelativeWayDirection.Down)); } else { list.Add(new RelativeWay(vek.Y, RelativeWayDirection.Up)); } } } return(list); }
private Vector2iList GetWay(WayPoint goal) { var list = new Vector2iList(); GetWayRecursive(goal, list); return(list); }
private void GetWayRecursive(WayPoint wp, Vector2iList list) { if (wp.Parent != null) { GetWayRecursive(wp.Parent, list); } list.Add(wp.Position); }
protected override void OnMouseDown(MouseButtonArgs e) { if (CurrentMouseWorldPositionIsValid) { var translatedPos = (new Vector4(CurrentMouseWorldPosition, 1) * BoardTranslationMatrix).Xyz; Console.WriteLine(translatedPos); var pos = translatedPos.Round().Xy.ToVector2i(); if (!Board.PositionInMap(pos)) { return; } //ScaleAnim.Start(); var selector = BoardActor.GetComponent <SceneComponent>("MarbleSelector"); if (MoveTween.Enabled || RemoveTween.Enabled || CreateTween.Enabled) { return; } if (Board[pos]?.Color == MarbleColor.BombJoker) { return; } var marble = Board[pos]; Log.Verbose("Clicked: {position}. Marble: {marble}", pos, marble); if (marble != null) { SelectedMarble = marble; selector.RelativeTranslation = new Vector3(pos.X, pos.Y, selector.RelativeTranslation.Z); selector.Visible = true; AudioManager.Default.PlayAsync("Sounds/marble-select.wav"); } else { if (SelectedMarble != null) { var path = Board.FindPath(SelectedMarble, pos); if (path != null && path.Count > 0) { CurrentPath = path; var moveStepDuration = TimeSpan.FromSeconds(0.1); //var moveStepDuration = TimeSpan.FromSeconds(2); MoveTween.Duration = moveStepDuration.Multiply(path.Count); MoveTween.Start(); AudioManager.Default.PlayAsync("Sounds/marble-moving.wav"); selector.Visible = false; } } } } }
public Vector2iList ToVektorList() { var list = new Vector2iList(); var vek = new Vector2i(); // SRelativeWay Way = new SRelativeWay(); foreach (var way in this) { vek.X += way.RelX; vek.Y += way.RelY; if (vek.X != 0 && vek.Y != 0) { list.Add(vek); vek.X = 0; vek.Y = 0; } } if (vek.X != 0 || vek.Y != 0) { list.Add(vek); } return(list); }