Beispiel #1
0
        public byte[] GetBytes()
        {
            List <byte> bytes = new List <byte>(0x40)
            {
                (byte)CamType, Priority, (byte)AdjustType, (byte)CollisionType
            };

            unchecked
            {
                bytes.AddRange(BitConverter.GetBytes((ushort)Rotation.X));
                bytes.AddRange(BitConverter.GetBytes((ushort)Rotation.Y));
            }

            bytes.AddRange(Position.GetBytes());
            bytes.AddRange(Scale.GetBytes());

            bytes.AddRange(BitConverter.GetBytes(CameraAngleX));
            bytes.AddRange(BitConverter.GetBytes(CameraAngleY));

            bytes.AddRange(PointA.GetBytes());
            bytes.AddRange(PointB.GetBytes());
            bytes.AddRange(BitConverter.GetBytes(Variable));

            return(bytes.ToArray());
        }
Beispiel #2
0
        private void Submit()
        {
            if (!PointA.HasValue() && !PointB.HasValue())
            {
                base.ShowPopup(CustomPopupMessageType.Error, AppResources.MapPointSelectionNoPointsPlacedPopupText, AppResources.CustomPopupGenericOkMessage, null);
                return;
            }

            if (fromWhereTo)
            {
                WhereToMessage.Send(new WhereToModel(PointA.Name, PointB.Name, PointA.Location, PointB.Location));

                NavigationService.GoBack();
            }
            else
            {
                if (PointA.HasValue() && PointB.HasValue())
                {
                    NavigationService.NavigateTo(string.Format("/Views/WhereTo.xaml?startname={0}&endname={1}&startlat={2}&startlon={3}&endlat={4}&endlon={5}", PointA.Name, PointB.Name, PointA.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointA.Location.Longitude.ToString(CultureInfo.InvariantCulture), PointB.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointB.Location.Longitude.ToString(CultureInfo.InvariantCulture)));
                }
                else if (PointA.HasValue() && !PointB.HasValue())
                {
                    NavigationService.NavigateTo(string.Format("/Views/WhereTo.xaml?startname={0}&startlat={1}&startlon={2}", PointA.Name, PointA.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointA.Location.Longitude.ToString(CultureInfo.InvariantCulture)));
                }
                else if (!PointA.HasValue() && PointB.HasValue())
                {
                    NavigationService.NavigateTo(string.Format("/Views/WhereTo.xaml?endname={0}&endlat={1}&endlon={2}", PointB.Name, PointB.Location.Latitude.ToString(CultureInfo.InvariantCulture), PointB.Location.Longitude.ToString(CultureInfo.InvariantCulture)));
                }
            }
        }
Beispiel #3
0
        private void SwitchToStations()
        {
            isStopSearch = true;

            StationsVisibility = Visibility.Visible;
            SearchVisibility   = Visibility.Collapsed;

            SelectedStationVisibility     = Visibility.Collapsed;
            SelectedCustomPointVisibility = Visibility.Collapsed;
            SelectedSearchItemVisibility  = Visibility.Collapsed;

            if (isPointA)
            {
                PointA.Hide();
            }
            else
            {
                PointB.Hide();
            }

            MapSearchResults.Clear();

            ClearSearchTextBox();

            ShowStopsList();
        }
Beispiel #4
0
 private void BreakLink()
 {
     PointA.DisconnectFrom(PointB);
     PointB.DisconnectFrom(PointA);
     PointA = null;
     PointB = null;
 }
