public void AttachItemModifierToInstanceWeapon(InstanceWeapon instanceWeapon, IItemModifier itemModifier)
        {
            Assert.IsTrue(this.Inventory.Weapons.Contains(instanceWeapon), "所持していない武器です");
            instanceWeapon.Modifiers.Add(itemModifier);

            this.ResetItemModifierParameter();
        }
        public void ChangeEquippedWeapon(int index, InstanceWeapon instanceWeapon)
        {
            if (instanceWeapon != null)
            {
                Assert.IsTrue(this.Inventory.Weapons.Contains(instanceWeapon), $"所持していない武器を装備しようとしました");
            }

            var tempEquippedWeapon = this.status.EquippedWeapons[index];

            // すでに装備している箇所があったら外す
            for (var i = 0; i < this.status.EquippedWeapons.Count; i++)
            {
                var e = this.status.EquippedWeapons[i];
                if (e.InstanceWeapon == instanceWeapon)
                {
                    e.Change(tempEquippedWeapon.InstanceWeapon);
                    this.owner.Broker.Publish(ChangedEquippedWeapon.Get(i));
                    break;
                }
            }

            this.status.EquippedWeapons[index].Change(instanceWeapon);
            this.owner.Broker.Publish(ChangedEquippedWeapon.Get(index));

            this.ResetItemModifierParameter();
        }
        /// <summary>
        /// アイテム修飾を装着する武器の選択を開始する
        /// </summary>
        private void StartSelectInstanceWeapon(Actor actor)
        {
            Broker.Global.Publish(RequestShowGridUI.Get(actor.StatusController.Inventory.Weapons, i =>
            {
                var instanceWeapon = actor.StatusController.Inventory.Weapons[i];
                if (instanceWeapon.WeaponRecord.ItemModifierLimit <= instanceWeapon.Modifiers.Count)
                {
                    Debug.Log("制限を超えたので装着できない");
                    return;
                }

                this.selectWeapon = instanceWeapon;
                Broker.Global.Publish(RequestHideGridUI.Get());
                this.StartSelectItemModifier(actor);
            }, () =>
            {
                Broker.Global.Publish(RequestHideGridUI.Get());
                Broker.Global.Publish(AttachItemModifierToWeaponUserInputMessages.End.Get());
            }));
        }
        /// <summary>
        /// シーケンスを開始する
        /// </summary>
        private void StartSequence(Actor actor)
        {
            this.selectWeapon = null;

            this.StartSelectInstanceWeapon(actor);
        }