Ejemplo n.º 1
0
        public void ServerReadInputFromClients(LocalNetworkGamer gamer)
        {
            while (gamer.IsDataAvailable)
            {
                NetworkGamer sender;

                // Read a single packet from the network.
                gamer.ReceiveData(packetReader, out sender);

                if (!sender.IsLocal)
                {
                    // Look up the tank associated with whoever sent this packet.
                    BasicOrb orb = sender.Tag as BasicOrb;

                    Vector2 OrbPos = packetReader.ReadVector2();
                    orb.Position = new Vector3(OrbPos.X, orb.Position.Y, OrbPos.Y);

                    orb.Rotation = new Vector3(0, packetReader.ReadSingle(), 0);

                    orb.PrimaryWeaponQue   = packetReader.ReadInt32();
                    orb.SecondaryWeaponQue = packetReader.ReadInt32();
                    orb.AbilityQue         = packetReader.ReadInt32();
                    orb.GunCurrent         = packetReader.ReadInt32();
                    orb.Abilty[0]          = packetReader.ReadInt32();
                    orb.Team  = packetReader.ReadInt32();
                    orb.Alpha = packetReader.ReadSingle();

                    orb.IsPhasing     = packetReader.ReadBoolean();
                    orb.PhaseTimer    = packetReader.ReadInt32();
                    orb.PhaseVelocity = packetReader.ReadVector3();
                    orb.MyController.MoveStickTrack = packetReader.ReadVector2();
                }
            }
        }
Ejemplo n.º 2
0
        public void GamerGetTag(NetworkGamer NewGamer)
        {
            foreach (BasicOrb orb in game.Orbs)
            {
                orb.IsTakenByOnlinePlayer = false;
            }

            foreach (NetworkGamer gamer in networkSession.AllGamers)
            {
                if (gamer != NewGamer && gamer.Tag != null)
                {
                    BasicOrb orb = gamer.Tag as BasicOrb;
                    orb.IsTakenByOnlinePlayer = true;
                }
            }

            foreach (BasicOrb orb in game.Orbs)
            {
                if (!orb.IsTakenByOnlinePlayer)
                {
                    NewGamer.Tag = orb;
                    return;
                }
            }

            return;
        }
Ejemplo n.º 3
0
        public void ReturnOrbsToAI()
        {
            foreach (BasicOrb orb in game.Orbs)
            {
                orb.IsTakenByOnlinePlayer = false;
                orb.IsTakenByLocalPlayer  = false;
            }

            foreach (NetworkGamer gamer in networkSession.LocalGamers)
            {
                if (gamer.Tag != null)
                {
                    BasicOrb orb = gamer.Tag as BasicOrb;
                    orb.IsTakenByLocalPlayer = true;
                }
            }

            foreach (NetworkGamer gamer in networkSession.AllGamers)
            {
                if (gamer.Tag != null)
                {
                    BasicOrb orb = gamer.Tag as BasicOrb;

                    orb.IsTakenByOnlinePlayer = true;

                    if (!orb.IsTakenByLocalPlayer)
                    {
                        if (!orb.IsOnline)
                        {
                            orb.ChangeToOnline(game, gamer);
                        }
                    }
                }
            }

            foreach (BasicOrb orb in game.Orbs)
            {
                if (!orb.IsTakenByOnlinePlayer && !orb.IsTakenByLocalPlayer && !orb.IsAI)
                {
                    orb.ChangeToAI(game);
                }
            }
        }
Ejemplo n.º 4
0
        public void UpdateLocalGamer(LocalNetworkGamer gamer)
        {
            PlayerIndex index = gamer.SignedInGamer.PlayerIndex;

            BasicOrb orb = gamer.Tag as BasicOrb;

            packetWriter.Write(new Vector2(orb.Position.X, orb.Position.Z));
            packetWriter.Write(orb.Rotation.Y);
            packetWriter.Write(orb.PrimaryWeaponQue);
            packetWriter.Write(orb.SecondaryWeaponQue);
            packetWriter.Write(orb.AbilityQue);
            packetWriter.Write(orb.GunCurrent);
            packetWriter.Write(orb.Abilty[0]);
            packetWriter.Write(orb.Team);
            packetWriter.Write(orb.Alpha);
            packetWriter.Write(orb.IsPhasing);
            packetWriter.Write(orb.PhaseTimer);
            packetWriter.Write(orb.PhaseVelocity);
            packetWriter.Write(orb.MyController.MoveStickTrack);

            gamer.SendData(packetWriter, SendDataOptions.InOrder, networkSession.Host);

            return;
        }
Ejemplo n.º 5
0
 public void Reset(Game1 game)
 {
     MoveStickTrack  = Vector2.Zero;
     FlagScore       = 0;
     Updateddeaths   = 0;
     UpdatedKills    = 0;
     Kills           = 0;
     Deaths          = 0;
     Money           = 0;
     Number          = 0;
     Taken           = false;
     UnLocked        = new bool[4, 2];
     UnLocked[0, 0]  = true;
     UnLocked[0, 1]  = true;
     MyOrb           = null;
     Name            = "";
     AllMoney        = 0;
     Suicides        = 0;
     DamageGiven     = 0;
     DamageTaken     = 0;
     color           = Color.Blue;
     GunUpgrades     = 0;
     AbilityUpgrades = 0;
 }
