//初期化メソッド 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); } }
/// <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); } } } } } }