Tanoda
FancyCellGroup.cs
Go to the documentation of this file.
1
3
4using System.Linq;
5
7{
13 public abstract class FancyCellGroup<TItemData, TContext> : FancyCell<TItemData[], TContext>
14 where TContext : class, IFancyCellGroupContext, new()
15 {
19 protected virtual FancyCell<TItemData, TContext>[] Cells { get; private set; }
20
26 {
27 return Enumerable.Range(0, Context.GetGroupCount())
28 .Select(_ => Instantiate(Context.CellTemplate, transform))
29 .Select(x => x.GetComponent<FancyCell<TItemData, TContext>>())
30 .ToArray();
31 }
32
34 public override void Initialize()
35 {
37 Debug.Assert(Cells.Length == Context.GetGroupCount());
38
39 for (var i = 0; i < Cells.Length; i++)
40 {
42 Cells[i].Initialize();
43 }
44 }
45
47 public override void UpdateContent(TItemData[] contents)
48 {
49 var firstCellIndex = Index * Context.GetGroupCount();
50
51 for (var i = 0; i < Cells.Length; i++)
52 {
53 Cells[i].Index = i + firstCellIndex;
54 Cells[i].SetVisible(i < contents.Length);
55
56 if (Cells[i].IsVisible)
57 {
58 Cells[i].UpdateContent(contents[i]);
59 }
60 }
61 }
62
64 public override void UpdatePosition(float position)
65 {
66 for (var i = 0; i < Cells.Length; i++)
67 {
68 Cells[i].UpdatePosition(position);
69 }
70 }
71 }
72}
UnityEngine.Debug Debug
Definition: TanodaServer.cs:19
複数の FancyCell<TItemData, TContext> を持つセルグループ実装するための抽象基底クラス.
override void UpdateContent(TItemData[] contents)
override void UpdatePosition(float position)
0.0f ~ 1.0f の値に基づいてこのセルのスクロール位置を更新します.
virtual FancyCell< TItemData, TContext >[] Cells
このグループで表示するセルの配列.
override void Initialize()
初期化を行います.
virtual FancyCell< TItemData, TContext >[] InstantiateCells()
このグループで表示するセルの配列をインスタンス化します.
FancyScrollView<TItemData, TContext> のセルを実装するための抽象基底クラス. FancyCell<TItemData, TContext>....
Definition: FancyCell.cs:68
virtual bool IsVisible
このセルの可視状態.
Definition: FancyCell.cs:24
virtual void SetVisible(bool visible)
このセルの可視状態を設定します.
TContext Context
FancyScrollView<TItemData, TContext>.Context の参照. セルとスクロールビュー間で同じインスタンスが共有されます. 情報の受け渡しや状態の保持に使用します.
Definition: FancyCell.cs:30
abstract void UpdatePosition(float position)
0.0f ~ 1.0f の値に基づいてこのセルのスクロール位置を更新します.
abstract void UpdateContent(TItemData itemData)
アイテムデータに基づいてこのセルの表示内容を更新します.
virtual void SetContext(TContext context)
Context をセットします.
virtual void Initialize()
初期化を行います.
Definition: FancyCell.cs:41
int Index
このセルで表示しているデータのインデックス.
Definition: FancyCell.cs:19
FancyCellGroup<TItemData, TContext> のコンテキストインターフェース.
Credit Erdener Gonenc - @PixelEnvision.