public void EquipWeapon(GameObject WeaponObject) { GameObject = WeaponObject; Animator = GameObject.GetComponent <Animator>(); Inputs = GameObject.GetComponent <WeaponInputs>(); Common = new WeaponCommon(this); controller = new FSMController <WeaponController, eStates>(this); controller.RegisterState(eStates.Idle, new WeaponIdle()); controller.RegisterState(eStates.Shoot, new WeaponShoot()); controller.RegisterState(eStates.Reload, new WeaponReload()); controller.RegisterState(eStates.Recoil, new WeaponRecoil()); controller.AddMapping(eStates.Idle, eStates.Shoot, eStates.Reload); controller.AddMapping(eStates.Shoot, eStates.Recoil); controller.AddMapping(eStates.Reload, eStates.Idle, eStates.Shoot); controller.AddMapping(eStates.Recoil, eStates.Idle, eStates.Shoot, eStates.Reload); controller.SetLogToGUI(true, 2); controller.SetState(eStates.Idle); Common.Init(); // sanity checks QLogger.Assert(Inputs.magCapacity > 0); QLogger.Assert(Inputs.reloadTime > 0 && Inputs.recoilTime > 0 && Inputs.accuracy > 0); // if ( Inputs.shotType == eShotType.BURST ) // QLogger.Assert ( Inputs.burstBulletCount > 1 ); QLogger.Assert(Inputs.damage > 0 && Inputs.range > 0); QLogger.Assert(Inputs.muzzlePositionAndDirection != null); }
public void FireBullet(float accuracy) { QLogger.Assert(bulletsRemainingInMag > 0); GameObject bullet = GameObject.Instantiate(inputs.bulletReference); bullet.transform.position = inputs.muzzlePositionAndDirection.position; bullet.transform.forward = inputs.muzzlePositionAndDirection.forward; Bullet bulletScript = bullet.GetComponent <Bullet>(); QLogger.Assert(bulletScript != null); bulletScript.Init(inputs.muzzlePositionAndDirection.forward, inputs.damage, inputs.range); bulletsRemainingInMag--; }