/// <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); }
/// <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(); }
/// <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; }
/// <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); }