見出し画像

RAYSER進捗(20231005)

今日はサブウェポンのClassのプロトタイプを作っていました
まだちゃんとした動作確認をしていないので、明日以降に動作確認なども含めて確認してみます。

using _RAYSER.Scripts.Item;

namespace _RAYSER.Scripts.Commodity
{
    /// <summary>
    /// 商品用インターフェース
    /// </summary>
    public interface ICommodity
    {
        /// <summary>
        /// 必要スコア
        /// </summary>
        int requiredScore { get; }

        ItemPurchaseProcessing _itemPurchaseProcessing { get; }

        /// <summary>
        /// スコア交換処理
        /// </summary>
        void ExchangeScore();
    }
}
using _RAYSER.Scripts.Commodity;
using _RAYSER.Scripts.Item;
using Event.Signal;
using UniRx;
using UnityEditor;

namespace _RAYSER.Scripts.Weapon
{
    public class Vulcan : IItem, ICommodity
    {
        public string name => "バルカン";
        public string description => "前方へ連続攻撃ができるバルカン砲";
        public ItemType itemType => ItemType.SubWeapon;
        public int requiredScore => 10000;

        public ItemPurchaseProcessing _itemPurchaseProcessing = new ItemPurchaseProcessing();

        public void ExchangeScore()
        {
            _itemPurchaseProcessing.BuyItem(this, this);
        }

        
    }
}

アイテム購入処理はenumで判定しようと思っていますが、条件分岐を使わずに書けると良いかなと考え中です。(Stateパターンなどがうまく適用できれば良いかなと)

using _RAYSER.Scripts.Commodity;
using Event.Signal;
using UniRx;

namespace _RAYSER.Scripts.Item
{
    /// <summary>
    /// アイテム購入処理クラス
    /// </summary>
    public class ItemPurchaseProcessing
    {
        /// <summary>
        /// アイテム購入処理
        /// </summary>
        /// <param name="item"></param>
        /// <param name="commodity"></param>
        public void BuyItem(IItem item, ICommodity commodity)
        {
            // アイテム購入処理
            var score = commodity.requiredScore * -1;
            MessageBroker.Default.Publish(new ScoreAccumulation{Score = score});

            // アイテム種別に応じて処理を分岐
            // SubWeaponの場合
            if (item.itemType == ItemType.SubWeapon)
            {
            }
            // Bombの場合
            else if (item.itemType == ItemType.Bomb)
            {
            }
            // Shieldの場合
            else if (item.itemType == ItemType.Shield)
            {
            }
        }
    }
}


この記事が気に入ったらサポートをしてみませんか?