コード例 #1
0
        public void AddRemoveEmailEvent(GameObject ob, RectTransform r, string email, TournamentInvite replaced = null)
        {
            if (!invitedEmails.Contains(email))
            {
                invitedEmails.Add(email);
            }
            if (replaced != null)
            {
                Destroy(replaced.gameObject);
                inviteEmailTexts.Remove(replaced);
            }
            ob.transform.Find("EmailInput/Remove").GetComponent <Button>().onClick.AddListener(() => {
                Action removeAction = () => {
                    Destroy(ob);
                    GameObject newOb      = Instantiate(TacoConfig.InviteInputPrefab, Vector3.zero, Quaternion.identity, emailsPanel) as GameObject;
                    RectTransform newRect = newOb.GetComponent <RectTransform>();

                    newRect.localPosition = r.localPosition;
                    newRect.sizeDelta     = r.sizeDelta;

                    List <TournamentInvite> nearPrevs = inviteEmailTexts.Where(x => x.gameObject.transform.position.y > newOb.transform.position.y).ToList();
                    List <TournamentInvite> nearNexts = inviteEmailTexts.Where(x => x.gameObject.transform.position.y < newOb.transform.position.y).ToList();
                    TournamentInvite newInvite        = newOb.GetComponent <TournamentInvite>();
                    invitedEmails.Remove(email);
                    newInvite.reservedEmails = invitedEmails;
                    newInvite.isInManage     = true;
                    if (nearPrevs.Count > 0)
                    {
                        TournamentInvite newPrev = nearPrevs.OrderBy(x => Mathf.Abs(x.gameObject.transform.position.y - newOb.transform.position.y)).First();
                        newInvite.prev           = newPrev;
                        newPrev.next             = newInvite;
                    }
                    if (nearNexts.Count > 0)
                    {
                        TournamentInvite newNext = nearNexts.OrderBy(x => Mathf.Abs(x.gameObject.transform.position.y - newOb.transform.position.y)).First();
                        newInvite.next           = newNext;
                        newNext.prev             = newInvite;
                    }
                    inviteEmailTexts.Add(newInvite);
                };
                TacoManager.OpenModalRemovePlayerConfirmPanel(email, removeAction);
            });
        }