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(); }
// Start is called before the first frame update void Start() { spriteRenderer = GetComponent <SpriteRenderer>(); animator = GetComponent <Animator>(); rigidBody = GetComponent <Rigidbody2D>(); inputHandler = GetComponent <InputHandler>(); inputHandler.AddInputReceiverRegisterAwaiter(this); gunSlinger = GetComponent <GunSlinger>(); }
protected void OnEnterBulletBundle(TriggerVolume triggerVolume, Collider2D collision) { GunSlinger gunSlinger = collision.GetComponent <GunSlinger>(); if (gunSlinger != null) { BulletBundle bulletBundle = triggerVolume.GetComponentInParent <BulletBundle>(); Destroy(triggerVolume.gameObject); gunSlinger.AddBullet(new Gun.BulletInfo(bulletBundle.bulletPrefab, bulletBundle.num)); Destroy(bulletBundle.gameObject); } }
protected void OnEnterGun(TriggerVolume triggerVolume, Collider2D collision) { GunSlinger gunSlinger = collision.GetComponent <GunSlinger>(); if (gunSlinger != null) { Gun gun = triggerVolume.GetComponentInParent <Gun>(); Destroy(triggerVolume.gameObject); if (gunSlinger.EquippedGun != null) { gunSlinger.EquippedGun.RuleManager.overridedGameRule = null; gunSlinger.Unequip(); } gunSlinger.Equip(gun); } }
protected override void OnHitShotBullet(GunSlinger shooter, Gun usedGun, Bullet bullet, Collider2D collider) { TriggerVolume triggerVolume = collider.gameObject.GetComponent <TriggerVolume>(); if (triggerVolume != null) { switch (triggerVolume.type) { case TriggerVolume.Type.EnemyBarrack: //Debug.Log(shooter + " hits EnemyBarrack!"); bullet.Ricochet(); break; case TriggerVolume.Type.OurBarrack: //Debug.Log(shooter + " hits OurBarrack!"); bullet.Ricochet(); break; default: break; } } else { MyUnit hittedUnit = collider.gameObject.GetComponent <MyUnit>(); MyBotAi hittedAi = collider.gameObject.GetComponent <MyBotAi>(); if (hittedUnit != null && hittedAi != null && !hittedUnit.IsDead) { MyUnit shotUnit = shooter.GetComponent <MyUnit>(); MyBotAi shotAi = shooter.GetComponent <MyBotAi>(); if (shotUnit != null && shotAi != null) { if (!shotAi.IsSameSide(hittedAi)) { bullet.Ricochet(); hittedUnit.TakeDamage(0.5f); } } } } }
void GunSlinger.IGameRule.OnUnequip(GunSlinger gunSlinger, Gun gun) { gun.RuleManager.overridedGameRule = null; gun.GetComponent <Rigidbody2D>().AddForce(Vector2.up * 200); GameObject newGo = new GameObject("TriggerVolume"); TriggerVolume triggerVolume = newGo.AddComponent <TriggerVolume>(); triggerVolume.type = TriggerVolume.Type.Gun; BoxCollider2D boxCollider = newGo.AddComponent <BoxCollider2D>(); boxCollider.enabled = false; boxCollider.isTrigger = true; boxCollider.size = gun.GetComponent <BoxCollider2D>().size; newGo.transform.parent = gun.transform; newGo.transform.localPosition = Vector3.zero; triggerVolume.EnableTriggerAfterSeconds(3); }
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; } }
void GunSlinger.IGameRule.OnDestroy(GunSlinger gunSlinger) { deathSubscribers.ForEach(a => a.OnDeath(this)); }
void GunSlingerGameRule.DeathSubscriber.OnDeath(GunSlingerGameRule gunSlinger) { this.shooter = null; gunSlingerGameRule = null; }
protected virtual void OnStartGunSlinger(GunSlinger gunSlinger) { gunSlinger.RuleManager.overridedGameRule = new GunSlingerGameRule(); }
public EquippedGunGameRule(GunSlinger gunSlinger, GunSlingerGameRule gunSlingerGameRule) { this.gunSlinger = gunSlinger; this.gunSlingerGameRule = gunSlingerGameRule; gunSlingerGameRule.SubscribeDeath(this); }
void GunSlinger.IGameRule.OnEquip(GunSlinger gunSlinger, Gun gun) { gun.RuleManager.overridedGameRule = new EquippedGunGameRule(gunSlinger, this); }
void GunSlinger.IGameRule.OnStart(GunSlinger gunSlinger) { return; }
void GunSlinger.IGameRule.OnUnequip(GunSlinger gunSlinger, Gun gun) { return; }
void GunSlinger.IGameRule.OnStart(GunSlinger gunSlinger) { gameMode.OnStartGunSlinger(gunSlinger); }
void GunSlinger.IGameRule.OnDestroy(GunSlinger gunSlinger) { return; }
protected virtual void OnHitShotBullet(GunSlinger shooter, Gun usedGun, Bullet bullet, Collider2D collider) { Debug.Log("Shooter: " + shooter + ", Gun: " + usedGun + ", Bullet: " + bullet); }