From 70b774c5eadcd8dc2e7b859856ab383d126bd537 Mon Sep 17 00:00:00 2001
From: Hanki Sakari <sakari.s.b.hanki@student.jyu.fi>
Date: Mon, 24 Mar 2025 12:59:29 +0200
Subject: [PATCH] =?UTF-8?q?Kelaboteille=20on=20lis=C3=A4tty=20aseet/jonkin?=
 =?UTF-8?q?lainen=20projektiilinheittomekaniikka?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../KelaCombatTesti/Content/kentta1.png       | Bin 555 -> 573 bytes
 KelaCombat/KelaCombatTesti/KelaCombatTesti.cs |  49 ++++++++++++++----
 2 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/KelaCombat/KelaCombatTesti/Content/kentta1.png b/KelaCombat/KelaCombatTesti/Content/kentta1.png
index 496e9698dbff8ccc88faaaa707c8d8927ce83088..3372318fa08b9077c6cb5f171e29a8aa5ab1c052 100644
GIT binary patch
delta 362
zcmZ3@vX^Cor`~=B2EP4_7OcT43=9ksC9V-A!TD(=<%vb93;~Imc_n&&t|1DhdWL%D
z-PgWbPAm_SUslG*@Pe6v0Y;-KoA|=BKBw;#zx^u-KA@3rJY5_^JiOmd$>lq&z|nU1
z-KO9-4ZH8^ZF=+npXI_Noz^biT`4aoM`U*IYmlEV;N-*0P|dcY-1Rg2oI{s?R3}<l
zvhpWdO^Pk9<hWl{e}3<gXMGo16q&Ph?RM5bzt>V$e6?wsH18kXI)-y=Ir~|@roDZ|
zTfck*cc!57mOolXNyV8>CiOr0kL8uPttnn`?_tpLi!m!!Cuu)C{yDW%O8J~thJKp-
zSE=h2Yqzt!dOLL%dx?fI@4SyEd^*#PxflnZzW2b+*hs8-6IXM8c)*Hu+vD%1J~$-6
xyY0(?6D+67OLHGrt$A|X+m<(b<y_8(+@~hEO`JcAuLl&E44$rjF6*2UngG$fntuQQ

delta 343
zcmdnXvYKUrr``bu2EGG~S=Tx_85kHON?apKg7ec#$`gxH83GbB^GfvmTtgI0^$hjQ
z{#-o1eqwo${QfdVh8N5X3@{o^*~Ax~^{Nm4*vu}?XaE{{%hSa%#KZgTlt8{i3OsEW
zcUN%nzj(W+<6~{U$Lz912lw3~(`M9iHVOXtA-JPeAW4g1OM1gTYcu}`LjI56AFU}4
zvpG_u>RVjdAs=GDGB0qi;3Ns5f|nZu{w|Gb{ZjPQ>1;RKU(>$~bE1X%S!y@?l^#_s
zt5*EmDaciuYxJnV(`jD)Us<W$tAiKKWv*@CZq=*jx=hx3)77;pVw!#Dk6JFfD(!gx
zUf6cACvGz<Qi7Jvo*_9YMp<qX_pR4Y=0$0j`NwuCN>2Ntxb)5P{@Zrzzb}^xp7$y<
eWBaX{0(H}vjAwJ&?$ZZ)lfl!~&t;ucLK6Ts$d8Ty

diff --git a/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs b/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs
index 0c9117c..90cbf48 100644
--- a/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs
+++ b/KelaCombat/KelaCombatTesti/KelaCombatTesti.cs
@@ -71,17 +71,17 @@ namespace KelaCombatTesti;
         
             void LiikuVasemmalle(Vector vektori)
             {
-                pelaaja.Walk(-100);
+                pelaaja.Walk(-120);
             }
 
             void LiikuOikealle(Vector vektori)
             {
-                pelaaja.Walk(100);
+                pelaaja.Walk(120);
             }
             
             void Hyppaa(Vector vektori)
             {
-                pelaaja.Jump(300.0);
+                pelaaja.Jump(280.0);
             }
         }
         
@@ -93,7 +93,7 @@ namespace KelaCombatTesti;
         {
 
             Level.Background.CreateGradient(Color.DarkGray, Color.Blue);
-            Gravity = new Vector(0, -981.0);
+            Gravity = new Vector(0, -1100.0);
             
            
             // pelissä kentät luodaan piirtämällä pikseleitä. Pikselin väri kuvaa aina jotain tiettyä asiaa kentällä
@@ -105,7 +105,7 @@ namespace KelaCombatTesti;
             ruudut.SetTileMethod(Color.Red, LuoKelabottiSpawni); //PUNAISEEN voi spawnaa vihu
             ruudut.SetTileMethod(Color.SkyBlue, LuoViinapullo); //VAALEANSNISET on pelaajaa parantavia viinapulloja
             
-            ruudut.Execute(70, 70);
+            ruudut.Execute(80, 80);
 
             
             
@@ -166,6 +166,7 @@ namespace KelaCombatTesti;
             //Siis pelaajan elämien väheneminen VahnigoitaPelaajaa-aliohjelman mukaisesti 
             AddCollisionHandler(pelaaja, "Kelabotti", VahingoitaPelaajaa);
             AddCollisionHandler(pelaaja, "Viinapullo", ParannaPelaajaa);
+            AddCollisionHandler(pelaaja, "kappale", VahingoitaPelaajaa);
             
             Add(pelaaja);
             
@@ -241,14 +242,17 @@ namespace KelaCombatTesti;
         /// <returns>Kelabotti</returns>
         void LuoKelabotti()
         {
-            Jypeli.PhysicsObject spawni = spawnipaikat[RandomGen.NextInt(spawnipaikat.Count)];
+            PhysicsObject spawni = spawnipaikat[RandomGen.NextInt(spawnipaikat.Count)];
             PlatformCharacter Kelabotti = new PlatformCharacter(80.0, 80.0);
             Kelabotti.Color = Color.Orange;
             Kelabotti.Image = KelabottiKuva;
+            Kelabotti.CollisionIgnoreGroup = 3;
             Kelabotti.MirrorImage();
             Kelabotinelamalaskuri = new IntMeter(5); // Alussa on 5 elämää 
             Kelabotti.Tag = "Kelabotti";
             Kelabotti.Position = spawni.Position;
+            Kelabotti.Weapon = new AssaultRifle(30, 10);
+            Kelabotti.Weapon.ProjectileCollision = VahingoitaPelaajaa;
             Add(Kelabotti);
             
             
@@ -256,16 +260,43 @@ namespace KelaCombatTesti;
             seuraajanAivot.Speed = 100;
 
             Kelabotti.Brain = seuraajanAivot;
-           
+            
+            Timer heittoajastin = new Timer();
+            heittoajastin.Interval = 2;
+            heittoajastin.Timeout += delegate() { KelabotinAmmus(Kelabotti, "pelaaja"); };
+            heittoajastin.Start();
+
+            // Destroyed-tapahtuma Jypelissä:
+            // https://tim.jyu.fi/view/kurssit/jypeli/tapahtumat/muuttapahtumat
+            Kelabotti.Destroyed += heittoajastin.Stop;
+
             
         }
-       
+       /// <summary>
+       /// Aliohjelma, jossa käsitellään Kelabotin heittämä ammus
+       /// </summary>
+       /// <param name="heittavaOlio">Kelabotti heittää ammuksen</param>
+       /// <param name="kohdeolionTunniste">pelaajan tunniste</param>
+        public void KelabotinAmmus(PhysicsObject heittavaOlio, string kohdeolionTunniste)
+        {
+            PhysicsObject kappale = new PhysicsObject(15, 15, Shape.Circle);
+            //kappale.Hit(new Vector(180,80));
+            kappale.Hit(new Vector());
+            kappale.Position = heittavaOlio.Position;
+            kappale.CollisionIgnoreGroup = 3;
+            kappale.Color = Color.Silver;
+            kappale.Tag = "kappale";
+            kappale.MaximumLifetime = TimeSpan.FromSeconds(8);
+            Add(kappale);
+        }
+
+        
         /// <summary>
         /// Tämä aliohjelma käsittlee sen, kun pelaaja osuu Kelabottiin
         /// </summary>
         /// <param name="pelaaja">pelaajahahmo</param>
         /// <param name="Kelabotti">pelin vihu; Kelabotti</param>
-        void VahingoitaPelaajaa(PhysicsObject pelaaja, PhysicsObject Kelabotti)
+        void VahingoitaPelaajaa(PhysicsObject pelaaja, PhysicsObject kappale)
         {
             int luku = RandomGen.NextInt(19, 34);
             pelaajanelamaLaskuri.Value = pelaajanelamaLaskuri - luku; // Vähentää pelaajan elämää satunnaisen määrän
-- 
GitLab