Beispiel #5
0
        private Block DeterminateOre(PointB point, PointI chunkPosition)
        {
            const float coeff      = 0.9f;
            var         noiseValue = Get3DNoise(
                point.X * coeff + chunkPosition.X * Chunk <Block> .XLength,
                point.Y * coeff,
                point.Z * coeff + chunkPosition.Z * Chunk <Block> .ZLength);

            if (noiseValue >= 0.7 && noiseValue < 0.72)
            {
                return(new Block(BaseBlocks.CoalOre, point));
            }

            if (noiseValue >= 0.01 && noiseValue < 0.015 && point.Y <= 60)
            {
                return(new Block(BaseBlocks.GoldOre, point));
            }

            if (noiseValue >= 0.8 && noiseValue < 0.82)
            {
                return(new Block(BaseBlocks.IronOre, point));
            }

            if (noiseValue >= -0.307 && noiseValue < -0.3 && point.Y <= 35)
            {
                return(new Block(BaseBlocks.DiamondOre, point));
            }

            return(null);
        }
Beispiel #6
0
 public override void RemoveItem(ref List <UndoRedoAction> undoPipe)
 {
     base.RemoveItem(ref undoPipe);
     PointA.RemoveItem(ref undoPipe);
     PointB.RemoveItem(ref undoPipe);
     PointC.RemoveItem(ref undoPipe);
     PointD.RemoveItem(ref undoPipe);
 }
Beispiel #7
0
        public Vector2[] GetAdjustedPointPositions(Vector2 position, float rotation)
        {
            Vector2[] points = new Vector2[3];
            points[0] = PointA.Rotate(rotation) + position;
            points[1] = PointB.Rotate(rotation) + position;
            points[2] = PointC.Rotate(rotation) + position;

            return(points);
        }
        /// <summary>
        /// override method get square for simple triangle
        /// </summary>
        /// <returns>Value of the square simple triangle</returns>
        public override double GetSquare()
        {
            double sizeSideAB = PointA.GetDistance(PointB);
            double sizeSideAC = PointA.GetDistance(PointC);
            double sizeSideBC = PointB.GetDistance(PointC);
            double poluPim    = (sizeSideAB + sizeSideAC + sizeSideBC) / 2;

            return(Math.Sqrt(poluPim * (poluPim - sizeSideAB) * (poluPim - sizeSideAC) * (poluPim - sizeSideBC)));
        }
Beispiel #9
0
 public virtual void RemoveItem(List <UndoRedoAction> undoPipe)
 {
     lock (board.ParentControl)
     {
         PointA.RemoveItem(undoPipe);
         PointB.RemoveItem(undoPipe);
         PointC.RemoveItem(undoPipe);
         PointD.RemoveItem(undoPipe);
     }
 }
Beispiel #10
0
        private void RemovePointB()
        {
            PointB.ClearValues();

            if (!isPointA)
            {
                SelectedStationVisibility     = Visibility.Collapsed;
                SelectedSearchItemVisibility  = Visibility.Collapsed;
                SelectedCustomPointVisibility = Visibility.Collapsed;
            }
        }
Beispiel #11
0
 public override void OnItemPlaced(List <UndoRedoAction> undoPipe)
 {
     lock (board.ParentControl)
     {
         base.OnItemPlaced(undoPipe);
         PointA.OnItemPlaced(undoPipe);
         PointB.OnItemPlaced(undoPipe);
         PointC.OnItemPlaced(undoPipe);
         PointD.OnItemPlaced(undoPipe);
     }
 }
Beispiel #12
0
 public override void RemoveItem(List <UndoRedoAction> undoPipe)
 {
     lock (board.ParentControl)
     {
         base.RemoveItem(undoPipe);
         PointA.RemoveItem(undoPipe);
         PointB.RemoveItem(undoPipe);
         PointC.RemoveItem(undoPipe);
         PointD.RemoveItem(undoPipe);
     }
 }
        public void Add_Should()
        {
            var point1   = new PointB(1, 1, 1);
            var point123 = new PointB(1, 2, 3);

            Assert.AreEqual(new PointB(2, 3, 4), point1.Add(point123));

            var pointMax = new PointB(byte.MaxValue, byte.MaxValue, byte.MaxValue);

            Assert.AreEqual(new PointB(0, 1, 2), pointMax.Add(point123));
        }
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = PointA.GetHashCode();
         hashCode = (hashCode * 397) ^ PointB.GetHashCode();
         hashCode = (hashCode * 397) ^ PointC.GetHashCode();
         hashCode = (hashCode * 397) ^ PointD.GetHashCode();
         return(hashCode);
     }
 }
