public void Update(GameTime gametime, ref Level_LoaderV2 levelloader, bool isMapActive) { //Steuerung des Spielers if (!isMapActive) { position = playersteuerung.Update(gametime, position, ref Säulen_Array, ref inventar, ref levelloader, ref rot); } }
public void setInventar(ref Level_LoaderV2 levelloader) { inventar.setSpiegel(levelloader.anzahlSpiegel); inventar.setSplittPrisma(levelloader.anzahlSplittPrisma); inventar.setFatbkristallRed(levelloader.anzahlRed); inventar.setFatbkristallYellow(levelloader.anzahlYellow); inventar.setFatbkristallGreen(levelloader.anzahlGreen); inventar.setFatbkristallCyan(levelloader.anzahlCyan); inventar.setFatbkristallBlue(levelloader.anzahlBlue); inventar.setFatbkristallMagenta(levelloader.anzahlMagenta); }
public InGame(int levelnummer, int anzahllevel) { //Gabriels-Teil this.levelnummer = levelnummer; this.anzahllevel = anzahllevel; tutorial = new Tutorial(levelnummer); //Jannicks-Teil levelloader = new Level_LoaderV2(levelnummer); //////////// TODO: 1 durch "LevelNummer" ersetzen die irgendwo noch herkommen muss von der Levelauswahl lichtPos = levelloader.Licht_Start; lichtDir = levelloader.Licht_Richtung; //Annes-Teil timer = new IngameTimer(levelloader.minuten, levelloader.sekunden); punkte = minuten * 60 * 10 + sekunden * 10; }
public void Update(GameTime gameTime, ref Player player, ref bool gewonnen, ref Level_LoaderV2 levelloader) { if (p == null) { p = new Lichtquelle_Partikel(partikelmodel, position, richtung, null, null, new MyColor(000000), partikeleffect); } else { if (dist(position, p.getPosition()) > 1) { newp = new Lichtquelle_Partikel(partikelmodel, position, richtung, p, null, new MyColor(000000), partikeleffect); p.setNachfolger(newp); p = p.getNachfolger(); } p.Update(gameTime, collider, ref player, ref gewonnen, ref levelloader); } }
//Kollisionsabfrage mit Spieler und Umgebung public void colliding(Lichtquelle_Partikel partikel, Vector3 newposition, ref Player player, ref bool gewonnen, ref Level_LoaderV2 levelloader) { arrayposition_x = (int)Math.Floor(partikel.getPosition().X); arrayposition_y = (int)Math.Floor(partikel.getPosition().Z); if (arrayposition_x != (int)Math.Floor(newposition.X) || arrayposition_y != (int)Math.Floor(newposition.Z)) { int objectAtnew = levelloader.Level_Array[(int)Math.Floor(newposition.X), (int)Math.Floor(newposition.Z)]; switch (objectAtnew) { case 1: //Kollision Wand partikel.setRichtung(new Vector3(0, 0, 0)); break; case 10: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 11: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 12: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 13: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 14: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 15: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 16: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 17: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 18: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 19: partikel.setRichtung(new Vector3(0, 0, 0)); break; case 2: //Wand mit Loch partikel.setPosition(newposition); break; case 3: //Kollision Säule Vector3 partikelrichtung = partikel.getRichtung(); Vector3 oben = new Vector3(0, 0, -1); Vector3 unten = new Vector3(0, 0, 1); Vector3 rechts = new Vector3(1, 0, 0); Vector3 links = new Vector3(-1, 0, 0); partikelrichtung.Normalize(); switch (player.getSäulenArray()[(int)Math.Floor(newposition.X), (int)Math.Floor(newposition.Z)]) { case 1: partikel.setPosition(newposition); break; case 2: if (partikelrichtung == oben) { partikel.setRichtung(links); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } if (partikelrichtung == unten) { partikel.setRichtung(rechts); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } if (partikelrichtung == rechts) { partikel.setRichtung(unten); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } if (partikelrichtung == links) { partikel.setRichtung(oben); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } break; case 3: if (partikelrichtung == oben) { partikel.setRichtung(rechts); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } if (partikelrichtung == unten) { partikel.setRichtung(links); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } if (partikelrichtung == rechts) { partikel.setRichtung(oben); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } if (partikelrichtung == links) { partikel.setRichtung(unten); partikel.setPosition(newposition); colliding(partikel, partikel.getPosition() + partikel.getRichtung(), ref player, ref gewonnen, ref levelloader); } break; case 4: if (partikelrichtung == oben || partikelrichtung == unten) { partikel.setPosition(newposition); partikel.setNachfolger(new Lichtquelle_Partikel(partikel.getModel(), partikel.getPosition(), links, partikel, partikel.getNachfolger(), new MyColor(partikel.getFarbe().mycolor), partikel.effect)); partikel.getNachfolger().getNachfolger().setVorgänger(partikel.getNachfolger()); partikel.setNachfolger(new Lichtquelle_Partikel(partikel.getModel(), partikel.getPosition(), rechts, partikel, partikel.getNachfolger(), new MyColor(partikel.getFarbe().mycolor), partikel.effect)); partikel.getNachfolger().getNachfolger().setVorgänger(partikel.getNachfolger()); } if (partikelrichtung == rechts || partikelrichtung == links) { partikel.setPosition(newposition); partikel.setNachfolger(new Lichtquelle_Partikel(partikel.getModel(), partikel.getPosition(), oben, partikel, partikel.getNachfolger(), new MyColor(partikel.getFarbe().mycolor), partikel.effect)); partikel.getNachfolger().getNachfolger().setVorgänger(partikel.getNachfolger()); partikel.setNachfolger(new Lichtquelle_Partikel(partikel.getModel(), partikel.getPosition(), unten, partikel, partikel.getNachfolger(), new MyColor(partikel.getFarbe().mycolor), partikel.effect)); partikel.getNachfolger().getNachfolger().setVorgänger(partikel.getNachfolger()); } break; case 5: if (partikel.getFarbe().mycolor == 000000) { partikel.setFarbe(new MyColor(000001)); } else { partikel.setFarbe(new MyColor(MyColor.mixColor(partikel.getFarbe(), new MyColor(000001)))); } partikel.setPosition(newposition); break; case 6: if (partikel.getFarbe().mycolor == 000000) { partikel.setFarbe(new MyColor(000010)); } else { partikel.setFarbe(new MyColor(MyColor.mixColor(partikel.getFarbe(), new MyColor(000010)))); } partikel.setPosition(newposition); break; case 7: if (partikel.getFarbe().mycolor == 000000) { partikel.setFarbe(new MyColor(000100)); } else { partikel.setFarbe(new MyColor(MyColor.mixColor(partikel.getFarbe(), new MyColor(000100)))); } partikel.setPosition(newposition); break; case 8: if (partikel.getFarbe().mycolor == 000000) { partikel.setFarbe(new MyColor(001000)); } else { partikel.setFarbe(new MyColor(MyColor.mixColor(partikel.getFarbe(), new MyColor(001000)))); } partikel.setPosition(newposition); break; case 9: if (partikel.getFarbe().mycolor == 000000) { partikel.setFarbe(new MyColor(010000)); } else { partikel.setFarbe(new MyColor(MyColor.mixColor(partikel.getFarbe(), new MyColor(010000)))); } partikel.setPosition(newposition); break; case 10: if (partikel.getFarbe().mycolor == 000000) { partikel.setFarbe(new MyColor(100000)); } else { partikel.setFarbe(new MyColor(MyColor.mixColor(partikel.getFarbe(), new MyColor(100000)))); } partikel.setPosition(newposition); break; default: //partikel.setPosition(newposition); break; } break; case 70: //geschlossene Tür partikel.setRichtung(new Vector3(0, 0, 0)); break; case 9: //Kollision Ziel partikel.setRichtung(new Vector3(0, 0, 0)); gewonnen = true; break; case 5000000: if (partikel.getFarbe().mycolor == 000000) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5000001: if (partikel.getFarbe().mycolor == 000001) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5000010: if (partikel.getFarbe().mycolor == 000010) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5000100: if (partikel.getFarbe().mycolor == 000100) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5001000: if (partikel.getFarbe().mycolor == 001000) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5010000: if (partikel.getFarbe().mycolor == 010000) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5100000: if (partikel.getFarbe().mycolor == 100000) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5000011: if (partikel.getFarbe().mycolor == 000011) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5000110: if (partikel.getFarbe().mycolor == 000110) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5001100: if (partikel.getFarbe().mycolor == 001100) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5011000: if (partikel.getFarbe().mycolor == 011000) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5110000: if (partikel.getFarbe().mycolor == 110000) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; case 5100001: if (partikel.getFarbe().mycolor == 100001) { partikel.setPosition(newposition); } else { partikel.setRichtung(new Vector3(0, 0, 0)); } break; default: partikel.setPosition(newposition); break; } if (objectAtnew >= 600000 && objectAtnew <= 604141) { objectAtnew -= 600000; string strX; string strY; if (objectAtnew < 1000) { strX = objectAtnew.ToString().Substring(0, 1); strY = objectAtnew.ToString().Substring(1, 2); } else { strX = objectAtnew.ToString().Substring(0, 2); strY = objectAtnew.ToString().Substring(2, 2); } int x = Convert.ToInt32(strX); int y = Convert.ToInt32(strY); if (levelloader.Level_Array[y, x] == 70) { türöffnet.Play(); levelloader.Level_Array[y, x] = 71; } objectAtnew += 610000; levelloader.Level_Array[(int)Math.Floor(newposition.X), (int)Math.Floor(newposition.Z)] = objectAtnew; } } else { partikel.setPosition(newposition); } }
public void Update(GameTime gameTime, PartikelCollider collider, ref Player player, ref bool gewonnen, ref Level_LoaderV2 levelloader) { if (vorgänger != null) { vorgänger.Update(gameTime, collider, ref player, ref gewonnen, ref levelloader); } else { if (richtung == new Vector3(0, 0, 0)) { nachfolger.setVorgänger(null); } } if (nachfolger != null) { if (nachfolger.richtung == new Vector3(0, 0, 0)) { löscheNachfolger(); } } if (richtung == new Vector3(0, 0, 1) || richtung == new Vector3(0, 0, -1)) { horizontal = true; } if (richtung == new Vector3(1, 0, 0) || richtung == new Vector3(-1, 0, 0)) { horizontal = false; } int letzeBewegung = gameTime.TotalGameTime.Milliseconds; Vector3 newposition = position + richtung; collider.colliding(this, newposition, ref player, ref gewonnen, ref levelloader); }
//Kollisionsabfrage mit Spieler und Umgebung public bool IsColliding(Vector3 currentposition, Vector3 newposition, ref Level_LoaderV2 levelloader) { arrayposition_x = (int)Math.Floor(currentposition.X); arrayposition_y = (int)Math.Floor(currentposition.Z); if (arrayposition_x != (int)Math.Floor(newposition.X) || arrayposition_y != (int)Math.Floor(newposition.Z)) { int objectAtnew = levelloader.Level_Array[(int)Math.Floor(newposition.X), (int)Math.Floor(newposition.Z)]; switch (objectAtnew) { case 1: return(true); case 10: return(true); case 11: return(true); case 12: return(true); case 13: return(true); case 14: return(true); case 15: return(true); case 16: return(true); case 17: return(true); case 18: return(true); case 19: return(true); case 2: return(true); case 3: return(true); case 70: return(true); case 8: return(true); break; case 9: return(true); default: return(false); } } return(false); }
public Player(Vector3 startposition, Model spielermodel, int LevelNummer, ContentManager content, ref Level_LoaderV2 levelloader) { position = startposition; this.spielermodel = spielermodel; inventar = new Inventar(content); playersteuerung = new PlayerSteuerung(LevelNummer, ref Säulen_Array, content.Load <SoundEffect>("Audio/farbkristallkramen"), content.Load <SoundEffect>("Audio/herausnehmen")); spiegel = content.Load <Model>("3DModelle/Mirror"); splittprisma = content.Load <Model>("3DModelle/Splittprisma"); farbkristall = content.Load <Model>("3DModelle/kristall"); kristalleffect = content.Load <Effect>("Shader/KristallEffect"); setInventar(ref levelloader); for (int i = 0; i < 41; i++) { for (int j = 0; j < 41; j++) { if (levelloader.Level_Array[i, j] == 3) { Säulen_Array[i, j] = 1; } else { Säulen_Array[i, j] = 0; } } } }