示例#1
0
    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);
    }
示例#2
0
    // 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);
            }
        }
    }
示例#3
0
    // 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;
        }
    }