Beispiel #15
0
 private void EnforceConnection()
 {
     if (LinkEstablished && LinkActive)
     {
         PointA.ConnectTo(PointB, NavNodeConnection.NavConnectionType.Standard);
         if (Bidirectional)
         {
             PointB.ConnectTo(PointA, NavNodeConnection.NavConnectionType.Standard);
         }
     }
 }
        public void Distant_Should()
        {
            var point1   = new PointB(1, 1, 1);
            var point3   = new PointB(3, 3, 3);
            var point123 = new PointB(1, 2, 3);

            Assert.AreEqual(0, point1.GetDistance(point1));

            Assert.AreEqual(2, point1.GetDistance(point3));

            Assert.AreEqual(point1.GetDistance(point123), point123.GetDistance(point1));
        }
Beispiel #17
0
        private void PointAClick()
        {
            if (!this.isPointA)
            {
                PointA.Select();

                this.isPointA = true;

                PointB.Deselect();

                if (PointA.HasValue())
                {
                    if (PointA.Station == null && PointA.CustomPoint == null)
                    {
                        SelectedSearchItemForView = PointA.SearchItem;

                        SelectedStationVisibility     = Visibility.Collapsed;
                        SelectedCustomPointVisibility = Visibility.Collapsed;
                        SelectedSearchItemVisibility  = Visibility.Visible;
                    }
                    else if (PointA.SearchItem == null && PointA.CustomPoint == null)
                    {
                        SelectedStationForView = PointA.Station;

                        SelectedSearchItemVisibility  = Visibility.Collapsed;
                        SelectedCustomPointVisibility = Visibility.Collapsed;
                        SelectedStationVisibility     = Visibility.Visible;
                    }
                    else
                    {
                        SelectedCustomPointForView = PointA.CustomPoint;

                        SelectedSearchItemVisibility  = Visibility.Collapsed;
                        SelectedStationVisibility     = Visibility.Collapsed;
                        SelectedCustomPointVisibility = Visibility.Visible;
                    }

                    PointA.Show();
                }
                else
                {
                    PointA.Hide();
                    SelectedStationVisibility     = Visibility.Collapsed;
                    SelectedSearchItemVisibility  = Visibility.Collapsed;
                    SelectedCustomPointVisibility = Visibility.Collapsed;
                }
            }
        }
        public Chunk <Block> Generate(Chunk <Block> chunk)
        {
            for (byte i = 0; i < Chunk <Block> .XLength; i++)
            {
                for (byte k = 0; k < Chunk <Block> .ZLength; k++)
                {
                    var innerPoint = PointF.CreateXZ(chunk.Position.X * Chunk <Block> .XLength + i,
                                                     chunk.Position.Z * Chunk <Block> .ZLength + k);
                    var value = (int)(highGenerator.Generate(innerPoint) + 3);
                    for (var y = value; y >= 0; y--)
                    {
                        var position = new PointB(i, (byte)y, k);
                        chunk[position] = new Block(BaseBlocks.Bedrock, position);
                    }
                }
            }

            return(chunk);
        }
Beispiel #19
0
        public T this[PointB position]
        {
            get
            {
                if (!CheckBounds(position))
                {
                    throw new ArgumentException("Значение не попадает в диапазон чанка: " + position);
                }
                return(blocks[position.X, position.Y, position.Z]);
            }

            set
            {
                if (!CheckBounds(position))
                {
                    throw new ArgumentException("Значение не попадает в диапазон чанка: " + position);
                }
                blocks[position.X, position.Y, position.Z] = value;
            }
        }
        /// <summary>
        /// override method get square for right triangle
        /// </summary>
        /// <returns>Value of the square right triangle</returns>
        public override double GetSquare()
        {
            double sizeSideAB = PointA.GetDistance(PointB);
            double sizeSideAC = PointA.GetDistance(PointC);
            double sizeSideBC = PointB.GetDistance(PointC);

            if (sizeSideAB < sizeSideBC && sizeSideAC < sizeSideBC)
            {
                return(sizeSideAB * sizeSideAC / 2);
            }
            else
            {
                if (sizeSideAB < sizeSideBC && sizeSideBC < sizeSideAC)
                {
                    return(sizeSideAB * sizeSideBC / 2);
                }
            }

            return(sizeSideAC * sizeSideBC / 2);
        }
