Exemple #1
0
        public Level(ILevelLoader levelLoader)
        {
            Pieces = new List<LevelPiece>();

            _levelLoader = levelLoader;
            Loaded = false;
        }
    /// <summary>
    /// Loads the level and all related GameObjects like <c>LevelElement</c>s using the <c>ILevelLoader</c>
    /// </summary>
    public void LoadLevel()
    {
        if (MainMenuPlayerPreferences.InLevelCreationMode)
        {
            dataProvider = DeserializeLevel();
            levelLoader  = new BasicLevelLoader(dataProvider);
        }
        // Execute the following in try catch blocks, because levelLoader could be null.
        try {
            levelDataCollection = new LevelDataCollection();
            level = levelLoader.LoadLevel();
            levelDataCollection.levelElements  = levelLoader.LoadLevelElements(transform);
            levelDataCollection.levelItemsData = levelLoader.LoadItemsData();
            levelDataCollection.levelItems     = levelLoader.LoadItems(transform, levelDataCollection.levelItemsData);

            if (MainMenuPlayerPreferences.InLevelCreationMode)
            {
                levelDataCollection.enemyData = dataProvider.GetEnemyData();
                levelDataCollection.enemies   = LoadEnemies(levelDataCollection.enemyData);

                JsonDataProvider jsonDataProvider = (JsonDataProvider)dataProvider;
                levelDataCollection.playerData = jsonDataProvider.GetPlayerData();
            }
        } catch (NullReferenceException ex) {
            Debug.LogError("Cannot load level. No ILevelLoader assigned!");
            throw new NullReferenceException("Cannot load level. No ILevelLoader assigned!", ex);
        }
    }
 public ComputerMarbleMechanicsController(IBattleManager battleManager
                                          , IPlayerSystem playerSystem
                                          , IOpponentSystem opponentSystem
                                          , ILevelLoader levelLoader)
 {
     this.battleManager  = battleManager;
     this.opponentSystem = opponentSystem;
     this.levelLoader    = levelLoader;
     this.playerSystem   = playerSystem;
 }
 public SuspenseSystem(IPlayerSystem playerSystem
                       , IOpponentSystem opponentSystem
                       , ICameraController cameraController
                       , ITimeController timeController
                       , ILevelLoader levelLoader)
 {
     this.opponentSystem   = opponentSystem;
     this.cameraController = cameraController;
     this.timeController   = timeController;
     this.playerSystem     = playerSystem;
     this.levelLoader      = levelLoader;
 }
Exemple #5
0
        public void Initialise(ILevelLoader levelLoader, ILevelProgressReader progressReader, ILevelProgressWriter progressWriter, ILevelOrderLoader levelOrderLoader, IEventReader eventReader)
        {
            if (initialised)
            {
                Debug.Log("LevelIO has already been initalised");
                return;
            }

            this.progressReader   = progressReader;
            this.progressWriter   = progressWriter;
            this.levelOrderLoader = levelOrderLoader;
            this.levelLoader      = levelLoader;
            this.eventReader      = eventReader;

            initialised = true;
        }
Exemple #6
0
        public HumanMarbleMechanicsController(IInputManager inputManager
                                              , IPlayerSystem playerSystem
                                              , IOpponentSystem opponentSystem
                                              , ICameraController cameraController
                                              , ILevelLoader levelLoader
                                              , IBattleManager battleManager)
        {
            this.inputManager     = inputManager;
            this.playerSystem     = playerSystem;
            this.opponentSystem   = opponentSystem;
            this.cameraController = cameraController;
            this.levelLoader      = levelLoader;
            this.battleManager    = battleManager;

            MarbleShotStatus = MarbleShotStatus.Idle;
            layerMask        = 1 << LayerMask.NameToLayer(PlaneRayCastLayerName);

            lastEndShot = 0f;
        }
    public void LoadLevel_LevelLoaderIsSet_LoadLevel()
    {
        // Arrange.

        PrivateObject internLevelController = new PrivateObject(levelController);
        ILevelLoader  levelLoader           = (ILevelLoader)internLevelController.GetField("levelLoader");

        levelLoader = Substitute.For <ILevelLoader>();
        internLevelController.SetField("levelLoader", levelLoader);

        // Act.

        // No Act part needed here, because the call of Start() appears at the creation of the levelController instance.

        // Assert.
        NUnit.Framework.Assert.DoesNotThrow(levelController.LoadLevel);
        levelLoader.Received(1).LoadLevel();
        levelLoader.Received(1).LoadLevelElements(Arg.Any <Transform>());
    }
Exemple #8
0
        public MouseDownConfiguration(
            ILevelLoader levelLoader
            , IHumanMarbleMechanicsController marbleMechanicsController
            , IBattleManager battleManager)
        {
            this.levelLoader = levelLoader;
            this.marbleMechanicsController = marbleMechanicsController;
            this.battleManager             = battleManager;

            this.Configurations = new List <ISystemConfiguration>
            {
                new SystemConfiguration()
                .AddType <Clickable>()
                .AddType <Level>()
                .Calls(c => LoadScene(c)),

                new SystemConfiguration()
                .AddType <Clickable>()
                .AddType <Player>()
                .AddType <Marble>()
                .Calls(c => StartMarbleShot(c))
            };
        }
    private void Start()
    {
        if (MainMenuPlayerPreferences.InLevelCreationMode)
        {
            return;
        }

        if (MainMenuPlayerPreferences.LoadFromJson)
        {
            dataProvider = DeserializeLevel();
        }
        else
        {
            dataProvider = new TestLevelDataProvider();
        }

        levelLoader = new BasicLevelLoader(dataProvider);

        LoadLevel();

        if (MainMenuPlayerPreferences.LoadFromJson)
        {
            JsonDataProvider jsonDataProvider = (JsonDataProvider)dataProvider;
            levelDataCollection.playerData = jsonDataProvider.GetPlayerData();
        }

        levelDataCollection.enemyData = dataProvider.GetEnemyData();
        levelDataCollection.enemies   = LoadEnemies(levelDataCollection.enemyData);

        if (serializeLevel)
        {
            SerializeLevel();
        }

        StartLevel();
    }
 public SpaceTaxiLevelFactory()
 {
     levelLoader    = new LevelLoader();
     levelParser    = new LevelParser();
     imageContainer = ImageContainer.GetInstance();
 }
