/// <inheritdoc />
        public override void OnInitialize()
        {
            _mazeView = FindObjectOfType <MazeView>();

            var playerRoomComponent = GetComponent <PlayerRoomComponent>();

            if (playerRoomComponent)
            {
                _messageReceiver
                .Receive <MazeSignal.FloorStarted>()
                .Subscribe(_ =>
                {
                    RaiseTransporter();
                })
                .AddTo(this);
            }

            var enemyRoomComponent = GetComponent <EnemyRoomComponent>();

            if (enemyRoomComponent)
            {
                // 敵が全滅したら転送システムを起動する
                enemyRoomComponent
                .OnRoomCapturedAsync
                .Subscribe(_ =>
                {
                    RaiseTransporter();
                })
                .AddTo(this);
            }

            TransporterHub.gameObject.GetAsyncStartTrigger().StartAsync().ContinueWith(() => InitTransporters()).Forget();
        }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        GUILayout.Space(20);

        serializedObject.Update();

        MazeView view = target as MazeView;

        EditorGUI.BeginChangeCheck();
        width     = EditorGUILayout.IntSlider("Width", width, 0, 20);
        height    = EditorGUILayout.IntSlider("Height", height, 0, 20);
        wallCount = EditorGUILayout.IntSlider("Number of walls", wallCount, 0, (width - 1) * (height - 1));

        if (GUILayout.Button("Generate Maze") || EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(target, $"Generate Maze");

            MazeBuilder builder = new MazeBuilder();
            builder.mazeWidth  = width;
            builder.mazeHeight = height;
            builder.wallCount  = wallCount;
            view.maze          = builder.Build();
        }

        if (GUILayout.Button("Clear Maze"))
        {
            Undo.RecordObject(target, $"Clear Maze");

            view.maze = null;
        }

        serializedObject.ApplyModifiedProperties();
    }
 public MainController()
 {
     game   = new Game();
     reader = new MazeReader(game);
     reader.CreateLinks(reader.ReadMaze(1));
     mazeView  = new MazeView(game);
     inputView = new InputView();
     run();
 }
Esempio n. 4
0
    private void Start()
    {
        navigation = FindObjectOfType <NavigationController>();

        counter = secondsToFail;

        counterActive = true;

        view = GetComponent <MazeView>();
    }
    void OnEnable()
    {
        floorPrefabProperty = serializedObject.FindProperty("floorPrefab");
        wallPrefabProperty  = serializedObject.FindProperty("wallPrefab");

        MazeView view = target as MazeView;

        width  = view.maze?.width ?? 10;
        height = view.maze?.height ?? 10;
    }
Esempio n. 6
0
        /// <summary>
        /// 迷宮を実体化する
        /// </summary>
        /// <returns></returns>
        public MazeView Construct(MazeSettings mazeSettings)
        {
            var rooms  = new Dictionary <int, RoomView>();
            var aisles = new Dictionary <int, AisleView>();

            MakeRoomView(ref rooms, mazeSettings);
//			MakeAisleView(ref aisles, rooms);

            var mazeView = MazeView.Create(_maze, rooms, aisles);

            return(mazeView);
        }
        /// <summary>
        /// Maze生成
        /// </summary>
        public void Construct(MazeSettings mazeSettings)
        {
            var maze = ConstructMaze();
            var view = ConstructMazeView(maze, mazeSettings);

            _mazeView = view;

            _mazeView.Initialize();

            var entryPoint = maze.GetEntryPoint();
            var startRoom  = view.Rooms[entryPoint.Id];

            _transportSystem.Initialize(startRoom);

            _isReady = true;

            Log("Constructed.");
        }