/// <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); }
/// <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()); }
public void SetUI(ItemSuper item) { if (item == ItemSuper.Null) { _num.text = ""; _image.sprite = _rockImage; } else { _num.text = item.GetNum().ToString(); _image.sprite = item.GetSprite(); } }
/// <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()); }
/// <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); }
/// <summary> /// 渡されたアイテムをただ追加するだけ 超過分とかは考慮しない 店の在庫向け /// </summary> /// <param name="item"></param> public void AddItem(ItemSuper item) { _ItemList.Add(item); }