Changeset 6402 for 2014


Ignore:
Timestamp:
2015-06-25 21:35:20 (4 years ago)
Author:
mikrkana
Message:
 
Location:
2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora
Files:
1 added
5 edited

Legend:

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

    r6381 r6402  
    1111{ 
    1212    private Animation chuckinkavely; 
    13     private Animation vihollisenkavely; 
    1413 
    1514    /// <summary> 
     
    4039 
    4140    const double VIHOLLISEN_TORMAYSDMG = 4.0; 
    42     int kenttaNro = 9; 
     41    int kenttaNro = 1; 
     42 
     43    /// <summary> 
     44    /// Mitä tehdään tämänhetkisessä kentässä osuttaessa triggeriin. 
     45    /// </summary> 
     46    Action TriggerAction; 
     47    bool tActionTriggered = false; 
    4348 
    4449    /// <summary> 
     
    4752    const int VIIMEINEN_KENTTA = 18; 
    4853 
     54    #region yleiset toiminnot 
    4955    public override void Begin() 
    5056    { 
    51         vihollisenkavely = LoadAnimation("asemiesliikkuu"); 
     57        Window.Width = 1024; 
     58        Window.Height = 768; 
     59        FixCamera(); 
     60 
    5261        LataaContent(); 
    5362        AloitusAnimaatio(); 
     
    5766    { 
    5867        ClearAll(); 
     68        FixCamera(); 
    5969        LuoKentta(); 
    6070        AsetaOhjaimet(); 
     
    6272        ensimmainentehtava.Play(); 
    6373        Timer.SingleShot(4.0, delegate { taustamusiikki_1.Play(); }); 
    64  
    6574    } 
    6675 
     
    7988        } 
    8089        base.Update(time); 
     90    } 
     91 
     92    void FixCamera() 
     93    { 
     94        double widthReduction = 1920.0 / Window.Width; 
     95        double heightReduction = 1080.0 / Window.Height; 
     96 
     97        double multiplier = Math.Max(widthReduction, heightReduction); 
     98 
     99        Camera.ZoomFactor = 1 / multiplier; 
    81100    } 
    82101 
     
    228247    } 
    229248 
     249    void LataaContent() 
     250    { 
     251        chuckinkavely = LoadAnimation("pelaaja_anim"); 
     252        jounibossArrive = LoadAnimation("jouniboss_anim"); 
     253        asemiesLiikkuu = LoadAnimation("asemiesliikkuu"); 
     254    } 
     255 
     256    #endregion 
     257 
    230258 
    231259    void Liikuta(PlatformCharacter pelaaja, double suunta) 
     
    240268    { 
    241269        pelaaja.Jump(HYPPYVOIMA); 
    242         pelaaja.Tag = "hyppy"; 
     270        // pelaaja.Tag = "hyppy"; // PYRY MITÄ...rip 
    243271        Sound pelaajaHyppyAani = hyppy.CreateSound(); 
    244272        pelaajaHyppyAani.Pitch = 0.1; 
     
    247275    } 
    248276 
    249     void LataaContent() 
    250     { 
    251         chuckinkavely = LoadAnimation("pelaaja_anim"); 
    252     } 
    253  
    254277    void LuoKentta() 
    255278    { 
     279        FixCamera(); 
    256280        SmoothTextures = false; 
    257281        // IsFullScreen = true; 
     
    272296        pohjaLevy.SetTileMethod(Color.DarkGray, LuoTormaavaVihollinen); 
    273297        pohjaLevy.SetTileMethod(Color.Gray, LuoAmpuvaVihollinen); 
     298        pohjaLevy.SetTileMethod(Color.Red, LuoTriggerPalikka); 
    274299        pohjaLevy.Optimize(Color.Gold); 
     300        pohjaLevy.Optimize(Color.Red); 
    275301 
    276302        // oletuksena 1 pikseli = 1 unit 
     
    280306        pohjaLevy.Execute(BASE_SIZE * widthMultiplier, BASE_SIZE * heightMultiplier); 
    281307 
    282         // PhysicsObject pohja = Level.CreateBottomBorder(); 
    283         // pohja.Y = Level.Bottom + 100; 
    284         //pohja.IsVisible = false; 
    285308        PhysicsObject vasenreuna = Level.CreateLeftBorder(); 
    286309        vasenreuna.X -= 75; 
    287310        vasenreuna.Tag = "vasenreuna"; 
     311        vasenreuna.CollisionIgnoreGroup = 1; // ettei Jouni törmää 
    288312        PhysicsObject oikeareuna = Level.CreateRightBorder(); 
    289313        oikeareuna.Tag = "oikeareuna"; 
     
    299323        taistelija.Animation = new Animation(chuckinkavely); 
    300324        taistelija.Animation.Start(); 
     325        taistelija.Tag = "pelaaja"; 
    301326        taistelija.Position = paikka; 
    302327        taistelija.Kuoli += PelaajaKuoli; 
     
    334359    } 
    335360 
     361    void LuoTriggerPalikka(Vector paikka, double leveys, double korkeus) 
     362    { 
     363        PhysicsObject trigger = new PhysicsObject(leveys, korkeus); 
     364        trigger.IsVisible = false; 
     365        trigger.IgnoresCollisionResponse = true; 
     366        trigger.Tag = "trigger"; 
     367        trigger.Collided += delegate(IPhysicsObject t, IPhysicsObject kohde) 
     368        { 
     369            if (tActionTriggered) return; 
     370            if (kohde.Tag.ToString() == "trigger") return; 
     371 
     372            if (TriggerAction != null) 
     373                TriggerAction(); 
     374 
     375            tActionTriggered = true; 
     376        }; 
     377        trigger.Position = paikka; 
     378        trigger.MakeStatic(); 
     379        Add(trigger); 
     380    } 
     381 
    336382    GameObject Varjo(GameObject shadowCaster) 
    337383    { 
     
    392438    void SeuraavaKentta(PhysicsObject tormaaja, PhysicsObject tormatty) 
    393439    { 
     440        if (!paaseekoSeuraavaanKenttaan) return; 
     441 
    394442        ClearAll(); 
     443        taistelija = null; 
     444        TriggerAction = null; 
     445        tActionTriggered = false; 
     446 
    395447        kenttaNro++; 
    396448 
     
    411463        switch (kentta) 
    412464        { 
     465            case 10: 
     466                TriggerAction += delegate { LuoJouniBoss(new Vector(Screen.Left - jouniBoss.Width / 2 - 20, 0.0), new Vector(Screen.Left + jouniBoss.Width * 1.3, 0.0)); }; 
     467                break; 
    413468            case 18: 
    414469                taistelija.Size *= 0.5; 
     
    469524    void GotItemFromCase(GameObject o) 
    470525    { 
    471         ItemType gotType = (ItemType)((object[])o.Tag)[0]; 
     526        ItemType gotType = (ItemType)(((object[])o.Tag)[1]); 
    472527 
    473528        switch (gotType) 
     
    497552#if DEBUG 
    498553        Keyboard.Listen(Key.C, ButtonState.Pressed, LuoChromaCase, null); 
     554        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, delegate { LuoJouniBoss(Mouse.PositionOnWorld, taistelija.Position); }, null); 
     555        Mouse.IsCursorVisible = true; 
    499556#endif 
    500557    } 
     
    521578 
    522579        AddCollisionHandler(ammus, "vihollinen", AmmusOsuuViholliseen); 
     580        AddCollisionHandler(ammus, "jouni", AmmusOsuuViholliseen); 
     581 
    523582        AddCollisionHandler<PhysicsObject, PhysicsObject>(ammus, delegate(PhysicsObject a, PhysicsObject k) { ammus.Destroy(); }); 
    524583    } 
  • 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 
  • 2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora/Attack to Agora/Attack_to_Agora_pyry.cs

    r6358 r6402  
    2424    SoundEffect taustamusiikki_1 = LoadSoundEffect("taustamusiikki_1"); 
    2525    SoundEffect ampuminen = LoadSoundEffect("ampuminen(canser)"); 
     26    SoundEffect jounihaviaa = LoadSoundEffect("jounihaviaa"); 
    2627    // Aliohjelmat 
    2728} 
  • 2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora/Attack to Agora/Elava.cs

    r6353 r6402  
    2222            if (Kuoli != null) Kuoli(); 
    2323        }; 
     24    } 
     25 
     26    public Elava(Image kuva, double elamat) 
     27        :this(kuva.Width, kuva.Height, elamat) 
     28    { 
     29        this.Image = kuva; 
    2430    } 
    2531 
  • 2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora/Attack to AgoraContent/Attack to AgoraContent.contentproj

    r6396 r6402  
    411411    </Compile> 
    412412  </ItemGroup> 
     413  <ItemGroup> 
     414    <Compile Include="jounihaviaa.wav"> 
     415      <Name>jounihaviaa</Name> 
     416      <Importer>WavImporter</Importer> 
     417      <Processor>SoundEffectProcessor</Processor> 
     418    </Compile> 
     419  </ItemGroup> 
    413420  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    414421  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
Note: See TracChangeset for help on using the changeset viewer.