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(); } } }
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; }
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); } } }
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; }
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; }
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); } } } } } } } }
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 }