GradientDrawable CreateBackgroundDrawable(CornerSide setCornerSide, Android.Graphics.Color backgroundColor, float cornerRadius)
        {
            var gDrawable = new GradientDrawable(); 

            float[] corners;

            //Set X and Y for each corner 
            //The corners are ordered top-left, top-right, bottom-right, bottom-left
            switch (setCornerSide)
            {
                case CornerSide.LeftSide:
                    corners = new float[]{ cornerRadius, cornerRadius, DefaultCorner, DefaultCorner, DefaultCorner, DefaultCorner, cornerRadius, cornerRadius };  
                    break; 
                case CornerSide.RightSide:
                    corners = new float[]{ DefaultCorner, DefaultCorner, cornerRadius, cornerRadius, cornerRadius, cornerRadius, DefaultCorner, DefaultCorner };
                    break; 
                default :
                    corners = new float[]{ DefaultCorner, DefaultCorner, DefaultCorner, DefaultCorner, DefaultCorner, DefaultCorner, DefaultCorner, DefaultCorner };
                    break;
            }

            gDrawable.SetCornerRadii(corners);
            gDrawable.SetColor(backgroundColor.ToArgb());

            return gDrawable;
        }
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
            var newPicker = (CustomPicker)e.NewElement;

            _cornerRadius = newPicker.CornerRadius;
            _cornerSide = newPicker.CornerSide;

            Control.TextColor = newPicker.TextColor.ToUIColor();
            Control.Text = newPicker.Placeholder;
            Control.BorderStyle = UITextBorderStyle.None;

        }
        public static int GetLegalMan(CornerSide corner)
        {
            int legalMan = 0;

            switch (corner)
            {
            case CornerSide.Blue:
                for (int i = 0; i < 4; i++)
                {
                    Player pl = PlayerMan.inst.GetPlObj(i);

                    //Ignore if this spot is empty.
                    if (!pl)
                    {
                        continue;
                    }

                    if (pl.hasRight)
                    {
                        legalMan = pl.PlIdx;
                        break;
                    }
                }

                break;

            case CornerSide.Red:
            {
                for (int i = 4; i < 8; i++)
                {
                    Player pl = PlayerMan.inst.GetPlObj(i);

                    //Ignore if this spot is empty.
                    if (!pl)
                    {
                        continue;
                    }

                    if (pl.hasRight)
                    {
                        legalMan = pl.PlIdx;
                        break;
                    }
                }

                break;
            }
            }

            return(legalMan);
        }
Esempio n. 4
0
        public static void UpdateTeam(CornerSide loserSide, bool isRingOut)
        {
            int    membersLeft;
            int    nextPlayer = -1;
            String teamName;

            //Announcer.inst.PlayGong_Eliminated();

            if (loserSide == CornerSide.Blue)
            {
                wins[1]++;
                pointsRemaining[0]--;

                membersLeft = pointsRemaining[0];
                if (blueOrderQueue.Count != 0)
                {
                    nextPlayer = blueOrderQueue.Dequeue();
                }
                else
                {
                    L.D("Blue Order Queue is empty");
                }
                teamName = MoreMatchTypes_Form.ExEliminationData.TeamNames[0];
            }
            else
            {
                wins[0]++;
                pointsRemaining[1]--;

                membersLeft = pointsRemaining[1];
                if (redOrderQueue.Count != 0)
                {
                    nextPlayer = redOrderQueue.Dequeue();
                }
                else
                {
                    L.D("Red Order Queue is empty");
                }
                teamName = MoreMatchTypes_Form.ExEliminationData.TeamNames[1];
            }

            ActivateMember(nextPlayer, loserSide);
        }
        private void CreateRoundCornerConvex(Square square, CornerSide cornerSide, float radius, int steps, int configuration)
        {
            List <Node> nodes      = new List <Node> ();
            Vector3     position   = Vector3.one;
            Node        targetNode = null;

            if (cornerSide == CornerSide.TopLeft)
            {
                position   = square.BottomRight.GetPosition();
                targetNode = square.BottomRight;
            }
            if (cornerSide == CornerSide.TopRight)
            {
                position   = square.BottomLeft.GetPosition();
                targetNode = square.BottomLeft;
            }
            if (cornerSide == CornerSide.BottomRight)
            {
                position   = square.TopLeft.GetPosition();
                targetNode = square.TopLeft;
            }
            if (cornerSide == CornerSide.BottomLeft)
            {
                position   = square.TopRight.GetPosition();
                targetNode = square.TopRight;
            }

            nodes.Add(targetNode);

            List <Vector3> arcVertices = GetArcVertices(position, radius, steps, cornerSide);

            arcVertices.Reverse();
            for (int i = 0; i < arcVertices.Count; i++)
            {
                nodes.Add(new Node(arcVertices [i]));
            }

            TriangulateMesh(square, configuration, nodes.ToArray());
        }
        private List <Vector3> GetArcVertices(Vector3 position, float radius, int steps, CornerSide cornerSide)
        {
            List <Vector3> arcVertices = new List <Vector3> ();
            float          angleFrom   = 0;
            float          angleTo     = 0;

            if (cornerSide == CornerSide.TopLeft)
            {
                angleFrom = Mathf.PI / 2.0f;
                angleTo   = Mathf.PI;
            }
            if (cornerSide == CornerSide.TopRight)
            {
                angleFrom = 0;
                angleTo   = Mathf.PI / 2.0f;
            }
            if (cornerSide == CornerSide.BottomRight)
            {
                angleFrom = (3.0f * Mathf.PI) / 2.0f;
                angleTo   = Mathf.PI * 2.0f;
            }
            if (cornerSide == CornerSide.BottomLeft)
            {
                angleFrom = Mathf.PI;
                angleTo   = (3.0f * Mathf.PI) / 2.0f;
            }

            float angleStep = Mathf.Abs(angleFrom - angleTo) / (float)steps;

            for (int i = 0; i <= steps; i++)
            {
                float   x = position.x + radius * Mathf.Cos(angleFrom + i * angleStep);
                float   y = position.y + radius * Mathf.Sin(angleFrom + i * angleStep);
                Vector3 p = new Vector3(x, y, 0);

                arcVertices.Add(p);
            }

            return(arcVertices);
        }
