public void UpdateGame() { if (m_Game != null) { Packets.Packet P = m_Game.ReturnPacket(); switch (P.m_PacketType) { case Packets.PacketType.GameUpdate: { Packets.GameUpdate GameUpdate = (Packets.GameUpdate)P; if (!GameUpdate.Equals(m_CachedUpdate)) { m_CachedUpdate = GameUpdate; UdpSendMessage(P); } break; } case Packets.PacketType.GameFinished: { UdpSendMessage(P); break; } default: break; } } else { } }
public void IncommingPacket(Packets.Packet packet) { switch (packet.m_PacketType) { case Packets.PacketType.GameUpdate: { m_NewestUpdate = (Packets.GameUpdate)packet; break; } } }
public void Run() { Login(); CreateForm(); ProcessServerResponse(); Packets.PublicKeys PK = new Packets.PublicKeys(m_PublicKey); m_CachedUpdate = new Packets.GameUpdate(0, 0, 0, null); Send(PK); m_ProcessServerResponse = new Thread(() => SetTimer(this)); m_ProcessUDPServerResponse = new Thread(() => UdpProcessServerResponse()); m_ManageGameUpdate = new Thread(() => SetGameUpdate(this)); m_ProcessServerResponse.Start(); m_ProcessUDPServerResponse.Start(); m_ClientForm.ShowDialog(); Close(); }
protected override void Update(GameTime gameTime) { //Check for finish if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape) || !IsActive) { _graphics.Dispose(); IsGameFinished = true; TimeTaken = 0; Close(); } //Handle Enemy Graphics if (m_NewestUpdate != null) { Vector2 OppositionPos = m_CompetitorsAndObjects[0].ReturnLocale(); OppositionPos.X = m_NewestUpdate.m_PaddlePosX; m_CompetitorsAndObjects[0].Update(m_NewestUpdate.m_PaddlePosX); Vector2 CurrentBallPos = new Vector2(m_NewestUpdate.m_BallX, m_NewestUpdate.m_BallY); Vector2 SuspectedBallPosition = new Vector2(OppositionPos.X + 150, OppositionPos.Y - 46); if (CurrentBallPos != SuspectedBallPosition && CurrentBallPos.Y > SuspectedBallPosition.Y + 5 || CurrentBallPos.Y < SuspectedBallPosition.Y - 5) { if (!m_CompetitorsAndObjects[1].Active) { m_CompetitorsAndObjects[1].Active = true; } else { m_CompetitorsAndObjects[1].MoveY(-3); } } else { SuspectedBallPosition.X -= 150; SuspectedBallPosition.Y += 46; m_CompetitorsAndObjects[1].Active = false; m_CompetitorsAndObjects[1].SetBallPos(SuspectedBallPosition); } for (int i = 0; i < m_CompetitorBricks.Count; i++) { if (m_NewestUpdate.m_BrickState[i]) { m_CompetitorBricks[i].Active = true; } else { m_CompetitorBricks[i].Active = false; } } } //Handle local m_PlayerAndObjects[1].UpdateRectangle(m_PlayerAndObjects[1].ReturnLocale()); if (Keyboard.GetState().IsKeyDown(Keys.Space)) { m_PlayerAndObjects[1].Active = true; } else if (!m_PlayerAndObjects[1].Active) { m_PlayerAndObjects[1].SetBallPos(m_PlayerAndObjects[0].ReturnLocale()); } else { m_PlayerAndObjects[1].MoveY(-3); if (m_PlayerAndObjects[1].ReturnLocale().Y < -10) { m_PlayerAndObjects[1].Active = false; } } if (Keyboard.GetState().IsKeyDown(Keys.A)) { m_PlayerAndObjects[0].MoveX(-1); } if (Keyboard.GetState().IsKeyDown(Keys.D)) { m_PlayerAndObjects[0].MoveX(1); } //Collision if (m_PlayerAndObjects[1].Active) { for (int i = 0; i < m_Bricks.Count; i++) { if (m_Bricks[i].Active) { if (m_Bricks[i].CheckForCollision(m_Bricks[i], m_PlayerAndObjects[1])) { m_Bricks[i].Active = false; m_PlayerAndObjects[1].Active = false; } } } } List <bool> CheckIfCompleted = new List <bool>(); int truecount = 0; for (int i = 0; i < m_Bricks.Count; i++) { if (!m_Bricks[i].Active) { CheckIfCompleted.Add(false); truecount++; } else { CheckIfCompleted.Add(true); } } if (truecount == m_Bricks.Count - 2) { TimeTaken = (int)gameTime.TotalGameTime.TotalSeconds; m_Finished = new Packets.GameFinished(TimeTaken); IsGameFinished = true; if (Submitted) { Close(); } } Packets.GameUpdate GU = new Packets.GameUpdate((int)m_PlayerAndObjects[0].ReturnLocale().X, (int)m_PlayerAndObjects[1].ReturnLocale().X, (int)m_PlayerAndObjects[1].ReturnLocale().Y, CheckIfCompleted); m_CurrentObjects = GU; base.Update(gameTime); }