Ejemplo n.º 6
0
        public void Update(Game1 game, GameTime gametime)
        {
            ScoreTimer += 1 * (float)gametime.ElapsedGameTime.TotalMilliseconds / 16.66f;

            if (hasLight)
            {
                PersonalLight.Position = Position + new Vector3(0, 200, 0);
            }
            else
            {
                GetLight(game);
            }

            bounders.Center = Position;

            if (IsCarried && carrier != null)
            {
                if (carrier.Alive && carrier.relevent)
                {
                    float   Offset     = MathHelper.ToRadians(-90);
                    Vector3 GunDrawPos = carrier.Position + new Vector3(
                        0 * (float)Math.Cos(carrier.Rotation.Y + Offset) +
                        1 * (float)Math.Sin(-carrier.Rotation.Y + Offset), 0,
                        0 * (float)Math.Sin(carrier.Rotation.Y + Offset) +
                        1 * (float)Math.Cos(-carrier.Rotation.Y + Offset)) * 40
                                         + new Vector3(
                        0 * (float)Math.Cos(carrier.Rotation.Y - Offset) +
                        1 * (float)Math.Sin(-carrier.Rotation.Y - Offset), 0,
                        0 * (float)Math.Sin(carrier.Rotation.Y - Offset) +
                        1 * (float)Math.Cos(-carrier.Rotation.Y - Offset)) * -10
                    ;

                    Rotation   = carrier.Rotation;
                    Position   = GunDrawPos;
                    Position.Y = 0;

                    if (ScoreTimer > 150)
                    {
                        ScoreTimer = 0;
                        carrier.MyController.FlagScore++;
                    }
                }
                else
                {
                    IsCarried = false;
                }
            }
            else
            {
                foreach (BasicOrb orb in game.Orbs)
                {
                    if (orb.Alive)
                    {
                        if (orb.relevent)
                        {
                            if (!orb.IsPhasing)
                            {
                                if (Position.X + Size.X / 2 + orb.Size.X / 2 > orb.Position.X && Position.X - Size.X / 2 - orb.Size.X / 2 < orb.Position.X)
                                {
                                    if (Position.Z + Size.Y / 2 + orb.Size.Y / 2 > orb.Position.Z && Position.Z - Size.Y / 2 - orb.Size.Y / 2 < orb.Position.Z)
                                    {
                                        IsCarried = true;
                                        carrier   = orb;
                                        //ScoreTimer = 0;
                                        if (orb.MyController.AllMoney < 4 && game.random.Next(100) > 49)
                                        {
                                            orb.MyController.Money++;
                                            orb.MyController.AllMoney++;
                                        }

                                        orb.CPUBuy(game);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 7
0
        void Aim(Game1 game)
        {
            #region AimHelp

            //TurretTargetOrb = null;
            bool AutoAiming = false;

            float AimDist = 1400;
            {
                float   TempDire;
                bool    FoundTarget = false;
                Vector3 ToPosition;


                foreach (BasicOrb orb in game.Orbs)
                {
                    if (orb.relevent)
                    {
                        if (orb.Alive)
                        {
                            if (orb.Alpha > 0)
                            {
                                if (orb != creator)
                                {
                                    float TempDist  = Vector3.Distance(Position, orb.Position);
                                    bool  FoundWall = false;

                                    if (TempDist < AimDist)
                                    {
                                        TempDire = -(float)Math.Atan2(orb.Position.X - Position.X, orb.Position.Z - Position.Z) + MathHelper.ToRadians(270);

                                        //float AimDire = MathHelper.ToDegrees(Math.Min(Math.Abs(Rotation.Y - TempDire), Math.Abs((Rotation.Y - TempDire) + MathHelper.ToRadians(360))));

                                        // if (AimDire < AimHelpAmount * game.Holder.AimHelpAmount[GunCurrent])
                                        {
                                            // if (AimDire < Math.Min(AimHelpAmount, BaseAimHelpAmount))
                                            //     IsAutoShooting = true;
                                            //game.TestValue = MathHelper.ToDegrees( Math.Abs(TempDire -MathHelper.ToRadians(90)));
                                            //if (IsControlled)
                                            // game.TestValue = MathHelper.ToDegrees(Math.Min(Math.Abs(Rotation.Y - TempDire), Math.Abs((Rotation.Y - TempDire) +MathHelper.ToRadians(360))));

                                            Vector3 TempPos = Position;

                                            float reps = 200;
                                            while (Vector3.Distance(TempPos, orb.Position) > 100 && !FoundWall && reps > 0)
                                            {
                                                reps -= 1;



                                                TempPos   += (new Vector3(50 * (float)Math.Sin(-TempDire + MathHelper.ToRadians(270)), 0, 50 * (float)Math.Cos(-TempDire + MathHelper.ToRadians(270))));
                                                ToPosition = TempPos;


                                                foreach (Block block in game.Blocks)
                                                {
                                                    if (block.Relevent)
                                                    {
                                                        if (block.alive)
                                                        {
                                                            if (game.B_Holder.BlockSolid[block.Type])
                                                            {
                                                                if (!block.Destructable)
                                                                {
                                                                    //  if(game.B_Holder.BlockStopRail[block.Type])
                                                                    if (ToPosition.X + block.Size.X / 2 > block.Position.X && ToPosition.X - block.Size.X / 2 < block.Position.X)
                                                                    {
                                                                        if (ToPosition.Z + block.Size.Y / 2 > block.Position.Z && ToPosition.Z - block.Size.Y / 2 < block.Position.Z)
                                                                        {
                                                                            FoundWall = true;
                                                                            reps      = 0;
                                                                            //block.Size.X += 0.1f;//
                                                                            //TempDire = -(float)Math.Atan2(TempPos.X - Position.X, TempPos.Z - Position.Z) - MathHelper.ToRadians(90);//
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                            //if (!FoundWall)
                                            {
                                                BestTarget  = orb;
                                                AimDist     = TempDist;
                                                FoundTarget = true;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                AutoAiming = false;
                //FoundTarget = true;//
                if (FoundTarget)
                {
                    AutoAiming      = true;
                    TurretTargetOrb = BestTarget;

                    //TargetDire = TempDire;//
                }
            }

            #endregion
        }