Commit 48956904 authored by 18손재민's avatar 18손재민

이동 및 회전, 드랍 관련 기능 대부분 구현 완료

parent 38c052e9
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114323397412866622 --- !u!114 &114323397412866622
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -197,7 +197,7 @@ MonoBehaviour: ...@@ -197,7 +197,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114753577101051656 --- !u!114 &114753577101051656
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -214,7 +214,7 @@ MonoBehaviour: ...@@ -214,7 +214,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114851979720776072 --- !u!114 &114851979720776072
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -252,7 +252,7 @@ MonoBehaviour: ...@@ -252,7 +252,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!212 &212152418876382836 --- !u!212 &212152418876382836
SpriteRenderer: SpriteRenderer:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114163463770396558 --- !u!114 &114163463770396558
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -197,7 +197,7 @@ MonoBehaviour: ...@@ -197,7 +197,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114466843507187060 --- !u!114 &114466843507187060
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -214,7 +214,7 @@ MonoBehaviour: ...@@ -214,7 +214,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114787691033818184 --- !u!114 &114787691033818184
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -231,7 +231,7 @@ MonoBehaviour: ...@@ -231,7 +231,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114826030636358216 --- !u!114 &114826030636358216
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114135637264954520 --- !u!114 &114135637264954520
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -197,7 +197,7 @@ MonoBehaviour: ...@@ -197,7 +197,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114317610525364840 --- !u!114 &114317610525364840
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -214,7 +214,7 @@ MonoBehaviour: ...@@ -214,7 +214,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114346591663730294 --- !u!114 &114346591663730294
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -231,7 +231,7 @@ MonoBehaviour: ...@@ -231,7 +231,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114568813863931164 --- !u!114 &114568813863931164
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114213829136544718 --- !u!114 &114213829136544718
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -197,7 +197,7 @@ MonoBehaviour: ...@@ -197,7 +197,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114426654816215182 --- !u!114 &114426654816215182
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -235,7 +235,7 @@ MonoBehaviour: ...@@ -235,7 +235,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114908975501692068 --- !u!114 &114908975501692068
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -252,7 +252,7 @@ MonoBehaviour: ...@@ -252,7 +252,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!212 &212207191686043862 --- !u!212 &212207191686043862
SpriteRenderer: SpriteRenderer:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114184053320687194 --- !u!114 &114184053320687194
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -197,7 +197,7 @@ MonoBehaviour: ...@@ -197,7 +197,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114316302151506316 --- !u!114 &114316302151506316
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -214,7 +214,7 @@ MonoBehaviour: ...@@ -214,7 +214,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114491658978157548 --- !u!114 &114491658978157548
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -252,7 +252,7 @@ MonoBehaviour: ...@@ -252,7 +252,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!212 &212368084699848572 --- !u!212 &212368084699848572
SpriteRenderer: SpriteRenderer:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114250342630536598 --- !u!114 &114250342630536598
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -197,7 +197,7 @@ MonoBehaviour: ...@@ -197,7 +197,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114555629497930862 --- !u!114 &114555629497930862
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -214,7 +214,7 @@ MonoBehaviour: ...@@ -214,7 +214,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114609423914388260 --- !u!114 &114609423914388260
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -231,7 +231,7 @@ MonoBehaviour: ...@@ -231,7 +231,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114813872723638092 --- !u!114 &114813872723638092
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -180,7 +180,7 @@ MonoBehaviour: ...@@ -180,7 +180,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114116348516849362 --- !u!114 &114116348516849362
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -218,7 +218,7 @@ MonoBehaviour: ...@@ -218,7 +218,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114930072884505966 --- !u!114 &114930072884505966
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -235,7 +235,7 @@ MonoBehaviour: ...@@ -235,7 +235,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!114 &114970417993025404 --- !u!114 &114970417993025404
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
...@@ -252,7 +252,7 @@ MonoBehaviour: ...@@ -252,7 +252,7 @@ MonoBehaviour:
stage: 0 stage: 0
roomConcept: 0 roomConcept: 0
itemRoomType: 0 itemRoomType: 0
specialRoomType: 0 specialRoomType: 5
--- !u!212 &212024274712184554 --- !u!212 &212024274712184554
SpriteRenderer: SpriteRenderer:
m_ObjectHideFlags: 1 m_ObjectHideFlags: 1
......
...@@ -28,7 +28,7 @@ public class MapManager : MonoBehaviour { ...@@ -28,7 +28,7 @@ public class MapManager : MonoBehaviour {
public float collapseTime; public float collapseTime;
public float fallTime; public float fallTime;
public static int height = 23, width = 10, realHeight = height - 4; public static int height = 24, width = 10, realHeight = height - 5;
/// <summary> /// <summary>
/// Absolute coordinates on tetris map. /// Absolute coordinates on tetris map.
...@@ -66,6 +66,7 @@ public class MapManager : MonoBehaviour { ...@@ -66,6 +66,7 @@ public class MapManager : MonoBehaviour {
/// List for the special Room candidates. /// List for the special Room candidates.
/// </summary> /// </summary>
public RoomInGame[] specialRoomList; public RoomInGame[] specialRoomList;
public bool controlCurrentTetrimino = false;
/* /*
* functions * functions
...@@ -82,18 +83,10 @@ public class MapManager : MonoBehaviour { ...@@ -82,18 +83,10 @@ public class MapManager : MonoBehaviour {
return new Vector3(Mathf.Round(coord.x), Mathf.Round(coord.y), coord.z); return new Vector3(Mathf.Round(coord.x), Mathf.Round(coord.y), coord.z);
} }
*/ */
public void MoveTetriminoMapCoord(Tetrimino te, Vector3 coord)
{
for(int i = 0; i < te.rooms.Length; i++)
{
te.rooms[i].mapCoord += coord;
}
te.mapCoord += coord;
}
/// <summary> /// <summary>
/// Check if tetrimino is in right x coordinate. /// Check if tetrimino is in right x coordinate.
/// </summary> /// </summary>
/// <param name="te">-1 for over left end, 1 for over right end, 0 for right place.</param> /// <param name="te">-1 for over left end, 1 for over right end, 2 for over bottom end, 3 for already existing, 0 for right place.</param>
/// <returns></returns> /// <returns></returns>
public int IsRightTetrimino(Tetrimino te) public int IsRightTetrimino(Tetrimino te)
{ {
...@@ -103,6 +96,10 @@ public class MapManager : MonoBehaviour { ...@@ -103,6 +96,10 @@ public class MapManager : MonoBehaviour {
return -1; return -1;
else if (te.rooms[i].mapCoord.x > 9) else if (te.rooms[i].mapCoord.x > 9)
return 1; return 1;
else if (te.rooms[i].mapCoord.y < 0)
return 2;
else if (mapGrid[(int)te.rooms[i].mapCoord.x, (int)te.rooms[i].mapCoord.y] != null && mapGrid[(int)te.rooms[i].mapCoord.x, (int)te.rooms[i].mapCoord.y].transform.parent != te)
return 3;
} }
return 0; return 0;
} }
...@@ -114,20 +111,16 @@ public class MapManager : MonoBehaviour { ...@@ -114,20 +111,16 @@ public class MapManager : MonoBehaviour {
{ {
while (true) while (true)
{ {
Debug.Log(te.rooms[3].mapCoord);
if (IsRightTetrimino(te) == 1) if (IsRightTetrimino(te) == 1)
{ {
Debug.Log("Move Left");
MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0)); MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0));
} }
else if (IsRightTetrimino(te) == -1) else if (IsRightTetrimino(te) == -1)
{ {
Debug.Log("Move Right");
MoveTetriminoMapCoord(te, new Vector3(1, 0, 0)); MoveTetriminoMapCoord(te, new Vector3(1, 0, 0));
} }
else else
{ {
Debug.Log("return");
return; return;
} }
} }
...@@ -138,12 +131,27 @@ public class MapManager : MonoBehaviour { ...@@ -138,12 +131,27 @@ public class MapManager : MonoBehaviour {
/// <param name="row">Rows wanted to be deleted.</param> /// <param name="row">Rows wanted to be deleted.</param>
public void DeleteRow(int row) public void DeleteRow(int row)
{ {
for(int x = 0; x < width; x++) for (int x = 0; x < width; x++)
{ {
Destroy(mapGrid[x, row].gameObject); Destroy(mapGrid[x, row].gameObject);
mapGrid[x, row] = null; mapGrid[x, row] = null;
} }
} }
public void DeleteFullRows()
{
for(int y = realHeight; y >= 0; y--)
{
if (IsRowFull(y))
{
for (int x = 0; x < width; x++)
{
Destroy(mapGrid[x, y].gameObject);
mapGrid[x, y] = null;
}
DecreaseRowsAbove(y);
}
}
}
/// <summary> /// <summary>
/// Decrease all rows above this row. /// Decrease all rows above this row.
/// </summary> /// </summary>
...@@ -153,9 +161,15 @@ public class MapManager : MonoBehaviour { ...@@ -153,9 +161,15 @@ public class MapManager : MonoBehaviour {
for(int y = row; y < realHeight; y++) for(int y = row; y < realHeight; y++)
{ {
for(int x = 0; x < width; x++) for(int x = 0; x < width; x++)
{
if (mapGrid[x, y] != null && mapGrid[x, y].transform.parent)
{ {
mapGrid[x, y - 1] = mapGrid[x, y]; mapGrid[x, y - 1] = mapGrid[x, y];
mapGrid[x, y] = null; mapGrid[x, y] = null;
mapGrid[x, y - 1].mapCoord += new Vector3(0, -1, 0);
mapGrid[x, y - 1].transform.position += new Vector3(0, -tetrisMapSize, 0);
}
} }
} }
} }
...@@ -167,29 +181,20 @@ public class MapManager : MonoBehaviour { ...@@ -167,29 +181,20 @@ public class MapManager : MonoBehaviour {
public static bool IsRowFull(int row) public static bool IsRowFull(int row)
{ {
for (int x = 0; x < width; x++) for (int x = 0; x < width; x++)
if (mapGrid[x, row] != null && mapGrid[x, row].specialRoomType == Room.SpecialRoomType.Boss) if (mapGrid[x, row] == null || mapGrid[x, row].specialRoomType == Room.SpecialRoomType.Boss)
return false; return false;
return true; return true;
} }
/// <summary> /// <summary>
/// Destroy Tetrimino that has no rooms.
/// </summary>
public static void DestroyParent()
{
GameObject[] tetriminoes = GameObject.FindGameObjectsWithTag("Tetrimino");
foreach(GameObject child in tetriminoes)
{
if(child.transform.childCount == 0)
Destroy(child.gameObject);
}
}
/// <summary>
/// Update rooms coordinates on mapCoord. /// Update rooms coordinates on mapCoord.
/// </summary> /// </summary>
/// <param name="te">Tetrimino you want to update on map.</param> /// <param name="te">Tetrimino you want to update on map.</param>
public void UpdateMap(Tetrimino te) public void UpdateMap(Tetrimino te)
{ {
for(int i = 0; i < te.rooms.Length; i++)
{
mapGrid[(int)te.rooms[i].mapCoord.x, (int)te.rooms[i].mapCoord.y] = te.rooms[i];
}
} }
/// <summary> /// <summary>
/// Display how much time is it remain to fall current tetrimino. /// Display how much time is it remain to fall current tetrimino.
...@@ -199,35 +204,181 @@ public class MapManager : MonoBehaviour { ...@@ -199,35 +204,181 @@ public class MapManager : MonoBehaviour {
{ {
yield return null; yield return null;
} }
/// <summary>
/// Move tetrimino horizontally.
/// </summary>
/// <param name="te"></param>
/// <param name="coord"></param>
public void MoveTetriminoHorizontal(Tetrimino te, Vector3 coord)
{
if (te.rotatedPosition[te.rotatedAngle] > 0 && coord.x < 0)
{
for (int i = 0; i < te.rotatedPosition.Length; i++)
{
if (te.rotatedPosition[i] > 0)
te.rotatedPosition[i] += (int)coord.x;
}
}
else if (te.rotatedPosition[te.rotatedAngle] + Tetrimino.rotationInformation[(int)te.tetriminoType].horizontalLength[te.rotatedAngle] < width && coord.x > 0)
{
for (int i = 0; i < te.rotatedPosition.Length; i++)
{
if (te.rotatedPosition[i] + Tetrimino.rotationInformation[(int)te.tetriminoType].horizontalLength[i] < width)
te.rotatedPosition[i] += (int)coord.x;
}
}
te.mapCoord = new Vector3(te.rotatedPosition[te.rotatedAngle], te.mapCoord.y, te.mapCoord.z);
SetRoomMapCoord(te);
}
/// <summary>
/// Rotate tetrimino.
/// </summary>
/// <param name="te"></param>
/// <param name="i">1 for clockwise, -1 for counter clockwise.</param>
public void TetriminoRotate(Tetrimino te, int direction)
{
if (direction == 1)
{
for (int i = 0; i < te.rooms.Length; i++)
{
Vector3 tempCoord = (te.rooms[i].mapCoord - te.mapCoord) - new Vector3(1.5f, 1.5f, 0);
te.rooms[i].mapCoord = new Vector3(tempCoord.y, -tempCoord.x, tempCoord.z) + new Vector3(1.5f, 1.5f, 0) + te.mapCoord;
}
if (te.rotatedAngle != 3)
te.rotatedAngle++;
else
te.rotatedAngle = 0;
}
else if (direction == -1)
{
for (int i = 0; i < te.rooms.Length; i++)
{
Vector3 tempCoord = (te.rooms[i].mapCoord - te.mapCoord) - new Vector3(1.5f, 1.5f, 0);
te.rooms[i].mapCoord = new Vector3(-tempCoord.y, tempCoord.x, tempCoord.z) + new Vector3(1.5f, 1.5f, 0) + te.mapCoord;
}
if (te.rotatedAngle != 0)
te.rotatedAngle--;
else
te.rotatedAngle = 3;
}
float minX = te.rooms[0].mapCoord.x, minY = te.rooms[0].mapCoord.y;
for (int i = 0; i < te.rooms.Length; i++)
{
if (te.rooms[i].mapCoord.x < minX)
minX = te.rooms[i].mapCoord.x;
if (te.rooms[i].mapCoord.y < minY)
minY = te.rooms[i].mapCoord.y;
}
for (int i = 0; i < te.rooms.Length; i++)
{
te.rooms[i].mapCoord += new Vector3(-(minX - te.mapCoord.x), -(minY - te.mapCoord.y), 0);
te.rooms[i].transform.position = (te.rooms[i].mapCoord - te.mapCoord) * tetrisMapSize + te.transform.position;
}
te.mapCoord = new Vector3(te.rotatedPosition[te.rotatedAngle], te.mapCoord.y, te.mapCoord.z);
}
/// <summary>
/// Move tetrimino as the amount of coord.
/// </summary>
/// <param name="te">Which tetrimino to move</param>
/// <param name="coord">How much will tetrimino move.</param>
public void MoveTetriminoMapCoord(Tetrimino te, Vector3 coord)
{
for (int i = 0; i < te.rooms.Length; i++)
{
te.rooms[i].mapCoord += coord;
}
te.mapCoord += coord;
}
public void TetriminoDown(Tetrimino te)
{
//완성해야됨
/// <summary>
/// Get tetrimino's mapCoord down.
/// </summary>
/// <param name="te">Which tetrimino to move.</param>
public void TetriminoMapCoordDown(Tetrimino te)
{
//controlCurrentTetrimino = false;
while (IsRightTetrimino(currentTetrimino) == 0)
{
Debug.Log(IsRightTetrimino(currentTetrimino));
MoveTetriminoMapCoord(currentTetrimino, new Vector3(0, -1, 0));
}
Debug.Log(IsRightTetrimino(currentTetrimino));
MoveTetriminoMapCoord(currentTetrimino, new Vector3(0, 1, 0));
EndTetrimino(currentTetrimino);
//StartCoroutine(TetriminoDown(currentTetrimino));
}
public void EndTetrimino(Tetrimino te)
{
var TS = GameObject.Find("TetriminoSpawner").GetComponent<TetriminoSpawner>();
currentTetrimino.transform.position = new Vector3(currentTetrimino.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentTetrimino.mapCoord.y], currentTetrimino.mapCoord.z * tetrisMapSize);
UpdateMap(te);
CreateRoom(currentTetrimino);
DeleteFullRows();
TS.MakeTetrimino();
}
/// <summary>
/// Get tetrimino down.
/// </summary>
/// <param name="te">Which tetrimino's real position move.</param>
public IEnumerator TetriminoDown(Tetrimino te)
{
while(true)
{
if(currentTetrimino)
yield return null;
}
} }
public void GhostDown() public void GhostDown()
{ {
} }
public void TetriminoMove(Tetrimino te) //완성해야됨
/// <summary>
/// Press Left arrow/Right arrow to move left/right, Space to drop.
/// </summary>
/// <param name="te">Tetrimino you want to move.</param>
public void TetriminoControl(Tetrimino te)
{ {
if (Input.GetKeyDown(KeyCode.LeftArrow) && GameManager.gameState == GameManager.GameState.Tetris) if(Input.GetKeyDown(KeyCode.Space) && GameManager.gameState == GameManager.GameState.Tetris)
{ {
MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0)); TetriminoMapCoordDown(currentTetrimino);
//StartCoroutine(TetriminoDown(currentTetrimino));
}
else if (Input.GetKeyDown(KeyCode.LeftArrow) && GameManager.gameState == GameManager.GameState.Tetris)
{
MoveTetriminoHorizontal(currentTetrimino, new Vector3(-1, 0, 0));
/*MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0));
if (IsRightTetrimino(te) != 0) if (IsRightTetrimino(te) != 0)
MoveTetriminoMapCoord(te, new Vector3(1, 0, 0)); MoveTetriminoMapCoord(te, new Vector3(1, 0, 0));*/
} }
else if (Input.GetKeyDown(KeyCode.RightArrow) && GameManager.gameState == GameManager.GameState.Tetris) else if (Input.GetKeyDown(KeyCode.RightArrow) && GameManager.gameState == GameManager.GameState.Tetris)
{ {
MoveTetriminoMapCoord(te, new Vector3(1, 0, 0)); MoveTetriminoHorizontal(currentTetrimino, new Vector3(1, 0, 0));
/*MoveTetriminoMapCoord(te, new Vector3(1, 0, 0));
if (IsRightTetrimino(te) != 0) if (IsRightTetrimino(te) != 0)
MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0)); MoveTetriminoMapCoord(te, new Vector3(-1, 0, 0));*/
} }
else if (Input.GetKeyDown(KeyCode.UpArrow) && GameManager.gameState == GameManager.GameState.Tetris)
{
TetriminoRotate(currentTetrimino, 1);
} }
public void TetriminoRotate(Tetrimino te) else if (Input.GetKeyDown(KeyCode.DownArrow) && GameManager.gameState == GameManager.GameState.Tetris)
{ {
TetriminoRotate(currentTetrimino, -1);
}
} }
public void SetRoomMapCoord(Tetrimino te) public void SetRoomMapCoord(Tetrimino te)
{ {
...@@ -240,6 +391,7 @@ public class MapManager : MonoBehaviour { ...@@ -240,6 +391,7 @@ public class MapManager : MonoBehaviour {
{ {
for (int i = 0; i < te.rooms.Length; i++) for (int i = 0; i < te.rooms.Length; i++)
{ {
UpdateMap(currentTetrimino);
te.rooms[i].transform.parent = grid; te.rooms[i].transform.parent = grid;
if (te.rooms[i].itemRoomType != 0) ; if (te.rooms[i].itemRoomType != 0) ;
else if (te.rooms[i].specialRoomType != Room.SpecialRoomType.Normal) else if (te.rooms[i].specialRoomType != Room.SpecialRoomType.Normal)
...@@ -258,12 +410,26 @@ public class MapManager : MonoBehaviour { ...@@ -258,12 +410,26 @@ public class MapManager : MonoBehaviour {
{ {
if(Input.GetKeyDown(KeyCode.Alpha0)) if(Input.GetKeyDown(KeyCode.Alpha0))
{ {
CreateRoom(currentTetrimino); for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++)
if (mapGrid[x, y] != null)
Debug.Log(new Vector3(x, y, 0));
}
}
void Awake()
{
Tetrimino.rotationInformation[0].horizontalLength = new int[4] { 1, 4, 1, 4 }; //I
Tetrimino.rotationInformation[1].horizontalLength = new int[4] { 2, 2, 2, 2 }; //O
Tetrimino.rotationInformation[2].horizontalLength = new int[4] { 3, 2, 3, 2 }; //T
Tetrimino.rotationInformation[3].horizontalLength = new int[4] { 2, 3, 2, 3 }; //J
Tetrimino.rotationInformation[4].horizontalLength = new int[4] { 2, 3, 2, 3 }; //L
Tetrimino.rotationInformation[5].horizontalLength = new int[4] { 3, 2, 3, 2 }; //S
Tetrimino.rotationInformation[6].horizontalLength = new int[4] { 3, 2, 3, 2 }; //Z
for (int i = 0; i < tetrisYCoord.Length; i++)
{
tetrisYCoord[i] = i * 24;
} }
} }
// Use this for initialization // Use this for initialization
void Start () { void Start () {
...@@ -271,8 +437,12 @@ public class MapManager : MonoBehaviour { ...@@ -271,8 +437,12 @@ public class MapManager : MonoBehaviour {
// Update is called once per frame // Update is called once per frame
void Update() { void Update() {
if(controlCurrentTetrimino)
{
Test(); Test();
TetriminoMove(currentTetrimino); TetriminoControl(currentTetrimino);
currentTetrimino.transform.position = currentTetrimino.mapCoord * tetrisMapSize + tetrisMapCoord; currentTetrimino.transform.position = new Vector3(currentTetrimino.mapCoord.x * tetrisMapSize, tetrisYCoord[(int)currentTetrimino.mapCoord.y], currentTetrimino.mapCoord.z * tetrisMapSize);
//currentTetrimino.transform.position = currentTetrimino.mapCoord * tetrisMapSize + tetrisMapCoord;
}
} }
} }
...@@ -48,10 +48,4 @@ public class Room : MonoBehaviour ...@@ -48,10 +48,4 @@ public class Room : MonoBehaviour
{ {
} }
void Awake()
{
doorInfo = new int[2] { 0, 0 };
}
} }
...@@ -7,14 +7,14 @@ public class Test : MonoBehaviour { ...@@ -7,14 +7,14 @@ public class Test : MonoBehaviour {
public void ChangeTetrimino() public void ChangeTetrimino()
{ {
var MM = GameObject.FindGameObjectWithTag("MapManager").GetComponent<MapManager>(); var MM = GameObject.Find("MapManager").GetComponent<MapManager>();
var TS = GameObject.FindGameObjectWithTag("TetriminoSpawner").GetComponent<TetriminoSpawner>(); var TS = GameObject.Find("TetriminoSpawner").GetComponent<TetriminoSpawner>();
Destroy(MM.currentTetrimino.gameObject); Destroy(MM.currentTetrimino.gameObject);
TS.MakeTetrimino(); TS.MakeTetrimino();
} }
public void SpawnBossTetrimino() public void SpawnBossTetrimino()
{ {
var MM = GameObject.FindGameObjectWithTag("MapManager").GetComponent<MapManager>(); var MM = GameObject.Find("MapManager").GetComponent<MapManager>();
MM.spawnBossTetrimino = true; MM.spawnBossTetrimino = true;
} }
......
...@@ -36,17 +36,22 @@ public class Tetrimino : MonoBehaviour { ...@@ -36,17 +36,22 @@ public class Tetrimino : MonoBehaviour {
/// Each rooms for this tetrimino. /// Each rooms for this tetrimino.
/// </summary> /// </summary>
public Room[] rooms; public Room[] rooms;
/// <summary>
/// Tetrimino rotated angle.
/// </summary>
public int rotatedAngle = 0;
/// <summary>
/// Tetrimino rotated position;
/// </summary>
public int[] rotatedPosition = { 0, 0, 0, 0 };
public struct RotationInformation
{
public int[] horizontalLength;
}
public static RotationInformation[] rotationInformation = new RotationInformation[7];
/* /*
* functions * functions
* */ * */
} }
...@@ -25,7 +25,7 @@ public class TetriminoSpawner : MonoBehaviour { ...@@ -25,7 +25,7 @@ public class TetriminoSpawner : MonoBehaviour {
/// </summary> /// </summary>
public void MakeTetrimino() public void MakeTetrimino()
{ {
var MM = GameObject.FindGameObjectWithTag("MapManager").GetComponent<MapManager>(); var MM = GameObject.Find("MapManager").GetComponent<MapManager>();
if (!MM.gameOver) if (!MM.gameOver)
{ {
int randomPosition = Random.Range(0, MapManager.width); int randomPosition = Random.Range(0, MapManager.width);
...@@ -41,6 +41,14 @@ public class TetriminoSpawner : MonoBehaviour { ...@@ -41,6 +41,14 @@ public class TetriminoSpawner : MonoBehaviour {
MM.currentTetrimino.mapCoord = (MM.currentTetrimino.transform.position - MM.tetrisMapCoord) / MM.tetrisMapSize; MM.currentTetrimino.mapCoord = (MM.currentTetrimino.transform.position - MM.tetrisMapCoord) / MM.tetrisMapSize;
MM.SetRoomMapCoord(MM.currentTetrimino); MM.SetRoomMapCoord(MM.currentTetrimino);
MM.MakeTetriminoRightPlace(MM.currentTetrimino); MM.MakeTetriminoRightPlace(MM.currentTetrimino);
for(int i = 0; i < MM.currentTetrimino.rotatedPosition.Length;i++)
{
if (Tetrimino.rotationInformation[(int)MM.currentTetrimino.tetriminoType].horizontalLength[i] + MM.currentTetrimino.mapCoord.x > MapManager.width)
MM.currentTetrimino.rotatedPosition[i] = MapManager.width - Tetrimino.rotationInformation[(int)MM.currentTetrimino.tetriminoType].horizontalLength[i];
else
MM.currentTetrimino.rotatedPosition[i] = (int)MM.currentTetrimino.mapCoord.x;
}
MM.controlCurrentTetrimino = true;
} }
} }
/// <summary> /// <summary>
...@@ -48,7 +56,7 @@ public class TetriminoSpawner : MonoBehaviour { ...@@ -48,7 +56,7 @@ public class TetriminoSpawner : MonoBehaviour {
/// </summary> /// </summary>
public void MakeInitialTetrimino() public void MakeInitialTetrimino()
{ {
var MM = GameObject.FindGameObjectWithTag("MapManager").GetComponent<MapManager>(); var MM = GameObject.Find("MapManager").GetComponent<MapManager>();
if (!MM.gameOver) if (!MM.gameOver)
{ {
int randomPosition = Random.Range(0, MapManager.width); int randomPosition = Random.Range(0, MapManager.width);
...@@ -65,6 +73,11 @@ public class TetriminoSpawner : MonoBehaviour { ...@@ -65,6 +73,11 @@ public class TetriminoSpawner : MonoBehaviour {
MM.currentTetrimino.mapCoord = (MM.currentTetrimino.transform.position - MM.tetrisMapCoord) / MM.tetrisMapSize; MM.currentTetrimino.mapCoord = (MM.currentTetrimino.transform.position - MM.tetrisMapCoord) / MM.tetrisMapSize;
MM.SetRoomMapCoord(MM.currentTetrimino); MM.SetRoomMapCoord(MM.currentTetrimino);
MM.MakeTetriminoRightPlace(MM.currentTetrimino); MM.MakeTetriminoRightPlace(MM.currentTetrimino);
for (int i = 0; i < MM.currentTetrimino.rooms.Length; i++)
{
MM.currentTetrimino.transform.position = MM.currentTetrimino.mapCoord * MM.tetrisMapSize + MM.tetrisMapCoord;
}
MM.UpdateMap(MM.currentTetrimino);
MM.CreateRoom(MM.currentTetrimino); MM.CreateRoom(MM.currentTetrimino);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment