public void Update(Cloud[] clouds) { m_decrease = 0.0f; /* Handle collision with clouds */ for (int i = 0; i < clouds.Length; i++) { if (Texture_Data.m_rect.Intersects(clouds[i].m_coldata.m_rect)) { if (HelperUtils.IntersectPixels(Texture_Data.m_transformation, Texture_Data.m_rect.Width, Texture_Data.m_rect.Height, Texture_Data.m_color_data, clouds[i].m_coldata.m_transformation, clouds[i].m_coldata.m_rect.Width, clouds[i].m_coldata.m_rect.Height, clouds[i].m_coldata.m_color_data)) { m_decrease -= AbsVelocity * clouds[i].m_slow_down; } } } CurrVelocity = AbsVelocity + m_decrease; }
public void Update(Cloud[] clouds) { if (Ball_State == BallState.Active) { for (int i = 0; i < clouds.Length; i++) { if (PongBall_Rect.Intersects(clouds[i].m_collision_rect)) // clouds[i].m_used != true && { Console.WriteLine("Collision with cloud"); Y_Vel = -Y_Vel; m_hit = Direction.None; } } } }
public void UpdateBalls(CollisionData p1paddle, CollisionData p2paddle, Cloud[] clouds) { m_pongballs[0].Update(p1paddle, p2paddle); m_pongballs[0].Update(clouds); m_pongballs[1].Update(p1paddle, p2paddle); m_pongballs[1].Update(clouds); }
public void Reset() { Sprite temp; int tnum = 0; if (m_player == 0) { for (int i = 0; i < m_num/2; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(-412 - HelperUtils.SafeBoundary.X, HelperUtils.SafeBoundary.X + -m_textures[tnum].Width); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, 2*HelperUtils.SafeBoundary.X + 1024, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } tnum = 0; for (int i = m_num/2; i < m_num; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(-412 - HelperUtils.SafeBoundary.X, HelperUtils.SafeBoundary.X + -m_textures[tnum].Width); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, 2*HelperUtils.SafeBoundary.X + 1024, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } } else if (m_player == 1) { for (int i = 0; i < m_num / 2; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.X + 1024, HelperUtils.SafeBoundary.X + 1024 + 412); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, -m_textures[tnum].Width - 2*HelperUtils.SafeBoundary.X, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } tnum = 0; for (int i = m_num / 2; i < m_num; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.X + 1024, HelperUtils.SafeBoundary.X + 1024 + 412); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, -m_textures[tnum].Width - 2*HelperUtils.SafeBoundary.X, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } } m_state = DrawableState.Active; }
public void Reset() { Sprite temp; int tnum = 0; if (m_player == 0) { for (int i = 0; i < m_num / 2; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(-412 - HelperUtils.SafeBoundary.X, HelperUtils.SafeBoundary.X + -m_textures[tnum].Width); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, 2 * HelperUtils.SafeBoundary.X + 1024, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } tnum = 0; for (int i = m_num / 2; i < m_num; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(-412 - HelperUtils.SafeBoundary.X, HelperUtils.SafeBoundary.X + -m_textures[tnum].Width); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, 2 * HelperUtils.SafeBoundary.X + 1024, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } } else if (m_player == 1) { for (int i = 0; i < m_num / 2; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.X + 1024, HelperUtils.SafeBoundary.X + 1024 + 412); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, -m_textures[tnum].Width - 2 * HelperUtils.SafeBoundary.X, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } tnum = 0; for (int i = m_num / 2; i < m_num; i++, tnum++) { temp = new Sprite(); temp.Texture = m_textures[tnum]; temp.X_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.X + 1024, HelperUtils.SafeBoundary.X + 1024 + 412); temp.Y_Pos = (float)HelperUtils.GetRandomNumber(HelperUtils.SafeBoundary.Y, HelperUtils.SafeBoundary.Y + 200); m_clouds[i] = new Cloud(); m_clouds[i].m_used = false; m_clouds[i].m_cloud = new LinearXYMover(temp, -m_textures[tnum].Width - 2 * HelperUtils.SafeBoundary.X, (int)temp.Y_Pos, 1.0f); m_clouds[i].m_collision_rect = new Rectangle((int)temp.X_Pos + m_textures[tnum].Width / 4, (int)temp.Y_Pos + m_textures[tnum].Height / 2, m_textures[tnum].Width / 2, 4); m_clouds[i].m_coldata = new CollisionData((int)temp.X_Pos, (int)temp.Y_Pos, m_textures[tnum], new Rectangle(0, 0, m_textures[tnum].Width, m_textures[tnum].Height), m_clouds[i].m_cloud.Origin, m_clouds[i].m_cloud.Scale, m_clouds[i].m_cloud.Rotation, m_clouds[i].m_cloud.Effects); } } m_state = DrawableState.Active; }
public void UpdatePaddle(KeyboardState keyboardState, GamePadState gamePadState, Cloud[] clouds) { m_paddle.Update(clouds); m_paddle.Update(keyboardState, gamePadState); }