Пример #1
0
 public void RemoveAllyStatus(AllyStatus PlayerStatus)
 {
     if (partyMembers.Contains(PlayerStatus))
     {
         partyMembers.Remove(PlayerStatus);
     }
 }
Пример #2
0
    // キャラクターが持っているアイテムのボタン表示
    public void CreateItemPanelButton(AllyStatus allyStatus)
    {
        itemInformationPanel.SetActive(true);
        selectCharacterPanelCanvasGroup.interactable = false;

        // アイテムパネルボタンを何個作成したかどうか
        int        itemPanelButtonNum = 0;
        GameObject itemButtonIns;

        // 選択したキャラクターのアイテム数分アイテムパネルボタンを作成
        // 持っているアイテム分のボタンの作成とクリック時の実行メソッドの設定
        foreach (var item in allyStatus.GetItemDictionary().Keys)
        {
            itemButtonIns = content.transform.GetChild(itemPanelButtonNum).gameObject;
            itemButtonIns.SetActive(true);
            itemButtonIns.transform.Find("ItemName").GetComponent <Text>().text = item.GetKanjiName();
            itemButtonIns.GetComponent <Button>().onClick.RemoveAllListeners();
            itemButtonIns.GetComponent <Button>().onClick.AddListener(() => SelectItem(allyStatus, item));
            itemButtonIns.GetComponent <ItemPanelButton>().SetParam(item);

            // アイテム数を表示
            itemButtonIns.transform.Find("Num").GetComponent <Text>().text = allyStatus.GetItemNum(item).ToString();

            // 装備している武器や防具には名前の前にEを表示し、そのTextを保持して置く
            if (allyStatus.GetEquipWeapon() == item)
            {
                itemButtonIns.transform.Find("Equip").GetComponent <Text>().text = "E";
            }
            else if (allyStatus.GetEquipArmor() == item)
            {
                itemButtonIns.transform.Find("Equip").GetComponent <Text>().text = "E";
            }

            // アイテムパネルボタン番号を更新
            itemPanelButtonNum++;
        }

        for (int i = itemPanelButtonNum; i < content.transform.childCount; i++)
        {
            content.transform.GetChild(i).gameObject.SetActive(false);
        }

        // アイテムパネルの表示と最初のアイテムの選択
        if (itemPanelButtonNum != 0)
        {
            // SelectCharacerPanelで最後にどのゲームオブジェクトを選択していたか
            selectedGameObjectStack.Push(EventSystem.current.currentSelectedGameObject);
            currentCommand = CommandMode.ItemPanel;
            itemPanel.SetActive(true);
            itemPanel.transform.SetAsLastSibling();
            itemPanelCanvasGroup.interactable = true;
            EventSystem.current.SetSelectedGameObject(content.transform.GetChild(0).gameObject);
        }
        else
        {
            informationTitleText.text = "";
            informationText.text      = "アイテムを持っていません。";
            selectCharacterPanelCanvasGroup.interactable = true;
        }
    }
Пример #3
0
    // 装備を外す
    public void RemoveEquip(AllyStatus allyStatus, Item item)
    {
        // アイテムの種類に応じて装備を外す
        if (item.GetItemType() == Item.Type.Armor)
        {
            var equipArmorButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());
            equipArmorButton.transform.Find("Equip").GetComponent <Text>().text = "";
            allyStatus.SetEquipArmor(null);
        }
        else if (item.GetItemType() == Item.Type.Weapon)
        {
            var equipArmorButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());
            equipArmorButton.transform.Find("Equip").GetComponent <Text>().text = "";
            allyStatus.SetEquipWeapon(null);
        }
        // 装備を外した旨を表示
        useItemInformationPanel.GetComponentInChildren <Text>().text = allyStatus.GetCharacterName() + "は" + item.GetKanjiName() + "をはずした";
        // 装備を外したらItemPanelに戻る処理
        useItemPanelCanvasGroup.interactable = false;
        useItemPanel.SetActive(false);
        itemPanelCanvasGroup.interactable = true;
        // ItemPanelに戻るのでUseItemPanelの子要素のボタンを全削除
        for (int i = useItemPanel.transform.childCount - 1; i >= 0; i--)
        {
            Destroy(useItemPanel.transform.GetChild(i).gameObject);
        }

        useItemInformationPanel.transform.SetAsLastSibling();
        useItemInformationPanel.SetActive(true);

        currentCommand = CommandMode.UseItemPanelToItemPanel;
        Input.ResetInputAxes();
    }
