예제 #1
0
    /// <summary>
    /// Check dancers for valid moves
    /// </summary>
    void CheckMoves()
    {
        painter.ClearLayer(1); //Clear move layer

        //Only get dancers of the current player
        Dictionary <Vector2, Dancer> playerMaskedDancers = new Dictionary <Vector2, Dancer>();

        foreach (KeyValuePair <Vector2, Dancer> d in _Dancers)
        {
            if (d.Value.Player == (turn ? Player2 : Player1)) //Add masked players to turn if
            {
                playerMaskedDancers.Add(d.Key, d.Value);
            }
        }

        moveOriginList = CheckyBoy.CheckForMoves(playerMaskedDancers, BoardW, BoardH + 1);


        //Only paint moves + activate buttons when in range
        //first make all butts not interactable
        for (int i = 0; i < 4; i++)
        {
            UI.ToggleMoveInteractable(i, turn, false);
        }

        //OH BOY
        //A really shitty hack job for now, since I have to redo a lot of the OO heirarchy for it to work nicely
        //reddit.com/r/codinghorror
        List <Move> filtered = new List <Move>();

        foreach (Move m in moveOriginList)
        {
            if (m.MoveName.Contains("Conga"))
            {
                var r = busta.Conga_Range(m.origin, m.Range, m.foundMoveCard);
                if (r[0] || r[1])                  //if one isn't null
                {
                    if (UI.MoveIsEnabled(0, turn)) //enable button
                    {
                        UI.ToggleMoveInteractable(0, turn, true);
                        filtered.Add(m);
                    }
                }
            }

            //i just vomited in my mouth a little
            else if (m.MoveName.Contains("Boogaloo"))
            {
                var r = busta.Boogaloo_Range(m.origin, m.Range, m.PushPower, m.GetFoundMove(), m.foundMoveCard);
                if (r)                             //if isn't null
                {
                    if (UI.MoveIsEnabled(1, turn)) //enable button
                    {
                        UI.ToggleMoveInteractable(1, turn, true);
                        filtered.Add(m);
                    }
                }
            }
            //PLEASE KILL ME
            else if (m.MoveName.Contains("Crowd Surf"))
            {
                if (UI.MoveIsEnabled(2, turn)) //enable button
                {
                    UI.ToggleMoveInteractable(2, turn, true);
                    filtered.Add(m);
                }
            }
            //OH GOD JUST END IT NOW
            else if (m.MoveName.Contains("Booty"))
            {
                if (UI.MoveIsEnabled(3, turn)) //enable button
                {
                    UI.ToggleMoveInteractable(3, turn, true);
                    filtered.Add(m);
                }
            }
        }

        //Paint valid moves
        //moveOriginList.Sort();
        foreach (Move m in filtered)
        {
            //if(GameState.me.debug) Debug.Log(m.origin);
            GlowDancer(m);
        }
    }