Beispiel #21
0
        public Chunk <Block> Generate(PointI point)
        {
            var chunk = new Chunk <Block>(point);

            for (byte i = 0; i < Chunk <Block> .XLength; i++)
            {
                for (byte k = 0; k < Chunk <Block> .ZLength; k++)
                {
                    var innerPoint = PointF.CreateXZ(point.X * Chunk <Block> .XLength + i,
                                                     point.Z * Chunk <Block> .ZLength + k);
                    var value = (int)(highGenerator.Generate(innerPoint) * 22f + 100);

                    for (var j = value; j >= 0; j--)
                    {
                        var position = new PointB(i, (byte)j, k);
                        chunk[position] = new Block(j == value ? BaseBlocks.Grass : BaseBlocks.Dirt, position);
                    }
                }
            }

            return(chunk);
        }
Beispiel #22
0
        void EstablishLink()
        {
            _lastPointAPos     = transform.TransformPoint(PointAPos);
            _lastPointBPos     = transform.TransformPoint(PointBPos);
            _lastBidirectional = Bidirectional;

            PointA = NavMesh2D.ClosestNodeTo(transform.TransformPoint(PointAPos));
            PointB = NavMesh2D.ClosestNodeTo(transform.TransformPoint(PointBPos));

            if (PointA == null || PointB == null)
            {
                PointA = NavMesh2D.ActualClosestNodeTo(transform.TransformPoint(PointAPos));
                PointB = NavMesh2D.ActualClosestNodeTo(transform.TransformPoint(PointBPos));
                if (PointA == null || PointB == null)
                {
                    return;
                }
            }

            if (Bidirectional && PointA.IsConnectedTo(PointB) && PointB.IsConnectedTo(PointA))
            {
                PointA = null;
                PointB = null;
                return;
            }

            if (!Bidirectional && PointA.IsConnectedTo(PointB))
            {
                PointA = null;
                PointB = null;
                return;
            }

            PointA.ConnectTo(PointB, NavNodeConnection.NavConnectionType.Standard);
            if (Bidirectional)
            {
                PointB.ConnectTo(PointA, NavNodeConnection.NavConnectionType.Standard);
            }
        }
Beispiel #23
0
        public Chunk <Block> Generate(PointI point)
        {
            var chunk = new Chunk <Block>(point);

            for (byte i = 0; i < Chunk <Block> .XLength; i++)
            {
                for (byte k = 0; k < Chunk <Block> .ZLength; k++)
                {
                    var innerPoint = PointF.CreateXZ(point.X * Chunk <Block> .XLength + i,
                                                     point.Z * Chunk <Block> .ZLength + k);
                    var value = (int)(highGenerator.Generate(innerPoint) * 22f + 100);
                    var acme  = new PointB(i, (byte)value, k);
                    chunk[acme] = new Block(BaseBlocks.Grass, acme);
                    for (var y = value - 1; y >= 0; y--)
                    {
                        var position = new PointB(i, (byte)y, k);
                        chunk[position] = new Block(BaseBlocks.Dirt, position);
                    }
                }
            }

            return(chunk);
        }
        public Chunk <Block> Generate(PointI point)
        {
            const float coeff = 0.9f;
            var         chunk = new Chunk <Block>(point);

            for (var i = 0; i < Chunk <Block> .XLength; i++)
            {
                for (var j = 0; j < Chunk <Block> .YLength; j++)
                {
                    for (var k = 0; k < Chunk <Block> .ZLength; k++)
                    {
                        if (Get3DNoise(i * coeff + point.X * Chunk <Block> .XLength, j * coeff,
                                       k * coeff + point.Z * Chunk <Block> .ZLength) >= 0.2)
                        {
                            var position = new PointB((byte)i, (byte)j, (byte)k);
                            chunk[position] = new Block(BaseBlocks.Grass, position);
                        }
                    }
                }
            }

            return(chunk);
        }
