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

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

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