예제 #1
0
        private void Awake()
        {
            this.Bind();
            _button.onClick.AddListener(() =>
            {
                if (!Buyable.Acquired)
                {
                    if (Buyable.AttemptToBuy() && BuyParticlePrefab)
                    {
                        Instantiate(BuyParticlePrefab, CoinSection.transform.parent).gameObject.SetActive(true);
                    }
                }
                else if (!Buyable.Equipped || !Buyable.Manager.SingleEquip)
                {
                    Buyable.Equipped = !Buyable.Equipped;
                }
            });

            foreach (var i in GetComponentsInChildren <Image>())
            {
                i.enabled = true;
            }

            _button.enabled = true;
        }
예제 #2
0
        private void OnUpdateBuyable(Buyable arg0)
        {
            Filter.mesh = arg0.Mesh;
            Mesh.material.mainTexture = arg0.Texture;
            Rotation.enabled          = arg0.Equipped;
            var scale = new Vector3(1, 1, 1);

            if (!arg0.Equipped)
            {
                scale *= 0.8f;
            }
            Mesh.transform.localScale = scale;
        }
 public void Configure(Buyable buyable, bool selected = false)
 {
     if (Buyable != null)
     {
         Buyable.OnAcquireChanged -= OnAcquireChanged;
         Buyable.OnEquipChanged   -= OnEquipChanged;
     }
     Buyable = buyable;
     Buyable.OnAcquireChanged += OnAcquireChanged;
     Buyable.OnEquipChanged   += OnEquipChanged;
     Selected = selected;
     UpdateBuyable();
 }
예제 #4
0
 internal void _OnEquip(Buyable e)
 {
     if (SingleEquip)
     {
         HandleSingleEquipped(e);
     }
     else if (e.Tag?.SingleEquip == true)
     {
         HandleSingleEquippedTag(e);
     }
     RebuildSingleTags();
     if (!_recursing)
     {
         OnEquipChanged?.Invoke();
     }
 }
예제 #5
0
 private void HandleSingleEquipped(Buyable e)
 {
     if (e.Equipped)
     {
         _recursing = true;
         var old = SingleEquipped;
         SingleEquipped = e;
         if (old != null)
         {
             old.Equipped = false;
         }
         _recursing = false;
     }
     else if (SingleEquipped == e)
     {
         SingleEquipped = null;
     }
 }
예제 #6
0
        private void OnUpdateBuyable(Buyable arg0)
        {
            Parent.DestroyAllChildren();
            var obj      = Instantiate(arg0.Prefab, Parent);
            var listable = obj.GetComponent <StoreListable>();

            if (listable)
            {
                listable.ConfigureForStore(arg0, false);
            }
            Rotation.enabled = arg0.Equipped;
            var scale = new Vector3(1, 1, 1);

            if (!arg0.Equipped)
            {
                scale *= 0.8f;
            }
            Parent.localScale = scale;
        }
예제 #7
0
 private void ConfigureSingleEquipped()
 {
     _tagEquipMap.Clear();
     TagSingleEquipped = null;
     SingleEquipped    = null;
     foreach (var b in Buyables)
     {
         if (SingleEquip)
         {
             if (b.Equipped)
             {
                 if (SingleEquipped == null || SingleEquipped == b)
                 {
                     SingleEquipped = b;
                 }
                 else
                 {
                     b.Equipped = false;
                 }
             }
         }
         else if (b.Tag?.SingleEquip == true) // pray this shit works.
         {
             var tag = b.Tag;
             if (b.Equipped)
             {
                 Buyable b1;
                 var     foundTag = _tagEquipMap.TryGetValue(tag, out b1);
                 if (!foundTag || b1 == b)
                 {
                     _tagEquipMap[tag] = b;
                 }
                 else
                 {
                     b.Equipped = false;
                 }
             }
         }
     }
     RebuildSingleTags();
 }
예제 #8
0
        private void HandleSingleEquippedTag(Buyable e)
        {
            var     tag = e.Tag;
            Buyable old;
            var     found = _tagEquipMap.TryGetValue(tag, out old);

            if (e.Equipped)
            {
                _recursing        = true;
                _tagEquipMap[tag] = e;
                if (found)
                {
                    old.Equipped = false;
                }
                _recursing = false;
            }
            else if (old == e)
            {
                _tagEquipMap.Remove(tag);
            }
        }
예제 #9
0
 public abstract void ConfigureForPlay(Buyable buyable);
예제 #10
0
 public abstract void ConfigureForStore(Buyable buyable, bool showGear);
 private void OnAcquireChanged(object sender, Buyable buyable)
 {
     UpdateBuyable();
 }
 private void OnEquipChanged(object sender, Buyable buyable)
 {
     UpdateBuyable();
 }
예제 #13
0
 private void OnUpdateBuyable(Buyable arg0)
 {
     Icon.sprite = arg0.Icon;
 }