Commit b3210cb1 authored by nanahira's avatar nanahira

refa

parent 83e457e0
Pipeline #43294 passed with stages
in 2 minutes and 3 seconds
...@@ -16,7 +16,7 @@ import { CommandsService, KoishiContextService } from '../koishi'; ...@@ -16,7 +16,7 @@ import { CommandsService, KoishiContextService } from '../koishi';
import { ChatgptService } from './chatgpt-service'; import { ChatgptService } from './chatgpt-service';
import { CloudReplayService } from './cloud-replay'; import { CloudReplayService } from './cloud-replay';
import { LpLowHintService } from './lp-low-hint-service'; import { LpLowHintService } from './lp-low-hint-service';
import { LockDeckService } from './lock-deck-service'; import { LockDeckService } from './lock-deck';
import { BlockReplay } from './block-replay'; import { BlockReplay } from './block-replay';
export const FeatsModule = createAppContext<ContextState>() export const FeatsModule = createAppContext<ContextState>()
......
...@@ -4,8 +4,7 @@ export * from './chatgpt-service'; ...@@ -4,8 +4,7 @@ export * from './chatgpt-service';
export * from './block-replay'; export * from './block-replay';
export * from './cloud-replay'; export * from './cloud-replay';
export * from './hide-player-name-provider'; export * from './hide-player-name-provider';
export * from './lock-deck-check'; export * from './lock-deck';
export * from './lock-deck-service';
export * from './menu-manager'; export * from './menu-manager';
export * from './welcome'; export * from './welcome';
export * from './random-duel'; export * from './random-duel';
......
export * from './lock-deck-check';
export * from './lock-deck-service';
import YGOProDeck from 'ygopro-deck-encode'; import YGOProDeck from 'ygopro-deck-encode';
import { Client } from '../client'; import { Client } from '../../client';
import { Room } from '../room'; import { Room } from '../../room';
import { ValueContainer } from '../utility/value-container'; import { ValueContainer } from '../../utility/value-container';
export class LockDeckExpectedDeckCheck extends ValueContainer< export class LockDeckExpectedDeckCheck extends ValueContainer<
YGOProDeck | null | undefined YGOProDeck | null | undefined
......
import { YGOProLFListError, YGOProLFListErrorReason } from 'ygopro-lflist-encode'; import { YGOProLFListError, YGOProLFListErrorReason } from 'ygopro-lflist-encode';
import { ChatColor } from 'ygopro-msg-encode'; import { ChatColor } from 'ygopro-msg-encode';
import { Context } from '../app'; import { Context } from '../../app';
import { RoomCheckDeck } from '../room'; import { RoomCheckDeck } from '../../room';
import { isSrvproTournamentDeckEqual } from '../utility/deck-compare'; import { isSrvproTournamentDeckEqual } from '../../utility/deck-compare';
import { LockDeckExpectedDeckCheck } from './lock-deck-check'; import { LockDeckExpectedDeckCheck } from './lock-deck-check';
class SrvproDeckBadError extends YGOProLFListError { class SrvproDeckBadError extends YGOProLFListError {
......
...@@ -23,6 +23,26 @@ export class DuelRecord { ...@@ -23,6 +23,26 @@ export class DuelRecord {
responses: Buffer[] = []; responses: Buffer[] = [];
messages: YGOProMsgBase[] = []; messages: YGOProMsgBase[] = [];
toSwappedPlayers() {
if (!this.isSwapped) {
return [...this.players];
}
const swappedPlayers = [...this.players];
const isTag = swappedPlayers.length === 4;
const swapElements = (a: number, b: number) => {
const temp = swappedPlayers[a];
swappedPlayers[a] = swappedPlayers[b];
swappedPlayers[b] = temp;
};
if (isTag) {
swapElements(0, 2);
swapElements(1, 3);
} else {
swapElements(0, 1);
}
return swappedPlayers;
}
private toReplayDeck(deck: YGOProDeck | null | undefined) { private toReplayDeck(deck: YGOProDeck | null | undefined) {
if (!deck) { if (!deck) {
return null; return null;
...@@ -50,20 +70,7 @@ export class DuelRecord { ...@@ -50,20 +70,7 @@ export class DuelRecord {
// Set start_time (stored in hash field) as Unix timestamp in seconds // Set start_time (stored in hash field) as Unix timestamp in seconds
header.hash = Math.floor(this.startTime.getTime() / 1000); header.hash = Math.floor(this.startTime.getTime() / 1000);
const players = [...this.players]; const players = this.toSwappedPlayers();
if (this.isSwapped) {
const swapElements = (a: number, b: number) => {
const temp = players[a];
players[a] = players[b];
players[b] = temp;
};
if (isTag) {
swapElements(0, 2);
swapElements(1, 3);
} else {
swapElements(0, 1);
}
}
// Build YGOProYrp object // Build YGOProYrp object
// Note: players array is already swapped // Note: players array is already swapped
......
...@@ -1320,7 +1320,7 @@ export class Room { ...@@ -1320,7 +1320,7 @@ export class Room {
extraScriptPaths, extraScriptPaths,
ocgcoreWasmPath, ocgcoreWasmPath,
registry, registry,
decks: duelRecord.players.map((p) => p.deck), decks: duelRecord.toSwappedPlayers().map((p) => p.deck),
}); });
const [ const [
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment