Ignore:
Timestamp:
2015-06-25 21:35:20 (4 years ago)
Author:
mikrkana
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora/Attack to Agora/Attack_to_Agora_mitja.cs

    r6381 r6402  
    99 
    1010/// <summary> 
    11 /// "Mitjan" koodit tänne 
     11/// "Mitjan" (miskan) koodit tänne 
    1212/// </summary> 
    1313public partial class Attack_to_Agora : PhysicsGame 
    1414{ 
     15    Image jouniBoss = LoadImage("jouniboss"); 
     16    Animation jounibossArrive; 
     17 
     18    Elava currentBoss; 
     19    bool bossDefeated = false; 
     20    const double JOUNI_DMG = 25; 
     21 
     22    bool paaseekoSeuraavaanKenttaan = true; 
     23 
     24    Animation asemiesLiikkuu; 
     25 
    1526    // Attribuutit 
    1627    void LuoAmpuvaVihollinen(Vector paikka, double leveys, double korkeus) 
    1728    { 
    1829        Elava vihollinen = new Elava(200, 200, 100); 
    19         vihollinen.Animation = vihollisenkavely; 
     30        vihollinen.Animation = asemiesLiikkuu; 
     31        vihollinen.Animation.Start(); 
    2032        vihollinen.Position = paikka; 
    2133        vihollinen.Tag = "vihollinen"; 
     
    2739        }; 
    2840 
    29         FollowerBrain seuraajanAivot = new FollowerBrain(taistelija); 
    30         seuraajanAivot.Speed = 500; 
    31         seuraajanAivot.Active = true; 
    32         seuraajanAivot.DistanceClose = vihollinen.Width / 2 + taistelija.Width / 2 + 25; 
    33         seuraajanAivot.TargetClose += delegate { taistelija.Damagea(VIHOLLISEN_TORMAYSDMG); }; 
    34         vihollinen.Brain = seuraajanAivot; 
     41        if (taistelija == null || taistelija.IsAddedToGame == false) 
     42            Timer.SingleShot(1.0 / 60.0, delegate { LuoAmpumisAivot(vihollinen); }); 
     43        else LuoAmpumisAivot(vihollinen); 
    3544 
    3645        Add( vihollinen ); 
     
    4958            varjo.Destroy(); 
    5059        }; 
    51          
    52         FollowerBrain seuraajanAivot = new FollowerBrain(taistelija); 
    53         seuraajanAivot.Speed = 500; 
    54         seuraajanAivot.Active = true; 
    55         seuraajanAivot.DistanceClose = Tormaavavihollinen.Width / 2 + taistelija.Width / 2 + 25; 
    56         seuraajanAivot.TargetClose += delegate { taistelija.Damagea(VIHOLLISEN_TORMAYSDMG); }; 
    5760 
    58         Tormaavavihollinen.Brain = seuraajanAivot; 
     61        if (taistelija == null || taistelija.IsAddedToGame == false) 
     62            Timer.SingleShot(1.0 / 60.0, delegate { LuoHyokkaysAivot(Tormaavavihollinen); }); 
     63        else LuoHyokkaysAivot(Tormaavavihollinen); 
     64 
    5965 
    6066        Add(Tormaavavihollinen); 
    6167    } 
    6268 
    63     void LisaaAivot(Elava vihu, FollowerBrain aivo, PhysicsObject kohde) 
     69    void LuoAmpumisAivot(Elava vihollinen) 
    6470    { 
     71        FollowerBrain seuraajanAivot = new FollowerBrain(taistelija); 
     72        seuraajanAivot.Speed = 500; 
     73        seuraajanAivot.Active = true; 
     74        seuraajanAivot.DistanceClose = vihollinen.Width / 2 + taistelija.Width / 2 + 25; 
     75        seuraajanAivot.TargetClose += delegate { taistelija.Damagea(VIHOLLISEN_TORMAYSDMG); }; 
     76 
     77        vihollinen.Brain = seuraajanAivot; 
    6578    } 
     79 
     80    void LuoHyokkaysAivot(Elava vihollinen) 
     81    { 
     82        FollowerBrain seuraajanAivot = new FollowerBrain(taistelija); 
     83        seuraajanAivot.Speed = 500; 
     84        seuraajanAivot.Active = true; 
     85        seuraajanAivot.DistanceClose = vihollinen.Width / 2 + taistelija.Width / 2 + 25; 
     86        seuraajanAivot.TargetClose += delegate { taistelija.Damagea(VIHOLLISEN_TORMAYSDMG); }; 
     87 
     88        vihollinen.Brain = seuraajanAivot; 
     89    } 
     90 
    6691 
    6792    /// <summary> 
     
    7499    } 
    75100 
     101    void LuoJouniBoss(Vector luomisPaikka, Vector pysahtymisPaikka) 
     102    { 
     103        Elava jouni = new Elava(jouniBoss, 100.0); // 10000 
     104        jouni.Kuoli += JouniDefeated; 
     105        jouni.Position = luomisPaikka; 
     106        jouni.Shape = Shape.FromImage(jouniBoss); 
     107        jouni.Tag = "jouni"; 
     108        jouni.CollisionIgnoreGroup = 1; 
     109        jouni.Size *= 1.5; 
     110        Add(jouni); 
     111 
     112        GameObject varjo = Varjo(jouni); 
     113        jouni.Kuoli += delegate { varjo.Destroy(); }; 
     114 
     115        currentBoss = jouni; 
     116        bossDefeated = false; 
     117        paaseekoSeuraavaanKenttaan = false; 
     118 
     119 
     120        PathFollowerBrain bBrain = new PathFollowerBrain(luomisPaikka, pysahtymisPaikka); 
     121        bBrain.Loop = false; 
     122        bBrain.Speed = 1500; 
     123        bBrain.WaypointRadius = jouni.Height / 2; 
     124        jouni.Brain = bBrain; 
     125 
     126        bBrain.ArrivedAtEnd += delegate { ActivateJouni(jouni, bBrain); }; 
     127    } 
     128 
     129    void ActivateJouni(Elava jouni, PathFollowerBrain brain) 
     130    { 
     131        jouni.Animation = jounibossArrive; 
     132        jouni.Animation.Start(1); 
     133        jouni.Animation.FPS = 0.5; 
     134        jouni.Animation.StopOnLastFrame = true; 
     135 
     136        jouni.MakeStatic(); 
     137 
     138        brain.Active = false; 
     139        jouni.Brain = null; // nothing personal 
     140 
     141        AssaultRifle jouninAse = new AssaultRifle(20, 10); 
     142        jouninAse.IsVisible = true; 
     143        jouninAse.InfiniteAmmo = true; 
     144        jouninAse.Power.Value = 200.0; 
     145        jouninAse.Power.DefaultValue = 200.0; 
     146        jouninAse.Tag = "jouninase"; 
     147        Add(jouninAse); 
     148        jouninAse.Position = jouni.Position + new Vector(jouni.Width / 3, 0.0); 
     149 
     150        Timer ampumisAjastin = new Timer(); 
     151        ampumisAjastin.Interval = 0.2; 
     152        ampumisAjastin.Timeout += delegate  
     153        { 
     154            if (jouninAse == null) 
     155                return; 
     156            jouninAse.AbsoluteAngle = (taistelija.Position - jouninAse.AbsolutePosition).Angle; 
     157 
     158            PhysicsObject ammus = jouninAse.Shoot(); 
     159 
     160            if (ammus == null) 
     161                return; 
     162 
     163            ammus.IgnoresGravity = true; 
     164 
     165            AddCollisionHandler(ammus, delegate(PhysicsObject a, PhysicsObject p) { 
     166 
     167                if ((string)p.Tag == "jouni") return; 
     168 
     169                a.Destroy(); 
     170 
     171                // p.IsVisible = true; // collisionboxit näkyviin? 
     172                Elava e = p as Elava; 
     173 
     174                if (e == null) return; 
     175                e.Damagea(JOUNI_DMG); 
     176            }); 
     177        }; 
     178 
     179        // ampumisAjastin.Start(); 
     180    } 
     181 
     182    void JouniDefeated() 
     183    { 
     184        paaseekoSeuraavaanKenttaan = true; 
     185        currentBoss.Destroy(); 
     186        currentBoss = null; 
     187        jounihaviaa.Play(); 
     188    } 
    76189     
    77190    // Aliohjelmat 
Note: See TracChangeset for help on using the changeset viewer.