Esempio n. 1
0
        private void CreateAndSpawnPlayers(GameModePvEConfig gameMode, LevelStageConfig levelStageConfig,
                                           GameLevelGridModel levelGridModel)
        {
            var playerConfigs = gameMode.PlayerConfigs;
            var spawnCorners  = levelStageConfig.PlayersSpawnCorners;

            Assert.IsTrue(playerConfigs.Length <= spawnCorners.Length, "players count greater than the level spawn corners");

            var zip = spawnCorners.Zip(playerConfigs, (spawnCorner, playerConfig) => (spawnCorner, playerConfig));

            foreach (var(spawnCorner, playerConfig) in zip)
            {
                var playerInput = _inputService.RegisterPlayerInput(playerConfig);

                var player = _gameFactory.CreatePlayer(playerConfig, playerInput);
                Assert.IsNotNull(player);

                var position = levelGridModel.GetCornerWorldPosition(spawnCorner);

                var go = _gameFactory.SpawnEntity(playerConfig.HeroConfig, position);
                Assert.IsNotNull(go);

                var hero = (IHero)go.GetComponent <HeroController>();
                player.AttachHero(hero, playerInput);

                Game.LevelManager.AddPlayer(playerConfig.PlayerTagConfig, player);
            }
        }
Esempio n. 2
0
        private static void SetupCamera(LevelStage levelStage, GameModeBaseConfig gameMode, GameLevelGridModel levelGridModel,
                                        IPlayer defaultPlayer)
        {
            // Camera setup and follow
            var mainCamera = Camera.main;

            if (mainCamera == null)
            {
                return;
            }

            var playerPosition = defaultPlayer.Hero.WorldPosition.xy;
            var levelSize      = levelGridModel.Size;

            var levelConfig = gameMode.LevelConfigs[levelStage.LevelIndex];

            var cameraRect = math.float2(Screen.width * 2f / Screen.height, 1) * mainCamera.orthographicSize;

            var fieldRect    = (levelSize - cameraRect) / 2f;
            var fieldMargins = (float4)levelConfig.ViewportPadding / levelConfig.OriginalPixelsPerUnits;

            var position = math.clamp(playerPosition, fieldMargins.xy - fieldRect, fieldRect + fieldMargins.zw);

            mainCamera.transform.position = math.float3(position, -1);
        }