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); }