public bool InGridCheck(TetrisCube cube) { if (cube.partOne.position.x > grid[0].transform.position.x - scaledHalfTileWidth && cube.partOne.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth && cube.partOne.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partOne.position.y <grid[gridSize - 1].transform.position.y + scaledHalfTileHeight && cube.partTwo.position.x> grid[0].transform.position.x - scaledHalfTileWidth && cube.partTwo.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth && cube.partTwo.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partTwo.position.y <grid[gridSize - 1].transform.position.y + scaledHalfTileHeight && cube.partThree.position.x> grid[0].transform.position.x - scaledHalfTileWidth && cube.partThree.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth && cube.partThree.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partThree.position.y <grid[gridSize - 1].transform.position.y + scaledHalfTileHeight && cube.partFour.position.x> grid[0].transform.position.x - scaledHalfTileWidth && cube.partFour.position.x <grid[col - 1].transform.position.x + scaledHalfTileWidth && cube.partFour.position.y> grid[0].transform.position.y - scaledHalfTileHeight && cube.partFour.position.y < grid[gridSize - 1].transform.position.y + scaledHalfTileHeight) { return(true); } return(false); }
//Key for setting instantiated unit in array //Spawner for the pos of spawner in scene //Team for which team the unit is (0 for player , 1 for enemy) //Type is for unit type //Shape is the shape to instantiate int SpawnTetris(int key, GameObject spawner, int team, int type, GameObject shape) { TetrisCube theCube = new TetrisCube(); //Instantiate base on spawner pos if (team == 0) { theCube.parentCube = Instantiate(shape, spawner.transform.position, spawner.transform.rotation); } else //Rotate by 180 on x axis if is enemy piece to mirror player { theCube.parentCube = Instantiate(shape, spawner.transform.position, Quaternion.Euler(180, 0, 0)); } //So that it appears within canvas theCube.parentCube.transform.SetParent(GameObject.FindGameObjectWithTag("Canvas").transform, true); theCube.parentCube.transform.SetParent(spawner.transform); //Off set x pos base on key(index) if (key == 0) { pil.Set(-ScreenWidthOffset + halfOffset, 0, 0); } else if (key == 1) { pil.Set(0, 0, 0); } else { pil.Set(ScreenWidthOffset - halfOffset, 0, 0); } //Set the origin (snapping) pil1 = theCube.parentCube.transform.position + pil; theCube.origin.Set(pil1.x, spawner.transform.position.y, spawner.transform.position.z); //Translate to origin theCube.parentCube.transform.position = theCube.origin; //Store parts locally GameObject cubeOne = theCube.parentCube.transform.Find("partOne").gameObject; GameObject cubeTwo = theCube.parentCube.transform.Find("partTwo").gameObject; GameObject cubeThree = theCube.parentCube.transform.Find("partThree").gameObject; GameObject cubeFour = theCube.parentCube.transform.Find("partFour").gameObject; //Set up the 4 cubes based on theCube.parentCube's child theCube.setTheCubes(cubeOne.GetComponent <Rigidbody2D>(), cubeTwo.GetComponent <Rigidbody2D>(), cubeThree.GetComponent <Rigidbody2D>(), cubeFour.GetComponent <Rigidbody2D>()); theCube.origin = theCube.partOne.position; //Assigning types base on shape if (shape == TetrisTypes[0]) { theCube.setTheObjectType(TetrisCube.objectType.TETRIS_4X4); } else if (shape == TetrisTypes[1]) { theCube.setTheObjectType(TetrisCube.objectType.TETRIS_L); } else if (shape == TetrisTypes[2]) { theCube.setTheObjectType(TetrisCube.objectType.TETRIS_T); } else { theCube.setTheObjectType(TetrisCube.objectType.TETRIS_Z); } Vector2 currentCubeSIze = cubeOne.GetComponent <RectTransform>().sizeDelta; Vector2 canvasLocalScale = GameObject.FindGameObjectWithTag("Canvas").transform.localScale; //Debug.Log(GameObject.FindGameObjectWithTag("Canvas")) cubeOne.GetComponent <RectTransform>().sizeDelta = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y); cubeTwo.GetComponent <RectTransform>().sizeDelta = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y); cubeThree.GetComponent <RectTransform>().sizeDelta = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y); cubeFour.GetComponent <RectTransform>().sizeDelta = new Vector2(currentCubeSIze.x * canvasLocalScale.x, currentCubeSIze.y * canvasLocalScale.y); cubeOne.transform.localPosition = new Vector3(cubeOne.transform.localPosition.x * canvasLocalScale.x, cubeOne.transform.localPosition.y * canvasLocalScale.y, 0); cubeTwo.transform.localPosition = new Vector3(cubeTwo.transform.localPosition.x * canvasLocalScale.x, cubeTwo.transform.localPosition.y * canvasLocalScale.y, 0); cubeThree.transform.localPosition = new Vector3(cubeThree.transform.localPosition.x * canvasLocalScale.x, cubeThree.transform.localPosition.y * canvasLocalScale.y, 0); cubeFour.transform.localPosition = new Vector3(cubeFour.transform.localPosition.x * canvasLocalScale.x, cubeFour.transform.localPosition.y * canvasLocalScale.y, 0); //Set the unit's type switch (type) { case 0: { //theCube.troopName = "Cavalry"; foreach (Transform child in theCube.parentCube.transform) { Image theSprite = child.GetComponent <Image>(); if (team == 0) { theSprite.sprite = troopImages[2]; theCube.troopName = "BlueCavalry"; } else { theSprite.sprite = troopImages[5]; theCube.troopName = "RedCavalry"; } } break; } case 1: { //theCube.troopName = "Bowmen"; foreach (Transform child in theCube.parentCube.transform) { Image theSprite = child.GetComponent <Image>(); if (team == 0) { theSprite.sprite = troopImages[0]; theCube.troopName = "BlueInfantry"; } else { theSprite.sprite = troopImages[3]; theCube.troopName = "RedInfantry"; } } break; } case 2: { foreach (Transform child in theCube.parentCube.transform) { Image theSprite = child.GetComponent <Image>(); if (team == 0) { theSprite.sprite = troopImages[1]; theCube.troopName = "BlueBowmen"; } else { theSprite.sprite = troopImages[4]; theCube.troopName = "RedBowmen"; } } break; } } ; enemyGridSystem enemyGridSystem = GameObject.Find("EnemyTetrisGrid").GetComponent <enemyGridSystem>(); if (team == 0 || enemyGridSystem.multi) { //Could use raycast instead //Also cause the only thing changing is the movement function, could try to make a switch instead //Trigger and entry for bottom left EventTrigger BtmLTrig = cubeOne.GetComponent <EventTrigger>(); EventTrigger.Entry BtmLEntry = new EventTrigger.Entry(); BtmLEntry.eventID = EventTriggerType.Drag; BtmLEntry.callback.AddListener((data) => { theCube.DragObject(theCube.partOne); }); BtmLTrig.triggers.Add(BtmLEntry); //Trigger and entry for bottom Right EventTrigger BtmRTrig = cubeTwo.GetComponent <EventTrigger>(); EventTrigger.Entry BtmREntry = new EventTrigger.Entry(); BtmREntry.eventID = EventTriggerType.Drag; BtmREntry.callback.AddListener((data) => { theCube.DragObject(theCube.partTwo); }); BtmRTrig.triggers.Add(BtmREntry); //Trigger and entry for top Left EventTrigger TopLTrig = cubeThree.GetComponent <EventTrigger>(); EventTrigger.Entry TopLEntry = new EventTrigger.Entry(); TopLEntry.eventID = EventTriggerType.Drag; TopLEntry.callback.AddListener((data) => { theCube.DragObject(theCube.partThree); }); TopLTrig.triggers.Add(TopLEntry); //Trigger and entry for top Right EventTrigger TopRTrig = cubeFour.GetComponent <EventTrigger>(); EventTrigger.Entry TopREntry = new EventTrigger.Entry(); TopREntry.eventID = EventTriggerType.Drag; TopREntry.callback.AddListener((data) => { theCube.DragObject(theCube.partFour); }); TopRTrig.triggers.Add(TopREntry); } //Rotate the cubes back if is enemy (event trigger will not trigger if this is not done for enemy) if (team == 1) { cubeOne.transform.localRotation = Quaternion.Euler(180, 0, 0); cubeTwo.transform.localRotation = Quaternion.Euler(180, 0, 0); cubeThree.transform.localRotation = Quaternion.Euler(180, 0, 0); cubeFour.transform.localRotation = Quaternion.Euler(180, 0, 0); } //Storing into the respective lists if (team == 0) { //playerList[key] = theCube; playerList.Add(theCube); } else { //enemyList[key] = theCube; enemyList.Add(theCube); } //Increment index for next object ++key; return(key); }