Пример #4
0
    //渡す
    public void PassItem(AllyStatus allyStatus, Item item)
    {
        useItemPanelCanvasGroup.interactable = false;
        useItemSelectCharacterPanel.SetActive(true);
        //UseItemPanelでどれを最後に選択していたか
        selectedGameObjectStack.Push(EventSystem.current.currentSelectedGameObject);

        GameObject characterButtonIns;

        //パーティメンバー分のボタンを作成
        foreach (var member in partyStatus.GetAllyStatus())
        {
            if (member != allyStatus)
            {
                characterButtonIns = Instantiate <GameObject>(characterPanelButtonPrefab, useItemSelectCharacterPanel.transform);
                characterButtonIns.GetComponentInChildren <Text>().text = member.GetCharacterName();
                characterButtonIns.GetComponent <Button>().onClick.AddListener(() => PassItemToOtherCharacter(allyStatus, member, item));
            }
        }
        //UseItemSelectCharacterPanelに移行する
        currentCommand = CommandMode.UseItemSelectCharacterPanel;
        useItemSelectCharacterPanel.transform.SetAsLastSibling();
        EventSystem.current.SetSelectedGameObject(useItemSelectCharacterPanel.transform.GetChild(0).gameObject);
        useItemSelectCharacterPanelCanvasGroup.interactable = true;
        Input.ResetInputAxes();
    }
Пример #5
0
 public void SetAllyStatus(AllyStatus allyStatus)
 {
     if (!partyMembers.Contains(allyStatus))
     {
         partyMembers.Add(allyStatus);
     }
 }
Пример #6
0
    //捨てる
    public void ThrowAwayItem(AllyStatus allyStatus, Item item)
    {
        //アイテム数を減らす
        allyStatus.SetItemNum(item, allyStatus.GetItemNum(item) - 1);
        //アイテム数が0になった時
        if (allyStatus.GetItemNum(item) == 0)
        {
            //装備している武器を捨てる場合の処理
            if (item == allyStatus.GetEquipArmor())
            {
                var equipArmorButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());
                equipArmorButton.transform.Find("Equip").GetComponent <Text>().text = "";
                equipArmorButton = null;
                allyStatus.SetEquipArmor(null);
            }
            else if (item == allyStatus.GetEquipWeapon())
            {
                var equipWeaponButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());
                equipWeaponButton.transform.Find("Equip").GetComponent <Text>().text = "";
                equipWeaponButton = null;
                allyStatus.SetEquipWeapon(null);
            }
        }
        //ItemPanelの子要素のアイテムパネルボタンから該当するアイテムのボタンを探して数を更新する
        var itemButton = itemPanelButtonList.Find(obj => obj.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());

        itemButton.transform.Find("Num").GetComponent <Text>().text  = allyStatus.GetItemNum(item).ToString();
        useItemInformationPanel.GetComponentInChildren <Text>().text = item.GetKanjiName() + "を捨てました。";

        //アイテム数が0だったらボタンとキャラクターステータスからアイテムを削除
        if (allyStatus.GetItemNum(item) == 0)
        {
            selectedGameObjectStack.Pop();
            itemPanelButtonList.Remove(itemButton);
            Destroy(itemButton);
            allyStatus.GetItemDictionary().Remove(item);

            currentCommand = CommandMode.NoItemPassed;
            useItemPanelCanvasGroup.interactable = false;
            useItemPanel.SetActive(false);
            useItemInformationPanel.transform.SetAsLastSibling();
            useItemInformationPanel.SetActive(true);
            //ItemPanelに戻る為UseItemPanelの子要素のボタンを全削除
            for (int i = useItemPanel.transform.childCount - 1; i >= 0; i--)
            {
                Destroy(useItemPanel.transform.GetChild(i).gameObject);
            }
        }
        else
        {
            useItemPanelCanvasGroup.interactable = false;
            useItemInformationPanel.transform.SetAsLastSibling();
            useItemInformationPanel.SetActive(true);
            currentCommand = CommandMode.UseItemPanelToUseItemPanel;
        }

        Input.ResetInputAxes();
    }
