示例#1
0
        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);
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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;
             */
        }