Exemple #1
0
        public override void OnStart()
        {
            Rect baseLoc = PlayerBaseLocation.GetBaseLocation(PlayerPosition.LEFT);

            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(ServerSceneObjectFactory.CreateCustomAsteroid(
                                                                     mgr, 10, new Vector(baseLoc.X - 10 * 2 - 1, 100), new Vector(0, 0), AsteroidType.NORMAL)));
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(ServerSceneObjectFactory.CreateCustomAsteroid(
                                                                     mgr, 20, new Vector(baseLoc.X - 20 * 2, 200), new Vector(0, 0), AsteroidType.NORMAL)));
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(ServerSceneObjectFactory.CreateCustomAsteroid(
                                                                     mgr, 10, new Vector(baseLoc.X + baseLoc.Width + 1, 100), new Vector(0, 0), AsteroidType.NORMAL)));
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(ServerSceneObjectFactory.CreateCustomAsteroid(
                                                                     mgr, 20, new Vector(baseLoc.X + baseLoc.Width, 200), new Vector(0, 0), AsteroidType.NORMAL)));


            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(ServerSceneObjectFactory.CreateCustomAsteroid(
                                                                     mgr, 20, new Vector(300, 200), new Vector(0, 0), AsteroidType.GOLDEN)));
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(ServerSceneObjectFactory.CreateCustomAsteroid(
                                                                     mgr, 20, new Vector(500, 200), new Vector(0, 0), AsteroidType.GOLDEN)));


            StatPowerUp sp = CreateNewStatPowerup();

            sp.Position = new Vector(100, 100);
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(sp));
            sp          = CreateNewStatPowerup();
            sp.Position = new Vector(100, 200);
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(sp));
            sp          = CreateNewStatPowerup();
            sp.Position = new Vector(200, 100);
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(sp));
            sp          = CreateNewStatPowerup();
            sp.Position = new Vector(200, 200);
            GameLevelManager.SendNewObject(mgr, MakeObjectStatic(sp));
        }
Exemple #2
0
        private void MineDrop()
        {
            Rect   opponentLoc = PlayerBaseLocation.GetBaseLocation(me.GetPosition() == PlayerPosition.RIGHT ? PlayerPosition.LEFT : PlayerPosition.RIGHT);
            double xMin        = opponentLoc.X;
            double xMax        = opponentLoc.X + opponentLoc.Width;

            me.Mine.Shoot(new Point(sceneMgr.GetRandomGenerator().Next((int)xMin, (int)xMax), 1));
        }
 public AsteroidBurningControl(Asteroid parent)
 {
     asteroid          = parent;
     maxHeatDistance   = PlayerBaseLocation.GetBaseLocation(PlayerPosition.LEFT).Top - 150;
     minHeatDistance   = SharedDef.ORBIT_AREA.Bottom;
     lastDistProcessed = -0.1f;
     step     = 0;
     stepSize = 0.3f;
 }
        public virtual void HitAsteroid(IDestroyable asteroid)
        {
            if (hit)
            {
                return;
            }
            else
            {
                hit = true;
            }

            if (bullet.Owner.IsCurrentPlayerOrBot())
            {
                bullet.Owner.AddScoreAndShow(ScoreDefines.CANNON_HIT);
                if (bullet.Owner.IsCurrentPlayer())
                {
                    bullet.SceneMgr.FloatingTextMgr.AddFloatingText(ScoreDefines.CANNON_HIT, bullet.Center, FloatingTextManager.TIME_LENGTH_1,
                                                                    FloatingTextType.SCORE);
                }

                if (asteroid is UnstableAsteroid)
                {
                    Rect   opponentLoc = PlayerBaseLocation.GetBaseLocation(bullet.Owner.GetPosition() == PlayerPosition.RIGHT ? PlayerPosition.LEFT : PlayerPosition.RIGHT);
                    double xMin        = opponentLoc.X;
                    double xMax        = opponentLoc.X + opponentLoc.Width;

                    if (asteroid.Position.Y > SharedDef.VIEW_PORT_SIZE.Height * 0.4 &&
                        asteroid.Position.X >= xMin && asteroid.Position.X <= xMax)
                    {
                        if (bullet.Owner.IsCurrentPlayer())
                        {
                            bullet.SceneMgr.FloatingTextMgr.AddFloatingText(Strings.ft_score_cannon_unstable_above_enemy, bullet.Center,
                                                                            FloatingTextManager.TIME_LENGTH_4, FloatingTextType.BONUS_SCORE, FloatingTextManager.SIZE_BIG, false, true);
                        }
                        bullet.Owner.AddScoreAndShow(ScoreDefines.CANNON_DESTROYED_UNSTABLE_ASTEROID_ABOVE_ENEMY);
                    }
                }
            }

            asteroid.TakeDamage(bullet.Damage, bullet);

            NetOutgoingMessage msg = bullet.SceneMgr.CreateNetMessage();

            msg.Write((int)PacketType.BULLET_HIT);
            msg.Write(bullet.Id);
            msg.Write(asteroid.Id);
            msg.Write(bullet.Damage);
            bullet.SceneMgr.SendMessage(msg);

            EmmitorGroup g = ParticleEmmitorFactory.CreateBulletImplosionEmmitor(bullet.SceneMgr, bullet.Center, bullet.Color);

            g.Attach(bullet.SceneMgr, false);
        }