Пример #7
0
    // アイテムをどうするかの選択
    public void SelectItem(AllyStatus allyStatus, Item item)
    {
        // アイテムの種類に応じて出来る項目を変更する
        if (item.GetItemType() == Item.Type.Armor ||
            item.GetItemType() == Item.Type.Weapon)
        {
            var itemMenuButtonIns = Instantiate <GameObject>(useItemPanelButtonPrefab, useItemPanel.transform);
            if (item == allyStatus.GetEquipWeapon() || item == allyStatus.GetEquipArmor())
            {
                itemMenuButtonIns.GetComponentInChildren <Text>().text = "そうびをはずす";
                itemMenuButtonIns.GetComponent <Button>().onClick.AddListener(() => RemoveEquip(allyStatus, item));
            }
            else
            {
                itemMenuButtonIns.GetComponentInChildren <Text>().text = "そうびする";
                itemMenuButtonIns.GetComponent <Button>().onClick.AddListener(() => Equip(allyStatus, item));
            }

            itemMenuButtonIns = Instantiate <GameObject>(useItemPanelButtonPrefab, useItemPanel.transform);
            itemMenuButtonIns.GetComponentInChildren <Text>().text = "すてる";
            itemMenuButtonIns.GetComponent <Button>().onClick.AddListener(() => ThrowAwayItem(allyStatus, item));
        }
        else if (item.GetItemType() == Item.Type.ParalyzeRecovery ||
                 item.GetItemType() == Item.Type.PoisonRecovery ||
                 item.GetItemType() == Item.Type.SilentRecovery ||
                 item.GetItemType() == Item.Type.HPRecovery ||
                 item.GetItemType() == Item.Type.MPRecovery
                 )
        {
            var itemMenuButtonIns = Instantiate <GameObject>(useItemPanelButtonPrefab, useItemPanel.transform);
            itemMenuButtonIns.GetComponentInChildren <Text>().text = "つかう";
            itemMenuButtonIns.GetComponent <Button>().onClick.AddListener(() => UseItem(allyStatus, item));

            itemMenuButtonIns = Instantiate <GameObject>(useItemPanelButtonPrefab, useItemPanel.transform);
            itemMenuButtonIns.GetComponentInChildren <Text>().text = "すてる";
            itemMenuButtonIns.GetComponent <Button>().onClick.AddListener(() => ThrowAwayItem(allyStatus, item));
        }
        else if (item.GetItemType() == Item.Type.Valuables)
        {
            informationTitleText.text = item.GetKanjiName();
            informationText.text      = item.GetInformation();
        }

        if (item.GetItemType() != Item.Type.Valuables)
        {
            useItemPanel.SetActive(true);
            itemPanelCanvasGroup.interactable = false;
            currentCommand = CommandMode.UseItemPanel;
            // ItemPanelで最後にどれを選択していたか?
            selectedGameObjectStack.Push(EventSystem.current.currentSelectedGameObject);

            useItemPanel.transform.SetAsLastSibling();
            EventSystem.current.SetSelectedGameObject(useItemPanel.transform.GetChild(0).gameObject);
            useItemPanelCanvasGroup.interactable = true;
            Input.ResetInputAxes();
        }
    }
