protected override void OnResetItems(IEnumerable <PlaylistItem> sourceItems, PlaylistItem item) { var copied = sourceItems.ToList(); // 再生済みアイテムを同期 var existPlayedItems = PlayedItem.Where(x => copied.Any(y => y.ContentId == x.ContentId)); PlayedItem = new Stack <PlaylistItem>(existPlayedItems); // ランダム化したアイテムの同期 RandamizedItems.Clear(); var shuffledUnplayItems = copied .Where(x => !PlayedItem.Any(y => x.ContentId == y.ContentId)) .Shuffle(); foreach (var shuffled in shuffledUnplayItems) { RandamizedItems.Enqueue(shuffled); } // Currentを同期 // 現在再生中のアイテムが削除されていた場合、Currentをnullにするだけ if (Current != null && !copied.Any(x => x.ContentId == Current.ContentId)) { Current = null; } }
private void addPlayedItemCardFromPlayer(NetworkPlayer np) { GameObject newPlayedItem = Instantiate(ItemPrefab, itemParent.transform.position, Quaternion.identity); newPlayedItem.transform.parent = itemParent.transform; PlayedItem script = newPlayedItem.GetComponent <PlayedItem>(); script.LoadFromNetworkPlayer(np); Items.Add(newPlayedItem.transform); }
public IEnumerator EndIt() { Debug.Log("EndIt"); int winningIndex = carousel.GetSelection(); Debug.Log("Winning Index: " + winningIndex); PlayedItem winnerView = carousel.Items[winningIndex].GetComponent <PlayedItem>(); Debug.Log("WinnerView: " + winnerView); winner = winnerView.np; Debug.Log("winner: " + winner); populatePlayerList(); yield return(StartCoroutine(showAwardingCoins())); StartCoroutine(GameManager.Instance.endCurrentEventAfterDuration(1.0f)); }
protected override PlaylistItem GetPreviousItem_Inner() { // Playedから1つ取り出して // Randomizedに載せる var prevItem = PlayedItem.Pop(); if (Current != null && prevItem != null) { RandamizedItems.Enqueue(Current); return(prevItem); } else { throw new Exception(); } }
protected override PlaylistItem GetNextItem_Inner() { if (RandamizedItems.Count == 0) { if (IsRepeat) { // RandamizedItemsを再構成 PlayedItem.Clear(); OnResetItems(SourceItems, Current); } else { throw new Exception(); } } var nextItem = RandamizedItems.Dequeue(); PlayedItem.Push(Current); return(nextItem); }