public void SetupUnity(CompositeDisposable cd, IEngine engine, State state) { Scene.SetupUnity(cd, engine); UpgradeItem.SetupUnity(cd, engine); SellItem.SetupUnity(cd, engine); engine.Mainer(cd, Dep.On(Scene.Root), () => { var root = Scene.Root.Read(); if (!root) { return; } var map = root.GetComponent <Common.Map>(); var scd = root.GetComponent <Common.DisposeOnDestroy>().cd; Common.Binders.Label(scd, engine, map.GetComponent <Text>("gold"), state.Gold, i => string.Format("Gold: {0}", i) ); Common.Binders.Click(scd, engine, map.GetComponent <Common.Clickable>("upgrade"), UpgradeItem.Trigger, () => SelectedItem.Read() ); Common.Binders.Interactable(scd, engine, map.GetComponent <Button>("upgrade"), UpgradeItem.Status, b => b ); Common.Binders.List(scd, engine, map.GetComponent <Transform>("items"), map.GetComponent <Common.Map>("item"), Items, (icd, imap, item) => { Common.Binders.Label(icd, engine, imap.GetComponent <Text>("level"), item.Level, i => string.Format("Lv.{0}", i) ); Common.Binders.Image(icd, engine, imap.GetComponent <Image>("image"), item.Image ); Common.Binders.ButtonClick(icd, engine, imap.GetComponent <Button>("view_details"), () => ItemDetails.CreateAndShow(engine, state, item) ); Common.Binders.Click(icd, engine, imap.GetComponent <Common.Clickable>("select"), () => SelectedItem.Raw.Write( SelectedItem.Raw == item.Id ? null : item.Id) ); Common.Binders.Enabled(icd, engine, imap.Get("is_selected"), SelectedItem, it => it == item ); } ); }); }
public static void CreateAndShow(IEngine engine, State state, Item item) { var details = new ItemDetails(engine); var cd = new CompositeDisposable(); details.Setup(cd, engine, state); details.SetupUnity(cd, engine, state); details.Scene.SetupDisposeOnClose(cd, engine); details.Scene.Open.Fire(item); }