public ShotBulletGameRule(GunSlinger shooter, Gun usedGun, GunSlingerGameRule gunSlingerGameRule) { this.shooter = shooter; this.usedGun = usedGun; this.gunSlingerGameRule = gunSlingerGameRule; gunSlingerGameRule.SubscribeDeath(this); }
protected override void OnStartGunSlinger(GunSlinger gunSlinger) { GunSlingerGameRule gunSlingerGameRule = new GunSlingerGameRule(); gunSlinger.RuleManager.overridedGameRule = gunSlingerGameRule; gunSlinger.EquippedGun.RuleManager.overridedGameRule = new EquippedGunGameRule(gunSlinger, gunSlingerGameRule); gunSlinger.Load(); }
void GunSlingerGameRule.DeathSubscriber.OnDeath(GunSlingerGameRule gunSlinger) { this.shooter = null; gunSlingerGameRule = null; }
public EquippedGunGameRule(GunSlinger gunSlinger, GunSlingerGameRule gunSlingerGameRule) { this.gunSlinger = gunSlinger; this.gunSlingerGameRule = gunSlingerGameRule; gunSlingerGameRule.SubscribeDeath(this); }
protected virtual void OnFireEquippedGun(GunSlinger gunSlinger, Gun gun, GameObject bulletPrefab, GunSlingerGameRule gunSlingerGameRule) { switch (gun.modelName) { case Gun.ModelName.MyLittleGun: if (bulletPrefab.GetComponent <Bullet>()) { float power = 1000; Quaternion rotation = Quaternion.Euler(0, 0, 270); if (gun.transform.rotation.eulerAngles.y != 0) { power *= -1; rotation = Quaternion.Euler(0, 0, 90); } Bullet bullet = Bullet.Shoot(bulletPrefab, gun.transform.position, rotation, power); bullet.RuleManager.overridedGameRule = new ShotBulletGameRule(gunSlinger, gun, gunSlingerGameRule); } break; default: break; } }