Commit a933f47b authored by 18손재민's avatar 18손재민

아이템 방 작동 방식 완전히 뜯어고침 상점 wip

parent 65f7d3f7
This diff is collapsed.
......@@ -30,7 +30,9 @@ public enum ItemQuality
Study,
Ordinary,
Superior,
Masterpiece
Masterpiece,
Gold,
None
}
public enum AddonType
......@@ -48,12 +50,17 @@ public enum LifeStoneType
Amethyst=3
}
public enum ItemSpawnType
{
LifeStone, GoldPotion, Item, Addon, LifeStoneFrame
}
public enum ItemType
{
None, OneStone, TwoStone, ThreeStone, FourStone,
FiveStone, GoldPotion, AmethystPotion, StudyItem, OrdinaryItem,
SuperiorItem, MasterPieceItem, StudyAdd, OrdinaryAdd, SuperiorAdd,
MasterpieceAdd
MasterpieceAdd, LifeStoneFrame
}
public enum PlayerState { Idle, Walk, Run, GoingUp, GoingDown, Rope, Attack }
......
......@@ -988,7 +988,73 @@ public class MapManager : Singleton<MapManager> {
Tetrimino.rotationInformation[5].horizontalLength = new int[4] { 3, 2, 3, 2 }; //S
Tetrimino.rotationInformation[6].horizontalLength = new int[4] { 3, 2, 3, 2 }; //Z
Tetrimino.rotationInformation[7].horizontalLength = new int[4] { 1, 1, 1, 1 }; //Boss
for (int i = 0; i < tetrisYCoord.Length; i++)
ItemRoomInGame.itemRoomInformation[0] = new RoomItemInfo(
new ItemSpawnInfo[8]
{
new ItemSpawnInfo(12.5f, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.GoldPotion },
new ItemQuality[2] { ItemQuality.Ordinary, ItemQuality.None }, new int[2] { 1, 2 }),
new ItemSpawnInfo(12.5f, new ItemSpawnType[2] { ItemSpawnType.Addon, ItemSpawnType.GoldPotion },
new ItemQuality[2] { ItemQuality.Ordinary, ItemQuality.None }, new int[2] { 1, 2 }),
new ItemSpawnInfo(12.5f, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.LifeStone },
new ItemQuality[2] { ItemQuality.Ordinary, ItemQuality.Gold }, new int[2] { 1, 1 }),
new ItemSpawnInfo(12.5f, new ItemSpawnType[2] { ItemSpawnType.Addon, ItemSpawnType.LifeStone },
new ItemQuality[2] { ItemQuality.Ordinary, ItemQuality.Gold }, new int[2] { 1, 1 }),
new ItemSpawnInfo(17, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.Addon },
new ItemQuality[2] { ItemQuality.Ordinary, ItemQuality.Ordinary }, new int[2] { 1, 1 }),
new ItemSpawnInfo(25, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.Addon },
new ItemQuality[2] { ItemQuality.Ordinary, ItemQuality.Study }, new int[2] { 1, 1 }),
new ItemSpawnInfo(4, new ItemSpawnType[1] { ItemSpawnType.Item },
new ItemQuality[1] { ItemQuality.Superior }, new int[1] { 1 }),
new ItemSpawnInfo(4, new ItemSpawnType[1] { ItemSpawnType.Addon },
new ItemQuality[1] { ItemQuality.Superior }, new int[1] { 1 })
});
ItemRoomInGame.itemRoomInformation[1] = new RoomItemInfo(
new ItemSpawnInfo[7]
{
new ItemSpawnInfo(10, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.GoldPotion },
new ItemQuality[2] { ItemQuality.Superior, ItemQuality.None }, new int[2] { 1, 3 }),
new ItemSpawnInfo(10, new ItemSpawnType[2] { ItemSpawnType.Addon, ItemSpawnType.GoldPotion },
new ItemQuality[2] { ItemQuality.Superior, ItemQuality.None }, new int[2] { 1, 3 }),
new ItemSpawnInfo(20, new ItemSpawnType[3] { ItemSpawnType.Addon, ItemSpawnType.Addon, ItemSpawnType.Addon },
new ItemQuality[3] { ItemQuality.Superior, ItemQuality.Ordinary, ItemQuality.Study }, new int[3] { 1, 1, 1 }),
new ItemSpawnInfo(20, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.Addon },
new ItemQuality[2] { ItemQuality.Superior, ItemQuality.Study }, new int[2] { 1, 2 }),
new ItemSpawnInfo(20, new ItemSpawnType[3] { ItemSpawnType.Item, ItemSpawnType.Addon, ItemSpawnType.LifeStone },
new ItemQuality[3] { ItemQuality.Superior, ItemQuality.Ordinary, ItemQuality.None }, new int[3] { 1, 1, 3 }),
new ItemSpawnInfo(10, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.LifeStone },
new ItemQuality[2] { ItemQuality.Superior, ItemQuality.None }, new int[2] { 1, 3 }),
new ItemSpawnInfo(10, new ItemSpawnType[2] { ItemSpawnType.Addon, ItemSpawnType.LifeStone },
new ItemQuality[2] { ItemQuality.Superior, ItemQuality.None }, new int[2] { 1, 3 })
});
ItemRoomInGame.itemRoomInformation[2] = new RoomItemInfo(
new ItemSpawnInfo[4]
{
new ItemSpawnInfo(33.5f, new ItemSpawnType[4] { ItemSpawnType.Item, ItemSpawnType.Addon, ItemSpawnType.Item, ItemSpawnType.GoldPotion },
new ItemQuality[4] { ItemQuality.Superior, ItemQuality.Superior, ItemQuality.Ordinary, ItemQuality.None }, new int[4] { 1, 1, 1, 1 }),
new ItemSpawnInfo(33.5f, new ItemSpawnType[4] { ItemSpawnType.Item, ItemSpawnType.Addon, ItemSpawnType.Addon, ItemSpawnType.GoldPotion },
new ItemQuality[4] { ItemQuality.Superior, ItemQuality.Superior, ItemQuality.Ordinary, ItemQuality.None }, new int[4] { 1, 1, 1, 1 }),
new ItemSpawnInfo(16.5f, new ItemSpawnType[1] { ItemSpawnType.Item },
new ItemQuality[1] { ItemQuality.Masterpiece }, new int[1] { 1 }),
new ItemSpawnInfo(16.5f, new ItemSpawnType[1] { ItemSpawnType.Addon },
new ItemQuality[1] { ItemQuality.Masterpiece }, new int[1] { 1 })
});
ItemRoomInGame.itemRoomInformation[3] = new RoomItemInfo(
new ItemSpawnInfo[2]
{
new ItemSpawnInfo(50, new ItemSpawnType[2] { ItemSpawnType.Item, ItemSpawnType.GoldPotion },
new ItemQuality[2] { ItemQuality.Masterpiece, ItemQuality.None }, new int[2] { 1, 2 }),
new ItemSpawnInfo(50, new ItemSpawnType[2] { ItemSpawnType.Addon, ItemSpawnType.GoldPotion },
new ItemQuality[2] { ItemQuality.Masterpiece, ItemQuality.None }, new int[2] { 1, 2 })
});
ItemRoomInGame.itemRoomInformation[4] = new RoomItemInfo(
new ItemSpawnInfo[2]
{
new ItemSpawnInfo(50, new ItemSpawnType[3] { ItemSpawnType.Item, ItemSpawnType.LifeStoneFrame, ItemSpawnType.LifeStone },
new ItemQuality[3] { ItemQuality.Masterpiece, ItemQuality.None, ItemQuality.Gold }, new int[3] { 1, 1, 1 }),
new ItemSpawnInfo(50, new ItemSpawnType[3] { ItemSpawnType.Addon, ItemSpawnType.LifeStoneFrame, ItemSpawnType.LifeStone },
new ItemQuality[3] { ItemQuality.Masterpiece, ItemQuality.None, ItemQuality.Gold }, new int[3] { 1, 1, 1 })
});
for (int i = 0; i < tetrisYCoord.Length; i++)
tetrisYCoord[i] = i * tetrisMapSize;
for (int i = 0; i < isRowDeleting.Length; i++)
isRowDeleting[i] = false;
......
......@@ -4,21 +4,39 @@ using UnityEngine;
public class ItemSpawnInfo
{
ItemType itemType;
int amount;
bool isGold;
public ItemSpawnInfo(ItemType _itemType, int _amount)
{
itemType = _itemType;
amount = _amount;
isGold = false;
}
public ItemSpawnInfo(ItemType _itemType, int _amount, bool _isGold)
{
itemType = _itemType;
amount = _amount;
isGold = _isGold;
}
public float probability;
public ItemSpawnType[] itemType;
public ItemQuality[] itemQuality;
public int[] amount;
public ItemSpawnInfo(float _probability, ItemSpawnType[] _itemType, ItemQuality[] _itemQuality, int[] _amount)
{
probability = _probability;
itemType = new ItemSpawnType[4];
itemQuality = new ItemQuality[4];
amount = new int[4];
for (int i = 0; i < _itemType.Length; i++)
{
itemType[i] = _itemType[i];
itemQuality[i] = _itemQuality[i];
amount[i] = _amount[i];
}
}
}
public class RoomItemInfo
{
public List<ItemSpawnInfo> itemSpawnInfo = new List<ItemSpawnInfo>();
public RoomItemInfo()
{
}
public RoomItemInfo(ItemSpawnInfo[] _itemSpawnInfo)
{
for (int i = 0; i < _itemSpawnInfo.Length; i++)
{
itemSpawnInfo.Add(_itemSpawnInfo[i]);
}
}
}
public class RoomInGame : MonoBehaviour {
......
......@@ -3,161 +3,80 @@ using System.Collections.Generic;
using UnityEngine;
public class ItemRoomInGame : RoomInGame {
List<ItemSpawnInfo> itemSpawnInfo = new List<ItemSpawnInfo>();
public void SpawnItem()
{
}
public static RoomItemInfo[] itemRoomInformation = new RoomItemInfo[5];
public void SpawnItem()
{
Room room = transform.parent.GetComponent<Room>();
InventoryManager inventoryManager = InventoryManager.Instance;
LifeStoneManager lifeStoneManager = LifeStoneManager.Instance;
float probability = Random.Range(0f, 100f);
Vector3[] itemPosition = new Vector3[5];
int j = 0;
foreach (Transform child in transform.Find("item spot"))
itemPosition[j++] = child.transform.position;
int itemRoomType = room.itemRoomType;
foreach(ItemSpawnInfo child in itemRoomInformation[itemRoomType - 1].itemSpawnInfo)
{
probability -= child.probability;
if(probability <= 0)
{
int itemCount = 0;
for(int i = 0; i < child.itemType.Length; i++)
{
if (child.itemType[i] == ItemSpawnType.Item)
for(int _amount = 0; _amount < child.amount[i]; _amount++)
{
Debug.Log("type" + child.itemType[i] + " quality" + child.itemQuality[i] + " amount" + child.amount[i]);
inventoryManager.ItemInstantiate(child.itemQuality[i], itemPosition[itemCount++], 1);
}
else if (child.itemType[i] == ItemSpawnType.Addon)
for (int _amount = 0; _amount < child.amount[i]; _amount++)
{
Debug.Log("type" + child.itemType[i] + " quality" + child.itemQuality[i] + " amount" + child.amount[i]);
inventoryManager.AddonInstantiate(child.itemQuality[i], itemPosition[itemCount++], 1);
}
else if (child.itemType[i] == ItemSpawnType.GoldPotion)
for (int _amount = 0; _amount < child.amount[i]; _amount++)
{
Debug.Log("type" + child.itemType[i] + " quality" + child.itemQuality[i] + " amount" + child.amount[i]);
lifeStoneManager.InstantiatePotion(itemPosition[itemCount++], 1);
}
else if (child.itemType[i] == ItemSpawnType.LifeStone)
{
if(room.itemRoomType <= 4)
for (int _amount = 0; _amount < child.amount[i]; _amount++)
{
if(child.itemQuality[i] == ItemQuality.Gold)
{
Debug.Log("type" + child.itemType[i] + " quality" + child.itemQuality[i] + " amount" + child.amount[i]);
lifeStoneManager.InstantiateDroppedLifeStone(4, 1, 0, itemPosition[itemCount++], 1);
}
else
{
Debug.Log("type" + child.itemType[i] + " quality" + child.itemQuality[i] + " amount" + child.amount[i]);
lifeStoneManager.InstantiateDroppedLifeStone(3, 0, 0, itemPosition[itemCount++], 1);
}
}
else
{
Debug.Log("type" + child.itemType[i] + " quality" + child.itemQuality[i] + " amount" + child.amount[i]);
lifeStoneManager.InstantiateDroppedLifeStone(3 * room.itemRoomType - 4, 1, 0, itemPosition[itemCount++], 1);
}
}
else if (child.itemType[i] == ItemSpawnType.LifeStoneFrame)
lifeStoneManager.ExpandRow(room.itemRoomType - 4);
}
return;
}
}
}
public override void RoomEnter()
{
base.RoomEnter();
Room room = transform.parent.GetComponent<Room>();
InventoryManager inventoryManager = InventoryManager.Instance;
LifeStoneManager lifeStoneManager = LifeStoneManager.Instance;
int probability = Random.Range(0, 100);
Vector3[] itemPosition = new Vector3[5];
int i = 0;
foreach(Transform child in transform.Find("item spot"))
itemPosition[i++] = child.transform.position;
switch (room.itemRoomType)
{
case 1:
if (probability < 25)
{
if (probability % 2 == 0)
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryItem, 1));
else
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryAdd, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.GoldPotion, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.GoldPotion, 1));
}
else if (25 <= probability && probability < 50)
{
if (probability % 2 == 0)
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryItem, 1));
else
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryAdd, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.FourStone, 1, true));
}
else if (50 <= probability && probability < 67)
{
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryItem, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryAdd, 1));
}
else if (67 <= probability && probability < 92)
{
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryItem, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.StudyAdd, 1));
}
else
{
if (probability % 2 == 0)
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.SuperiorItem, 1));
else
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.SuperiorAdd, 1));
}
break;
case 2:
if (probability % 5 == 0)
{
if (probability % 2 == 0)
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.SuperiorItem, 1));
else
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.SuperiorAdd, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.GoldPotion, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.GoldPotion, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.GoldPotion, 1));
}
else if (probability % 5 == 1)
{
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.SuperiorAdd, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.OrdinaryAdd, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.StudyAdd, 1));
}
else if (probability % 5 == 2)
{
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.SuperiorItem, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.StudyAdd, 1));
itemSpawnInfo.Add(new ItemSpawnInfo(ItemType.StudyAdd, 1));
}
else if (probability % 5 == 3)
{
inventoryManager.ItemInstantiate(ItemQuality.Superior, itemPosition[0], 1);
inventoryManager.AddonInstantiate(ItemQuality.Ordinary, itemPosition[1], 1);
lifeStoneManager.InstantiateDroppedLifeStone(3, 0, 0, itemPosition[2], 1);
}
else if (probability % 5 == 4)
{
if (probability % 2 == 0)
inventoryManager.ItemInstantiate(ItemQuality.Superior, itemPosition[0], 1);
else
inventoryManager.AddonInstantiate(ItemQuality.Superior, itemPosition[0], 1);
lifeStoneManager.InstantiateDroppedLifeStone(3, 0, 0, itemPosition[1], 1);
lifeStoneManager.InstantiateDroppedLifeStone(3, 0, 0, itemPosition[2], 1);
lifeStoneManager.InstantiateDroppedLifeStone(3, 0, 0, itemPosition[3], 1);
}
break;
case 3:
if (probability < 67)
{
if (probability % 2 == 0)
inventoryManager.ItemInstantiate(ItemQuality.Ordinary, itemPosition[0], 1);
else
inventoryManager.AddonInstantiate(ItemQuality.Ordinary, itemPosition[0], 1);
inventoryManager.ItemInstantiate(ItemQuality.Superior, itemPosition[1], 1);
inventoryManager.AddonInstantiate(ItemQuality.Superior, itemPosition[2], 1);
lifeStoneManager.InstantiatePotion(itemPosition[3], 1);
}
else
{
if (probability % 2 == 0)
inventoryManager.ItemInstantiate(ItemQuality.Masterpiece, itemPosition[0], 1);
else
inventoryManager.AddonInstantiate(ItemQuality.Masterpiece, itemPosition[0], 1);
}
break;
case 4:
if (probability % 2 == 0)
inventoryManager.ItemInstantiate(ItemQuality.Masterpiece, itemPosition[0], 1);
else
inventoryManager.AddonInstantiate(ItemQuality.Masterpiece, itemPosition[0], 1);
lifeStoneManager.InstantiatePotion(itemPosition[1], 1);
lifeStoneManager.InstantiatePotion(itemPosition[2], 1);
break;
default:
if (probability % 2 == 0)
inventoryManager.ItemInstantiate(ItemQuality.Masterpiece, itemPosition[0], 1);
else
inventoryManager.AddonInstantiate(ItemQuality.Masterpiece, itemPosition[0], 1);
lifeStoneManager.InstantiateDroppedLifeStone(3 * room.itemRoomType - 4, 0, 0, itemPosition[1], 1);
lifeStoneManager.ExpandRow(room.itemRoomType - 4);
break;
}
SpawnItem();
/*switch (room.itemRoomType)
{
......
......@@ -26,8 +26,12 @@ public class Test : MonoBehaviour {
{
if(MapManager.currentStage < 5)
MapManager.currentStage += 1;
}
public void Gold()
}
public void Item()
{
MapManager.Instance.UpgradeRoom(RoomType.Item);
}
public void Gold()
{
MapManager.Instance.UpgradeRoom(RoomType.Gold);
}
......
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