Exemple #5
0
        public override void OnStart()
        {
            Rect baseLoc = PlayerBaseLocation.GetBaseLocation(PlayerPosition.LEFT);

            GameLevelManager.SendNewObject(mgr, ServerSceneObjectFactory.CreateCustomAsteroid(
                                               mgr, 10, new Vector(baseLoc.X - 10 * 2 - 1, 100), new Vector(0, 1), AsteroidType.NORMAL));
            GameLevelManager.SendNewObject(mgr, ServerSceneObjectFactory.CreateCustomAsteroid(
                                               mgr, 20, new Vector(baseLoc.X - 20 * 2, 200), new Vector(0, 1), AsteroidType.NORMAL));
            GameLevelManager.SendNewObject(mgr, ServerSceneObjectFactory.CreateCustomAsteroid(
                                               mgr, 10, new Vector(baseLoc.X + baseLoc.Width + 1, 100), new Vector(0, 1), AsteroidType.NORMAL));
            GameLevelManager.SendNewObject(mgr, ServerSceneObjectFactory.CreateCustomAsteroid(
                                               mgr, 20, new Vector(baseLoc.X + baseLoc.Width, 200), new Vector(0, 1), AsteroidType.NORMAL));

            baseLoc = PlayerBaseLocation.GetBaseLocation(PlayerPosition.RIGHT);
            GameLevelManager.SendNewObject(mgr, CreateAndSendNewStatPowerup(new Vector(baseLoc.X - 10 * 2 - 1, 100), new Vector(0, 1)));
            GameLevelManager.SendNewObject(mgr, CreateAndSendNewStatPowerup(new Vector(baseLoc.X - 20 * 2, 200), new Vector(0, 1)));
            GameLevelManager.SendNewObject(mgr, CreateAndSendNewStatPowerup(new Vector(baseLoc.X + baseLoc.Width + 1, 100), new Vector(0, 1)));
            GameLevelManager.SendNewObject(mgr, CreateAndSendNewStatPowerup(new Vector(baseLoc.X + baseLoc.Width, 200), new Vector(0, 1)));
        }
        /// <summary>
        /// MiningModule nemuze letat az k bazim (narazil by a vybuchnul ;)
        /// </summary>
        /// <param name="tpf"></param>
        protected override void UpdateControl(float tpf)
        {
            TryInitOffsets();

            Vector botVector   = new Vector(0, SharedDef.SPECTATOR_MODULE_SPEED * tpf);
            Vector rightVector = new Vector(SharedDef.SPECTATOR_MODULE_SPEED * tpf, 0);

            if (IsMovingTop && (me.Position.Y - botVector.Y - leftTopOffset) > 0)
            {
                me.Position -= botVector;
            }
            if (IsMovingDown && (me.Position.Y + botVector.Y + rightBottomOffset) < PlayerBaseLocation.GetBaseLocation(PlayerPosition.LEFT).Top - 30)
            {
                me.Position += botVector;
            }
            if (IsMovingLeft && (me.Position.X - rightVector.X - leftTopOffset) > 0)
            {
                me.Position -= rightVector;
            }
            if (IsMovingRight && (me.Position.X + rightVector.X + rightBottomOffset) < SharedDef.VIEW_PORT_SIZE.Width)
            {
                me.Position += rightVector;
            }
        }
 public OverlayControl(Asteroid parent)
 {
     asteroid        = parent;
     maxHeatDistance = PlayerBaseLocation.GetBaseLocation(PlayerPosition.LEFT).Top - 150;
     minHeatDistance = SharedDef.ORBIT_AREA.Bottom + 50;
 }
Exemple #8
0
        private void GenerateMiningModulePositionAndColor(Player p)
        {
            if (p.IsActivePlayer())
            {
                return;
            }

            Player friend = players.Find(other => other.GetId() == p.Data.FriendlyPlayerId);

            p.Data.SpecialColor = friend != null ? friend.Data.PlayerColor : p.Data.PlayerColor;

            p.Data.MiningModuleStartPos = new Vector(
                serverMgr.GetRandomGenerator().Next(0, (int)SharedDef.VIEW_PORT_SIZE.Width - 30),
                serverMgr.GetRandomGenerator().Next((int)SharedDef.LOWER_ORBIT_AREA.Top + 60, (int)PlayerBaseLocation.GetBaseLocation(PlayerPosition.LEFT).Top - 100));
        }