Exemplo n.º 1
0
    /// <summary>
    /// あるオブジェクトに一番近いアイテムの位置を返す
    /// </summary>
    /// <param name="objPos">対象のオブジェクト</param>
    /// <returns>一番近いアイテム</returns>
    public ItemSuper NearestItem(Vector3 objPos)
    {
        ItemSuper nearestItem = ItemSuper.Null;

        //在庫が1個しかなかったらそれを返す
        if (_stock.Count == 1)
        {
            return(_stock[0]);
        }

        foreach (var i in _stock)
        {
            if (i == ItemSuper.Null)
            {
                continue;
            }


            float tmp_dis = Vector3.Distance(i._object.transform.position, objPos);
            //より近いアイテムがあったら
            if (_nearDis > tmp_dis)
            {
                nearestItem = i;

                _nearDis = tmp_dis;
            }
        }
        return(nearestItem);
    }
Exemplo n.º 2
0
    /// <summary>
    /// 商品の返品処理
    /// </summary>
    /// <param name="item"></param>
    public void ReturnItem(ItemSuper item)
    {
        Vector3 pos = RandomPos();

        item._object = item.Init();
        item._object.transform.parent   = _itemParent.transform;
        item._object.transform.position = pos;
        item._object.name += count++.ToString();
        _stock.Add(item);

        //ゲーム全体の在庫数に追加
        item.AddShopDistribution(item.GetNum());
    }
Exemplo n.º 3
0
 public void SetUI(ItemSuper item)
 {
     if (item == ItemSuper.Null)
     {
         _num.text     = "";
         _image.sprite = _rockImage;
     }
     else
     {
         _num.text     = item.GetNum().ToString();
         _image.sprite = item.GetSprite();
     }
 }
Exemplo n.º 4
0
    /// <summary>
    /// ランダムなアイテムを自動生成
    /// </summary>
    private void GenerateItem()
    {
        ItemSuper item = ItemSuper.RandomItem();

        Vector3 pos = RandomPos();

        item._object = item.Init();
        item._object.transform.parent   = _itemParent.transform;
        item._object.transform.position = pos;
        item._object.name += count++.ToString();
        _stock.Add(item);

        //ゲーム全体の在庫数に追加
        item.AddShopDistribution(item.GetNum());
    }
Exemplo n.º 5
0
    /// <summary>
    /// //超過した分だけ 次のスロットに格納アイテム追加処理 すでに持っているアイテムは数を増やすだけ 超過分は次のスロットに格納 それでもあふれたアイテムを返す
    /// </summary>
    /// <param name="item">追加するアイテム</param>
    /// <param name="num">使わぬ</param>
    /// <returns>超過して入らなかったアイテム 超過しなかった場合はItemSuper.Nullが入る</returns>
    public ItemSuper AddItem(ItemSuper item, int num)
    {
        if (_ItemList.Count == 0)
        {
            _ItemList.Add(item);
            return(ItemSuper.Null);
        }
        ItemSuper overflowItem = ItemSuper.Null;

        foreach (ItemSuper i in _ItemList)
        {
            //同じアイテム名のアイテムが存在し、かつ上限まで入っていない時
            if (i.GetName() == item.GetName() && i._MaxNum != i.GetNum())
            {
                int tmp_sum    = i.GetNum() + item.GetNum();; //とりあえず合計
                int over_num   = tmp_sum - i._MaxNum;         //とりあえず超過数
                int remain_num = i._MaxNum - i.GetNum();      //とりあえず保有可能数

                //インベントリに追加したとき 最大所持数を超えるとき
                if (over_num > 0)
                {
                    //空きスロットがあるなら アイテムをインベントリに追加
                    if (_remainSlot > 0)
                    {
                        _ItemList[_slot - _remainSlot] = new ItemSuper(i.GetName(), i.GetPrice(), over_num);
                        //非超過分を足す
                        i.AddNum(remain_num);
                    }
                    else
                    {
                        //超過分を格納
                        item = new ItemSuper(i.GetName(), i.GetPrice(), over_num);
                    }
                }
            }
        }

        _ItemList.Add(item);

        return(overflowItem);
    }
Exemplo n.º 6
0
 /// <summary>
 /// 渡されたアイテムをただ追加するだけ 超過分とかは考慮しない   店の在庫向け
 /// </summary>
 /// <param name="item"></param>
 public void AddItem(ItemSuper item)
 {
     _ItemList.Add(item);
 }