Example #1
0
 //Kollar skada
 public static void KrockaObjekt(SpelObjekt objekt1, SpelObjekt objekt2)
 {
     if ((objekt1 is Fiende && objekt2 is Gubbe) || (objekt1 is Gubbe && objekt2 is Fiende))
     {
         if (objekt2.CanDamage (objekt1))
             objekt1.SkadaObjekt(objekt2.skada);
         if (objekt1.CanDamage(objekt2))
             objekt2.SkadaObjekt(objekt1.skada);
     }
     else if ((objekt1 is Fiende && objekt2 is SpelarSkott) || (objekt1 is SpelarSkott && objekt2 is Fiende))
     {
         if (objekt2.CanDamage(objekt1))
             objekt1.SkadaObjekt(objekt2.skada);
         if (objekt1.CanDamage(objekt2))
             objekt2.SkadaObjekt(objekt1.skada);
     }
     else if ((objekt1 is Gubbe && objekt2 is FiendeSkott) || (objekt1 is FiendeSkott && objekt2 is Gubbe))
     {
         if (objekt2.CanDamage(objekt1))
             objekt1.SkadaObjekt(objekt2.skada);
         if (objekt1.CanDamage(objekt2))
             objekt2.SkadaObjekt(objekt1.skada);
     }
     else if (objekt1 is Fiende && objekt2 is Fiende)
     {
         if (!objekt1.immobile && !objekt2.immobile)
         {
             if (objekt2.CanDamage(objekt1))
                 objekt1.PushAwayFrom(objekt2);
             if (objekt1.CanDamage(objekt2))
                 objekt2.PushAwayFrom(objekt1);
         }
     }
 }
Example #2
0
 public override bool CanDamage(SpelObjekt other)
 {
     if (!oneTimeDamageLista.Contains(other))
     {
         oneTimeDamageLista.Add(other);
         return true;
     }
     else
     {
         return false;
     }
 }
Example #3
0
 private Vector2 GetDirection(SpelObjekt other)
 {
     Vector2 dir = new Vector2(other.Position.X - Position.X, other.Position.Y - Position.Y);
     return GlobalFunctions.ScaleDirection(dir);
 }
Example #4
0
        public void PushAwayFrom(SpelObjekt other)
        {
            // För att undvika att de hamnar på varandra.
            // Leder till division med noll annars.
            if (position == other.Position)
                PositionX += 1;

            Vector2 dirAgainstOther = GetDirection(other);
            Position -= dirAgainstOther * repellingForce;
        }
Example #5
0
 public virtual Boolean CanDamage(SpelObjekt other)
 {
     return true;
 }
Example #6
0
 public void SkjutSkott(SpelObjekt shooter, Vector2 riktning_)
 {
     Position = shooter.Position;
     riktning = riktning_;
     lever = true;
 }