Exemple #11
0
 private void Awake() => levelManager = FindObjectOfType <GameManager>();
    // Use this for initialization
    void Start()
    {
        this.sea = this.seaGameObject.GetComponent<ISea>();

        if (this.sea == null)
        {
            throw new UnityException("Sea are not initialized");
        }

        this.fisher = this.fisherGameObject.GetComponent<IFisher>();

        this.fisher.ClearState();

        if (this.fisher == null)
        {
            throw new UnityException("Fisher are not initialized");
        }

        this.fisher.Boat.OnPutStaff += (ICatchable obj) =>
        {
            this.earned += obj.Price;
            this.earnedInCurrentLevel += obj.Price;

            if (this.onEarnedUpdate != null)
            {
                this.onEarnedUpdate.Invoke(this.earned);
            }

        };

        this.timer = this.timerGameObject.GetComponent<ITimer>();

        if (this.timer == null)
        {
            throw new UnityException("Timer are not initialized");
        }

        this.timer.OnTimerStart += (float time) =>
        {
            this.levelTimeRemainded = time;

            if (this.onChangeLevelTime != null)
            {
                this.onChangeLevelTime.Invoke(time);
            }
        };

        this.timer.OnTimerEnd += (float time) =>
        {
            this.levelTimeRemainded = 0;

            if (this.onChangeLevelTime != null)
            {
                this.onChangeLevelTime.Invoke(time);
            }

            this.FinishLevel();
        };

        this.timer.OnTimerBeep += (float time) =>
        {
            this.levelTimeRemainded = this.levelTimeAmount - time;

            if (this.onChangeLevelTime != null)
            {
                this.onChangeLevelTime.Invoke(this.levelTimeRemainded);
            }
        };

        this.levelLoader = new SimpleLevelLoader (this.sea);

        this.IfConditionPassedStartNextLevel();
    }
Exemple #13
0
 public GameScreen(ILevelLoader levelLoader,
                   IEntityFactory entityFactory)
 {
     _levelLoader   = levelLoader;
     _entityFactory = entityFactory;
 }
Exemple #14
0
    public static IEnumerator InitialiseAsRoutine()
    {
        ILevelLoader levelLoader = ManagerResolver.Resolve <ILevelLoader>();

        m_Grid = new Tile[Width, Length];

        //Create tiles
        for (int i = 0; i < Width; i++)
        {
            for (int j = 0; j < Length; j++)
            {
                float   xCenter = m_WidthOffset + ((i * m_TileSize) + (m_TileSize / 2.0f));
                float   zCenter = m_LengthOffset + ((j * m_TileSize) + (m_TileSize / 2.0f));
                Vector3 center  = new Vector3(xCenter, 0, zCenter);
                center.y = Terrain.activeTerrain.SampleHeight(center);

                m_Grid[i, j] = new Tile(i, j, center);
            }
        }

        if (levelLoader != null)
        {
            levelLoader.ChangeText("Evaluating tiles");
        }
        yield return(null);

        List <Collider> bridgeList = new List <Collider>();
        List <Collider> tunnelList = new List <Collider>();

        //Evaluate
        for (int i = 0; i < Width; i++)
        {
            for (int j = 0; j < Length; j++)
            {
                m_Grid[i, j].Evaluate(bridgeList, tunnelList);
            }
        }

        if (levelLoader != null)
        {
            levelLoader.ChangeText("Evaluating bridges");
        }
        yield return(null);

        //Create the bridges
        foreach (Collider collider in bridgeList)
        {
            BuildBridge(collider);
        }

        if (levelLoader != null)
        {
            levelLoader.ChangeText("Evaluating Tunnels");
        }
        yield return(null);

        //Create the tunnels
        foreach (Collider collider in tunnelList)
        {
            BuildTunnel(collider);
        }

        if (levelLoader != null)
        {
            levelLoader.ChangeText("Populating internal array");
        }
        yield return(null);

        //Now all the tiles have been initialised, we need to populate the tiles internal array with accessible tiles
        for (int i = 0; i < Width; i++)
        {
            for (int j = 0; j < Length; j++)
            {
                FindAccessibleTiles(m_Grid[i, j]);
            }
        }

        if (levelLoader != null)
        {
            levelLoader.FinishLoading();
        }
        ManagerResolver.Resolve <ICursorManager>().ShowCursor();
    }
Exemple #15
0
 public UAsyncOperation LoadAsync(ILevelLoader _loader, string _levelName, ELoadLevelMode _mode = ELoadLevelMode.SingleMainLevel, Action _finish = null)
 {
     return(_loader?.LoadLevelAsync(_levelName, _mode, _finish));
 }
Exemple #16
0
 public void SetDefaultLoader(ILevelLoader _loader)
 {
     DefaultLoader = _loader;
 }