Exemplo n.º 1
0
    private void LoadMasters() // TODO: 非同期化
    {
        // TODO: 仮データ。
        var items = new ItemMaster[]
        {
            new ItemMaster("Item1", new Currency(CurrencyType.Gold, 10), new Currency(CurrencyType.Gold, 0.1)),
            new ItemMaster("Item2", new Currency(CurrencyType.Gold, 100), new Currency(CurrencyType.Gold, 1)),
            new ItemMaster("Item3", new Currency(CurrencyType.Gold, 1000), new Currency(CurrencyType.Gold, 10)),
            new ItemMaster("Item4", new Currency(CurrencyType.Gold, 5000), new Currency(CurrencyType.Gold, 20)),
            new ItemMaster("Item5", new Currency(CurrencyType.Gold, 10000), new Currency(CurrencyType.Gold, 50)),
            new ItemMaster("Item6", new Currency(CurrencyType.Gold, 30000), new Currency(CurrencyType.Gold, 100)),
        };

        var enhancers = new EnhancerMaster[]
        {
            new EnhancerMaster("Item1 Enhancer1", new Currency(CurrencyType.Gold, 10), items[0], 0.1),
            new EnhancerMaster("Item1 Enhancer2", new Currency(CurrencyType.Gold, 100), items[0], 0.1),
            new EnhancerMaster("Item1 Enhancer3", new Currency(CurrencyType.Gold, 500), items[0], 0.1),
            new EnhancerMaster("Item1 Enhancer4", new Currency(CurrencyType.Gold, 1000), items[0], 0.2),

            new EnhancerMaster("Item2 Enhancer1", new Currency(CurrencyType.Gold, 1000), items[1], 0.1),
            new EnhancerMaster("Item2 Enhancer2", new Currency(CurrencyType.Gold, 5000), items[1], 0.1),
            new EnhancerMaster("Item2 Enhancer3", new Currency(CurrencyType.Gold, 10000), items[1], 0.1),
            new EnhancerMaster("Item2 Enhancer4", new Currency(CurrencyType.Gold, 20000), items[1], 0.2),
        };

        ItemMasters     = items;
        EnhancerMasters = enhancers;
    }
Exemplo n.º 2
0
 /// <summary>
 /// 価格を取得する。
 /// </summary>
 /// <param name="enhancer">強化マスター。</param>
 /// <returns>指定の強化マスターを購入するために必要な価格。</returns>
 public Currency GetPrice(EnhancerMaster enhancer)
 {
     if (enhancer == null)
     {
         throw new ArgumentNullException(nameof(enhancer));
     }
     return(enhancer.Price);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 強化を所有しているかどうか。
 /// </summary>
 /// <param name="enhancer">強化マスター。</param>
 /// <returns>所有していれば true。</returns>
 public bool HasEnhancer(EnhancerMaster enhancer)
 {
     if (enhancer == null)
     {
         throw new ArgumentNullException(nameof(enhancer));
     }
     return(_enhancers.Contains(enhancer));
 }
Exemplo n.º 4
0
    /// <summary>
    /// 強化を購入できるかどうか。
    /// </summary>
    /// <param name="enhancer">購入できるかどうか調べる強化。</param>
    /// <returns>購入できるなら true。そうでなければ false。</returns>
    public bool CanPurchase(EnhancerMaster enhancer)
    {
        if (enhancer == null)
        {
            throw new ArgumentNullException(nameof(enhancer));
        }
        var cash = CashInventory.GetQuantity(enhancer.Price.Type);

        return(cash >= enhancer.Price.Quantity);
    }
Exemplo n.º 5
0
    /// <summary>
    /// 強化購入を試みる。
    /// </summary>
    /// <param name="item">購入するアイテム。</param>
    /// <returns>購入出来たら true。</returns>
    public bool TryPurchase(EnhancerMaster enhancer)
    {
        if (!CanPurchase(enhancer))
        {
            return(false);
        }

        EnhancerInventory.Add(enhancer);
        CashInventory.Add(enhancer.Price.Type, -enhancer.Price.Quantity);
        return(true);
    }
Exemplo n.º 6
0
        /// <summary>
        /// 強化を追加する。
        /// </summary>
        /// <param name="enhancer">追加する強化マスター。</param>
        public void Add(EnhancerMaster enhancer)
        {
            if (enhancer == null)
            {
                throw new ArgumentNullException(nameof(enhancer));
            }

            if (enhancer.ItemMaster != null)
            {
                if (_itemFactors.TryGetValue(enhancer.ItemMaster, out var factor))
                {
                    _itemFactors[enhancer.ItemMaster] = factor + enhancer.Factor;
                }
                else
                {
                    _itemFactors.Add(enhancer.ItemMaster, enhancer.Factor);
                }
            }

            _enhancers.Add(enhancer);
            Added?.Invoke(enhancer);
        }
Exemplo n.º 7
0
 /// <summary>
 /// コンストラクター。
 /// </summary>
 /// <param name="master">強化マスター。</param>
 /// <param name="price">購入価格。</param>
 public MerchandiseEnhancer(EnhancerMaster master, Currency price) : base(master.Name, price)
 {
     Master      = master;
     IsPurchased = Game.Instance.EnhancerInventory.HasEnhancer(Master);
 }
Exemplo n.º 8
0
 private void EnhancerInventory_Added(EnhancerMaster enhancer)
 {
     UpdateProductivities();
 }