From 5edf069bdde9d981abbc6235f43b58118336e023 Mon Sep 17 00:00:00 2001 From: zhl Date: Thu, 4 Mar 2021 16:34:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=9B=E5=BB=BA=E6=88=BF?= =?UTF-8?q?=E9=97=B4=E6=97=B6=E7=9A=84debug=E5=8F=82=E6=95=B0,=20=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E6=8C=87=E5=AE=9A=E4=B8=8D=E5=90=8C=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cfg/RoomOptions.ts | 18 +++++++++++++----- src/rooms/GeneralRoom.ts | 6 +++++- src/utils/number.util.ts | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/cfg/RoomOptions.ts b/src/cfg/RoomOptions.ts index 73712ad..3af46cf 100644 --- a/src/cfg/RoomOptions.ts +++ b/src/cfg/RoomOptions.ts @@ -1,6 +1,7 @@ import { singleton } from '../decorators/singleton.decorator' import { GameEnv } from './GameEnv' import { CardGameState } from '../rooms/schema/CardGameState' +import { checkBitIdx, checkBitNumber } from '../utils/number.util' /** * 一个回合是否能多次吃牌 @@ -66,11 +67,18 @@ export class RoomOptions { return 0 } - public initGameRule(state: CardGameState) { - state.rules.set(RULE_CANEAT, this.canEat({advMode: state.advMode})) - state.rules.set(RULE_MULTIPLEEAT, this.multipleEat()) - state.rules.set(RULE_DROPCARD, this.autoDiscard()) - state.rules.set(RULE_SINGLEEAT, this.singleEat()) + public initGameRule(state: CardGameState, val: number) { + if (val) { + state.rules.set(RULE_CANEAT, checkBitNumber(val, 1)) + state.rules.set(RULE_MULTIPLEEAT, checkBitNumber(val, 2)) + state.rules.set(RULE_DROPCARD, checkBitNumber(val, 3)) + state.rules.set(RULE_SINGLEEAT, checkBitNumber(val, 4)) + } else { + state.rules.set(RULE_CANEAT, this.canEat({advMode: state.advMode})) + state.rules.set(RULE_MULTIPLEEAT, this.multipleEat()) + state.rules.set(RULE_DROPCARD, this.autoDiscard()) + state.rules.set(RULE_SINGLEEAT, this.singleEat()) + } } } diff --git a/src/rooms/GeneralRoom.ts b/src/rooms/GeneralRoom.ts index ad74070..a60fe42 100644 --- a/src/rooms/GeneralRoom.ts +++ b/src/rooms/GeneralRoom.ts @@ -61,7 +61,11 @@ export class GeneralRoom extends Room { if (options.score) { this.score = options.score } - new RoomOptions().initGameRule(this.state) + let val = 0 + if (options.debug_cv) { + val = +options.debug_cv + } + new RoomOptions().initGameRule(this.state, val) this.battleMan.init(cs, this) this.clock.start() this.state.gameState = GameStateConst.STATE_WAIT_JOIN diff --git a/src/utils/number.util.ts b/src/utils/number.util.ts index 592b2df..ac838de 100644 --- a/src/utils/number.util.ts +++ b/src/utils/number.util.ts @@ -8,3 +8,20 @@ export function getRandom(max: number, min: number): number { min = min || 0; return Math.floor(Math.random()*(max-min)+min); } + +export function setBitVal(value: number, index: number, yes: boolean) { + if (yes) { + value |= (1<> (index)) & 1 ) == 1 +} + +export function checkBitNumber(value: number, index: number): number { + return (((value >> (index)) & 1 ) == 1) ? 1 : 0 +}