Exemplo n.º 1
0
        private async Task JailTick()
        {
            float[] currentPosition = { Game.PlayerPed.Position.X, Game.PlayerPed.Position.Y };
            if (!PolygonCollision.Contains(prisonPolygon, currentPosition))
            {
                if (PolygonCollision.Contains(prisonPolygon, previousPosition))
                {
                    Game.PlayerPed.PositionNoOffset = previousPositionFull;
                    //await BaseScript.Delay(50);
                    return;
                }
                else
                {
                    Game.PlayerPed.IsPositionFrozen = true;
                    API.RequestCollisionAtCoord(enterPrisonLocation.X, enterPrisonLocation.Y, enterPrisonLocation.Z);
                    Game.PlayerPed.PositionNoOffset = enterPrisonLocation;
                    Game.PlayerPed.Heading          = enterPrisonHeading;
                    while (!API.HasCollisionLoadedAroundEntity(Game.PlayerPed.Handle))
                    {
                        await BaseScript.Delay(0);
                    }

                    Game.PlayerPed.IsPositionFrozen = false;
                }
            }
            Game.PlayerPed.Weapons.RemoveAll();
            previousPosition     = currentPosition;
            previousPositionFull = Game.PlayerPed.Position;
            //await BaseScript.Delay(50);
        }
Exemplo n.º 2
0
        public void Draw(RenderTarget target, RenderStates states)
        {
            Shape shape;

            if (collision.GetType() == typeof(BoxCollision))
            {
                shape = new RectangleShape(new Vector2f(((BoxCollision)collision).Size.X, ((BoxCollision)collision).Size.Y));
            }
            else if (collision.GetType() == typeof(CircleCollision))
            {
                CircleCollision circle = (CircleCollision)collision;

                shape = new CircleShape(circle.Radius);
            }
            else if (collision.GetType() == typeof(PolygonCollision))
            {
                PolygonCollision poly = (PolygonCollision)collision;

                var cs = new ConvexShape((uint)poly.Vertex.Count());
                for (int i = 0; i < poly.Points.Count(); i++)
                {
                    cs.SetPoint((uint)i, new Vector2f(poly.Points[i].X, poly.Points[i].Y));
                }
                shape = cs;
            }
            else
            {
                return;
            }
            shape.Position = new Vector2f(collision.Position.X, collision.Position.Y);
            if (f)
            {
                shape.FillColor = ac;
            }
            else
            {
                shape.FillColor = cc;
            }

            target.Draw(shape);
        }
Exemplo n.º 3
0
        static private async void PeriodicCheck()
        {
            while (true)
            {
                float[] CurrentPosition = { Game.PlayerPed.Position.X, Game.PlayerPed.Position.Y };
                if (IsInPrison && !PolygonCollision.Contains(PrisonPolygon, CurrentPosition))
                {
                    if (previousMinute != DateTime.UtcNow.Minute)
                    {
                        previousMinute       = DateTime.UtcNow.Minute;
                        PrisonTimeRemaining -= 1;
                        if (PrisonTimeRemaining > 0)
                        {
                            BaseScript.TriggerEvent("Chat.Message", "", "#555555", $"You have {PrisonTimeRemaining} months remaining on your sentence.");
                        }
                    }
                    if (PolygonCollision.Contains(PrisonPolygon, PreviousPosition))
                    {
                        Game.PlayerPed.PositionNoOffset = PreviousPositionFull;
                        await BaseScript.Delay(50);

                        continue;
                    }
                    else
                    {
                        Game.PlayerPed.PositionNoOffset = EnterPrisonLocation;
                        Game.PlayerPed.Heading          = EnterPrisonHeading;
                    }
                }
                if (IsInPrison)
                {
                    Game.PlayerPed.Weapons.RemoveAll();
                }
                PreviousPosition     = CurrentPosition;
                PreviousPositionFull = Game.PlayerPed.Position;
                await BaseScript.Delay(50);
            }
        }
