示例#1
0
 private void spriterComponent_OnAnimationChanged(SaNi.Spriter.Data.SpriterAnimation old, SaNi.Spriter.Data.SpriterAnimation newAnim)
 {
     // attack keskeytettiin, niin tyhennetään callback jottai ei lyödä seuraavaa vihua vitullisilla callbackeilla
     if (old.Name == "Attack")
     {
         spriterComponent.OnAnimationFinished -= spriterComponent_OnAnimationFinished;
     }
 }
示例#2
0
        private void component_OnAnimationFinished(SaNi.Spriter.Data.SpriterAnimation animation)
        {
            component.Disable();
            component.Hide();
            component.Destroy();

            this.Disable();
            this.Hide();
            this.Destroy();
        }
示例#3
0
        private void spriterComponent_OnAnimationFinished(SaNi.Spriter.Data.SpriterAnimation animation)
        {
            spriterComponent.OnAnimationFinished -= spriterComponent_OnAnimationFinished;
            if (animation.Name != "Attack")
            {
                return;
            }

            GameObject target = Owner.FirstComponentOfType <TargetingComponent>().Target;

            spriterComponent.ChangeAnimation("Idle");
            // ei ole targettia
            if (target == null)
            {
                return;
            }

            // TODO siirrä johonkin komponenttiin kun on tarpeeksi abseja
            HealthComponent healthComponent = target.FirstComponentOfType <HealthComponent>();

            // Targettia vastaan ei voi hyökätä.
            if (healthComponent == null)
            {
                return;
            }

            WeaponComponent weaponComponent = Owner.FirstComponentOfType <WeaponComponent>();
            StatSet         statSet         = Owner.FirstComponentOfType <StatSet>();

            bool isCrit = false;

            float damage = weaponComponent.GenerateAttack(statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit);

            r.AddText(((int)damage).ToString(), isCrit);

            healthComponent.TakeDamage(damage);

            SpriterEffect effect = new SpriterEffect(Owner, @"Animations/Splatters");

            effect.Initialize();
            effect.SpriterComponent.Position = target.Position + new Vector2(24f, -38f);

            if (target.ContainsTag("boss"))
            {
                effect.SpriterComponent.Scale = 2.5f;
            }

            effect.SpriterComponent.FlipX = Owner.FirstComponentOfType <FacingComponent>().FacingNumber < 0f;
            effect.SpriterComponent.ChangeAnimation("blood_ribon_0");

            Owner.AddComponent(effect);
        }