Пример #8
0
    // 装備する
    public void Equip(AllyStatus allyStatus, Item item)
    {
        // キャラクター毎に装備出来る武器や鎧かどうかを調べ装備を切り替える
        if (allyStatus.GetCharacterName() == "ゆうしゃ")
        {
            if (item.GetItemType() == Item.Type.Armor)
            {
                var equipArmorButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());
                equipArmorButton.transform.Find("Equip").GetComponent <Text>().text = "E";
                // 装備している鎧があればItemPanelでEquipのEを外す
                if (allyStatus.GetEquipArmor() != null)
                {
                    equipArmorButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == allyStatus.GetEquipArmor().GetKanjiName());
                    equipArmorButton.transform.Find("Equip").GetComponent <Text>().text = "";
                }
                allyStatus.SetEquipArmor(item);
                useItemInformationPanel.GetComponentInChildren <Text>().text = allyStatus.GetCharacterName() + "は" + item.GetKanjiName() + "をそうびした。";
            }
            else if (item.GetItemType() == Item.Type.Weapon)
            {
                var equipWeaponButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == item.GetKanjiName());
                equipWeaponButton.transform.Find("Equip").GetComponent <Text>().text = "E";
                // 装備している武器があればItemPanelでEquipのEを外す
                if (allyStatus.GetEquipWeapon() != null)
                {
                    equipWeaponButton = itemPanelButtonList.Find(itemPanelButton => itemPanelButton.transform.Find("ItemName").GetComponent <Text>().text == allyStatus.GetEquipWeapon().GetKanjiName());
                    equipWeaponButton.transform.Find("Equip").GetComponent <Text>().text = "";
                }
                allyStatus.SetEquipWeapon(item);
                useItemInformationPanel.GetComponentInChildren <Text>().text = allyStatus.GetCharacterName() + "は" + item.GetKanjiName() + "をそうびした。";
            }
            else
            {
                useItemInformationPanel.GetComponentInChildren <Text>().text = allyStatus.GetCharacterName() + "は" + item.GetKanjiName() + "をそうびできない";
            }
        }
        // 装備を切り替えたらItemPanelに戻る
        useItemPanelCanvasGroup.interactable = false;
        useItemPanel.SetActive(false);
        itemPanelCanvasGroup.interactable = true;
        // ItemPanelに戻るのでUseItemPanelの子要素に作ったボタンを全削除
        for (int i = useItemPanel.transform.childCount - 1; i >= 0; i--)
        {
            Destroy(useItemPanel.transform.GetChild(i).gameObject);
        }

        useItemInformationPanel.transform.SetAsLastSibling();
        useItemInformationPanel.SetActive(true);

        currentCommand = CommandMode.UseItemPanelToItemPanel;

        Input.ResetInputAxes();
    }
Пример #9
0
    // 変更する装備の選択
    public void SelectEquip(AllyStatus allyStatus, EquipType equipType)
    {
        ReturnToTopButton.GetComponent <Button>().interactable = false;
        chengingEquipType          = equipType;
        changingEquipmentCharacter = allyStatus;
        content = formCampas.transform.Find("EquipmentSelectPanel/EquipmentPanel/Mask/Content").gameObject;

        if (chengingEquipType == EquipType.Weapon)
        {
            itemType = Item.Type.WeaponAll;
        }
        else if (chengingEquipType == EquipType.Armor)
        {
            itemType = Item.Type.ArmorAll;
        }
        else if (chengingEquipType == EquipType.Accessory1 || chengingEquipType == EquipType.Accessory2)
        {
            itemType = Item.Type.AccessoryAll;
        }

        // アイテムパネルボタンを何個作成したかどうか
        int        itemPanelButtonNum = 0;
        GameObject itemButtonIns;

        // 装備解除ボタンのセット
        itemButtonIns = Instantiate <GameObject>(unequipButtonPrefab, content.transform);
        itemButtonIns.GetComponent <Button>().onClick.AddListener(() => CheckUpdateEquip());
        // 持っているアイテム分のボタンの作成とクリック時の実行メソッドの設定
        foreach (var item in partyStatus.GetItemDictionary().Keys)
        {
            // 変更しようとしている装備とアイテムの種類が一致している1個以上ある物を表示
            if (item.GetItemType() == itemType && item as Equipment && partyStatus.GetItemDictionary()[item] > 0)
            {
                Equipment equipment = item as Equipment;
                itemButtonIns = Instantiate <GameObject>(equipmentPanelButtonPrefab, content.transform);
                itemButtonIns.transform.Find("ItemNameText").GetComponent <Text>().text = item.GetKanjiName();
                itemButtonIns.GetComponent <Button>().onClick.AddListener(() => CheckUpdateEquip(equipment));

                // アイテム数を表示
                itemButtonIns.transform.Find("NumText").GetComponent <Text>().text = partyStatus.GetItemNum(item).ToString();

                // アイテムボタンリストに追加
                equipmentItemPanelButtonList.Add(itemButtonIns);
                // アイテムパネルボタン番号を更新
                itemPanelButtonNum++;
            }
        }

        equipmentSelectPanel.SetActive(true);
    }
