public MatchInfo.kMatchState MatchCheckBottomForReservation(int iCol) { if (eType_ == kBlockType.Lock) { return(MatchInfo.kMatchState.Break); } if (pBottom_ && pBottom_.pBottom_ && eType_ == pBottom_.eType_ && eType_ == pBottom_.pBottom_.eType_) { if ((pMyGroup_.eState_ == Group.kGroupState.Landing || pMyGroup_.eState_ == Group.kGroupState.Stop) && (pBottom_.pMyGroup_.eState_ == Group.kGroupState.Landing || pBottom_.pMyGroup_.eState_ == Group.kGroupState.Stop) && (pBottom_.pBottom_.pMyGroup_.eState_ == Group.kGroupState.Landing || pBottom_.pBottom_.pMyGroup_.eState_ == Group.kGroupState.Stop)) { Group pGroup = pMyGroup_; pGroup.AddColumn(iCol, pBottom_.pBottom_); pGroup.RiseReservation(); pGroup.LockBlock(this); pGroup.LockBlock(pBottom_); pGroup.LockBlock(pBottom_.pBottom_); return(MatchInfo.kMatchState.Explosion); } return(MatchInfo.kMatchState.Keep); } return(MatchInfo.kMatchState.Break); }
public MatchInfo.kMatchState MatchCheckSideForReservation(int iCol) { if (eType_ == kBlockType.Lock) { return(MatchInfo.kMatchState.Break); } int iExpCountForReservation = 1; int iExpCount = 1; int iStartIdx = iCol; Block pStartBlock = this; MatchInfo.kMatchState eResult; Group pOgGroup = null; if (GameManager.pShared.pMainGroup_ != pMyGroup_) { pOgGroup = pMyGroup_; } // Check Point Block's Left & Left.Left if (pLeft_ != null && pLeft_.eType_ == eType_) { ++iExpCountForReservation; if (pLeft_.pMyGroup_.eState_ == Group.kGroupState.Landing || pLeft_.pMyGroup_.eState_ == Group.kGroupState.Stop) { pStartBlock = pLeft_; --iStartIdx; ++iExpCount; if (pOgGroup == null && GameManager.pShared.pMainGroup_ != pLeft_.pMyGroup_) { pOgGroup = pLeft_.pMyGroup_; } if (pStartBlock.pLeft_ != null && pStartBlock.pLeft_.eType_ == eType_) { ++iExpCountForReservation; if (pStartBlock.pLeft_.pMyGroup_.eState_ == Group.kGroupState.Landing || pStartBlock.pLeft_.pMyGroup_.eState_ == Group.kGroupState.Stop) { pStartBlock = pStartBlock.pLeft_; --iStartIdx; ++iExpCount; if (pOgGroup == null && GameManager.pShared.pMainGroup_ != pStartBlock.pMyGroup_) { pOgGroup = pStartBlock.pMyGroup_; } } } } else { if (pLeft_.pLeft_ != null && pLeft_.pLeft_.eType_ == eType_) { ++iExpCountForReservation; } } } // Check Point Block's Right & Right.Right if (pRight_ != null && pRight_.eType_ == eType_) { ++iExpCountForReservation; if (pRight_.pMyGroup_.eState_ == Group.kGroupState.Landing || pRight_.pMyGroup_.eState_ == Group.kGroupState.Stop) { ++iExpCount; if (pOgGroup == null && GameManager.pShared.pMainGroup_ != pRight_.pMyGroup_) { pOgGroup = pRight_.pMyGroup_; } if (pRight_.pRight_ != null && pRight_.pRight_.eType_ == eType_) { ++iExpCountForReservation; if (pRight_.pRight_.pMyGroup_.eState_ == Group.kGroupState.Landing || pRight_.pRight_.pMyGroup_.eState_ == Group.kGroupState.Stop) { ++iExpCount; if (pOgGroup == null && GameManager.pShared.pMainGroup_ != pRight_.pRight_.pMyGroup_) { pOgGroup = pRight_.pRight_.pMyGroup_; } } } } else { if (pRight_.pRight_ != null && pRight_.pRight_.eType_ == eType_) { ++iExpCountForReservation; } } } // Check Result - Explosion ? Keep ? Break ? if (iExpCount >= 3 && pOgGroup != null && (pMyGroup_.eState_ == Group.kGroupState.Landing || pMyGroup_.eState_ == Group.kGroupState.Stop)) { eResult = MatchInfo.kMatchState.Explosion; Block pBlock = pStartBlock; for (int i = 0; i < iExpCount; ++i) { if (pBlock.pMyGroup_ != pOgGroup) { if (pBlock.pMyGroup_ == GameManager.pShared.pMainGroup_) { pOgGroup.AddColumn(iStartIdx + i, pBlock); } else { // Merge pOgGroup.Merge(pBlock.pMyGroup_); } } pBlock.pMyGroup_.LockBlock(pBlock); pBlock = pBlock.pRight_; } pOgGroup.RiseReservation(); } else if (iExpCountForReservation >= 3) { eResult = MatchInfo.kMatchState.Keep; } else { eResult = MatchInfo.kMatchState.Break; } return(eResult); }