private Scene(GameSettings gameSettings) { _gameSettings = gameSettings; Swarm = new AlienShipFactory(_gameSettings).GetSwarm(); Ground = new GroundFactory(_gameSettings).GetGround(); PlayerShip = new PlayerShipFactory(_gameSettings).GetPlayer(); PlayerShipMissile = new List <GameObject>(); AlienShipMissile = new List <GameObject>(); }
public GameObject Create(string objectType) { GameObject created = null; string[] parts = objectType.Split('_'); IFactory specialisedFactory = null; if (parts[0] == "Ground") { specialisedFactory = new GroundFactory(); } else if(parts[0] == "Vegitation") { specialisedFactory = new VegitationFactory(); } else { throw new Exception("WorldObjectFactory does not exists"); } return specialisedFactory.Create(parts[1]); }
public GameStatePlay(string playerSkin) { _backColor = new Color4(0.6f, 0.8f, 0.85f, 1f); // SHADERS RETRIEVING *********************************************************** // _flatColorShader = ShaderManager.Get("FlatColorShader"); _baseShader = ShaderManager.Get("Shader"); _3dSpriteShader = ShaderManager.Get("SpriteSheet"); // FONT RETRIEVING ************************************************************** // _font = FontManager.Get("glyphs"); // TEXT INITIALISATION ********************************************************** // _scoreText = new Text(new Vector2(13, 30), _font, _flatColorShader, "Test"); var x = ((24 / 32f) * 1.7f) / 2; var u = 24.0f / 240; _playerMesh = new Object3D(new[] { new Mesh { Vertices = new List <Vertex> { new Vertex(new Vector3(-x, 1.7f, 0f), new Vector2(0, 0)), new Vertex(new Vector3(-x, 0f, 0f), new Vector2(0, 1)), new Vertex(new Vector3(x, 1.7f, 0f), new Vector2(u, 0)), new Vertex(new Vector3(x, 1.7f, 0f), new Vector2(u, 0)), new Vertex(new Vector3(-x, 0f, 0f), new Vector2(0, 1)), new Vertex(new Vector3(x, 0f, 0f), new Vector2(u, 1)), } } }); _playerMesh.LoadInGl(_3dSpriteShader); // TEXTURES INITIALISATION ****************************************************** // _playerSpriteSheet = new SpriteSheet(_playerMesh, playerSkin, 24, 32, TextureMinFilter.Nearest, TextureMagFilter.Nearest); // MESH INITIALISATION ********************************************************** // _groundMesh = new Object3D("wall.obj", false, false, true); _groundMesh.LoadInGl(_baseShader); GroundSimple.MeshToUse = _groundMesh; _groundStairsMesh = new Object3D("stairs.obj", false, false, true); _groundStairsMesh.LoadInGl(_baseShader); GroundStairs.MeshToUse = _groundStairsMesh; _groundClusterMesh = new Object3D("cluster.obj", false, false, true); _groundClusterMesh.LoadInGl(_baseShader); GroundCluster.MeshToUse = _groundClusterMesh; _cubeMesh = new Object3D("cube.obj", false, false, false); _cubeMesh.LoadInGl(_baseShader); AxisAlignedBB.SetMesh(_cubeMesh); _interLeftMesh = new Object3D("inter_l.obj", false, false, true); _interLeftMesh.LoadInGl(_baseShader); Intersection.Left_Mesh = _interLeftMesh; _interRightMesh = new Object3D("inter_r.obj", false, false, true); _interRightMesh.LoadInGl(_baseShader); Intersection.Right_Mesh = _interRightMesh; _interLeftRightMesh = new Object3D("inter_lr.obj", false, false, true); _interLeftRightMesh.LoadInGl(_baseShader); Intersection.LeftRight_Mesh = _interLeftRightMesh; _trashMesh = new Object3D("trash.obj", false, false, true); _trashMesh.LoadInGl(_baseShader); ObstacleTrash.MeshToUse = _trashMesh; _coinMesh = new Object3D("coin.obj", false, false, true); _coinMesh.LoadInGl(_baseShader); Coin.MeshToUse = _coinMesh; // WORLD INITIALISATION ********************************************************* // _world = new World(); // PLAYER INITIALISATION ******************************************************** // _player = new Player { World = _world, Position = new Vector3(0, 0, -3f), Speed = 12.5f }; _camera = new Camera(new Vector3(0, 2f, 2f), _player.PositionForCamera + new Vector3(0, 2.5f, 0), (float)(80f * (Math.PI / 180f))); // TERRAIN GENERATION *********************************************************** // var tilesToGenerate = 10; for (int i = 0; i < tilesToGenerate; i++) { _world.Grounds.Add(new Ground { BoundingBox = new AxisAlignedBB(new Vector3(-3f, -0.5f, -6f), new Vector3(3f, 0f, 0f)), Mesh = _groundMesh, Position = new Vector3(0, 0, -6f * i), Direction = Direction.NORTH }); } var intersection = GroundFactory.NewIntersection(_player, _world, new Vector3(0, 0, -6f * tilesToGenerate), Direction.NORTH, (int)Intersection.IntersectionDirection.LEFT); _world.Grounds.Add(intersection); var rotation = DirectionHelper.GetRotationFromDirection(Direction.NORTH); var w1p1 = new Vector3(new Vector4(-3f, 0f, -7f, 1) * rotation); var w1p2 = new Vector3(new Vector4(3f, 5f, -6f, 1) * rotation); _world.Obstacles.Add(new Obstacle(new AxisAlignedBB(Vector3.ComponentMin(w1p1, w1p2), Vector3.ComponentMax(w1p1, w1p2)), intersection.Position, Direction.NORTH)); var w2p1 = new Vector3(new Vector4(3f, 0f, -6f, 1) * rotation); var w2p2 = new Vector3(new Vector4(4f, 5f, 0f, 1) * rotation); _world.Obstacles.Add(new Obstacle(new AxisAlignedBB(Vector3.ComponentMin(w2p1, w2p2), Vector3.ComponentMax(w2p1, w2p2)), intersection.Position, Direction.NORTH)); GC.Collect(); GC.WaitForPendingFinalizers(); }