public bool TryAttachTo( BackBlock backblock , bool withInitPos = true ) { List<BackBlock> checkBackBlock = CheckBackBlock( backblock ); if ( checkBackBlock == null ) { return false; } SetTempBackblock(checkBackBlock); float moveTime = stickTime; if ( withInitPos ) moveTime = 0; StickToTargetBlock(moveTime , MoveType.Smooth , false ); // just for position return true; }
List<BackBlock> CheckBackBlock( BackBlock back ) { int i = (int) (back.name[back.name.Length-2]-'0'); int j = (int) (back.name[back.name.Length-1]-'0'); //get Check mat list List<BackBlock> checkList = new List<BackBlock>(); checkList.Add(back); if ( i + size -1 >= LogicManager.Instance.blockRows ) i = LogicManager.Instance.blockRows - size ; if ( j + size -1 >= LogicManager.Instance.blockCols ) j = LogicManager.Instance.blockCols - size ; for( int ii = i ; ii < i + size ; ++ii ) { for ( int jj = j ; jj < j + size ; ++jj ) { checkList.Add(LogicManager.Instance.backbloctMat[ii][jj]); } } foreach( BackBlock block in checkList) { if ( block.isOcupied && ( block.occupyToken != null && !block.occupyToken.eat) ) { Debug.Log(block.name+" is ocupied"); return null; } } return checkList; }
public bool Init( BackBlock block, TimeLine.TokenInfo tokenInfo ) { maxSize = tokenInfo.maxSize; move = tokenInfo.move; resize = tokenInfo.resize; eat = tokenInfo.eat; delete = tokenInfo.delete; if ( tokenInfo.size == -1 ) size = UnityEngine.Random.Range(1 , 4); else size = tokenInfo.size; if ( !TryAttachTo( block ) ) return false; AdjustSize( size ); SetMovie( tokenInfo.name ); StartCoroutine(CheckEnd(tokenInfo.duration)); ifInit = false; MessageEventArgs msg = new MessageEventArgs(); msg.AddMessage("name" , movieName ); BEventManager.Instance.PostEvent( EventDefine.OnTokenInit , msg ); return true; }