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