コード例 #1
0
 public void LevelSegment_AddScore()
 {
     LevelSegment ls = new LevelSegment();
     JumpAndRun.Item.Object obj = new JumpAndRun.Item.Object();
     ls.AddScore(obj);
     Assert.AreEqual(1, ls.scores.Count, "Objekt wurde nicht hinzugefügt.");
 }
コード例 #2
0
        public void LevelSegment_Create()
        {
            LevelSegment ls = new LevelSegment();

            JumpAndRun.Item.Object obstacle = new JumpAndRun.Item.Object();
            obstacle.ModelXmlPath = "data/levels/jungle/models/banana.xml";
            obstacle.Deserialize();
            JumpAndRun.Item.Object score = new JumpAndRun.Item.Object();
            score.ModelXmlPath = "data/levels/jungle/models/banana.xml";
            score.Deserialize();
            JumpAndRun.Item.Object obj = new JumpAndRun.Item.Object();
            obj.ModelXmlPath = "data/levels/jungle/models/banana.xml";
            obj.Deserialize();

            ls.AddObstacle(obstacle);
            ls.AddScore(score);
            ls.AddObject(obj);

            Assert.AreEqual(true, ls.Create(0), "Segment wurde nicht erstellt.");
        }
コード例 #3
0
        public void LevelSegment_Deserialize()
        {
            LevelSegment ls = new LevelSegment();
            JumpAndRun.Item.Object obstacle = new JumpAndRun.Item.Object();

            obstacle.ModelXmlPath = "data/levels/jungle/models/banana.xml";
            JumpAndRun.Item.Object score = new JumpAndRun.Item.Object();
            score.ModelXmlPath = "data/levels/jungle/models/banana.xml";
            JumpAndRun.Item.Object obj = new JumpAndRun.Item.Object();
            obj.ModelXmlPath = "data/levels/jungle/models/banana.xml";

            ls.AddObstacle(obstacle);
            ls.AddScore(score);
            ls.AddObject(obj);

            ls.Deserialize();

            Assert.AreEqual("data/models/banana/banana.3ds", ls.obstacles[0].Model.Path, "Hinternis wurde nicht deserialisiert.");
            Assert.AreEqual("data/models/banana/banana.3ds", ls.scores[0].Model.Path, "Score wurde nicht deserialisiert.");
            Assert.AreEqual("data/models/banana/banana.3ds", ls.objects[0].Model.Path, "Objekt wurde nicht deserialisiert.");
        }
コード例 #4
0
ファイル: Level.cs プロジェクト: slandgrebe/Projektarbeit
        /// <summary>
        /// Mischelt die Segmente
        /// </summary>
        /// <param name="startSegment">Fügt das Startsegment am Anfang ein</param>
        /// <param name="endSegment">Fügt das Endsegment am Ende an</param>
        /// <param name="segments">Liste mit Segmenten</param>
        /// <returns>Liste mit allen Segmenten in der korrekten darzustellenden Reihenfolge</returns>
        private List<LevelSegment> ShuffleSegments(LevelSegment startSegment, LevelSegment endSegment, List<LevelSegment> segments)
        {
            List<LevelSegment> randomList = new List<LevelSegment>();

            // Zufallszahl generieren
            Random r = new Random();
            int randomIndex = 0;

            // Start hinzufügen
            randomList.Add(startSegment);

            // Debug Log
            log.Debug("Liste vor dem mischeln:");
            foreach (LevelSegment s in segments)
            {
                log.Debug(" " + s.FilePath);
            }

            // Segmente aus der übergebenen Liste zufällig auswählen
            while (segments.Count > 0)
            {
                randomIndex = r.Next(0, segments.Count);
                randomList.Add(segments[randomIndex]);
                segments.RemoveAt(randomIndex);
            }

            // Ende hinzufügen
            randomList.Add(endSegment);

            // Debug Log
            log.Debug("");
            log.Debug("Liste nach dem mischeln:");
            foreach (LevelSegment s in randomList)
            {
                log.Debug(" " + s.FilePath);
            }
            log.Debug("*************************************");

            return randomList;
        }
コード例 #5
0
ファイル: Level.cs プロジェクト: slandgrebe/Projektarbeit
        /// <summary>
        /// Eventmethode wenn ein Segment verlassen wird.
        /// </summary>
        /// <param name="segment">Segment welches verlassen wird</param>
        public void SegmentExited(LevelSegment segment)
        {
            // alle segmente der nächsten 100m einblenden
            float currentPosition = segment.StartPosition + segment.Length;
            List<LevelSegment> list = RandomlyChosenSegments.FindAll(e => e.StartPosition + 10 < currentPosition);
            foreach (LevelSegment s in list)
            {
                s.Visibility(false);
            }

            log.Debug("Segment Exited at Position " + currentPosition + ": " + segment.FilePath);
        }
コード例 #6
0
ファイル: Level.cs プロジェクト: slandgrebe/Projektarbeit
        /// <summary>
        /// Eventmethode wenn ein Segment betreten wird.
        /// </summary>
        /// <param name="segment">Sgment welches betreten wird</param>
        public void SegmentEntered(LevelSegment segment)
        {
            // Endsegment
            if (segment.Equals(this.SegmentsStartEnd[1]))
            {
                if (LevelFinishedEvent != null)
                {
                    LevelFinishedEvent();
                }
            }

            // segment ausblenden, sieht man sowieso nicht mehr
            segment.Visibility(true);

            // alle segmente der nächsten 100m einblenden
            float currentPosition = segment.StartPosition + segment.Length;
            List<LevelSegment> list = RandomlyChosenSegments.FindAll(e => e.StartPosition >= currentPosition && e.StartPosition <= currentPosition + VisibilityRange);
            foreach (LevelSegment s in list)
            {
                s.Visibility(true);
            }

            log.Debug("Segment Entered at Position " + segment.StartPosition + ": " + segment.FilePath);
        }
コード例 #7
0
ファイル: Level.cs プロジェクト: slandgrebe/Projektarbeit
        /// <summary>
        /// Ladet das nächste Segment
        /// </summary>
        /// <param name="segment">Segment das geladen werden soll</param>
        /// <returns>Prüfung ob die Operation durchgeführt werden konnte</returns>
        public bool LoadNextSegment(LevelSegment segment)
        {
            /*//if (!Segments[LoadetSegments].Create(Length)) return false
            Segments[LoadetSegments].Create(Length);
            Length += Segments[LoadetSegments].Length;
            LoadetSegments++;
            return true;*/

            if (!segment.Create(Length))
            {
                return false;
            }

            // Events
            segment.ExitedEvent += new LevelSegment.Exited(SegmentExited);
            segment.EnteredEvent += new LevelSegment.Entered(SegmentEntered);

            // Gesamtlänge
            Length += segment.Length;

            return true;
        }