private void UseWeapon(FireableWeapon weapon, IFireableWeaponModel model) { _player.Inventory.ForceSnapshot(); var result = _weaponController.FireWeapon(_player, weapon); bool wasFired = false; switch (result) { case FireableWeaponController.FireResult.OutOfAmmo: Log.Info("Out of Ammo"); _weaponController.Reload(_player.Inventory, weapon); Log.Info("Reloaded"); break; case FireableWeaponController.FireResult.Missed: Log.Info("Fired, but missed"); wasFired = true; break; case FireableWeaponController.FireResult.Hit: Log.Info("Fired and hit"); wasFired = true; break; default: throw new ArgumentOutOfRangeException(); } if (wasFired && model != null) { model.TransitionToState(FireableWeaponState.Fired); } }
/// <summary> Constructor. </summary> /// <param name="model"> The ui component associated with the item. </param> /// <param name="stats"> The damage stats for the item. </param> /// <param name="resource"> The ui resource associated with the item. </param> public FireableWeaponItem(IFireableWeaponModel model, FireableWeaponStats stats, IUiResource resource) { Model = model; Stats = stats; Resource = resource; }
public FireableWeaponTemplate(IFireableWeaponModel model, IUiResource resource, FireableWeaponStats stats) { _stats = stats; _resource = resource; _model = model; }