Commit 3b2061fb authored by 18손재민's avatar 18손재민

상점 대충 구현함. 이제 스테이지에 맞는 아이템이 상점에서 가격을 가지고 등장함.

parent 427adab1
......@@ -13,6 +13,7 @@ public class DroppedItem : MonoBehaviour, IPlayerInteraction
Rigidbody2D rb2D;
BoxCollider2D bc2D;
SpriteRenderer sprt;
public int price = 0;
public void Init(Item _item, Vector3 pos)
{
inventoryManager = GameObject.Find("InventoryManager").GetComponent<InventoryManager>();
......@@ -28,9 +29,6 @@ public class DroppedItem : MonoBehaviour, IPlayerInteraction
highlight.SetActive(false);
bc2D.size = sprt.size;
transform.localScale = new Vector3((item.sizeInventory.x * itemSizeMultiplier) / sprt.size.x, (item.sizeInventory.y * itemSizeMultiplier) / sprt.size.y, 1);
}
public void Init(Addon _addon, Vector3 pos)
{
......@@ -50,12 +48,19 @@ public class DroppedItem : MonoBehaviour, IPlayerInteraction
}
public void Apply()
{
if (!itemAddon && inventoryManager.PushItem(item))
if(LifeStoneManager.Instance.CountType(LifeStoneType.Gold) < price)
{
Debug.Log("Not enough gold");
return;
}
else if (!itemAddon && inventoryManager.PushItem(item))
{
LifeStoneManager.Instance.ChangeToNormal(LifeStoneType.Gold, price);
Destroy(gameObject);
}
else if (itemAddon && inventoryManager.PushAddon(addon))
{
LifeStoneManager.Instance.ChangeToNormal(LifeStoneType.Gold, price);
Destroy(gameObject);
}
}
......
......@@ -22,10 +22,10 @@ public class InventoryManager : Singleton<InventoryManager> {
player = GameObject.Find("Player");
SetPool();
ItemInstantiate("Dagger", player.transform.position, 0f);
/*ItemInstantiate("Dagger", player.transform.position, 0f);
AddonInstantiate("ParchmentPiece", player.transform.position, 0f);
AddonInstantiate("Gluttony", player.transform.position, 0f);
ItemInstantiate("Bow", player.transform.position, 0f);
ItemInstantiate("Bow", player.transform.position, 0f);*/
StartCoroutine(TestCoroutine());
}
......@@ -133,7 +133,6 @@ public class InventoryManager : Singleton<InventoryManager> {
if(itemPool[(int)quality].Count > 0)
{
ItemInstantiate(itemPool[(int)quality][0], pos, popoutStrength);
itemPool[(int)quality].RemoveAt(0);
}
}
/// <summary>
......@@ -141,7 +140,7 @@ public class InventoryManager : Singleton<InventoryManager> {
/// </summary>
/// <param name="str"></param>
/// <param name="pos"></param>
public void ItemInstantiate(string str, Vector3 pos, float popoutStrength)
public GameObject ItemInstantiate(string str, Vector3 pos, float popoutStrength)
{
GameObject tmpItem = Instantiate(droppedPrefab);
tmpItem.GetComponent<DroppedItem>().Init((Item)System.Activator.CreateInstance(System.Type.GetType(str)), pos);
......@@ -152,18 +151,36 @@ public class InventoryManager : Singleton<InventoryManager> {
tmpItem.transform.SetParent(MapManager.currentRoom.roomInGame.transform);
PopoutGenerator(tmpItem, popoutStrength);
return tmpItem;
}
/// <summary>
/// Instantiate item by Item Instance on pos
/// </summary>
/// <param name="item"></param>
/// <param name="pos"></param>
public void ItemInstantiate(Item item, Vector3 pos, float popoutStrength)
public GameObject ItemInstantiate(Item item, Vector3 pos, float popoutStrength)
{
GameObject tmpItem = Instantiate(droppedPrefab);
tmpItem.GetComponent<DroppedItem>().Init(item, pos);
tmpItem.transform.SetParent(MapManager.currentRoom.roomInGame.transform);
PopoutGenerator(tmpItem, popoutStrength);
return tmpItem;
}
/// <summary>
/// Instantiate random item by quality and assign price.
/// </summary>
/// <param name="quality"></param>
/// <param name="pos"></param>
/// <param name="price"></param>
/// <param name="popoutStrength">0:no popout, 1:normal popout</param>
public void ItemInstantiate(ItemQuality quality, Vector3 pos, int price, float popoutStrength)
{
if (itemPool[(int)quality].Count > 0)
{
GameObject tmpItem = ItemInstantiate(itemPool[(int)quality][0], pos, popoutStrength);
tmpItem.GetComponent<DroppedItem>().price = price;
}
}
/// <summary>
......@@ -176,7 +193,6 @@ public class InventoryManager : Singleton<InventoryManager> {
if (addonPool[(int)quality].Count > 0)
{
AddonInstantiate(addonPool[(int)quality][0], pos, popoutStrength);
addonPool[(int)quality].RemoveAt(0);
}
}
/// <summary>
......@@ -184,7 +200,7 @@ public class InventoryManager : Singleton<InventoryManager> {
/// </summary>
/// <param name="str"></param>
/// <param name="pos"></param>
public void AddonInstantiate(string str, Vector3 pos, float popoutStrength)
public GameObject AddonInstantiate(string str, Vector3 pos, float popoutStrength)
{
GameObject tmpItem = Instantiate(droppedPrefab);
tmpItem.GetComponent<DroppedItem>().Init((Addon)System.Activator.CreateInstance(System.Type.GetType(str)), pos);
......@@ -195,18 +211,36 @@ public class InventoryManager : Singleton<InventoryManager> {
tmpItem.transform.SetParent(MapManager.currentRoom.roomInGame.transform);
PopoutGenerator(tmpItem, popoutStrength);
return tmpItem;
}
/// <summary>
/// Instantiate addon by Addon Instance on pos
/// </summary>
/// <param name="item"></param>
/// <param name="pos"></param>
public void AddonInstantiate(Addon addon, Vector3 pos, float popoutStrength)
public GameObject AddonInstantiate(Addon addon, Vector3 pos, float popoutStrength)
{
GameObject tmpItem = Instantiate(droppedPrefab);
tmpItem.GetComponent<DroppedItem>().Init(addon, pos);
tmpItem.transform.SetParent(MapManager.currentRoom.roomInGame.transform);
PopoutGenerator(tmpItem, popoutStrength);
return tmpItem;
}
/// <summary>
/// Instantiate random addon by quality and assign price.
/// </summary>
/// <param name="addon">The addon.</param>
/// <param name="pos">The position.</param>
/// <param name="price">The price.</param>
/// <param name="popoutStrength">The popout strength.</param>
/// <returns></returns>
public void AddonInstantiate(ItemQuality quality, Vector3 pos, int price, float popoutStrength)
{
if (addonPool[(int)quality].Count > 0)
{
GameObject tmpItem = AddonInstantiate(addonPool[(int)quality][0], pos, popoutStrength);
tmpItem.GetComponent<DroppedItem>().price = price;
}
}
/// <summary>
......
......@@ -29,6 +29,7 @@ public class GoldRoomInGame : RoomInGame {
/// Each index means stage.
/// </summary>
public static RoomItemInfo<GoldRoomItemInfo>[] goldRoomInformation = new RoomItemInfo<GoldRoomItemInfo>[5];
GameObject[] itemGoods;
/// <summary>
/// Loads data from gold room's item spawn data.
......@@ -66,7 +67,6 @@ public class GoldRoomInGame : RoomInGame {
Room room = transform.parent.GetComponent<Room>();
InventoryManager inventoryManager = InventoryManager.Instance;
LifeStoneManager lifeStoneManager = LifeStoneManager.Instance;
float probability = Random.Range(0f, 100f);
Vector3[] itemPosition = new Vector3[6];
int j = 0;
foreach (Transform child in transform.Find("item spot"))
......@@ -74,19 +74,20 @@ public class GoldRoomInGame : RoomInGame {
int goldRoomIndex = room.stage;
int random = Random.Range(0, goldRoomInformation[goldRoomIndex].itemSpawnInfo.Count);
GoldRoomItemInfo itemInfo = goldRoomInformation[goldRoomIndex].itemSpawnInfo[random];
itemGoods = new GameObject[itemInfo.itemType.Length];
int itemCount = 0;
for (int i = 0; i < itemInfo.itemType.Length; i++)
{
if (itemInfo.itemType[i] == ItemSpawnType.Item)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " price" + itemInfo.price[i]);
inventoryManager.ItemInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], 0);
inventoryManager.ItemInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], itemInfo.price[i], 0);
Debug.Log("done");
}
else if (itemInfo.itemType[i] == ItemSpawnType.Addon)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " price" + itemInfo.price[i]);
inventoryManager.AddonInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], 0);
inventoryManager.AddonInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], itemInfo.price[i], 0);
Debug.Log("done");
}
else if (itemInfo.itemType[i] == ItemSpawnType.GoldPotion)
......@@ -100,13 +101,13 @@ public class GoldRoomInGame : RoomInGame {
if (itemInfo.itemQuality[i] == ItemQuality.Gold)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " price" + itemInfo.price[i]);
lifeStoneManager.InstantiateDroppedLifeStone(6, 1, 0, itemPosition[itemCount++], 0);
lifeStoneManager.InstantiateDroppedLifeStone(new Vector2Int(3, 2), 1, 0, itemPosition[itemCount++], itemInfo.price[i], 0);
Debug.Log("done");
}
else
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " price" + itemInfo.price[i]);
lifeStoneManager.InstantiateDroppedLifeStone(6, 0, 0, itemPosition[itemCount++], 0);
lifeStoneManager.InstantiateDroppedLifeStone(new Vector2Int(3, 2), 0, 0, itemPosition[itemCount++], itemInfo.price[i], 0);
Debug.Log("done");
}
}
......
......@@ -74,10 +74,8 @@ public class ItemRoomInGame : RoomInGame {
int j = 0;
foreach (Transform child in transform.Find("item spot"))
itemPosition[j++] = child.transform.position;
int itemRoomIndex = room.itemRoomType;
if (itemRoomIndex > 5)
itemRoomIndex = 5;
for(int index = 0; index < itemRoomInformation[itemRoomIndex - 1].itemSpawnInfo.Count; index++)
int itemRoomIndex = room.itemRoomType > 5 ? 5 : room.itemRoomType;
for (int index = 0; index < itemRoomInformation[itemRoomIndex - 1].itemSpawnInfo.Count; index++)
{
ItemRoomItemInfo itemInfo = itemRoomInformation[itemRoomIndex - 1].itemSpawnInfo[index];
probability -= itemInfo.probability;
......@@ -92,19 +90,19 @@ public class ItemRoomInGame : RoomInGame {
for(int _amount = 0; _amount < itemInfo.amount[i]; _amount++)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " amount" + itemInfo.amount[i]);
inventoryManager.ItemInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], 1);
inventoryManager.ItemInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], 0);
}
else if (itemInfo.itemType[i] == ItemSpawnType.Addon)
for (int _amount = 0; _amount < itemInfo.amount[i]; _amount++)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " amount" + itemInfo.amount[i]);
inventoryManager.AddonInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], 1);
inventoryManager.AddonInstantiate(itemInfo.itemQuality[i], itemPosition[itemCount++], 0);
}
else if (itemInfo.itemType[i] == ItemSpawnType.GoldPotion)
for (int _amount = 0; _amount < itemInfo.amount[i]; _amount++)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " amount" + itemInfo.amount[i]);
lifeStoneManager.InstantiatePotion(itemPosition[itemCount++], 1);
lifeStoneManager.InstantiatePotion(itemPosition[itemCount++], 0);
}
else if (itemInfo.itemType[i] == ItemSpawnType.LifeStone)
{
......@@ -114,18 +112,18 @@ public class ItemRoomInGame : RoomInGame {
if(itemInfo.itemQuality[i] == ItemQuality.Gold)
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " amount" + itemInfo.amount[i]);
lifeStoneManager.InstantiateDroppedLifeStone(4, 1, 0, itemPosition[itemCount++], 1);
lifeStoneManager.InstantiateDroppedLifeStone(new Vector2Int(3, 2), 4, 1, 0, itemPosition[itemCount++], 0);
}
else
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " amount" + itemInfo.amount[i]);
lifeStoneManager.InstantiateDroppedLifeStone(3, 0, 0, itemPosition[itemCount++], 1);
lifeStoneManager.InstantiateDroppedLifeStone(new Vector2Int(3, 2), 0, 0, itemPosition[itemCount++], 0);
}
}
else
{
Debug.Log("type" + itemInfo.itemType[i] + " quality" + itemInfo.itemQuality[i] + " amount" + itemInfo.amount[i]);
lifeStoneManager.InstantiateDroppedLifeStone(3 * (room.itemRoomType - 4), 1, 0, itemPosition[itemCount++], 1);
lifeStoneManager.InstantiateDroppedLifeStone(new Vector2Int(3, room.itemRoomType - 4), 1, 0, itemPosition[itemCount++], 0);
}
}
else if (itemInfo.itemType[i] == ItemSpawnType.LifeStoneFrame)
......
......@@ -19,6 +19,7 @@ public class DroppedLifeStone : MonoBehaviour, IPlayerInteraction
/// highlightSprite Objects
/// </summary>
GameObject[] highObj;
public int price = 0;
public void Init(LifeStoneInfo _info, Vector3 pos)
{
......@@ -52,8 +53,16 @@ public class DroppedLifeStone : MonoBehaviour, IPlayerInteraction
}
public void Apply()
{
if(LifeStoneManager.Instance.PushLifeStone(info))
if (LifeStoneManager.Instance.CountType(LifeStoneType.Gold) < price)
{
Debug.Log("Not enough gold");
return;
}
else if (LifeStoneManager.Instance.PushLifeStone(info))
{
LifeStoneManager.Instance.ChangeToNormal(LifeStoneType.Gold, price);
Destroy(gameObject);
}
}
public void HighlightSwitch(bool enabled)
{
......
......@@ -153,6 +153,14 @@ public class LifeStoneManager : Singleton<LifeStoneManager> {
tmpObj.GetComponent<DroppedLifeStone>().Init(info, pos);
PopoutGenerator(tmpObj, popoutStrength);
}
public void InstantiateDroppedLifeStone(Vector2Int size, float goldPer, int ameNum, Vector3 pos, int price, float popoutStrength)
{
GameObject tmpObj = Instantiate(droppedLifeStonePrefab);
tmpObj.transform.SetParent(MapManager.currentRoom.roomInGame.transform);
tmpObj.GetComponent<DroppedLifeStone>().Init(CreateLifeStoneInfo(size, goldPer, ameNum), pos);
PopoutGenerator(tmpObj, popoutStrength);
tmpObj.GetComponent<DroppedLifeStone>().price = price;
}
/// <summary>
/// Randomize LifeStone by size, num, gold probablity, number of ametyst
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment