/// <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); } }