示例#1
0
        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
                                           );
                }
                                    );
            });
        }
示例#2
0
        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);
        }