public static Fledermaus.GameObjects.Level getLevelAs_Level(Level level) { var _level = new Fledermaus.GameObjects.Level(level.Name); for (int i = 0; i < level.Rooms.Count; i++) { var room = level.Rooms[i]; var _room = new Fledermaus.Room() { Index = i, NextRoomIndex = i + 1, Column = room.Column, Row = room.Row, RoomBounds = new Fledermaus.GameObjects.RectangularGameObject(room.RelativeBounds[0], room.RelativeBounds[2]), Player = new Fledermaus.GameObjects.Player(room.Player.Position), Exit = new Fledermaus.GameObjects.RectangularGameObject(room.Exit.Position + room.Exit.RelativeBounds[0], room.Exit.Position + room.Exit.RelativeBounds[2]), }; if (i == level.Rooms.Count - 1) { _room.NextRoomIndex = -1; } foreach (var lightRay in room.LightRays) { _room.LightRays.Add(new Fledermaus.GameObjects.LightRay(lightRay.Position, lightRay.RayDirection)); } foreach (var obstacle in room.Obstacles) { _room.Obstacles.Add(new Fledermaus.GameObjects.Obstacle(obstacle.Position + obstacle.RelativeBounds[0], obstacle.Position + obstacle.RelativeBounds[2])); } foreach (var mirror in room.Mirrors) { _room.Mirrors.Add(new Fledermaus.GameObjects.Mirror(mirror.Position + mirror.RailStart, mirror.Position + mirror.RailEnd, mirror.InitAngle, mirror.StartingRelativePosition)); _room.Mirrors[_room.Mirrors.Count - 1].MinimumRotation = mirror.MinRotation; _room.Mirrors[_room.Mirrors.Count - 1].MaximumRotation = mirror.MaxRotation; } _level.AddRoom(_room); } _level.CurrentRoom = _level.Rooms[0]; return(_level); }
private void useLevel1() { _level = Levels.CreateLevel1(); _gameLogic.Level = _level; foreach (var _room in _level.Rooms) { LevelVisual.Rooms.Add(new RoomVisual() { _Room = _room, PlayerVisual = new PlayerVisual() { Data = new Player() { //InitialPosition = _room.Player.Position, Position = _room.Player.Position, RelativeBounds = new List <Vector2>() { new Vector2(0.0f, 0.03f), new Vector2(0.025f, 0.01f), new Vector2(0.07f, 0.02f), new Vector2(0.02f, -0.045f), new Vector2(0.0f, -0.03f), new Vector2(-0.02f, -0.045f), new Vector2(-0.07f, 0.02f), new Vector2(-0.025f, 0.01f) }, } }, Data = new Model.GameObject.Room() { Column = _room.Column, Row = _room.Row, RelativeBounds = new List <Vector2>() { new Vector2(Konfiguration.Round(-1.0f), Konfiguration.Round(1.0f)), new Vector2(Konfiguration.Round(-1.0f), Konfiguration.Round(-1.0f)), new Vector2(Konfiguration.Round(1.0f), Konfiguration.Round(-1.0f)), new Vector2(Konfiguration.Round(1.0f), Konfiguration.Round(1.0f)) }, }, ExitVisual = new ExitVisual() { Data = new Exit() { Position = _room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3), RelativeBounds = new List <Vector2>() { -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point1, -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point2, -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point3, -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point4, /* 0.5f *(-_room.Exit.Point1+_room.Exit.Point3)-_room.Exit.Point1 , * 0.5f*(-_room.Exit.Point1+_room.Exit.Point3)-_room.Exit.Point2, * 0.5f*(-_room.Exit.Point1+_room.Exit.Point3)-_room.Exit.Point3, * 0.5f*(-_room.Exit.Point1+_room.Exit.Point3)- _room.Exit.Point4 ,*/ }, }, }, }); if (Math.Abs(LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.Data.RelativeBounds[0].X) < Math.Abs(LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.Data.RelativeBounds[0].Y)) { levelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.IsHorizontal = false; } else { levelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.IsHorizontal = true; } // System.Diagnostics.Debug.WriteLine(0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)); foreach (var lightray in _room.LightRays) { LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].LightRayVisuals.Add( new LightRayVisual() { Data = new LightRay() { Position = lightray.Origin, RayDirection = lightray.FirstDirection, RelativeBounds = new List <Vector2>() { new Vector2(Konfiguration.Round(-.02f), Konfiguration.Round(.02f)), new Vector2(Konfiguration.Round(-.02f), Konfiguration.Round(-.02f)), new Vector2(Konfiguration.Round(.02f), Konfiguration.Round(-.02f)), new Vector2(Konfiguration.Round(.02f), Konfiguration.Round(.02f)) } } }); } foreach (var _mirror in _room.Mirrors) { LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].MirrorVisuals.Add(new MirrorVisual() { Data = new Mirror() { Position = _mirror.RailPosition1 + 0.5f * (-_mirror.RailPosition1 + _mirror.RailPosition2), RailStart = _mirror.RailPosition1 - (_mirror.RailPosition1 + 0.5f * (-_mirror.RailPosition1 + _mirror.RailPosition2)), RailEnd = _mirror.RailPosition2 - (_mirror.RailPosition1 + 0.5f * (-_mirror.RailPosition1 + _mirror.RailPosition2)), InitAngle = _mirror.StartingAngle, MinRotation = _mirror.MinimumRotation, MaxRotation = _mirror.MaximumRotation, StartingRelativePosition = _mirror.StartingRelativePosition, RelativeBounds = new List <Vector2>() { new Vector2(Konfiguration.Round(-.02f), Konfiguration.Round(.02f)), new Vector2(Konfiguration.Round(-.02f), Konfiguration.Round(-.02f)), new Vector2(Konfiguration.Round(.02f), Konfiguration.Round(-.02f)), new Vector2(Konfiguration.Round(.02f), Konfiguration.Round(.02f)) }, }, }); } foreach (var obstacle in _room.Obstacles) { levelVisual.Rooms[LevelVisual.Rooms.Count - 1].ObstacleVisuals.Add(new ObstacleVisual() { Data = new Obstacle() { Position = obstacle.Point1 + 0.5f * (-obstacle.Point1 + obstacle.Point3), RelativeBounds = new List <Vector2>() { -(obstacle.Point1 + 0.5f * (-obstacle.Point1 + obstacle.Point3)) + obstacle.Point1, -(obstacle.Point1 + 0.5f * (-obstacle.Point1 + obstacle.Point3)) + obstacle.Point2, -(obstacle.Point1 + 0.5f * (-obstacle.Point1 + obstacle.Point3)) + obstacle.Point3, -(obstacle.Point1 + 0.5f * (-obstacle.Point1 + obstacle.Point3)) + obstacle.Point4, } } }); } foreach (var roomV in levelVisual.Rooms) { level.Rooms.Add(roomV.Data as Model.GameObject.Room); } _gameGraphics.Level = _level; // createStartupLevel(); // createVisualStartupLevel(); } }
private void createStartup() { _level = Levels.CreateLevel1(); _gameLogic.Level = _level; foreach (var _room in _level.Rooms) { _room.Obstacles.Clear(); _room.Mirrors.Clear(); _room.LightRays.Clear(); LevelVisual.Rooms.Add(new RoomVisual() { _Room = _room, PlayerVisual = new PlayerVisual() { Data = new Player() { //InitialPosition = _room.Player.Position, Position = _room.Player.Position, RelativeBounds = new List <Vector2>() { new Vector2(0.0f, 0.03f), new Vector2(0.025f, 0.01f), new Vector2(0.07f, 0.02f), new Vector2(0.02f, -0.045f), new Vector2(0.0f, -0.03f), new Vector2(-0.02f, -0.045f), new Vector2(-0.07f, 0.02f), new Vector2(-0.025f, 0.01f) }, } }, Data = new Model.GameObject.Room() { Column = _room.Column, Row = _room.Row, RelativeBounds = new List <Vector2>() { new Vector2(Konfiguration.Round(-1.0f), Konfiguration.Round(1.0f)), new Vector2(Konfiguration.Round(-1.0f), Konfiguration.Round(-1.0f)), new Vector2(Konfiguration.Round(1.0f), Konfiguration.Round(-1.0f)), new Vector2(Konfiguration.Round(1.0f), Konfiguration.Round(1.0f)) }, }, ExitVisual = new ExitVisual() { Data = new Exit() { Position = _room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3), RelativeBounds = new List <Vector2>() { -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point1, -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point2, -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point3, -(_room.Exit.Point1 + 0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)) + _room.Exit.Point4, /* 0.5f *(-_room.Exit.Point1+_room.Exit.Point3)-_room.Exit.Point1 , * 0.5f*(-_room.Exit.Point1+_room.Exit.Point3)-_room.Exit.Point2, * 0.5f*(-_room.Exit.Point1+_room.Exit.Point3)-_room.Exit.Point3, * 0.5f*(-_room.Exit.Point1+_room.Exit.Point3)- _room.Exit.Point4 ,*/ }, }, }, }); if (Math.Abs(LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.Data.RelativeBounds[0].X) < Math.Abs(LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.Data.RelativeBounds[0].Y)) { levelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.IsHorizontal = false; } else { levelVisual.Rooms[LevelVisual.Rooms.Count - 1].ExitVisual.IsHorizontal = true; } // System.Diagnostics.Debug.WriteLine(0.5f * (-_room.Exit.Point1 + _room.Exit.Point3)); /* LevelVisual.Rooms[LevelVisual.Rooms.Count - 1].LightRayVisuals.Add( * new LightRayVisual() * { * Data = new LightRay() * { * Position = _room.LightRays.First().Origin, * RayDirection = _room.LightRays.First().FirstDirection, * RelativeBounds = new List<Vector2>() { new Vector2( Konfiguration.Round(-.02f), Konfiguration.Round(.02f)), * new Vector2( Konfiguration.Round(-.02f), Konfiguration.Round(-.02f)), * new Vector2( Konfiguration.Round(.02f), Konfiguration.Round(-.02f)), * new Vector2( Konfiguration.Round(.02f), Konfiguration.Round(.02f)) * } * } * * }); */ foreach (var roomV in levelVisual.Rooms) { level.Rooms.Add(roomV.Data as Model.GameObject.Room); } _gameGraphics.Level = _level; // createStartupLevel(); // createVisualStartupLevel(); } /* for (int i = 0; i < RowsToZero + (RowsToZero - 1); i++) { * for(int j = 0;j<ColumnsToZero + (ColumnsToZero - 1); j++) * { * levelVisual.Rooms.Add(new RoomVisual() * { * * Data = new Model.GameObject.Room() * { * Row = i + 1, * Column = j + 1, * RelativeBounds = new List<Vector2>() { new Vector2( Konfiguration.Round(-1.0f), Konfiguration.Round(1.0f)), * new Vector2( Konfiguration.Round(1.0f), Konfiguration.Round(1.0f)), * new Vector2( Konfiguration.Round(1.0f), Konfiguration.Round(-1.0f)), * new Vector2( Konfiguration.Round(-1.0f), Konfiguration.Round(-1.0f)) }, * * }, * PlayerVisual = new PlayerVisual() * { * * Data = new Player() { * Position = Vector2.Zero, * * RelativeBounds = new List<Vector2>() { new Vector2(0.0f, 0.03f), * new Vector2(0.025f, 0.01f), * new Vector2(0.07f, 0.02f), * * new Vector2(0.02f, -0.045f), * new Vector2(0.0f, -0.03f), * new Vector2(-0.02f, -0.045f), * * new Vector2(-0.07f, 0.02f), * new Vector2(-0.025f, 0.01f) * }, * }, * }, * ExitVisual = new ExitVisual() * { * * Data = new Exit() * { * Position = new Vector2(1.0f, .0f), * RelativeBounds = new List<Vector2>() { * new Vector2(-0.105f, 0.045f), * new Vector2(0.105f, 0.045f), * new Vector2(0.105f, -0.045f), * new Vector2(-0.105f, -0.045f), * }, * }, * IsHorizontal = true, * } * }); * var _level2 = Serializer.getLevelAs_Level(Serializer.getLevelVisualAsLevel(LevelVisual)); * levelVisual.Rooms.Last()._Room = _level2.Rooms.Last(); * //_level.CurrentRoom = _level.Rooms.First(); * * } * } * var _level = Serializer.getLevelAs_Level(Serializer.getLevelVisualAsLevel(LevelVisual)); * _level.CurrentRoom = _level.Rooms.First(); * _gameGraphics.Level = _level; * _gameLogic.Level = _level; */ }