public void BootyCall(Vector2 pos, string[] move, Vector2 cardinality) { //Get lead Dancer lead = null; for (int i = 0; i < Board.BoardW; i++) { var dcheck = board.GetDancer(pos + (cardinality * i)); if (dcheck && dcheck.IsLead) { lead = dcheck; //board.painter.AddToLayer(2, dcheck.GetBoardPos(), Color.red); break; } } //Find backups Dancer Above = null; Dancer Below = null; Vector2 leadPos = lead.GetBoardPos(); int j = 1; while (Above == null || Below == null) { if (!Above) { Above = board.GetDancer(leadPos + (cardinality * j)); } if (!Below) { Below = board.GetDancer(leadPos - (cardinality * j)); } j++; } //Movey backups board.Move(Above, leadPos + cardinality); board.Move(Below, leadPos - cardinality); }
// Update is called once per frame void Update() { //Select Dancer with mouse via ray if (Input.GetKey(KeyCode.Mouse0)) { RaycastHit hit; Ray ray = cam.ScreenPointToRay(Input.mousePosition); if (!_dancerSelected) //no dancer selected { if (Physics.Raycast(ray, out hit)) //8 is dancer layer { //Hit dancer _dancerSelected = hit.transform.GetComponent <Dancer>(); if (!_dancerSelected) { //Hit board var hitpos = hit.transform.position; var boardPos = new Vector2(hitpos.x, hitpos.z); _dancerSelected = GetDancer(boardPos); } //If valid selection if (_dancerSelected && _dancerSelected.canMove) { _dancerSelected.Select(); //Select and paint selected tiles PaintSelection(_dancerSelected); //paint selected layer _dancerStartMovePos = _dancerSelected.GetBoardPos(); } else //cancel coz we can't move { _dancerSelected = null; } } } else //Dancer is selected { //Move that booty if (Physics.Raycast(ray, out hit, 999, moverLayer.value)) { Vector2 hitBoardPos = new Vector2(hit.transform.position.x, hit.transform.position.z); List <Vector2> poslist; _validPositions.TryGetValue(_dancerSelected, out poslist); Debug.Assert(_validPositions.ContainsKey(_dancerSelected)); if (poslist.Contains(hitBoardPos) || GameState.me.debug) { Move(_dancerSelected, hitBoardPos); } } } } else if (_dancerSelected) //Deselect { //Add to back stack & update its ui if (_dancerStartMovePos != _dancerSelected.GetBoardPos()) { var step = new DanceStep(); step.d = _dancerSelected; step.pos = _dancerStartMovePos; step.range = _dancerSelected.rangePoints; _backStack.Push(step); UI.UpdateUndoInteractable(this); } //Checky moves! CheckMoves(); //Cleanup _dancerSelected.DeSelect(); painter.ClearLayer(0); BakeMovement(turn, false); //Laterssss _dancerSelected = null; } //Round timer if (GameActive && GameState.me.State == eGameState.GAME) { roundCountdown -= Time.deltaTime; RoundTimerText.text = roundCountdown.ToString("00"); if (roundCountdown < 0) { EndTurn(true); } } }
// Update is called once per frame void Update() { switch (Stage) { case 6: lead.canMove = true; if (lead.StartRoundPos != lead.GetBoardPos() && !lead.selected) { NextStep(); } break; case 11: enemy = _board.SpawnDancer(false, new Vector2(4, 3), _board.Player2, "tut enemy"); NextStep(); break; case 15: fernando = _board.SpawnDancer(false, new Vector2(2, 1), _board.Player1, "Fernando, the dance teacher"); fernando.canMove = true; _board.BakeMovement(false, false); NextStep(); break; case 18: if (lead.GetBoardPos() == new Vector2(3, 3) && fernando.GetBoardPos() == new Vector2(2, 3)) { NextStep(); _board._backStack.Clear(); } break; case 19: if (enemy.StartRoundPos != enemy.GetBoardPos()) { NextStep(); } break; case 22: if (!endTurn.interactable) { endTurn.interactable = true; } break; case 27: johhny = _board.SpawnDancer(false, new Vector2(1, 1), _board.Player1, "Johhny \"rocket fingers\" Gots"); johhny.canMove = true; lead.canMove = false; _board.BakeMovement(false, false); NextStep(); break; case 29: if (johhny.GetBoardPos() == new Vector2(1, 3)) { NextStep(); } break; case 30: if (!enemy.isDancing) { NextStep(); } break; case 45: // everyone moves to a boogaloo // _board.Move(johhny, new Vector2(4, 4)); // _board.Move(lead, new Vector2(4, 2)); // _board.Move(fernando, new Vector2(3, 3)); // zacry = _board.SpawnDancer(false, new Vector2(2, 3), _board.Player1, "Zaccyboy"); // maximus = _board.SpawnDancer(false, new Vector2(1, 3), _board.Player1, "Mr Maxsour"); break; case 48: // TODO: spawn in a target for the boogaloo // enemy = _board.SpawnDancer(false, new Vector2(7, 3), _board.Player2, "Baddy McBadboy"); // if (!enemy.isDancing) // NextStep(); break; } }