/// <summary>
        ///     Returns tile logic matrix
        /// </summary>
        /// <remarks>
        ///     Two side effects: updates TileDict and AgentMapScale which are used by agents - need to be updated each time map
        ///     changes
        /// </remarks>
        /// >
        /// <param name="tileLogicBuilder">tile logic builder which organises the classes used to create the tile logic</param>
        /// <returns>tile logic matrix</returns>
        private IEnvTile[,] GetTileLogicDebug(ITileLogicBuilder tileLogicBuilder)
        {
            var tileLogicSetup = tileLogicBuilder.GetTileLogicSetup();
            var tileLogic      = tileLogicSetup.GetTileLogic();

            TileDict      = tileLogicSetup.GetTileTypes();
            AgentMapScale = mapScale;
            return(tileLogic);
        }
        /// <summary>
        ///     Returns the matrix of tiles which dictates spawning of environment and agents, and the game parameters of the tile
        ///     logic,
        ///     this is based on the game parameters given by curriculum
        /// </summary>
        /// <remarks>
        ///     Two side effects: TileDict, used by agents to know about the current map is updated, and the AgentMapScale
        ///     is updated which is used to normalise the distances of the level by the agents - these need to be updated
        ///     whenever the level changes
        /// </remarks>
        /// <param name="tileLogicBuilder">tile logic builder which organises the classes used to create the tile logic</param>
        /// <param name="gameParams">game parameters from curriculum</param>
        /// <returns>Logic matrix, and map scale</returns>
        private (IEnvTile[, ] tileLogic, int gameParamMapScale) GetTileLogicAndGameParamMapScaleCurr(
            ITileLogicBuilder tileLogicBuilder,
            Dictionary <GameParam, int> gameParams)
        {
            var tileLogicSetup = tileLogicBuilder.GetTileLogicSetup();
            var tileLogic      = tileLogicSetup.GetTileLogic();

            TileDict = tileLogicSetup.GetTileTypes();
            var gameParamMapScale = gameParams[GameParam.MapScale];

            AgentMapScale = gameParamMapScale;
            return(tileLogic, gameParamMapScale);
        }