Ejemplo n.º 1
0
        void frame_MouseClick(Element sender, MouseEventArgs e)
        {
            var   player     = (Player)ActiveMap.Player;
            var   mdir       = Vector2.Normalize(e.CurrentPosition - player.Position);
            var   launchPort = player.Position + mdir * (player.Radius + 5); //launch stuff from slightly in front of player
            float launchVel  = 300f + player.Velocity.Length();

            var carrier = new DeviceTransporter(launchPort, 15);

            carrier.Velocity = launchVel * mdir;
            SpawnObject <Actor>(carrier);

            if (e.isClicked(MouseButtons.Left))
            {
                var c = new Charge(50, 15);
                ActiveMap.AddObject(c);
                carrier.AddDevice(c);
            }
            if (e.isClicked(MouseButtons.Right))
            {
                var s = new Sensor(60f);
                ActiveMap.AddObject(s);
                carrier.AddDevice(s);
            }
        }
Ejemplo n.º 2
0
 public virtual void SpawnObject <T>(T obj)
 {
     ActiveMap.AddObject(obj as WorldObject);
     if (obj is IRigidBody)
     {
         PhysicsManager.ActiveBodies.Add(obj as IRigidBody);
     }
 }
Ejemplo n.º 3
0
        void frame_KeyPressDown(Element sender, KeyEventArgs e)
        {
            switch (e.InterestingKeys[0])
            {
            case Keys.G:
                gactive = !gactive;
                if (gactive)
                {
                    PhysicsManager.AddUniversalForce(DefaultForces.Gravity);
                }
                else
                {
                    PhysicsManager.RemoveUniversalForce(DefaultForces.Gravity);
                }
                break;

            case Keys.X:
                var br = new BombRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), winSize.Height), 25);
                br.Mass     = 100;
                br.Velocity = -1000 * Vector2.UnitY;
                br.FuseTime = .1f;
                ActiveMap.AddObject(br);
                PhysicsManager.ActiveBodies.Add(br);
                break;

            case Keys.C:
                var gr = new InertRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), winSize.Height), 25);
                gr.Mass     = 100;
                gr.Velocity = -1000 * Vector2.UnitY;
                ActiveMap.AddObject(gr);
                PhysicsManager.ActiveBodies.Add(gr);
                break;

            case Keys.OemPeriod:
                draw = !draw;
                break;

            case Keys.Space:

                break;
            }
        }
Ejemplo n.º 4
0
        void frame_MouseOver(Element sender, MouseEventArgs e)
        {
            ((IRigidBody)ActiveMap.Player).Rotation = MathUtils.GetAngle(e.CurrentPosition - ((IRigidBody)ActiveMap.Player).Position);

            if (e.isDown(MouseButtons.Right))
            {
                var rad = PhysicsManager.QTbodies.Query(Region.FromCircle(e.CurrentPosition, 10));
                foreach (var gr in rad)
                {
                    if (gr is InertRoid)
                    {
                        KillObject((Actor)gr);

                        var gra = (InertRoid)gr;
                        var br  = new BombRoid(gra.Position, gra.Radius);
                        ActiveMap.AddObject(br);
                        PhysicsManager.ActiveBodies.Add(br);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public override void Update(GameTime time)
        {
            if (!UIManager.Update(time))
            {
                base.Exit();
            }
            ActiveMap.UpdateDynamicObjects(time);
            PhysicsManager.Update(time.ElapsedGameTime.Milliseconds / 1000f);

            if (!time.IsRunningSlowly)
            {
                dint -= time.ElapsedGameTime.Milliseconds / 1000f;
                if (dint <= 0.0f)
                {
                    dynamic obj;
                    if (MathUtils.Rand.Next(0, 2) == 0)
                    {
                        obj = new BombRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), (float)MathUtils.Rand.Next(60, (int)winSize.Height - 60)), MathUtils.Rand.Next(2, 10));
                    }
                    else
                    {
                        obj = new InertRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), (float)MathUtils.Rand.Next(60, (int)winSize.Height - 60)), MathUtils.Rand.Next(2, 10));
                    }
                    obj.Velocity = 1000 * (float)MathUtils.Rand.NextDouble() * MathUtils.RandDirection();
                    PhysicsManager.ActiveBodies.Add(obj);
                    ActiveMap.AddObject(obj);

                    Console.WriteLine(PhysicsManager.ActiveBodies.Count.ToString() + " bodies");
                    dint = delay;
                }
            }
            else
            {
                Console.Write(PhysicsManager.ActiveBodies.Count.ToString() + " bodies     ");
                Console.WriteLine("SLOW - HIT PERIOD TO DISABLE GRFX");
                dint = 0.0f;
            }
        }