見出し画像

RAYSER進捗(20231004)

アイテムのインターフェース設計を引き続き進めていました

アイテムのインターフェースは責務が増えてしまいそうですが、役割を持たせたインターフェースを定義するなどして対応する方向で一旦考え中です。abstractで定義し直すのも検討しています。

using UnityEngine.UI;

namespace _RAYSER.Scripts.Item
{
    /// <summary>
    /// アイテム用インターフェース
    /// </summary>
    public interface IItem
    {
        /// <summary>
        /// アイテム名
        /// </summary>
        string name { get; }

        /// <summary>
        /// アイテム説明
        /// </summary>
        string description { get; }

        /// <summary>
        /// アイテムアイコン
        /// </summary>
        Image iconImage { get; }

        /// <summary>
        /// アイテム種別
        /// </summary>
        ItemType itemType { get; }
    }
}

サブウェポンインターフェースは破棄して、enumでアイテム種別を持たせるようにしてみました。

namespace _RAYSER.Scripts.Item
{
    /// <summary>
    /// アイテム種別
    /// </summary>
    public enum ItemType
    {
        /// <summary>
        /// サブウェポン
        /// </summary>
        SubWeapon,

        /// <summary>
        /// ボム
        /// </summary>
        Bomb,

        /// <summary>
        /// シールド
        /// </summary>
        Shield,
    }
}

カスタマイズでスコアと引き換えなので、商品という定義は少し違うかもですが、一応ショップのような感じなので一旦商品用インターフェースを定義して、カスタマイズで取引の発生するクラスに付与する目的のインターフェースを作ってみました

using _RAYSER.Scripts.Item;

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

        /// <summary>
        /// スコア交換処理
        /// </summary>
        void ExchangeScore();
    }
}

今回ご助言いただきましたゆみねこさん、やまだたいしさん、やまださんどうもありがとうございました。

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