private ChainBlock GetNewChainBlock(BlockDataDTO data, bool isInitial) { var block = Instantiate(_config.ChainBlockPrefab, _config.ChainBlockPrefab.transform.position, Quaternion.identity); block.Direction = data.Direction; block.IsInitial = isInitial; block.SetConnectorsState(data.ConnectorsState); block.BlocksPanel = _panel; block.FieldManager = _field; block.OnStateChange += OnFieldStateChanged; return(block); }
private void LoadCurrentLevel(LevelData data) { if (_isCreatorMode) { _levelSaver.SetActive(true); var blockData = new BlockDataDTO { Direction = DirectionType.Horizontal, Position = new Vector2Int(0, 0), ConnectorsState = new Vector2Int(0, 0) }; for (var i = 0; i < 8; ++i) { var block = GetNewChainBlock(blockData, false); _panel.AddBlock(block); } blockData = new BlockDataDTO { Direction = DirectionType.Vertical, Position = new Vector2Int(0, 0), ConnectorsState = new Vector2Int(0, 0) }; for (var i = 0; i < 8; ++i) { var block = GetNewChainBlock(blockData, false); _panel.AddBlock(block); } return; } foreach (var blockData in data.InitialBlocks) { var block = GetNewChainBlock(blockData, true); _field.AddInitialBlock(block, blockData.Position); } foreach (var blockData in data.BlocksOnPanel) { var block = GetNewChainBlock(blockData, false); _panel.AddBlock(block); } _timer.StartTimer(data.TimeLimit); }
public HNBlock(int blockIndex, BlockDataDTO bytes) { _bytes = bytes; PageMapOffset = BitConverter.ToUInt16(_bytes.Data, 0); PageMap = new HNPAGEMAP(_bytes.Data, PageMapOffset); if (blockIndex == 0) { Header = new HNHDR(_bytes.Data); } else if (blockIndex % 128 == 8) { BitMapPageHeader = new HNBITMAPHDR(ref _bytes.Data); } else { PageHeader = new HNPAGEHDR(ref _bytes.Data); } }
public HNBlock(int blockIndex, BlockDataDTO bytes) { this._bytes = bytes; this.PageMapOffset = BitConverter.ToUInt16(this._bytes.Data, 0); this.PageMap = new HNPAGEMAP(this._bytes.Data, this.PageMapOffset); if (blockIndex == 0) { this.Header = new HNHDR(this._bytes.Data); } else if (blockIndex % 128 == 8) { this.BitMapPageHeader = new HNBITMAPHDR(ref this._bytes.Data); } else { this.PageHeader = new HNPAGEHDR(ref this._bytes.Data); } }
private LevelData CreateLevelData() { Logger.Print("Creating Data...", "yellow"); var data = new LevelData(); data.WinDataHorizontal = new List <BlockDataDTO>(); data.WinDataVertical = new List <BlockDataDTO>(); data.InitialBlocks = new List <BlockDataDTO>(); data.BlocksOnPanel = new List <BlockDataDTO>(); for (var i = 0; i < _horizontalGrid.Count; ++i) { for (var j = 0; j < _horizontalGrid[i].Count; ++j) { if (_horizontalGrid[i][j].HasBlock) { var blockData = new BlockDataDTO(); var block = _horizontalGrid[i][j].Block; var point = _horizontalGrid[i][j]; blockData.Direction = DirectionType.Horizontal; blockData.Position = point.GridPosition; blockData.ConnectorsState = new Vector2Int(block.FirstDirection, block.SecondDirection); data.WinDataHorizontal.Add(blockData); if (block.IsInitial) { data.InitialBlocks.Add(blockData); } else { data.BlocksOnPanel.Add(blockData); } } } } for (var i = 0; i < _verticalGrid.Count; ++i) { for (var j = 0; j < _verticalGrid[i].Count; ++j) { if (_verticalGrid[i][j].HasBlock) { var blockData = new BlockDataDTO(); var block = _verticalGrid[i][j].Block; var point = _verticalGrid[i][j]; blockData.Direction = DirectionType.Vertical; blockData.Position = point.GridPosition; blockData.ConnectorsState = new Vector2Int(block.FirstDirection, block.SecondDirection); data.WinDataVertical.Add(blockData); if (block.IsInitial) { data.InitialBlocks.Add(blockData); } else { data.BlocksOnPanel.Add(blockData); } } } } data.BlocksOnPanel = ShuffleList(data.BlocksOnPanel); return(data); }