Ejemplo n.º 1
0
    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();
        }
    }
Ejemplo n.º 2
0
    // キャラクターのステータス表示
    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;
    }