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)
{
}
}
}
}