/// <summary> /// Constructor /// </summary> /// <param name="type">Typ klocka, pobrany z BlockTypesEnum</param> public Block(ref World _worldRef, Texture2D texture, BLOCKTYPES _type, float rotation) { // Przypisania type = _type; worldRef = _worldRef; tex = texture; // Stworzenie zmiennej do rysowania spriteBatch = new SpriteBatch(SharedGraphicsDeviceManager.Current.GraphicsDevice); // Stworzenie nowego ciała myBody = new Body(worldRef); initialRotation= rotation; // Odpal funkcję inicjalizującą mnie InitializeBlock(); }
/// <summary> /// Constructor /// </summary> /// <param name="type">Typ klocka, pobrany z BlockTypesEnum</param> public Block(GraphicsDevice graphic, ref World _worldRef, Texture2D texture, BLOCKTYPES _type, float rotation) { // Przypisania type = _type; worldRef = _worldRef; tex = texture; // Stworzenie zmiennej do rysowania spriteBatch = new SpriteBatch(graphic); // Stworzenie nowego ciała myBody = new Body(worldRef); initialRotation= rotation; heightChecked = false; // Odpal funkcję inicjalizującą mnie InitializeBlock(); }
/// <summary> /// Funkcja w zaleznosci od typu klocka tetrisowego, tworzy ciało skłądające się z kwadratów /// o odpowiednim ułożeniu /// </summary> /// <param name="type">Typ Bloku</param> private void MakeMe(BLOCKTYPES type) { // Lista wierzchołków kwadratów List<Vertices> rects = new List<Vertices>(); for (int i = 1; i < 5; i++) { rects.Add(PolygonTools.CreateRectangle(GameCC.Settings.blockSize, GameCC.Settings.blockSize)); } // Główny switch po typach switch (type) { case BLOCKTYPES.I_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(0, -0.75f*GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0, -0.25f*GameCC.Settings.blockSize)); rects[2].Translate(new Vector2(0, 0.25f*GameCC.Settings.blockSize)); rects[3].Translate(new Vector2(0, 0.75f*GameCC.Settings.blockSize)); // rects[i - 1].Translate(new Vector2(GameCC.Settings.blockSize/2, (i * 2*GameCC.Settings.blockSize - 2*GameCC.Settings.blockSize))); } break; case BLOCKTYPES.J_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(0, -0.75f * GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0, -0.25f * GameCC.Settings.blockSize)); rects[2].Translate(new Vector2(0, 0.25f * GameCC.Settings.blockSize)); rects[3].Translate(new Vector2(-0.5f * GameCC.Settings.blockSize, 0.25f * GameCC.Settings.blockSize)); } break; case BLOCKTYPES.L_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(0, -0.75f * GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0, -0.25f * GameCC.Settings.blockSize)); rects[2].Translate(new Vector2(0, 0.25f * GameCC.Settings.blockSize)); rects[3].Translate(new Vector2(0.5f * GameCC.Settings.blockSize, 0.25f * GameCC.Settings.blockSize)); } break; case BLOCKTYPES.O_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(-0.25f*GameCC.Settings.blockSize, -0.25f * GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0.25f * GameCC.Settings.blockSize, -0.25f * GameCC.Settings.blockSize)); rects[2].Translate(new Vector2(-0.25f*GameCC.Settings.blockSize, 0.25f * GameCC.Settings.blockSize)); rects[3].Translate(new Vector2(0.25f*GameCC.Settings.blockSize, 0.25f * GameCC.Settings.blockSize)); } break; case BLOCKTYPES.S_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(0, -0.25f * GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0, 0.25f * GameCC.Settings.blockSize)); rects[2].Translate(new Vector2(0.5f*GameCC.Settings.blockSize, -0.25f * GameCC.Settings.blockSize)); rects[3].Translate(new Vector2(-0.5f*GameCC.Settings.blockSize, 0.25f * GameCC.Settings.blockSize)); } break; case BLOCKTYPES.T_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(0, -0.5f * GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0, 0)); rects[2].Translate(new Vector2(-0.5f * GameCC.Settings.blockSize, 0)); rects[3].Translate(new Vector2(0.5f * GameCC.Settings.blockSize, 0)); } break; case BLOCKTYPES.Z_SHAPE: for (int i = 1; i < 5; i++) { rects[0].Translate(new Vector2(0, -0.25f * GameCC.Settings.blockSize)); rects[1].Translate(new Vector2(0, 0.25f * GameCC.Settings.blockSize)); rects[2].Translate(new Vector2(-0.5f * GameCC.Settings.blockSize, -0.25f * GameCC.Settings.blockSize)); rects[3].Translate(new Vector2(0.5f * GameCC.Settings.blockSize, 0.25f * GameCC.Settings.blockSize)); } break; } myBody = BodyFactory.CreateCompoundPolygon(worldRef, rects, 1.0f); }
/// <summary> /// Funkcja w zaleznosci od typu klocka tetrisowego, tworzy ciało skłądające się z kwadratów /// o odpowiednim ułożeniu /// </summary> /// <param name="type">Typ Bloku</param> private void MakeMe(BLOCKTYPES type) { // Lista wierzchołków kwadratów List<Vertices> rects = new List<Vertices>(); for (int i = 1; i < 5; i++) { rects.Add(PolygonTools.CreateRectangle(GameC.Settings.blockSize, GameC.Settings.blockSize)); } // Główny switch po typach switch (type) { case BLOCKTYPES.I_SHAPE: for (int i = 1; i < 5; i++) { rects[i-1].Translate(new Vector2(0, i *2*GameC.Settings.blockSize)); } break; case BLOCKTYPES.J_SHAPE: for (int i = 1; i < 5; i++) { if (i == 4) { rects[i - 1].Translate(new Vector2(-2 * GameC.Settings.blockSize, i * GameC.Settings.blockSize + (2 * GameC.Settings.blockSize))); } else rects[i - 1].Translate(new Vector2(0, i * 2 * GameC.Settings.blockSize)); } break; case BLOCKTYPES.L_SHAPE: for (int i = 1; i < 5; i++) { if (i == 4) { rects[i - 1].Translate(new Vector2(2 * GameC.Settings.blockSize, i * GameC.Settings.blockSize + (2 * GameC.Settings.blockSize))); } else rects[i - 1].Translate(new Vector2(0, i * 2 * GameC.Settings.blockSize)); } break; case BLOCKTYPES.O_SHAPE: for (int i = 1; i < 5; i++) { if (i == 2) rects[i - 1].Translate(new Vector2(2 * GameC.Settings.blockSize, 0)); else if(i == 3) rects[i - 1].Translate(new Vector2(0, 2 * GameC.Settings.blockSize)); else if(i == 4) rects[i - 1].Translate(new Vector2(2 * GameC.Settings.blockSize, 2 * GameC.Settings.blockSize)); } break; case BLOCKTYPES.S_SHAPE: for (int i = 1; i < 5; i++) { if (i == 2) rects[i - 1].Translate(new Vector2(2 * GameC.Settings.blockSize, 0)); else if(i == 3) rects[i - 1].Translate(new Vector2(0, 2 * GameC.Settings.blockSize)); else if(i == 4) rects[i - 1].Translate(new Vector2(-2 * GameC.Settings.blockSize, 2 * GameC.Settings.blockSize)); } break; case BLOCKTYPES.T_SHAPE: for (int i = 1; i < 5; i++) { if (i == 2) rects[i - 1].Translate(new Vector2(0, 2 * GameC.Settings.blockSize)); else if (i == 3) rects[i - 1].Translate(new Vector2(-2 * GameC.Settings.blockSize, 2 * GameC.Settings.blockSize)); else if (i == 4) rects[i - 1].Translate(new Vector2(2 * GameC.Settings.blockSize, 2 * GameC.Settings.blockSize)); } break; case BLOCKTYPES.Z_SHAPE: for (int i = 1; i < 5; i++) { if (i == 2) rects[i - 1].Translate(new Vector2(0, 2 * GameC.Settings.blockSize)); else if (i == 3) rects[i - 1].Translate(new Vector2(2 * GameC.Settings.blockSize, 2 * GameC.Settings.blockSize)); else if (i == 4) rects[i - 1].Translate(new Vector2(-2 * GameC.Settings.blockSize, 0)); } break; } myBody = BodyFactory.CreateCompoundPolygon(worldRef, rects, 0.4f); }