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);
            }
        }
Пример #2
0
 /// <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;
 }