Esempio n. 7
0
        public static void ActivateMember(int playerIndex, CornerSide loserSide)
        {
            L.D("Activating player at index " + playerIndex + " for the side: " + loserSide);
            if (playerIndex == -1)
            {
                return;
            }

            Player plObj = PlayerMan.inst.GetPlObj(playerIndex);

            //Ensure that edits immediately enter a ready state.
            if (plObj.State != PlStateEnum.Stand && plObj.State != PlStateEnum.Performance && plObj.Zone == ZoneEnum.OutOfRing)
            {
                plObj.ChangeState(PlStateEnum.Stand);
            }

            plObj.hasRight = true;
            plObj.isSecond = false;
            plObj.isSleep  = false;


            //Ensure that player comes in fresh
            plObj.SetSP(65535f);
            plObj.SetHP(65535f);
            plObj.SetBP(65535f);

            //Determine how they enter the ring
            plObj.isLose = false;
            plObj.SetPlayerController(PlayerControllerKind.AI);
            plObj.Start_ForceControl(global::ForceCtrlEnum.GoBackToRing);

            //Determine if this is a player controlled team
            MenuPadKind controller = MenuPadKind.COM;

            if (loserSide == CornerSide.Blue)
            {
                if (MoreMatchTypes_Form.ExEliminationData.ControlBlue)
                {
                    controller = MenuPadKind.Pad1;
                }
                else
                {
                    controller = MenuPadKind.COM;
                }
            }
            else
            {
                //Ensure that we cover scenarios for two human players
                if (MoreMatchTypes_Form.ExEliminationData.ControlBlue &&
                    MoreMatchTypes_Form.ExEliminationData.ControlRed)
                {
                    controller = MenuPadKind.Pad2;
                }
                else if (MoreMatchTypes_Form.ExEliminationData.ControlRed)
                {
                    controller = MenuPadKind.Pad1;
                }
                else
                {
                    controller = MenuPadKind.COM;
                }
            }

            MatchWrestlerInfo wrestler = GlobalWork.inst.MatchSetting.matchWrestlerInfo[playerIndex];

            GlobalParam.Set_WrestlerData(playerIndex, controller, wrestler.wrestlerID, false, wrestler.costume_no, 65535f, 65535f, 65535f, 65535f, 65535f, 65535f);
        }
Esempio n. 8
0
        public static bool CheckMatchEnd()
        {
            if (!isExElim)
            {
                return(false);
            }
            MatchMain  main = MatchMain.inst;
            Player     plObj;
            CornerSide loserSide = CornerSide.Unknown;

            //Determine which player lost
            for (int i = 0; i < 8; i++)
            {
                plObj = PlayerMan.inst.GetPlObj(i);
                if (!plObj)
                {
                    continue;
                }

                if (plObj.isSecond || plObj.isIntruder || plObj.isSleep)
                {
                    continue;
                }
                plObj.isKO = false;
                if (plObj.isLose && (plObj.Zone == ZoneEnum.InRing || plObj.Zone == ZoneEnum.OutOfRing) && i != recentLoserIndex)
                {
                    L.D(DataBase.GetWrestlerFullName(plObj.WresParam) + " at index " + i + " has been eliminated.");
                    recentLoserIndex = i;

                    if (i <= 3)
                    {
                        loserSide = CornerSide.Blue;
                    }
                    else
                    {
                        loserSide = CornerSide.Red;
                    }

                    //Queue player for replacement
                    defeatedPlayers.Enqueue(new DefeatedPlayer {
                        player = plObj, side = loserSide
                    });

                    loserName = DataBase.GetWrestlerFullName(plObj.WresParam);
                    SetLoserState(i);

                    //Add loser to the queue for replacement processing
                    bool continueMatch = UpdateTeam(loserSide);

                    main.isMatchEnd = !continueMatch;

                    L.D("Continue Match: " + continueMatch);
                    return(continueMatch);
                }
                else
                {
                    continue;
                }
            }

            return(false);
        }