Exemple #1
0
    /// <summary>
    /// チェックしたい位置から、状態の取得を行う
    /// たぶん処理的にはちょっと重い
    /// </summary>
    /// <param name="_check_x"></param>
    /// <param name="_check_y"></param>
    /// <returns></returns>
    public List <StageIslandData> GetPlayerPosIsland(int _check_x, int _check_y)
    {
        foreach (var _list_data in play_stage_data.ConnectIsland)
        {
            if (_list_data.ConnetIsland.Exists((x) => x.x_index == _check_x && x.y_index == _check_y))
            {
                return(_list_data.ConnetIsland);
            }
        }

        if (play_stage_data.GoalData.x_index == _check_x &&
            play_stage_data.GoalData.y_index == _check_y)
        {
            var _list = new List <StageIslandData>();
            var _data = new StageIslandData()
            {
                x_index = play_stage_data.GoalData.x_index,
                y_index = play_stage_data.GoalData.y_index
            };



            _list.Add(_data);

            return(_list);
        }

        return(null);
    }
Exemple #2
0
    /// <summary>
    /// 選択終了
    /// </summary>
    public void SelectEnd()
    {
        if (select_data.Count < 2)
        {
            Debug.Log("選択しているデータを削除");
            select_data.Clear();
            return;
        }

        StageIslandDataList _connect_list = new StageIslandDataList();

        _connect_list.ConnetIsland = new List <StageIslandData>();
        _connect_list.ConnetIsland.AddRange(select_data);


        play_stage_data.ConnectIsland.Add(_connect_list);

        StageIslandData _prev_data = null;
        StageIslandData _next_data = null;

        foreach (var _data in _connect_list.ConnetIsland)
        {
            if (null == _prev_data)
            {
                _prev_data = _data;
                cube_controllers[_prev_data.x_index, _prev_data.y_index].SettingState(CubeState.Confilm);

                continue;
            }
            _next_data = _data;

            Debug.LogFormat("prev:x:{0},y:{1} next :x:{2},y:{3}"
                            , _prev_data.x_index, _prev_data.y_index
                            , _next_data.x_index, _next_data.y_index);
            create_load_cube(
                cube_controllers[_prev_data.x_index, _prev_data.y_index].gameObject.transform.position
                , cube_controllers[_next_data.x_index, _next_data.y_index].gameObject.transform.position
                , _next_data.x_index - _prev_data.x_index
                , _next_data.y_index - _prev_data.y_index);

            _prev_data = _next_data;

            cube_controllers[_prev_data.x_index, _prev_data.y_index].SettingState(CubeState.Confilm);
        }

        select_data.Clear();
    }
Exemple #3
0
    /// <summary>
    /// 島単位のデータ作成
    /// </summary>
    private void setting_island_data()
    {
        foreach (var _obj in Cube)
        {
            GameObject.Destroy(_obj);
        }
        Cube.Clear();

        var _list = play_stage_data.ConnectIsland;

        Debug.LogFormat("_list:{0}", _list.Count);

        foreach (var _data_list in _list)
        {
            StageIslandData _prev_data = null;
            StageIslandData _next_data = null;
            Debug.Log("島作成");

            foreach (var _data in _data_list.ConnetIsland)
            {
                if (null == _prev_data)
                {
                    _prev_data = _data;
                    cube_controllers[_prev_data.x_index, _prev_data.y_index].SettingState(CubeState.Confilm);

                    continue;
                }
                _next_data = _data;

                Debug.LogFormat("prev:x:{0},y:{1} next :x:{2},y:{3}"
                                , _prev_data.x_index, _prev_data.y_index
                                , _next_data.x_index, _next_data.y_index);
                create_load_cube(
                    cube_controllers[_prev_data.x_index, _prev_data.y_index].gameObject.transform.position
                    , cube_controllers[_next_data.x_index, _next_data.y_index].gameObject.transform.position
                    , _next_data.x_index - _prev_data.x_index
                    , _next_data.y_index - _prev_data.y_index);

                _prev_data = _next_data;

                cube_controllers[_prev_data.x_index, _prev_data.y_index].SettingState(CubeState.Confilm);
            }
        }
    }
    /// <summary>
    /// ステージデータの中身をコピーする
    /// </summary>
    /// <param name="_stage_data"></param>
    public PlayableStageData(StageData _stage_data)
    {
        PlayerPos = new StageIslandData()
        {
            x_index = _stage_data.PlayerPos.x_index,
            y_index = _stage_data.PlayerPos.y_index
        };

        LoopIndex = _stage_data.LoopIndex;

        ConnectIsland = new List <StageIslandDataList>();

        foreach (var _list_data in _stage_data.ConnectIsland)
        {
            List <StageIslandData> _is_land_data = new List <StageIslandData>();

            foreach (var _data in _list_data.ConnetIsland)
            {
                StageIslandData _island_data = new StageIslandData()
                {
                    x_index = _data.x_index,
                    y_index = _data.y_index
                };

                _is_land_data.Add(_island_data);
            }
            StageIslandDataList _chank_list = new StageIslandDataList()
            {
                ConnetIsland = _is_land_data,
            };
            ConnectIsland.Add(_chank_list);
        }//for each


        StageIslandData _goaldata = new StageIslandData()
        {
            x_index = _stage_data.goal_data.x_index,
            y_index = _stage_data.goal_data.y_index
        };

        GoalData = _goaldata;
    }
Exemple #5
0
    /// <summary>
    /// 選択状態
    /// </summary>
    /// <param name="_notice"></param>
    private void select_island_parts(CubeNotice _notice)
    {
        Debug.Log("通知状態がきたよ");
        StageIslandData _select = new StageIslandData()
        {
            x_index = _notice.x_index,
            y_index = _notice.y_index
        };

        if (null != now_end_select_data)
        {
            //変更点がある状態か?
            if (false == (_select.x_index > now_end_select_data.x_index ||
                          now_end_select_data.x_index > _select.x_index ||
                          _select.y_index > now_end_select_data.y_index ||
                          now_end_select_data.y_index > _select.y_index))
            {
                Debug.Log("差分がなかったため、追加できない。");
                return;
            }

            ///すでに存在していたので、失敗
            if (select_data.Exists((_serch) =>
                                   _serch.x_index == _select.x_index && _serch.y_index == _select.y_index))
            {
                Debug.Log("すでに存在しているので、失敗");
                var _remove_data = select_data.Find((_serch) =>
                                                    _serch.x_index == _select.x_index && _serch.y_index == _select.y_index);
                if (null != _remove_data)
                {
                    select_data.Remove(_remove_data);
                }

                return;
            }
        }

        SoundController.Instance.PlaySe(4);
        now_end_select_data = _select;

        select_data.Add(_select);
    }