Exemple #1
0
 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>();
 }
Exemple #4
0
    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);
        }
    }
Exemple #5
0
    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);
                    }
                }
            }
        }
    }
Exemple #7
0
        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);
        }
Exemple #8
0
    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;
        }
    }
Exemple #9
0
 void GunSlinger.IGameRule.OnDestroy(GunSlinger gunSlinger)
 {
     deathSubscribers.ForEach(a => a.OnDeath(this));
 }
Exemple #10
0
 void GunSlingerGameRule.DeathSubscriber.OnDeath(GunSlingerGameRule gunSlinger)
 {
     this.shooter       = null;
     gunSlingerGameRule = null;
 }
Exemple #11
0
 protected virtual void OnStartGunSlinger(GunSlinger gunSlinger)
 {
     gunSlinger.RuleManager.overridedGameRule = new GunSlingerGameRule();
 }
Exemple #12
0
 public EquippedGunGameRule(GunSlinger gunSlinger, GunSlingerGameRule gunSlingerGameRule)
 {
     this.gunSlinger         = gunSlinger;
     this.gunSlingerGameRule = gunSlingerGameRule;
     gunSlingerGameRule.SubscribeDeath(this);
 }
Exemple #13
0
 void GunSlinger.IGameRule.OnEquip(GunSlinger gunSlinger, Gun gun)
 {
     gun.RuleManager.overridedGameRule = new EquippedGunGameRule(gunSlinger, this);
 }
Exemple #14
0
 void GunSlinger.IGameRule.OnStart(GunSlinger gunSlinger)
 {
     return;
 }
Exemple #15
0
 void GunSlinger.IGameRule.OnUnequip(GunSlinger gunSlinger, Gun gun)
 {
     return;
 }
Exemple #16
0
 void GunSlinger.IGameRule.OnStart(GunSlinger gunSlinger)
 {
     gameMode.OnStartGunSlinger(gunSlinger);
 }
Exemple #17
0
 void GunSlinger.IGameRule.OnDestroy(GunSlinger gunSlinger)
 {
     return;
 }
Exemple #18
0
 protected virtual void OnHitShotBullet(GunSlinger shooter, Gun usedGun, Bullet bullet, Collider2D collider)
 {
     Debug.Log("Shooter: " + shooter + ", Gun: " + usedGun + ", Bullet: " + bullet);
 }