Пример #1
0
        private Scene LoadFlightTest()
        {
            var scene = new Scene(new Vector2f(Int16.MaxValue * 2, 768));

            scene.CreateCamera();

            var player = ObjectsManager.Build((uint)ObjectID.Player, new Vector2f(256, 300));

            scene.Add(player);

            for (var x = 0; x < scene.Size.X; x += 512)
            {
                var upperWall  = ObjectsManager.Build((uint)ObjectID.Wall, new Vector2f(x, 0));
                var bottomWall = ObjectsManager.Build((uint)ObjectID.Wall, new Vector2f(x, scene.Size.Y - 128));
                scene.Add(upperWall);
                scene.Add(bottomWall);
            }

            for (var x = 500; x < 2000; x += 256)
            {
                scene.Add(ObjectsManager.Build((uint)ObjectID.GreenShip, new Vector2f(x, 128 + 64)));
                scene.Add(ObjectsManager.Build((uint)ObjectID.GreenShip, new Vector2f(x, scene.Size.Y - 64 - 256)));
            }

            scene.Commit();
            return(PrepareScene(scene));
        }
Пример #2
0
        private void SpawnLaser(IGameObject turret, Scene world, Vector2f laserSpeed)
        {
            var gunPosition  = turret.Body.Incircle.Radius * turret.Body.Rotation.Normalize();
            var shotPosition = turret.Body.Incircle.Center + gunPosition;
            var laser        = ObjectsManager.Build((uint)ObjectID.Laser, shotPosition);
            var laserScript  = new LaserScript(laserSpeed, ObjectID.Turret);

            laser.BindScript(laserScript);
            laser.Lighting.Add(new Light(new Vector2f(0.1f, 0.1f), Color.Magenta, LightMode.Flashlight));
            world.Add(laser);
        }
Пример #3
0
        private void SpawnLaser(IGameObject ship, Scene world)
        {
            var gunsPosition = ship.Body.Rotation;
            var sideOffset   = gunsPosition.Orthogonal() * (leftGunIsShooting ? 1 : -1) * selfSpriteSize / 4;
            var laserOffset  = new Vector2f(laserSpriteSize, laserSpriteSize) / 2;

            gunsPosition *= selfSpriteSize / 4;

            var shotPosition = ship.Body.Incircle.Center + gunsPosition + sideOffset - laserOffset;
            var laser        = ObjectsManager.Build((uint)ObjectID.Laser, shotPosition);
            var laserScript  = new LaserScript(ship.Body.Rotation * laserSpeed, ObjectID.Player);

            laser.BindScript(laserScript);
            laser.Lighting.Add(new Light(new Vector2f(0.1f, 0.1f), Color.Magenta, LightMode.Flashlight));
            leftGunIsShooting = !leftGunIsShooting;
            world.Add(laser);
        }
Пример #4
0
        private void FillSceneControlPanel(Panel sceneControlPanel)
        {
            objectsList = new ListBox()
            {
                Size = new Size(sidePanelWidth - 40, 150)
            };
            objectsList.Location = new Point(20, 20);
            foreach (var item in ObjectsManager.Registered)
            {
                objectsList.Items.Add(Tuple.Create(item.Value, item.Key));
            }

            objectData = new Label()
            {
                Size = new Size(sidePanelWidth - 40, 200)
            };
            objectData.Location = new Point(objectsList.Location.X, objectsList.Location.Y + 200);

            var addButton = new Button()
            {
                Text = "Add", Location = new Point(20, 170)
            };

            addButton.Click += (sender, args) =>
            {
                var nameId = (Tuple <string, uint>)objectsList.SelectedItem;
                if (nameId != null)
                {
                    try
                    {
                        var id  = nameId.Item2;
                        var obj = ObjectsManager.Build(id, sceneEditor.Scene.Camera.Body.Position);
                        sceneEditor.Scene.Add(obj);
                        sceneEditor.Scene.Commit();
                    }
                    catch
                    {
                        MessageBox.Show("Cannot add object.", "Error",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            };

            var createButton = new Button()
            {
                Location = new Point(100, 170), Text = "Create"
            };

            createButton.Click += (sender, args) =>
            {
                objectEditor.CreateNewObject();
                SwitchMode(EditorMode.EditObject);
            };

            var removeButton = new Button()
            {
                Location = new Point(120, 450), Text = "Remove"
            };

            removeButton.Click += (sender, args) =>
            {
                if (sceneEditor.GrippedObject != null)
                {
                    sceneEditor.Scene.Remove(sceneEditor.GrippedObject);
                    sceneEditor.Scene.Commit();
                    sceneEditor.CleanHands();
                }
            };

            sceneControlPanel.Controls.Add(objectsList);
            sceneControlPanel.Controls.Add(objectData);
            sceneControlPanel.Controls.Add(addButton);
            sceneControlPanel.Controls.Add(removeButton);
            sceneControlPanel.Controls.Add(createButton);
        }