Beispiel #25
0
        public Chunk <Block> Generate(PointI point)
        {
            var rnd       = new Random();
            var chunk     = new Chunk <Block>(point);
            var allBlocks = BaseBlocks.AllBlocks;

            for (byte i = 0; i < Chunk <Block> .XLength; i++)
            {
                for (byte j = 0; j < Chunk <Block> .YLength - 1; j++)
                {
                    for (byte k = 0; k < Chunk <Block> .ZLength; k++)
                    {
                        var position = new PointB(i, j, k);
                        var rndValue = rnd.Next(0, allBlocks.Count * 2);
                        if (rndValue < allBlocks.Count)
                        {
                            chunk[position] = new Block(allBlocks[rndValue], position);
                        }
                    }
                }
            }

            return(chunk);
        }
Beispiel #26
0
        private PointF DefineSpawn(PointI ready)
        {
            var chunk = World[ready];

            for (byte x = 0; x < Chunk <Block> .XLength; x++)
            {
                for (byte z = 0; z < Chunk <Block> .ZLength; z++)
                {
                    for (byte y = 253; y > 0; y--)
                    {
                        var p0 = new PointB(x, y, z);
                        var p1 = new PointB(x, (byte)(y + 1), z);
                        var p2 = new PointB(x, (byte)(y + 2), z);
                        if (chunk[p0] != null && chunk[p1] == null && chunk[p2] == null)
                        {
                            return((BlockWorld.GetAbsolutePosition(p1, ready).AsVector() + new Vector3(0.5f, 0, 0.5f))
                                   .AsPointF());
                        }
                    }
                }
            }

            throw new ArgumentException("Не удалось найти подходящего для спавна места", ready.ToString());
        }
Beispiel #27
0
        public byte[] GetBytes()
        {
            List <byte> bytes = new List <byte>(0x40)
            {
                CamType, Unknown, PanSpeed, Priority
            };

            unchecked
            {
                bytes.AddRange(BitConverter.GetBytes((ushort)Unknown_2));
                bytes.AddRange(BitConverter.GetBytes((ushort)Rotation.Y));
            }

            bytes.AddRange(Position.GetBytes());
            bytes.AddRange(Scale.GetBytes());

            bytes.AddRange(BitConverter.GetBytes(NotUsed));

            bytes.AddRange(PointA.GetBytes());
            bytes.AddRange(PointB.GetBytes());
            bytes.AddRange(BitConverter.GetBytes(Variable));

            return(bytes.ToArray());
        }
        public Chunk <Block> Generate(PointI point)
        {
            var chunk = new Chunk <Block>(point);

            for (byte i = 0; i < Chunk <Block> .XLength; i++)
            {
                for (byte j = 0; j < 5; j++)
                {
                    for (byte k = 0; k < Chunk <Block> .ZLength; k++)
                    {
                        var position = new PointB(i, j, k);
                        chunk[position] = j switch
                        {
                            0 => new Block(BaseBlocks.Bedrock, position),
                            4 => new Block(BaseBlocks.Grass, position),
                            _ => new Block(BaseBlocks.Dirt, position)
                        };
                    }
                }
            }

            return(chunk);
        }
    }
        public override double GetArea()
        {
            double p = this.GetPerimeter() / 2.0;

            return(Math.Sqrt(p * (p - PointA.GetDistance(PointB)) * (p - PointA.GetDistance(PointC)) * (p - PointB.GetDistance(PointC))));
        }
 public override double GetPerimeter()
 {
     return(PointA.GetDistance(PointB) + PointA.GetDistance(PointC) + PointB.GetDistance(PointC));
 }