Пример #10
0
 // 装備ボタンの更新
 public void UpdateEquipButton(AllyStatus allyStatus)
 {
     AllyStatusDictionary[allyStatus].Find("CharacterNamePanel/CharacterName").GetComponent <Text>().text                     = allyStatus.GetCharacterName();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/HPText").GetComponent <Text>().text                              = "HP: " + allyStatus.GetHp().ToString() + "/" + allyStatus.GetMaxHp().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/MPText").GetComponent <Text>().text                              = "MP: " + allyStatus.GetMp().ToString() + "/" + allyStatus.GetMaxMp().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/AttackPowerText").GetComponent <Text>().text                     = "攻撃力: " + allyStatus.GetAttackPower().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/DefencePowerText").GetComponent <Text>().text                    = "守備力: " + allyStatus.GetDefencePower().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/PowerText").GetComponent <Text>().text                           = "力: " + allyStatus.GetPower().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/StrikingStrengthText").GetComponent <Text>().text                = "体力: " + allyStatus.GetStrikingStrength().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/MagicPowerText").GetComponent <Text>().text                      = "知力: " + allyStatus.GetMagicPower().ToString();
     AllyStatusDictionary[allyStatus].Find("StatusParamPanel/AgilityText").GetComponent <Text>().text                         = "素早さ: " + allyStatus.GetAgility().ToString();
     AllyStatusDictionary[allyStatus].Find("ChangeWeaponPanel/ChangeEquipButton").Find("Text").GetComponent <Text>().text     = allyStatus.GetEquipWeapon() ? allyStatus.GetEquipWeapon().GetKanjiName() : "なし";
     AllyStatusDictionary[allyStatus].Find("ChangeArmorPanel/ChangeEquipButton").Find("Text").GetComponent <Text>().text      = allyStatus.GetEquipArmor() ? allyStatus.GetEquipArmor().GetKanjiName() : "なし";
     AllyStatusDictionary[allyStatus].Find("ChangeAccessoryPanel1/ChangeEquipButton").Find("Text").GetComponent <Text>().text = allyStatus.GetEquipAccessory1() ? allyStatus.GetEquipAccessory1().GetKanjiName() : "なし";
     AllyStatusDictionary[allyStatus].Find("ChangeAccessoryPanel2/ChangeEquipButton").Find("Text").GetComponent <Text>().text = allyStatus.GetEquipAccessory2() ? allyStatus.GetEquipAccessory2().GetKanjiName() : "なし";
 }