Exemplo n.º 4
0
        static void Main()
        {
            RenderWindow window = new RenderWindow(new VideoMode(1000, 1000), "shapes collisions");
            View         view   = new View(window.GetView());

            window.Closed += Window_Closed;
            Rand           = new Random();

            objects = new List <GameObject>();
            objects.Add(new GameObject(new CircleCollision(new VectorF(200, 300), 50.0f)));
            objects.Add(new GameObject(new BoxCollision(new VectorF(100, 100), new VectorF(100, 100))));
            objects.Add(new GameObject(new BoxCollision(new VectorF(300, 100), new VectorF(200, 700))));
            objects.Add(new GameObject(new BoxCollision(new VectorF(30, 600), new VectorF(30, 30))));

            PolygonCollision poly   = new PolygonCollision(new VectorF(750, 400));
            VectorF          origin = new VectorF(-150, -150);

            poly.Vertex.Add(new VectorF(100, 100) + origin);
            poly.Vertex.Add(new VectorF(150, -50) + origin);
            poly.Vertex.Add(new VectorF(200, 100) + origin);
            poly.Vertex.Add(new VectorF(350, 150) + origin);
            poly.Vertex.Add(new VectorF(200, 200) + origin);
            poly.Vertex.Add(new VectorF(150, 350) + origin);
            poly.Vertex.Add(new VectorF(100, 200) + origin);
            poly.Vertex.Add(new VectorF(-50, 150) + origin);
            poly.SetUp();
            objects.Add(new GameObject(poly));


            PolygonCollision poly2   = new PolygonCollision(new VectorF(750, 700));
            VectorF          origin2 = new VectorF(-150, -150);

            poly2.Vertex.Add(new VectorF(100, 100) + origin2);
            poly2.Vertex.Add(new VectorF(150, -50) + origin2);
            poly2.Vertex.Add(new VectorF(200, 100) + origin2);
            poly2.Vertex.Add(new VectorF(350, 150) + origin2);
            poly2.Vertex.Add(new VectorF(200, 200) + origin2);
            poly2.Vertex.Add(new VectorF(150, 350) + origin2);
            poly2.Vertex.Add(new VectorF(100, 200) + origin2);
            poly2.Vertex.Add(new VectorF(-50, 150) + origin2);
            poly2.SetUp();
            objects.Add(new GameObject(poly2));


            PolygonCollision poly3   = new PolygonCollision(new VectorF(50, 750));
            VectorF          origin3 = new VectorF(0, 0);

            poly3.Vertex.Add(new VectorF(-50, -50) + origin3);
            poly3.Vertex.Add(new VectorF(-50, 50) + origin3);
            poly3.Vertex.Add(new VectorF(50, 50) + origin3);
            poly3.Vertex.Add(new VectorF(50, -50) + origin3);
            poly3.SetUp();
            objects.Add(new GameObject(poly3));

            float speed = 10.0f;

            SetPlayer();

            while (window.IsOpen)
            {
                Thread.Sleep(16);
                window.DispatchEvents();

                if (Keyboard.IsKeyPressed(Keyboard.Key.W))
                {
                    player.collision.Position += new VectorF(0, -speed);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.S))
                {
                    player.collision.Position += new VectorF(0, speed);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.A))
                {
                    player.collision.Position += new VectorF(-speed, 0);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.D))
                {
                    player.collision.Position += new VectorF(speed, 0);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.C))
                {
                    SetPlayer();
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.R) && player.collision.GetType() == typeof(PolygonCollision))
                {
                    ((PolygonCollision)player.collision).Rotation -= 0.1f;
                    ((PolygonCollision)player.collision).SetUp();
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.T) && player.collision.GetType() == typeof(PolygonCollision))
                {
                    ((PolygonCollision)player.collision).Rotation += 0.1f;
                    ((PolygonCollision)player.collision).SetUp();
                }

                if (Keyboard.IsKeyPressed(Keyboard.Key.Up))
                {
                    view.Center += new Vector2f(0, -10);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.Down))
                {
                    view.Center += new Vector2f(0, 10);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.Left))
                {
                    view.Center += new Vector2f(-10, 0);
                }
                if (Keyboard.IsKeyPressed(Keyboard.Key.Right))
                {
                    view.Center += new Vector2f(10, 0);
                }
                window.SetView(view);

                window.Clear();
                for (int i = 0; i < objects.Count; i++)
                {
                    objects[i].Update(objects);
                    window.Draw(objects[i]);
                }
                player.Update(objects);
                window.Draw(player);
                window.Display();
            }
        }