コード例 #1
0
    public void Awake()
    {
        GetLeaderboard();

        SendLeaderboard();

        entryContainer = transform.Find("highscoreEntryContainer");
        entryTemplate  = EntryContainer.Find("highscoreEntryTemplate");

        entryTemplate.gameObject.SetActive(false);

        for (int i = 0; i < leaderboarddata.Count; i++)
        {
            for (int j = i + 1; j < leaderboarddata.Count; j++)
            {
                if (leaderboarddata[j].high_score > leaderboarddata[i].high_score)
                {
                    //swap
                    LeaderboardData tmp = leaderboarddata[i];
                    leaderboarddata[i] = leaderboarddata[j];
                    leaderboarddata[j] = tmp;
                }
            }
        }
        leaderboarddataEntryTransformList = new List <Transform>();
        foreach (LeaderboardData leaderboardData in leaderboarddata)
        {
            CreateHighscoreEntryTransform(leaderboardData, entryContainer, leaderboarddataEntryTransformList);
        }
    }
コード例 #2
0
        public void AddEntry(string name, string description, IEnumerable <GhostRoleInfo> roles)
        {
            NoRolesMessage.Visible = false;

            var entry = new GhostRolesEntry(name, description, roles);

            entry.OnRoleSelected += OnRoleRequested;
            entry.OnRoleFollow   += OnRoleFollow;
            EntryContainer.AddChild(entry);
        }
コード例 #3
0
        private async Task UnfocusNameInput()
        {
            if (Device.RuntimePlatform == Device.iOS)
            {
                await Task.WhenAll(ContentStackLayout.TranslateTo(0, 0, easing: Easing.CubicInOut));
            }
            else
            {
                await EntryContainer.TranslateTo(0, 0, easing : Easing.CubicInOut);

                await TextContainer.FadeTo(1);
            }
        }
コード例 #4
0
        private async Task FocusNameInput()
        {
            if (Device.RuntimePlatform == Device.iOS)
            {
                await Task.WhenAll(ContentStackLayout.TranslateTo(0, -50, easing: Easing.CubicInOut));
            }
            else
            {
                var keyboardHeight = App.ScreenHeight * 0.45f;
                var target         = Height - keyboardHeight;

                var yOffset = target - Math.Min(EntryView.GetPosition().Y + EntryContainer.Height, Height);

                await Task.WhenAll(TextContainer.FadeTo(0),
                                   EntryContainer.TranslateTo(0, yOffset, easing: Easing.CubicInOut));
            }
        }
コード例 #5
0
        private void TraverseFromEntry(ActionEntry entry, Action <ActionEntry> procedure)
        {
            procedure(entry);

            foreach (var child in entry.GetChildEntries(EntryContainer))
            {
                var nextId = child.NextId;
                while (EntryContainer.GetEntry(nextId) != null)
                {
                    var nextEntry = EntryContainer.GetEntry(nextId);
                    nextId = nextEntry.NextId;
                    TraverseFromEntry(nextEntry, procedure);
                }
                TraverseFromEntry(child, procedure);
            }

            if (entry.HasNext)
            {
                TraverseFromEntry(EntryContainer.GetEntry(entry.NextId), procedure);
            }
        }
コード例 #6
0
        private IEnumerator Step(ActionEntry entry)
        {
            foreach (var childEntry in entry.GetChildEntries(EntryContainer))
            {
                StartCoroutine(Step(childEntry));
            }

            while (entry.IsPlayable)
            {
                entry.StepAction(Time.deltaTime, Status == RunnerStatus.Pause);
                yield return(null);
            }

            if (entry.HasNext)
            {
                while (entry.EntryType == ActionEntryType.ParallelBlock && !entry.IsParallelBlockFinished(EntryContainer))
                {
                    yield return(null);
                }
                var nextEntry = EntryContainer.GetEntry(entry.NextId);
                PrepareEntry(nextEntry);
                StartCoroutine(Step(nextEntry));
            }

            if (entry.EntryType == ActionEntryType.ParallelBlock && entry.EntryWrapMode == ActionEntry.ActionEntryWrapMode.Loop)
            {
                while (!entry.IsParallelBlockFinished(EntryContainer))
                {
                    yield return(null);
                }
                yield return(null); // restart on the next frame of last tweener's IsDone

                ResetEntryFrom(entry);
                PrepareEntry(entry);
                StartCoroutine(Step(entry));
            }
        }
コード例 #7
0
 /// <summary>
 /// Call when the entry need Focus
 /// </summary>
 public virtual void OnFocusRequest()
 {
     EntryContainer.Focus();
 }
コード例 #8
0
 public void AddEntry(GhostRoleInfo info)
 {
     NoRolesMessage.Visible = false;
     EntryContainer.AddChild(new GhostRolesEntry(info, _ => RoleRequested?.Invoke(info)));
 }
コード例 #9
0
 public void ClearEntries()
 {
     NoRolesMessage.Visible = true;
     EntryContainer.DisposeAllChildren();
 }