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."); }
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."); }
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."); }
/// <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; }
/// <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); }
/// <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); }
/// <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; }