Ejemplo n.º 1
0
    //初期化メソッド
    public void Init(Item item, BattleMapManager battleMapManager, Unit unit, int index)
    {
        this.battleMapManager = battleMapManager;
        this.unit             = unit;
        this.item             = item;
        this.index            = index;
        icon.gameObject.SetActive(true);
        if (item.ItemType == ItemType.WEAPON)
        {
            Weapon weapon = item.weapon;
            //配下の名前、回数、値段を設定
            itemNameText.text  = weapon.name;
            enduranceText.text = string.Format("{0}/{1}", weapon.endurance.ToString(), weapon.maxEndurance.ToString());

            //200825 武器の種類によってアイコンを読み込む
            if (weapon.type == WeaponType.SHOT)
            {
                icon.sprite = iconList[0];
            }
            else if (weapon.type == WeaponType.LASER)
            {
                icon.sprite = iconList[1];
            }
            else if (weapon.type == WeaponType.STRIKE)
            {
                icon.sprite = iconList[2];
            }
            else if (weapon.type == WeaponType.HEAL)
            {
                icon.sprite = iconList[3];
                //回復の杖は使ったり装備出来ないので文字を灰色に
                itemNameText.color  = new Color(170 / 255f, 170 / 255f, 170 / 255f);
                enduranceText.color = new Color(170 / 255f, 170 / 255f, 170 / 255f);
            }

            //装備出来るかどうか確認して出来ない場合はグレーアウト
            if (WeaponEquipWarn.NONE != WeaponEquipWarnUtil.GetWeaponEquipWarn(weapon, unit))
            {
                isEquipable         = false;
                warn                = WeaponEquipWarnUtil.GetWeaponEquipWarn(weapon, unit);
                itemNameText.color  = new Color(170 / 255f, 170 / 255f, 170 / 255f);
                enduranceText.color = new Color(170 / 255f, 170 / 255f, 170 / 255f);
            }
            else
            {
                isEquipable = true;
            }
        }
        else if (item.ItemType == ItemType.POTION)
        {
            Potion potion = item.potion;
            itemNameText.text  = potion.name;
            enduranceText.text = string.Format("{0}/{1}", potion.useCount.ToString(), potion.maxUseCount.ToString());

            icon.sprite = iconList[4];
        }
        else if (item.ItemType == ItemType.ACCESSORY)
        {
            Accessory accessory = item.accessory;
            itemNameText.text = accessory.name;

            //耐久は無いので非表示に
            enduranceText.enabled = false;
            icon.sprite           = iconList[8];
        }
        else if (item.ItemType == ItemType.TOOL)
        {
            Tool tool = item.tool;
            itemNameText.text = tool.name;

            //金塊
            if (tool.name == "金塊" || tool.name == "大きな金塊" || tool.name == "巨大な金塊")
            {
                enduranceText.text = "";
                icon.sprite        = iconList[6];
                //文字を灰色に
                itemNameText.color  = new Color(170 / 255f, 170 / 255f, 170 / 255f);
                enduranceText.color = new Color(170 / 255f, 170 / 255f, 170 / 255f);
            }
            else if (tool.isClassChangeItem)
            {
                enduranceText.text = "1/1";
                icon.sprite        = iconList[7];

                //マップでは使用できないので文字を灰色に
                itemNameText.color  = new Color(170 / 255f, 170 / 255f, 170 / 255f);
                enduranceText.color = new Color(170 / 255f, 170 / 255f, 170 / 255f);
            }
            else
            {
                //これは鍵など
                enduranceText.text = "1/1";
                icon.sprite        = iconList[5];

                //鍵などはステータス画面では使えないので文字を灰色に
                itemNameText.color  = new Color(170 / 255f, 170 / 255f, 170 / 255f);
                enduranceText.color = new Color(170 / 255f, 170 / 255f, 170 / 255f);
            }
        }

        //装備しているアイテムなら装備マークを表示
        if (item.isEquip)
        {
            equipMark.SetActive(true);
        }
        else
        {
            equipMark.SetActive(false);
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// その他UI制御メソッド
    /// </summary>

    //敵を攻撃するユニットの武器ウィンドウを開く BattleMapManagerからも呼ばれる
    //TODO 210211 武器が5個よりも少ない場合は空欄を作る?
    public void openWeaponWindow(string unitName, MapMode mapMode)
    {
        unit = unitController.findByName(unitName);
        if (unit == null)
        {
            Debug.Log("ERROR: ユニットが存在しません");
            return;
        }
        //ユニット名からユニットの持っている武器を取得
        var itemList = unit.carryItem;

        var weaponList = new List <Weapon>();

        //最初の要素にフォーカスする用
        bool isfocused = false;

        //武器リストのUIを表示する
        weaponWindow.SetActive(true);
        detailWindow.SetActive(true);

        //手持ちアイテムから武器リストを作成する
        foreach (var item in itemList)
        {
            //武器のみ選択
            if (item.ItemType == ItemType.WEAPON)
            {
                Weapon weapon = item.weapon;


                if (weapon == null)
                {
                    Debug.Log("ERROR: 武器が存在しません");
                    return;
                }

                //Resources配下からボタンをロード
                var weaponButton = (Instantiate(Resources.Load("Prefabs/MapWeaponButton")) as GameObject).transform;
                weaponButton.GetComponent <MapWeaponButton>().Init(weapon, this, battleMapManager, mainMap.ActiveUnit.unit);
                weaponButton.name = weaponButton.name.Replace("(Clone)", "");
                //partyWindowオブジェクト配下にprefab作成
                weaponButton.transform.SetParent(weaponWindow.transform);

                //210217 警告を取得してボタンに設定 何も無ければNONEが返ってくる
                WeaponEquipWarn warn = WeaponEquipWarnUtil.GetWeaponEquipWarn(weapon, unit);
                if (warn != WeaponEquipWarn.NONE)
                {
                    weaponButton.GetComponent <MapWeaponButton>().setWarn(warn);
                    Debug.Log($"WARN:装備出来ない武器が有ります: 武器:{weapon.name}, 警告:{warn.GetStringValue()}");
                }

                //武器選択の場合は回復系ボタンを不活性に
                if (mapMode == MapMode.WEAPON_SELECT)
                {
                    //回復系の場合はボタンを不活性に
                    if (weapon.type == WeaponType.HEAL)
                    {
                        weaponButton.GetComponent <MapWeaponButton>().setButtonDisinteractable();
                    }
                    else
                    {
                        if (!isfocused)
                        {
                            isfocused = true;
                            //最初の要素のみフォーカス設定
                            EventSystem.current.SetSelectedGameObject(weaponButton.gameObject);
                        }

                        if (item.isEquip)
                        {
                            //装備している武器ならフォーカス上書き
                            EventSystem.current.SetSelectedGameObject(weaponButton.gameObject);
                        }
                    }
                }
                else if (mapMode == MapMode.HEAL_SELECT)
                {
                    //回復系選択の場合はそれ以外のボタンを不活性に
                    if (weapon.type != WeaponType.HEAL)
                    {
                        weaponButton.GetComponent <MapWeaponButton>().setButtonDisinteractable();
                    }
                    else
                    {
                        if (!isfocused)
                        {
                            isfocused = true;
                            //フォーカス設定
                            EventSystem.current.SetSelectedGameObject(weaponButton.gameObject);
                        }
                    }
                }
            }
        }
    }