Пример #11
0
 // ステータスをセーブ用にコピー
 public void StatusCopy(AllyStatus allyStatus)
 {
     // キャラクターの名前
     this.characterName = allyStatus.GetCharacterName();
     // 毒状態かどうか
     this.isPoisonState = allyStatus.IsPoisonState();
     // 痺れ状態かどうか
     this.isNumbnessState = allyStatus.IsNumbnessState();
     // キャラクターのレベル
     this.level = allyStatus.GetLevel();
     // 素早さ
     this.agility = allyStatus.GetAgility();
     // 力
     this.power = allyStatus.GetPower();
     // 打たれ強さ
     this.strikingStrength = allyStatus.GetStrikingStrength();
     // 魔法力
     this.magicPower = allyStatus.GetMagicPower();
     // 攻撃力
     this.attackPower = allyStatus.GetAttackPower();
     // 守備力
     this.defencePower = allyStatus.GetDefencePower();
     // 最大HP
     this.maxHp = allyStatus.GetMaxHp();
     // HP
     this.hp = allyStatus.GetHp();
     // 最大MP
     this.maxMp = allyStatus.GetMaxMp();
     // MP
     this.mp = allyStatus.GetMp();
     // 持っているスキル
     this.skillList = allyStatus.GetSkillList();
     //属性カット率
     this.cutFlame   = allyStatus.GetCutFlame();
     this.cutThunder = allyStatus.GetCutThunder();
     this.cutIce     = allyStatus.GetcutIce();
     // 獲得経験値
     this.earnedExperience = allyStatus.GetEarnedExperience();
     // 装備している武器
     this.equipWeapon = allyStatus.GetEquipWeapon();
     // 装備している鎧
     this.equipArmor = allyStatus.GetEquipArmor();
     //装備しているアクセサリ
     this.equipAccessory1 = allyStatus.GetEquipAccessory1();
     this.equipAccessory2 = allyStatus.GetEquipAccessory2();
 }
Пример #12
0
    public void SetAllyStatus(AllyStatus charaStatus)
    {
        if (!partyMembers.Contains(charaStatus))
        {
            partyMembers.Add(charaStatus);
            //プレイヤーのレベルを取得
            int playerLevel = this.GetAllyStatus()[0].GetLevel();
            //加入するキャラのステータスを初期化
            charaStatus.StatusInit();
            // 変数を初期化
            int raisedAgility          = 0;
            int raisedPower            = 0;
            int raisedStrikingStrength = 0;
            int raisedMagicPower       = 0;
            //ステータスアップのテーブル
            LevelUpData levelUpData                 = charaStatus.GetLevelUpData();
            List <int>  agilityRisingTable          = levelUpData.GetAgilityRisingTable();
            List <int>  powerRisingTable            = levelUpData.GetPowerRisingTable();
            List <int>  strikingStrengthRisingTable = levelUpData.GetStrikingStrengthRisingTable();
            List <int>  magicPowerRisingTable       = levelUpData.GetMagicPowerRisingTable();
            // プレイヤーとのレベル差分、ステータスアップを計算し反映する
            for (int i = 1; i < playerLevel; i++)
            {
                // レベルを反映
                charaStatus.SetLevel(charaStatus.GetLevel() + 1);

                raisedAgility          += agilityRisingTable[charaStatus.GetLevel() % agilityRisingTable.Count()];
                raisedPower            += powerRisingTable[charaStatus.GetLevel() % powerRisingTable.Count()];
                raisedStrikingStrength += strikingStrengthRisingTable[charaStatus.GetLevel() % strikingStrengthRisingTable.Count()];
                raisedMagicPower       += magicPowerRisingTable[charaStatus.GetLevel() % strikingStrengthRisingTable.Count];
            }

            charaStatus.StatusUpdate(raisedPower, raisedAgility, raisedStrikingStrength, raisedMagicPower);
            //HP、MPを満タンに
            charaStatus.SetHp(charaStatus.GetMaxHp());
            charaStatus.SetMp(charaStatus.GetMaxMp());
        }
    }
