Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        private Vector2iList GetWay(WayPoint goal)
        {
            var list = new Vector2iList();

            GetWayRecursive(goal, list);
            return(list);
        }
Ejemplo n.º 3
0
 private void GetWayRecursive(WayPoint wp, Vector2iList list)
 {
     if (wp.Parent != null)
     {
         GetWayRecursive(wp.Parent, list);
     }
     list.Add(wp.Position);
 }
Ejemplo n.º 4
0
        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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
        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);
        }