public void UseItemToCharacter(AllyStatus fromChara, AllyStatus toChara, Item item) { useItemInformationPanel.SetActive(true); useItemSelectCharacterPanelCanvasGroup.interactable = false; useItemSelectCharacterPanel.SetActive(false); if (item.GetItemType() == Item.Type.HPRecovery) { if (toChara.GetHp() == toChara.GetMaxHp()) { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はげんきです。"; } else { toChara.SetHp(toChara.GetHp() + item.GetAmount()); // アイテムを使用した旨を表示 useItemInformationPanel.GetComponentInChildren <Text>().text = fromChara.GetCharacterName() + "は" + item.GetKanjiName() + "を" + toChara.GetCharacterName() + "につかった\n" + toChara.GetCharacterName() + "は" + item.GetAmount() + "かいふくした"; // 持っているアイテム数を減らす fromChara.SetItemNum(item, fromChara.GetItemNum(item) - 1); } } else if (item.GetItemType() == Item.Type.MPRecovery) { if (toChara.GetMp() == toChara.GetMaxMp()) { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "のMPはさいだいだ"; } else { toChara.SetMp(toChara.GetMp() + item.GetAmount()); // アイテムを使用した旨を表示 useItemInformationPanel.GetComponentInChildren <Text>().text = fromChara.GetCharacterName() + "は" + item.GetKanjiName() + "を" + toChara.GetCharacterName() + "につかった\n" + toChara.GetCharacterName() + "はMPを" + item.GetAmount() + "かいふくした"; // 持っているアイテム数を減らす fromChara.SetItemNum(item, fromChara.GetItemNum(item) - 1); } } else if (item.GetItemType() == Item.Type.PoisonRecovery) { if (!toChara.IsPoisonState()) { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はどくではない"; } else { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はどくがなおった"; toChara.SetPoisonState(false); // 持っているアイテム数を減らす fromChara.SetItemNum(item, fromChara.GetItemNum(item) - 1); } } else if (item.GetItemType() == Item.Type.ParalyzeRecovery) { if (!toChara.IsParalyzeState()) { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はしびれではない"; } else { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はしびれからなおった"; toChara.SetParalyze(false); // 持っているアイテム数を減らす fromChara.SetItemNum(item, fromChara.GetItemNum(item) - 1); } } else if (item.GetItemType() == Item.Type.SilentRecovery) { if (!toChara.IsParalyzeState()) { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はちんもくではない"; } else { useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "はちんもくがなおった"; toChara.SetSilence(false); // 持っているアイテム数を減らす fromChara.SetItemNum(item, fromChara.GetItemNum(item) - 1); } } // アイテムを使用したらアイテムを使用する相手のUseItemSelectCharacterPanelの子要素のボタンを全削除 for (int i = useItemSelectCharacterPanel.transform.childCount - 1; i >= 0; i--) { Destroy(useItemSelectCharacterPanel.transform.GetChild(i).gameObject); } // itemPanleButtonListから該当するアイテムを探し数を更新する var itemButton = itemPanelButtonList.Find(obj => obj.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName()); itemButton.transform.Find("Num").GetComponent <Text>().text = fromChara.GetItemNum(item).ToString(); // アイテム数が0だったらボタンとキャラクターステータスからアイテムを削除 if (fromChara.GetItemNum(item) == 0) { // アイテムが0になったら一気にItemPanelに戻す為、UseItemPanel内とUseItemSelectCharacterPanel内でのオブジェクト登録を削除 selectedGameObjectStack.Pop(); selectedGameObjectStack.Pop(); // itemPanelButtonListからアイテムパネルボタンを削除 itemPanelButtonList.Remove(itemButton); // アイテムパネルボタン自身の削除 Destroy(itemButton); // アイテムを渡したキャラクター自身のItemDictionaryからそのアイテムを削除 fromChara.GetItemDictionary().Remove(item); // ItemPanelに戻る為、UseItemPanel内に作ったボタンを全削除 for (int i = useItemPanel.transform.childCount - 1; i >= 0; i--) { Destroy(useItemPanel.transform.GetChild(i).gameObject); } // アイテム数が0になったのでCommandMode.NoItemPassedに変更 currentCommand = CommandMode.NoItemPassed; useItemInformationPanel.transform.SetAsLastSibling(); Input.ResetInputAxes(); } else { // アイテム数が残っている場合はUseItemPanelでアイテムをどうするかの選択に戻る currentCommand = CommandMode.UseItemSelectCharacterPanelToUseItemPanel; useItemInformationPanel.transform.SetAsLastSibling(); Input.ResetInputAxes(); } }
// キャラクターのステータス表示 public void ShowStatus(AllyStatus allyStatus) { currentCommand = CommandMode.StatusPanel; statusPanel.SetActive(true); // キャラクターの名前を表示 characterNameText.text = allyStatus.GetCharacterName(); // タイトルの表示 var text = "レベル\n"; text += "HP\n"; text += "MP\n"; text += "けいけんち\n"; text += "たいちょう\n"; text += "ちから\n"; text += "すばやさ\n"; text += "うたれづよさ\n"; text += "まほうりょく\n"; text += "そうびぶき\n"; text += "そうびよろい\n"; text += "こうげきりょく\n"; text += "ぼうぎょりょく\n"; statusTitleText.text = text; // HPとMPのDivision記号の表示 text = "\n"; text += allyStatus.GetHp() + "\n"; text += allyStatus.GetMp() + "\n"; statusParam1Text.text = text; // ステータスパラメータの表示 text = allyStatus.GetLevel() + "\n"; text += allyStatus.GetMaxHp() + "\n"; text += allyStatus.GetMaxMp() + "\n"; text += allyStatus.GetEarnedExperience() + "\n"; if (!allyStatus.IsPoisonState() && !allyStatus.IsParalyzeState() && !allyStatus.IsSilentState()) { text += "ふつう"; } else { if (allyStatus.IsPoisonState()) { text += "どく"; if (allyStatus.IsParalyzeState()) { text += "、しびれ"; if (allyStatus.IsSilentState()) { text += "、ちんもく"; } } } else if (allyStatus.IsParalyzeState()) { text += "しびれ"; if (allyStatus.IsSilentState()) { text += "、ちんもく"; } } else if (allyStatus.IsSilentState()) { text += "ちんもく"; } } text += "\n"; text += allyStatus.GetPower() + "\n"; text += allyStatus.GetAgility() + "\n"; text += allyStatus.GetStrikingStrength() + "\n"; text += allyStatus.GetMagicPower() + "\n"; text += allyStatus?.GetEquipWeapon()?.GetKanjiName() ?? ""; text += "\n"; text += allyStatus.GetEquipArmor()?.GetKanjiName() ?? ""; text += "\n"; text += allyStatus.GetPower() + (allyStatus.GetEquipWeapon()?.GetAmount() ?? 0) + "\n"; text += allyStatus.GetStrikingStrength() + (allyStatus.GetEquipArmor()?.GetAmount() ?? 0) + "\n"; statusParam2Text.text = text; }