Пример #13
0
    //渡す相手を指定しアイテム数の増減をする
    public void PassItemToOtherCharacter(AllyStatus fromChara, AllyStatus toChara, Item item)
    {
        useItemInformationPanel.SetActive(true);
        useItemSelectCharacterPanelCanvasGroup.interactable = false;
        useItemSelectCharacterPanel.SetActive(false);

        //持っているアイテム数を減らす
        fromChara.SetItemNum(item, fromChara.GetItemNum(item) - 1);
        //渡されたキャラクターがアイテムを持っていなければそのアイテムを登録
        if (!toChara.GetItemDictionary().ContainsKey(item))
        {
            toChara.SetItemDictionary(item, 0);
        }
        //渡されたキャラクターのアイテム数を増やす
        toChara.SetItemNum(item, toChara.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();
        //アイテムを渡した旨を表示
        useItemInformationPanel.GetComponentInChildren <Text>().text = fromChara.GetCharacterName() + "は" + item.GetKanjiName() + "を" + toChara.GetCharacterName() + "に渡しました。";

        //アイテム数が0だったらボタンとキャラクターステータスからアイテムを削除
        if (fromChara.GetItemNum(item) == 0)
        {
            //装備している武器や鎧だったら装備を外す
            if (fromChara.GetEquipArmor() == item)
            {
                fromChara.SetEquipArmor(null);
            }
            else if (fromChara.GetEquipWeapon() == item)
            {
                fromChara.SetEquipWeapon(null);
            }
            //アイテムが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();
        }
    }
Пример #14
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;
    }
Пример #15
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.NumbnessRecovery)
        {
            if (!toChara.IsPoisonState())
            {
                useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "は痺れ状態ではありません。";
            }
            else
            {
                useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "は痺れから回復しました。";
                toChara.SetNumbness(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();
        }
    }
Пример #16
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.IsNumbnessState())
        {
            text += "正常";
        }
        else
        {
            if (allyStatus.IsPoisonState())
            {
                text += "毒";
                if (allyStatus.IsNumbnessState())
                {
                    text += "、痺れ";
                }
            }
            else
            {
                if (allyStatus.IsNumbnessState())
                {
                    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;
    }
Пример #17
0
    public void UseItemToCharacter(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 = item.GetKanjiName() + "を" + toChara.GetCharacterName() + "に使用しました。\n" +
                                                                               toChara.GetCharacterName() + "は" + item.GetAmount() + "回復しました。";
                // 持っているアイテム数を減らす
                partyStatus.SetItemNum(item, partyStatus.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 = item.GetKanjiName() + "を" + toChara.GetCharacterName() + "に使用しました。\n" +
                                                                               toChara.GetCharacterName() + "はMPを" + item.GetAmount() + "回復しました。";
                // 持っているアイテム数を減らす
                partyStatus.SetItemNum(item, partyStatus.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);
                // 持っているアイテム数を減らす
                partyStatus.SetItemNum(item, partyStatus.GetItemNum(item) - 1);
            }
        }
        else if (item.GetItemType() == Item.Type.NumbnessRecovery)
        {
            if (!toChara.IsNumbnessState())
            {
                useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "は痺れ状態ではありません。";
            }
            else
            {
                useItemInformationPanel.GetComponentInChildren <Text>().text = toChara.GetCharacterName() + "は痺れから回復しました。";
                toChara.SetNumbness(false);
                // 持っているアイテム数を減らす
                partyStatus.SetItemNum(item, partyStatus.GetItemNum(item) - 1);
            }
        }

        // itemPanleButtonListから該当するアイテムを探し数を更新する
        var itemButton = itemPanelButtonList.Find(obj => obj.transform.Find("ItemNameText").GetComponent <Text>().text == item.GetKanjiName());

        itemButton.transform.Find("NumText").GetComponent <Text>().text = partyStatus.GetItemNum(item).ToString();

        // アイテム数が0だったらボタンとキャラクターステータスからアイテムを削除
        if (partyStatus.GetItemNum(item) == 0)
        {
            DeleteLostItem(item, itemButton);
            // ItemPanelに戻る為UseItemPanelの子要素のボタンを全削除
            ResetSelectButton();
        }
        else
        {
            // アイテム数が残っている場合はUseItemPanelでアイテムをどうするかの選択に戻る
            currentCommand = CommandMode.UseItemSelectCharacterPanelToUseItemPanel;
        }
    }