public void UseItem() { if (PlayerActManager.Instance.CurrentBehaviour != CharacterBehaviour.Idle) return; ItemData data = selectedItemToggle.CurrentItem.OriginalItemData; switch (data.ItemType) { case "Weapon": PlayerEquipment.Instance.EquipWeapon(data.ItemCode); break; case "Accesorie": AccesorieData accesorieData = ItemDB.Instance.GetAccesorieData(data.ItemCode); if (accesorieData.AccesorieType.Equals("Ring")) PlayerEquipment.Instance.EquipAccesorie_Ring(accesorieData); else if (accesorieData.AccesorieType.Equals("Necklace")) PlayerEquipment.Instance.EquipAccesorie_Necklace(accesorieData); break; case "Expendable": ExpendableData expendableData = ItemDB.Instance.GetExpendableData(data.ItemCode); PlayerBuffer.Instance.ApplyStatEffectByExpendable(expendableData); PlayerInventory.Instance.RemoveItemFromInventory(expendableData.ItemCode, 1); quickSlotPanel.Refresh(); break; } quickSlotPanel.Refresh(); inventoryPanel.RefreshPlayerInfoPanel(); RefreshInventoryPanel(); }
private void EquipmentSelected(EquipmentSelectToggle selectToggle) { EquipmentPanel.allowSwitchOff = false; currentToggle = selectToggle; inventoryPanel.DeselectAllItemTableToggles(); inventoryPanel.ResetItemInteractPanel(); string itemType = selectToggle.CurrentItem.ItemType; switch (itemType) { case "Weapon": WeaponData weapon = ItemDB.Instance.GetWeaponData(selectToggle.CurrentItem.ItemCode); inventoryPanel.RefreshItemIntroduce(selectToggle.CurrentItem.Name, selectToggle.CurrentItem.Introduce, weapon.WeaponStat); break; case "Accesorie": AccesorieData accesorie = ItemDB.Instance.GetAccesorieData(selectToggle.CurrentItem.ItemCode); inventoryPanel.RefreshItemIntroduce(selectToggle.CurrentItem.Name, selectToggle.CurrentItem.Introduce, accesorie.AccesorieStat); break; case "Expendable": ExpendableData expendable = ItemDB.Instance.GetExpendableData(selectToggle.CurrentItem.ItemCode); inventoryPanel.RefreshItemIntroduce(selectToggle.CurrentItem.Name, selectToggle.CurrentItem.Introduce, expendable.Effects); break; case "Etc": inventoryPanel.RefreshItemIntroduce(selectToggle.CurrentItem.Name, selectToggle.CurrentItem.Introduce); break; } inventoryPanel.ActiveUnEquipBtn(); }
// 아이템 토글이 선택되었을 시 Toggle->Panel로 호출되는 Callback private void ItemSelected(InventoryItemSelectToggle selectToggle, string itemType) { contentsView.allowSwitchOff = false; inventoryPanel.DeselectAllEquipmentToggles(); inventoryPanel.ResetItemInteractPanel(); selectedItemToggle = selectToggle; ItemData item = selectToggle.CurrentItem.OriginalItemData; inventoryPanel.ActiveSellItemBtn(); ItemSellPrice.text = $"판매 가격 : 개당 <color=yellow>{item.SellPrice}</color> 원"; switch (itemType) { case "Weapon": WeaponData weapon = ItemDB.Instance.GetWeaponData(item.ItemCode); inventoryPanel.RefreshItemIntroduce(item.Name, item.Introduce, weapon.WeaponStat); inventoryPanel.ActiveQuickSlotBtn(); inventoryPanel.ActiveUseItemBtn(); break; case "Accesorie": AccesorieData accesorie = ItemDB.Instance.GetAccesorieData(item.ItemCode); inventoryPanel.RefreshItemIntroduce(item.Name, item.Introduce, accesorie.AccesorieStat); inventoryPanel.ActiveUseItemBtn(); break; case "Expendable": ExpendableData expendable = ItemDB.Instance.GetExpendableData(item.ItemCode); inventoryPanel.RefreshItemIntroduce(item.Name, item.Introduce, expendable.Effects); inventoryPanel.ActiveQuickSlotBtn(); inventoryPanel.ActiveUseItemBtn(); break; case "Etc": inventoryPanel.RefreshItemIntroduce(item.Name, item.Introduce); break; } }
public void SelectSlot() { if (PlayerActManager.Instance.CurrentBehaviour == CharacterBehaviour.Idle || PlayerActManager.Instance.CurrentBehaviour == CharacterBehaviour.Move || PlayerActManager.Instance.CurrentBehaviour == CharacterBehaviour.Jump) { switch (currentMode) { case QuickSlotMode.AttachItem: SlotPanel.FoundSameItemAndEmpty(waitAttachItem.OriginalItemData.ItemCode); slotItem = waitAttachItem; PlayerQuickSlot.Instance.ItemsInSlot[SlotIndex] = slotItem.OriginalItemData.ItemCode; SlotPanel.CancelAttachItem(); Refresh(); break; case QuickSlotMode.UseItem: if (slotItem == null) { return; } ItemData data = slotItem.OriginalItemData; switch (data.ItemType) { case "Weapon": PlayerEquipment.Instance.EquipWeapon(data.ItemCode); break; case "Accesorie": AccesorieData accesorieData = ItemDB.Instance.GetAccesorieData(data.ItemCode); if (accesorieData.AccesorieType.Equals("Ring")) { PlayerEquipment.Instance.EquipAccesorie_Ring(accesorieData); } else if (accesorieData.AccesorieType.Equals("Necklace")) { PlayerEquipment.Instance.EquipAccesorie_Necklace(accesorieData); } break; case "Expendable": ExpendableData expendableData = ItemDB.Instance.GetExpendableData(data.ItemCode); PlayerBuffer.Instance.ApplyStatEffectByExpendable(expendableData); PlayerInventory.Instance.RemoveItemFromInventory(expendableData.ItemCode, 1); break; } SlotPanel.Refresh(); break; } } }
public ExpendableData GetExpendableData(int itemCode) { ExpendableData foundData = null; bool isSuccess = expendableDatas.TryGetValue(itemCode, out foundData); if (isSuccess) { return(foundData); } else { Debug.Log($"{itemCode}아이템을 찾을 수 없습니다."); return(null); } }
public void ApplyStatEffectByExpendable(ExpendableData data) { ExpendableEffect[] effects = data.Effects; for (int i = 0; i < effects.Length; ++i) { switch (effects[i].StatName) { case "HealthPoint": PlayerStat.Instance.Heal(effects[i].StatAmount); break; case "WorkPoint": PlayerStat.Instance.RecoverWorkPoint(effects[i].StatAmount); break; } } PlayerActManager.Instance.UsePotion(); }
public string LoadItemDB() { string weaponQuery = $"SELECT * FROM dbo.Weapon"; DataSet weaponDataset = ConnectDB_GetDataSet("Item_DB", weaponQuery); if (weaponDataset == null) { return("Fail"); } DataRowCollection weaponRow = weaponDataset.Tables[0].Rows; for (int i = 0; i < weaponRow.Count; ++i) { object[] items = weaponRow[i].ItemArray; string jsonSTR = items[1].ToString(); WeaponData newWeapon = JsonUtility.FromJson <WeaponData>(jsonSTR); ItemDB.Instance.ContainWeaponData(newWeapon); } string expendableQuery = $"SELECT * FROM dbo.Expendable"; DataSet expendableDataset = ConnectDB_GetDataSet("Item_DB", expendableQuery); if (expendableDataset == null) { return("Fail"); } DataRowCollection expendableRow = expendableDataset.Tables[0].Rows; for (int i = 0; i < expendableRow.Count; ++i) { object[] items = expendableRow[i].ItemArray; string jsonSTR = items[1].ToString(); ExpendableData newExpendable = JsonUtility.FromJson <ExpendableData>(jsonSTR); ItemDB.Instance.ContainExpandableData(newExpendable); } string accesorieQuery = $"SELECT * FROM dbo.Accesorie"; DataSet accesorieDataset = ConnectDB_GetDataSet("Item_DB", accesorieQuery); if (accesorieDataset == null) { return("Fail"); } DataRowCollection accesorieRow = accesorieDataset.Tables[0].Rows; for (int i = 0; i < accesorieRow.Count; ++i) { object[] items = accesorieRow[i].ItemArray; string jsonSTR = items[1].ToString(); AccesorieData newAccesorie = JsonUtility.FromJson <AccesorieData>(jsonSTR); ItemDB.Instance.ContainAccesorieData(newAccesorie); } string etcQuery = $"SELECT * FROM dbo.Etc"; DataSet etcDataset = ConnectDB_GetDataSet("Item_DB", etcQuery); if (etcDataset == null) { return("Fail"); } DataRowCollection etcRow = etcDataset.Tables[0].Rows; for (int i = 0; i < etcRow.Count; ++i) { object[] items = etcRow[i].ItemArray; string jsonSTR = items[1].ToString(); EtcData newETC = JsonUtility.FromJson <EtcData>(jsonSTR); ItemDB.Instance.ContainEtcData(newETC); } return("Success"); }
private void RefreshPanel() { BuyMultipleBtns.gameObject.SetActive(false); try { Texture2D tex = AssetBundleCacher.Instance.LoadAndGetAsset("itempreview", currentItemData.Name) as Texture2D; ItemImage.sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); } catch (Exception) { ItemImage.sprite = null; } ItemName.text = currentItemData.Name; ItemIntroduce.text = currentItemData.Introduce; StringBuilder builder = new StringBuilder(); switch (currentItemData.ItemType) { case "Weapon": WeaponData weapon = ItemDB.Instance.GetWeaponData(currentItemData.ItemCode); StatAdditional[] weaponStat = weapon.WeaponStat; for (int i = 1; i < weaponStat.Length + 1; ++i) { builder.Append($"{UIText_Util.Instance.GetKorStatByEng(weaponStat[i - 1].StatName)} +{weaponStat[i - 1].StatValue}"); if (i % 2 != 0) { builder.Append(" "); } else { builder.AppendLine(); } } ItemStat.text = builder.ToString(); break; case "Accesorie": AccesorieData accesorie = ItemDB.Instance.GetAccesorieData(currentItemData.ItemCode); StatAdditional[] accesorieStat = accesorie.AccesorieStat; for (int i = 1; i < accesorieStat.Length + 1; ++i) { builder.Append($"{UIText_Util.Instance.GetKorStatByEng(accesorieStat[i - 1].StatName)} +{accesorieStat[i - 1].StatValue}"); if (i % 2 != 0) { builder.Append(" "); } else { builder.AppendLine(); } } ItemStat.text = builder.ToString(); break; case "Expendable": BuyMultipleBtns.gameObject.SetActive(true); ExpendableData expendable = ItemDB.Instance.GetExpendableData(currentItemData.ItemCode); ExpendableEffect[] effects = expendable.Effects; for (int i = 0; i < effects.Length; ++i) { string duration = string.Empty; if (effects[i].EffectDuration == 0) { duration = "<color=cyan>즉시 발동</color>"; } else { duration = $"<color=green>{effects[i].EffectDuration.ToString()}초 지속</color>"; } builder.Append($"{UIText_Util.Instance.GetKorStatByEng(effects[i].StatName)} +{effects[i].StatAmount} {duration}"); builder.AppendLine(); } ItemStat.text = builder.ToString(); break; case "Etc": BuyMultipleBtns.gameObject.SetActive(true); ItemStatTitle.gameObject.SetActive(false); ItemStat.gameObject.SetActive(false); break; } ItemPrice.text = $"{currentShopItemInfo.Price} 원"; PlayerGold.text = $"소지금 : {PlayerStat.Instance.GetStat("Gold")} 원"; }
public void ContainExpandableData(ExpendableData data) { expendableDatas.Add(data.ItemCode, data); }