예제 #1
0
 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);
     }
 }
예제 #2
0
 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);
 }
예제 #3
0
        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;
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        //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);
            }
        }
예제 #6
0
        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);
        }
예제 #7
0
        //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);
        }
예제 #8
0
        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;
                    }
                }
            }
        }