add 新增圣光、透视技能
This commit is contained in:
		| @@ -47,6 +47,14 @@ const useGame = () => { | |||||||
|   // 操作历史(存储点击的块) |   // 操作历史(存储点击的块) | ||||||
|   let opHistory: BlockType[] = []; |   let opHistory: BlockType[] = []; | ||||||
|  |  | ||||||
|  |   // region 道具相关 | ||||||
|  |  | ||||||
|  |   const isHolyLight = ref(false); | ||||||
|  |  | ||||||
|  |   const canSeeRandom = ref(false); | ||||||
|  |  | ||||||
|  |   // endregion | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 初始化指定大小的棋盘 |    * 初始化指定大小的棋盘 | ||||||
|    * @param width |    * @param width | ||||||
| @@ -281,14 +289,15 @@ const useGame = () => { | |||||||
|    * @param force 强制移除 |    * @param force 强制移除 | ||||||
|    */ |    */ | ||||||
|   const doClickBlock = (block: BlockType, randomIdx = -1, force = false) => { |   const doClickBlock = (block: BlockType, randomIdx = -1, force = false) => { | ||||||
|     // 已经输了 / 已经被点击 / 有上层块,不能再点击 |     // 已经输了 / 已经被点击 / 有上层块(且非强制和圣光),不能再点击 | ||||||
|     if ( |     if ( | ||||||
|       currSlotNum.value >= gameConfig.slotNum || |       currSlotNum.value >= gameConfig.slotNum || | ||||||
|       block.status !== 0 || |       block.status !== 0 || | ||||||
|       (block.lowerThanBlocks.length > 0 && !force) |       (block.lowerThanBlocks.length > 0 && !force && !isHolyLight.value) | ||||||
|     ) { |     ) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|  |     isHolyLight.value = false; | ||||||
|     // 修改元素状态为已点击 |     // 修改元素状态为已点击 | ||||||
|     block.status = 1; |     block.status = 1; | ||||||
|     // 移除当前元素 |     // 移除当前元素 | ||||||
| @@ -456,6 +465,24 @@ const useGame = () => { | |||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 圣光 | ||||||
|  |    * | ||||||
|  |    * @desc 下一个块可以任意点击 | ||||||
|  |    */ | ||||||
|  |   const doHolyLight = () => { | ||||||
|  |     isHolyLight.value = true; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 透视 | ||||||
|  |    * | ||||||
|  |    * @desc 可以看到随机块 | ||||||
|  |    */ | ||||||
|  |   const doSeeRandom = () => { | ||||||
|  |     canSeeRandom.value = !canSeeRandom.value; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   // endregion |   // endregion | ||||||
|  |  | ||||||
|   return { |   return { | ||||||
| @@ -469,12 +496,16 @@ const useGame = () => { | |||||||
|     opHistory, |     opHistory, | ||||||
|     totalBlockNum, |     totalBlockNum, | ||||||
|     clearBlockNum, |     clearBlockNum, | ||||||
|  |     isHolyLight, | ||||||
|  |     canSeeRandom, | ||||||
|     doClickBlock, |     doClickBlock, | ||||||
|     doStart, |     doStart, | ||||||
|     doShuffle, |     doShuffle, | ||||||
|     doBroke, |     doBroke, | ||||||
|     doRemove, |     doRemove, | ||||||
|     doRevert, |     doRevert, | ||||||
|  |     doHolyLight, | ||||||
|  |     doSeeRandom, | ||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -19,7 +19,9 @@ | |||||||
|           <div |           <div | ||||||
|             v-if="block.status === 0" |             v-if="block.status === 0" | ||||||
|             class="block level-block" |             class="block level-block" | ||||||
|             :class="{ disabled: block.lowerThanBlocks.length > 0 }" |             :class="{ | ||||||
|  |               disabled: !isHolyLight && block.lowerThanBlocks.length > 0, | ||||||
|  |             }" | ||||||
|             :data-id="block.id" |             :data-id="block.id" | ||||||
|             :style="{ |             :style="{ | ||||||
|               zIndex: 100 + block.level, |               zIndex: 100 + block.level, | ||||||
| @@ -53,7 +55,11 @@ | |||||||
|           v-for="num in Math.max(randomBlock.length - 1, 0)" |           v-for="num in Math.max(randomBlock.length - 1, 0)" | ||||||
|           :key="num" |           :key="num" | ||||||
|           class="block disabled" |           class="block disabled" | ||||||
|         ></div> |         > | ||||||
|  |           <span v-if="canSeeRandom"> | ||||||
|  |             {{ randomBlock[num].type }} | ||||||
|  |           </span> | ||||||
|  |         </div> | ||||||
|       </div> |       </div> | ||||||
|     </a-row> |     </a-row> | ||||||
|     <!-- 槽位 --> |     <!-- 槽位 --> | ||||||
| @@ -69,6 +75,8 @@ | |||||||
|         <a-button size="small" @click="doRemove">移出</a-button> |         <a-button size="small" @click="doRemove">移出</a-button> | ||||||
|         <a-button size="small" @click="doShuffle">洗牌</a-button> |         <a-button size="small" @click="doShuffle">洗牌</a-button> | ||||||
|         <a-button size="small" @click="doBroke">破坏</a-button> |         <a-button size="small" @click="doBroke">破坏</a-button> | ||||||
|  |         <a-button size="small" @click="doHolyLight">圣光</a-button> | ||||||
|  |         <a-button size="small" @click="doSeeRandom">透视</a-button> | ||||||
|       </a-space> |       </a-space> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
| @@ -91,12 +99,16 @@ const { | |||||||
|   heightUnit, |   heightUnit, | ||||||
|   totalBlockNum, |   totalBlockNum, | ||||||
|   clearBlockNum, |   clearBlockNum, | ||||||
|  |   isHolyLight, | ||||||
|  |   canSeeRandom, | ||||||
|   doClickBlock, |   doClickBlock, | ||||||
|   doStart, |   doStart, | ||||||
|   doShuffle, |   doShuffle, | ||||||
|   doBroke, |   doBroke, | ||||||
|   doRemove, |   doRemove, | ||||||
|   doRevert, |   doRevert, | ||||||
|  |   doHolyLight, | ||||||
|  |   doSeeRandom, | ||||||
| } = useGame(); | } = useGame(); | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user