void CheckWinCondition(DeskEllement a_updatedEllement) { //Should find position of updated figure. Vector2Int indexes = GetDeskEllemenIndexes(a_updatedEllement); bool isWin = CheckWinCondition(new Vector2Int(indexes.x, 0), new Vector2Int(0, 1)); if (!isWin) { isWin = CheckWinCondition(new Vector2Int(0, indexes.y), new Vector2Int(1, 0)); if (!isWin) { if (indexes.x == indexes.y) { //Diagonal check isWin = CheckWinCondition(new Vector2Int(0, 0), new Vector2Int(1, 1)); } if (!isWin) { if ((indexes.x + indexes.y) == (deskEllements.GetLength(0) - 1)) { //Diagonal check isWin = CheckWinCondition(new Vector2Int(0, 3), new Vector2Int(1, -1)); } } } } if (isWin) { GameEvents.Instance.OnCollectLine(); } }
private void OnDeskTap(DeskEllement ellement) { if (GameManager.Instance.ActiveStepPhase == PlayerStepPhase.Place) { if (figureContainer.SelectedFigure != null) { var figure = figureContainer.SelectedFigure; ellement.AttachFigure(figure); figure.Attach(); GameEvents.Instance.OnAttachFigure(ellement, figure); ActiveStepPhase = PlayerStepPhase.Select; } } }
public Vector2Int GetDeskEllemenIndexes(DeskEllement a_ellement) { for (int i = 0; i < deskEllements.GetLength(0); ++i) { for (int j = 0; j < deskEllements.GetLength(1); ++j) { if (deskEllements[i, j] == a_ellement) { return(new Vector2Int(i, j)); } } } Debug.LogError("Can not find ellement"); return(new Vector2Int(0, 0)); }
void CreateMap() { Debug.Log("CreateMap"); if (deskView != null && deskEllementPrefab != null) { if (deskEllementContainer == null) { deskEllementContainer = this.gameObject; } deskView.localScale = new Vector3(Width * ellementStep, deskView.localScale.y, Height * ellementStep); deskEllements = new DeskEllement[Width, Height]; for (int i = 0; i < deskEllements.GetLength(0); ++i) { for (int j = 0; j < deskEllements.GetLength(1); ++j) { DeskEllement ellement = Instantiate(deskEllementPrefab, deskEllementContainer.transform, false) as DeskEllement; ellement.transform.localPosition = new Vector3((i - Width / 2f) * ellementStep, 0, (j - Height / 2f) * ellementStep); deskEllements[i, j] = ellement; } } } deskEllementContainer.transform.localPosition = new Vector3(ellementStep / 2, deskEllementContainer.transform.localPosition.y, ellementStep / 2); /*var render = deskEllementContainer.GetComponent<Renderer>(); * if (render != null) * { * Vector3 rendererSize = render.bounds.size; * deskEllementContainer.transform.localPosition = new Vector3(-rendererSize.x/2, deskEllementContainer.transform.localPosition.y, -rendererSize.z / 2); * }*/ /*float offsetPos = -ellementStep * size / 2; * deskEllementContainer.transform.localPosition = new Vector3(offsetPos, deskEllementContainer.transform.localPosition.y, offsetPos);*/ }
private void OnFigureAttached(DeskEllement a_deskEllement, Figure a_figure) { selectedFigure = null; }
void OnFigureAttached(DeskEllement a_ellement, Figure a_figure) { //Check for complete lines. CheckWinCondition(a_ellement); }